C (gcc), 117 \$\cdots\$ 111101 10198 bytes
Saved 10 bytes thanks to an idea from Davide!!!
Saved 3 bytes (and got below 100!) thanks to ceilingcat!!!
i;f(char*p){for(i=0;*p++-40||p[3]-41;++i);p[-1]=p[1]1]=p[p[1]-62?*p0:p[2];memcpy2];bcopy(p,p+4,p,strlen(p));i&&f(p-i-1p+~i);}