vendor: 83,979 bytes, line 1
1(()=>{var eo=Object.create;var zi=Object.defineProperty;var to=Object.getOwnPropertyDescriptor;var ro=Object.getOwnPropertyNames;var io=Object.getPrototypeOf,no=Object.prototype.hasOwnProperty;var so=($,e,t)=>e in $?zi($,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):$[e]=t;var ao=($,e)=>()=>(e||$((e={exports:{}}).exports,e),e.exports);var lo=($,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ro(e))!no.call($,i)&&i!==t&&zi($,i,{get:()=>e[i],enumerable:!(r=to(e,i))||r.enumerable});return $};var oo=($,e,t)=>(t=$!=null?eo(io($)):{},lo(e||!$||!$.__esModule?zi(t,"default",{value:$,enumerable:!0}):t,$));var jn=($,e,t)=>so($,typeof e!="symbol"?e+"":e,t);var Kn=ao((_i,Wi)=>{(function($,e){typeof _i=="object"&&typeof Wi<"u"?Wi.exports=e():typeof define=="function"&&define.amd?define(e):($=typeof globalThis<"u"?globalThis:$||self,$.chroma=e())})(_i,function(){"use strict";for(var $=function(l,h,f){return h===void 0&&(h=0),f===void 0&&(f=1),l<h?h:l>f?f:l},e=$,t=function(l){l._clipped=!1,l._unclipped=l.slice(0);for(var h=0;h<=3;h++)h<3?((l[h]<0||l[h]>255)&&(l._clipped=!0),l[h]=e(l[h],0,255)):h===3&&(l[h]=e(l[h],0,1));return l},r={},i=0,s=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];i<s.length;i+=1){var a=s[i];r["[object "+a+"]"]=a.toLowerCase()}var n=function(l){return r[Object.prototype.toString.call(l)]||"object"},o=n,u=function(l,h){return h===void 0&&(h=null),l.length>=3?Array.prototype.slice.call(l):o(l[0])=="object"&&h?h.split("").filter(function(f){return l[0][f]!==void 0}).map(function(f){return l[0][f]}):l[0]},d=n,g=function(l){if(l.length<2)return null;var h=l.length-1;return d(l[h])=="string"?l[h].toLowerCase():null},p=Math.PI,c={clip_rgb:t,limit:$,type:n,unpack:u,last:g,PI:p,TWOPI:p*2,PITHIRD:p/3,DEG2RAD:p/180,RAD2DEG:180/p},b={format:{},autodetect:[]},E=c.last,T=c.clip_rgb,k=c.type,O=b,B=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var v=this;if(k(h[0])==="object"&&h[0].constructor&&h[0].constructor===this.constructor)return h[0];var S=E(h),C=!1;if(!S){C=!0,O.sorted||(O.autodetect=O.autodetect.sort(function(P,W){return W.p-P.p}),O.sorted=!0);for(var y=0,x=O.autodetect;y<x.length;y+=1){var R=x[y];if(S=R.test.apply(R,h),S)break}}if(O.format[S]){var L=O.format[S].apply(null,C?h:h.slice(0,-1));v._rgb=T(L)}else throw new Error("unknown format: "+h);v._rgb.length===3&&v._rgb.push(1)};B.prototype.toString=function(){return k(this.hex)=="function"?this.hex():"["+this._rgb.join(",")+"]"};var I=B,U=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(U.Color,[null].concat(l)))};U.Color=I,U.version="2.4.2";var G=U,se=c.unpack,we=Math.max,j=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=se(l,"rgb"),v=f[0],S=f[1],C=f[2];v=v/255,S=S/255,C=C/255;var y=1-we(v,we(S,C)),x=y<1?1/(1-y):0,R=(1-v-y)*x,L=(1-S-y)*x,P=(1-C-y)*x;return[R,L,P,y]},J=j,Ne=c.unpack,Ye=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=Ne(l,"cmyk");var f=l[0],v=l[1],S=l[2],C=l[3],y=l.length>4?l[4]:1;return C===1?[0,0,0,y]:[f>=1?0:255*(1-f)*(1-C),v>=1?0:255*(1-v)*(1-C),S>=1?0:255*(1-S)*(1-C),y]},ke=Ye,_=G,Fe=I,Ie=b,Le=c.unpack,qe=c.type,je=J;Fe.prototype.cmyk=function(){return je(this._rgb)},_.cmyk=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Fe,[null].concat(l,["cmyk"])))},Ie.format.cmyk=ke,Ie.autodetect.push({p:2,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=Le(l,"cmyk"),qe(l)==="array"&&l.length===4)return"cmyk"}});var Ee=c.unpack,Oe=c.last,kt=function(l){return Math.round(l*100)/100},Et=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=Ee(l,"hsla"),v=Oe(l)||"lsa";return f[0]=kt(f[0]||0),f[1]=kt(f[1]*100)+"%",f[2]=kt(f[2]*100)+"%",v==="hsla"||f.length>3&&f[3]<1?(f[3]=f.length>3?f[3]:1,v="hsla"):f.length=3,v+"("+f.join(",")+")"},Tt=Et,Mt=c.unpack,It=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=Mt(l,"rgba");var f=l[0],v=l[1],S=l[2];f/=255,v/=255,S/=255;var C=Math.min(f,v,S),y=Math.max(f,v,S),x=(y+C)/2,R,L;return y===C?(R=0,L=Number.NaN):R=x<.5?(y-C)/(y+C):(y-C)/(2-y-C),f==y?L=(v-S)/(y-C):v==y?L=2+(S-f)/(y-C):S==y&&(L=4+(f-v)/(y-C)),L*=60,L<0&&(L+=360),l.length>3&&l[3]!==void 0?[L,R,x,l[3]]:[L,R,x]},Lt=It,Ot=c.unpack,V=c.last,ae=Tt,$e=Lt,Se=Math.round,ue=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=Ot(l,"rgba"),v=V(l)||"rgb";return v.substr(0,3)=="hsl"?ae($e(f),v):(f[0]=Se(f[0]),f[1]=Se(f[1]),f[2]=Se(f[2]),(v==="rgba"||f.length>3&&f[3]<1)&&(f[3]=f.length>3?f[3]:1,v="rgba"),v+"("+f.slice(0,v==="rgb"?3:4).join(",")+")")},Ce=ue,Re=c.unpack,Ae=Math.round,Ze=function(){for(var l,h=[],f=arguments.length;f--;)h[f]=arguments[f];h=Re(h,"hsl");var v=h[0],S=h[1],C=h[2],y,x,R;if(S===0)y=x=R=C*255;else{var L=[0,0,0],P=[0,0,0],W=C<.5?C*(1+S):C+S-C*S,F=2*C-W,Y=v/360;L[0]=Y+1/3,L[1]=Y,L[2]=Y-1/3;for(var q=0;q<3;q++)L[q]<0&&(L[q]+=1),L[q]>1&&(L[q]-=1),6*L[q]<1?P[q]=F+(W-F)*6*L[q]:2*L[q]<1?P[q]=W:3*L[q]<2?P[q]=F+(W-F)*(2/3-L[q])*6:P[q]=F;l=[Ae(P[0]*255),Ae(P[1]*255),Ae(P[2]*255)],y=l[0],x=l[1],R=l[2]}return h.length>3?[y,x,R,h[3]]:[y,x,R,1]},Be=Ze,ze=Be,We=b,Xe=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,wt=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,ct=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Ge=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Ve=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,it=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,nt=Math.round,ft=function(l){l=l.toLowerCase().trim();var h;if(We.format.named)try{return We.format.named(l)}catch(q){}if(h=l.match(Xe)){for(var f=h.slice(1,4),v=0;v<3;v++)f[v]=+f[v];return f[3]=1,f}if(h=l.match(wt)){for(var S=h.slice(1,5),C=0;C<4;C++)S[C]=+S[C];return S}if(h=l.match(ct)){for(var y=h.slice(1,4),x=0;x<3;x++)y[x]=nt(y[x]*2.55);return y[3]=1,y}if(h=l.match(Ge)){for(var R=h.slice(1,5),L=0;L<3;L++)R[L]=nt(R[L]*2.55);return R[3]=+R[3],R}if(h=l.match(Ve)){var P=h.slice(1,4);P[1]*=.01,P[2]*=.01;var W=ze(P);return W[3]=1,W}if(h=l.match(it)){var F=h.slice(1,4);F[1]*=.01,F[2]*=.01;var Y=ze(F);return Y[3]=+h[4],Y}};ft.test=function(l){return Xe.test(l)||wt.test(l)||ct.test(l)||Ge.test(l)||Ve.test(l)||it.test(l)};var yt=ft,Vr=G,br=I,wr=b,yr=c.type,qr=Ce,sr=yt;br.prototype.css=function(l){return qr(this._rgb,l)},Vr.css=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(br,[null].concat(l,["css"])))},wr.format.css=sr,wr.autodetect.push({p:5,test:function(l){for(var h=[],f=arguments.length-1;f-- >0;)h[f]=arguments[f+1];if(!h.length&&yr(l)==="string"&&sr.test(l))return"css"}});var Sr=I,Yr=G,Ur=b,Cr=c.unpack;Ur.format.gl=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=Cr(l,"rgba");return f[0]*=255,f[1]*=255,f[2]*=255,f},Yr.gl=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Sr,[null].concat(l,["gl"])))},Sr.prototype.gl=function(){var l=this._rgb;return[l[0]/255,l[1]/255,l[2]/255,l[3]]};var Ar=c.unpack,jr=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=Ar(l,"rgb"),v=f[0],S=f[1],C=f[2],y=Math.min(v,S,C),x=Math.max(v,S,C),R=x-y,L=R*100/255,P=y/(255-R)*100,W;return R===0?W=Number.NaN:(v===x&&(W=(S-C)/R),S===x&&(W=2+(C-v)/R),C===x&&(W=4+(v-S)/R),W*=60,W<0&&(W+=360)),[W,L,P]},xr=jr,Nr=c.unpack,Zr=Math.floor,Kr=function(){for(var l,h,f,v,S,C,y=[],x=arguments.length;x--;)y[x]=arguments[x];y=Nr(y,"hcg");var R=y[0],L=y[1],P=y[2],W,F,Y;P=P*255;var q=L*255;if(L===0)W=F=Y=P;else{R===360&&(R=0),R>360&&(R-=360),R<0&&(R+=360),R/=60;var ie=Zr(R),oe=R-ie,fe=P*(1-L),ce=fe+q*(1-oe),He=fe+q*oe,Pe=fe+q;switch(ie){case 0:l=[Pe,He,fe],W=l[0],F=l[1],Y=l[2];break;case 1:h=[ce,Pe,fe],W=h[0],F=h[1],Y=h[2];break;case 2:f=[fe,Pe,He],W=f[0],F=f[1],Y=f[2];break;case 3:v=[fe,ce,Pe],W=v[0],F=v[1],Y=v[2];break;case 4:S=[He,fe,Pe],W=S[0],F=S[1],Y=S[2];break;case 5:C=[Pe,fe,ce],W=C[0],F=C[1],Y=C[2];break}}return[W,F,Y,y.length>3?y[3]:1]},Jr=Kr,Qr=c.unpack,ei=c.type,ti=G,Rr=I,$r=b,ri=xr;Rr.prototype.hcg=function(){return ri(this._rgb)},ti.hcg=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Rr,[null].concat(l,["hcg"])))},$r.format.hcg=Jr,$r.autodetect.push({p:1,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=Qr(l,"hcg"),ei(l)==="array"&&l.length===3)return"hcg"}});var ii=c.unpack,w=c.last,be=Math.round,Vt=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=ii(l,"rgba"),v=f[0],S=f[1],C=f[2],y=f[3],x=w(l)||"auto";y===void 0&&(y=1),x==="auto"&&(x=y<1?"rgba":"rgb"),v=be(v),S=be(S),C=be(C);var R=v<<16|S<<8|C,L="000000"+R.toString(16);L=L.substr(L.length-6);var P="0"+be(y*255).toString(16);switch(P=P.substr(P.length-2),x.toLowerCase()){case"rgba":return"#"+L+P;case"argb":return"#"+P+L;default:return"#"+L}},Ke=Vt,ar=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Z=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,qt=function(l){if(l.match(ar)){(l.length===4||l.length===7)&&(l=l.substr(1)),l.length===3&&(l=l.split(""),l=l[0]+l[0]+l[1]+l[1]+l[2]+l[2]);var h=parseInt(l,16),f=h>>16,v=h>>8&255,S=h&255;return[f,v,S,1]}if(l.match(Z)){(l.length===5||l.length===9)&&(l=l.substr(1)),l.length===4&&(l=l.split(""),l=l[0]+l[0]+l[1]+l[1]+l[2]+l[2]+l[3]+l[3]);var C=parseInt(l,16),y=C>>24&255,x=C>>16&255,R=C>>8&255,L=Math.round((C&255)/255*100)/100;return[y,x,R,L]}throw new Error("unknown hex color: "+l)},ni=qt,Gi=G,si=I,Vi=c.type,xe=b,et=Ke;si.prototype.hex=function(l){return et(this._rgb,l)},Gi.hex=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(si,[null].concat(l,["hex"])))},xe.format.hex=ni,xe.autodetect.push({p:4,test:function(l){for(var h=[],f=arguments.length-1;f-- >0;)h[f]=arguments[f+1];if(!h.length&&Vi(l)==="string"&&[3,4,5,6,7,8,9].indexOf(l.length)>=0)return"hex"}});var qi=c.unpack,kr=c.TWOPI,ai=Math.min,Er=Math.sqrt,Bt=Math.acos,K=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=qi(l,"rgb"),v=f[0],S=f[1],C=f[2];v/=255,S/=255,C/=255;var y,x=ai(v,S,C),R=(v+S+C)/3,L=R>0?1-x/R:0;return L===0?y=NaN:(y=(v-S+(v-C))/2,y/=Er((v-S)*(v-S)+(v-C)*(S-C)),y=Bt(y),C>S&&(y=kr-y),y/=kr),[y*360,L,R]},lr=K,Tr=c.unpack,St=c.limit,Je=c.TWOPI,or=c.PITHIRD,st=Math.cos,li=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=Tr(l,"hsi");var f=l[0],v=l[1],S=l[2],C,y,x;return isNaN(f)&&(f=0),isNaN(v)&&(v=0),f>360&&(f-=360),f<0&&(f+=360),f/=360,f<1/3?(x=(1-v)/3,C=(1+v*st(Je*f)/st(or-Je*f))/3,y=1-(x+C)):f<2/3?(f-=1/3,C=(1-v)/3,y=(1+v*st(Je*f)/st(or-Je*f))/3,x=1-(C+y)):(f-=2/3,y=(1-v)/3,x=(1+v*st(Je*f)/st(or-Je*f))/3,C=1-(y+x)),C=St(S*C*3),y=St(S*y*3),x=St(S*x*3),[C*255,y*255,x*255,l.length>3?l[3]:1]},oi=li,Mr=c.unpack,Ir=c.type,hi=G,hr=I,Lr=b,ui=lr;hr.prototype.hsi=function(){return ui(this._rgb)},hi.hsi=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(hr,[null].concat(l,["hsi"])))},Lr.format.hsi=oi,Lr.autodetect.push({p:2,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=Mr(l,"hsi"),Ir(l)==="array"&&l.length===3)return"hsi"}});var fi=c.unpack,gi=c.type,ci=G,Or=I,Br=b,A=Lt;Or.prototype.hsl=function(){return A(this._rgb)},ci.hsl=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Or,[null].concat(l,["hsl"])))},Br.format.hsl=Be,Br.autodetect.push({p:2,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=fi(l,"hsl"),gi(l)==="array"&&l.length===3)return"hsl"}});var m=c.unpack,D=Math.min,N=Math.max,z=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=m(l,"rgb");var f=l[0],v=l[1],S=l[2],C=D(f,v,S),y=N(f,v,S),x=y-C,R,L,P;return P=y/255,y===0?(R=Number.NaN,L=0):(L=x/y,f===y&&(R=(v-S)/x),v===y&&(R=2+(S-f)/x),S===y&&(R=4+(f-v)/x),R*=60,R<0&&(R+=360)),[R,L,P]},X=z,Q=c.unpack,Me=Math.floor,tt=function(){for(var l,h,f,v,S,C,y=[],x=arguments.length;x--;)y[x]=arguments[x];y=Q(y,"hsv");var R=y[0],L=y[1],P=y[2],W,F,Y;if(P*=255,L===0)W=F=Y=P;else{R===360&&(R=0),R>360&&(R-=360),R<0&&(R+=360),R/=60;var q=Me(R),ie=R-q,oe=P*(1-L),fe=P*(1-L*ie),ce=P*(1-L*(1-ie));switch(q){case 0:l=[P,ce,oe],W=l[0],F=l[1],Y=l[2];break;case 1:h=[fe,P,oe],W=h[0],F=h[1],Y=h[2];break;case 2:f=[oe,P,ce],W=f[0],F=f[1],Y=f[2];break;case 3:v=[oe,fe,P],W=v[0],F=v[1],Y=v[2];break;case 4:S=[ce,oe,P],W=S[0],F=S[1],Y=S[2];break;case 5:C=[P,oe,fe],W=C[0],F=C[1],Y=C[2];break}}return[W,F,Y,y.length>3?y[3]:1]},at=tt,Qn=c.unpack,es=c.type,ts=G,Yi=I,Ui=b,rs=X;Yi.prototype.hsv=function(){return rs(this._rgb)},ts.hsv=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Yi,[null].concat(l,["hsv"])))},Ui.format.hsv=at,Ui.autodetect.push({p:2,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=Qn(l,"hsv"),es(l)==="array"&&l.length===3)return"hsv"}});var Dr={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},Yt=Dr,is=c.unpack,ji=Math.pow,ns=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=is(l,"rgb"),v=f[0],S=f[1],C=f[2],y=ss(v,S,C),x=y[0],R=y[1],L=y[2],P=116*R-16;return[P<0?0:P,500*(x-R),200*(R-L)]},di=function(l){return(l/=255)<=.04045?l/12.92:ji((l+.055)/1.055,2.4)},pi=function(l){return l>Yt.t3?ji(l,1/3):l/Yt.t2+Yt.t0},ss=function(l,h,f){l=di(l),h=di(h),f=di(f);var v=pi((.4124564*l+.3575761*h+.1804375*f)/Yt.Xn),S=pi((.2126729*l+.7151522*h+.072175*f)/Yt.Yn),C=pi((.0193339*l+.119192*h+.9503041*f)/Yt.Zn);return[v,S,C]},Zi=ns,Ut=Dr,as=c.unpack,ls=Math.pow,os=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=as(l,"lab");var f=l[0],v=l[1],S=l[2],C,y,x,R,L,P;return y=(f+16)/116,C=isNaN(v)?y:y+v/500,x=isNaN(S)?y:y-S/200,y=Ut.Yn*mi(y),C=Ut.Xn*mi(C),x=Ut.Zn*mi(x),R=vi(3.2404542*C-1.5371385*y-.4985314*x),L=vi(-.969266*C+1.8760108*y+.041556*x),P=vi(.0556434*C-.2040259*y+1.0572252*x),[R,L,P,l.length>3?l[3]:1]},vi=function(l){return 255*(l<=.00304?12.92*l:1.055*ls(l,1/2.4)-.055)},mi=function(l){return l>Ut.t1?l*l*l:Ut.t2*(l-Ut.t0)},Ki=os,hs=c.unpack,us=c.type,fs=G,Ji=I,Qi=b,gs=Zi;Ji.prototype.lab=function(){return gs(this._rgb)},fs.lab=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Ji,[null].concat(l,["lab"])))},Qi.format.lab=Ki,Qi.autodetect.push({p:2,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=hs(l,"lab"),us(l)==="array"&&l.length===3)return"lab"}});var cs=c.unpack,ds=c.RAD2DEG,ps=Math.sqrt,vs=Math.atan2,ms=Math.round,bs=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=cs(l,"lab"),v=f[0],S=f[1],C=f[2],y=ps(S*S+C*C),x=(vs(C,S)*ds+360)%360;return ms(y*1e4)===0&&(x=Number.NaN),[v,y,x]},en=bs,ws=c.unpack,ys=Zi,Ss=en,Cs=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=ws(l,"rgb"),v=f[0],S=f[1],C=f[2],y=ys(v,S,C),x=y[0],R=y[1],L=y[2];return Ss(x,R,L)},As=Cs,xs=c.unpack,Ns=c.DEG2RAD,Rs=Math.sin,$s=Math.cos,ks=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=xs(l,"lch"),v=f[0],S=f[1],C=f[2];return isNaN(C)&&(C=0),C=C*Ns,[v,$s(C)*S,Rs(C)*S]},tn=ks,Es=c.unpack,Ts=tn,Ms=Ki,Is=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=Es(l,"lch");var f=l[0],v=l[1],S=l[2],C=Ts(f,v,S),y=C[0],x=C[1],R=C[2],L=Ms(y,x,R),P=L[0],W=L[1],F=L[2];return[P,W,F,l.length>3?l[3]:1]},rn=Is,Ls=c.unpack,Os=rn,Bs=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=Ls(l,"hcl").reverse();return Os.apply(void 0,f)},Ds=Bs,Ps=c.unpack,Fs=c.type,nn=G,Pr=I,bi=b,sn=As;Pr.prototype.lch=function(){return sn(this._rgb)},Pr.prototype.hcl=function(){return sn(this._rgb).reverse()},nn.lch=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Pr,[null].concat(l,["lch"])))},nn.hcl=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(Pr,[null].concat(l,["hcl"])))},bi.format.lch=rn,bi.format.hcl=Ds,["lch","hcl"].forEach(function(l){return bi.autodetect.push({p:2,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=Ps(h,l),Fs(h)==="array"&&h.length===3)return l}})});var zs={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},an=zs,Hs=I,ln=b,_s=c.type,ur=an,Ws=ni,Xs=Ke;Hs.prototype.name=function(){for(var l=Xs(this._rgb,"rgb"),h=0,f=Object.keys(ur);h<f.length;h+=1){var v=f[h];if(ur[v]===l)return v.toLowerCase()}return l},ln.format.named=function(l){if(l=l.toLowerCase(),ur[l])return Ws(ur[l]);throw new Error("unknown color name: "+l)},ln.autodetect.push({p:5,test:function(l){for(var h=[],f=arguments.length-1;f-- >0;)h[f]=arguments[f+1];if(!h.length&&_s(l)==="string"&&ur[l.toLowerCase()])return"named"}});var Gs=c.unpack,Vs=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=Gs(l,"rgb"),v=f[0],S=f[1],C=f[2];return(v<<16)+(S<<8)+C},qs=Vs,Ys=c.type,Us=function(l){if(Ys(l)=="number"&&l>=0&&l<=16777215){var h=l>>16,f=l>>8&255,v=l&255;return[h,f,v,1]}throw new Error("unknown num color: "+l)},js=Us,Zs=G,on=I,hn=b,Ks=c.type,Js=qs;on.prototype.num=function(){return Js(this._rgb)},Zs.num=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(on,[null].concat(l,["num"])))},hn.format.num=js,hn.autodetect.push({p:5,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l.length===1&&Ks(l[0])==="number"&&l[0]>=0&&l[0]<=16777215)return"num"}});var Qs=G,wi=I,un=b,fn=c.unpack,gn=c.type,cn=Math.round;wi.prototype.rgb=function(l){return l===void 0&&(l=!0),l===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(cn)},wi.prototype.rgba=function(l){return l===void 0&&(l=!0),this._rgb.slice(0,4).map(function(h,f){return f<3?l===!1?h:cn(h):h})},Qs.rgb=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(wi,[null].concat(l,["rgb"])))},un.format.rgb=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=fn(l,"rgba");return f[3]===void 0&&(f[3]=1),f},un.autodetect.push({p:3,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=fn(l,"rgba"),gn(l)==="array"&&(l.length===3||l.length===4&&gn(l[3])=="number"&&l[3]>=0&&l[3]<=1))return"rgb"}});var Fr=Math.log,ea=function(l){var h=l/100,f,v,S;return h<66?(f=255,v=h<6?0:-155.25485562709179-.44596950469579133*(v=h-2)+104.49216199393888*Fr(v),S=h<20?0:-254.76935184120902+.8274096064007395*(S=h-10)+115.67994401066147*Fr(S)):(f=351.97690566805693+.114206453784165*(f=h-55)-40.25366309332127*Fr(f),v=325.4494125711974+.07943456536662342*(v=h-50)-28.0852963507957*Fr(v),S=255),[f,v,S,1]},dn=ea,ta=dn,ra=c.unpack,ia=Math.round,na=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];for(var f=ra(l,"rgb"),v=f[0],S=f[2],C=1e3,y=4e4,x=.4,R;y-C>x;){R=(y+C)*.5;var L=ta(R);L[2]/L[0]>=S/v?y=R:C=R}return ia(R)},sa=na,yi=G,zr=I,Si=b,aa=sa;zr.prototype.temp=zr.prototype.kelvin=zr.prototype.temperature=function(){return aa(this._rgb)},yi.temp=yi.kelvin=yi.temperature=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(zr,[null].concat(l,["temp"])))},Si.format.temp=Si.format.kelvin=Si.format.temperature=dn;var la=c.unpack,Ci=Math.cbrt,oa=Math.pow,ha=Math.sign,ua=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=la(l,"rgb"),v=f[0],S=f[1],C=f[2],y=[Ai(v/255),Ai(S/255),Ai(C/255)],x=y[0],R=y[1],L=y[2],P=Ci(.4122214708*x+.5363325363*R+.0514459929*L),W=Ci(.2119034982*x+.6806995451*R+.1073969566*L),F=Ci(.0883024619*x+.2817188376*R+.6299787005*L);return[.2104542553*P+.793617785*W-.0040720468*F,1.9779984951*P-2.428592205*W+.4505937099*F,.0259040371*P+.7827717662*W-.808675766*F]},pn=ua;function Ai(l){var h=Math.abs(l);return h<.04045?l/12.92:(ha(l)||1)*oa((h+.055)/1.055,2.4)}var fa=c.unpack,Hr=Math.pow,ga=Math.sign,ca=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=fa(l,"lab");var f=l[0],v=l[1],S=l[2],C=Hr(f+.3963377774*v+.2158037573*S,3),y=Hr(f-.1055613458*v-.0638541728*S,3),x=Hr(f-.0894841775*v-1.291485548*S,3);return[255*xi(4.0767416621*C-3.3077115913*y+.2309699292*x),255*xi(-1.2684380046*C+2.6097574011*y-.3413193965*x),255*xi(-.0041960863*C-.7034186147*y+1.707614701*x),l.length>3?l[3]:1]},vn=ca;function xi(l){var h=Math.abs(l);return h>.0031308?(ga(l)||1)*(1.055*Hr(h,1/2.4)-.055):l*12.92}var da=c.unpack,pa=c.type,va=G,mn=I,bn=b,ma=pn;mn.prototype.oklab=function(){return ma(this._rgb)},va.oklab=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(mn,[null].concat(l,["oklab"])))},bn.format.oklab=vn,bn.autodetect.push({p:3,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=da(l,"oklab"),pa(l)==="array"&&l.length===3)return"oklab"}});var ba=c.unpack,wa=pn,ya=en,Sa=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];var f=ba(l,"rgb"),v=f[0],S=f[1],C=f[2],y=wa(v,S,C),x=y[0],R=y[1],L=y[2];return ya(x,R,L)},Ca=Sa,Aa=c.unpack,xa=tn,Na=vn,Ra=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];l=Aa(l,"lch");var f=l[0],v=l[1],S=l[2],C=xa(f,v,S),y=C[0],x=C[1],R=C[2],L=Na(y,x,R),P=L[0],W=L[1],F=L[2];return[P,W,F,l.length>3?l[3]:1]},$a=Ra,ka=c.unpack,Ea=c.type,Ta=G,wn=I,yn=b,Ma=Ca;wn.prototype.oklch=function(){return Ma(this._rgb)},Ta.oklch=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];return new(Function.prototype.bind.apply(wn,[null].concat(l,["oklch"])))},yn.format.oklch=$a,yn.autodetect.push({p:3,test:function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];if(l=ka(l,"oklch"),Ea(l)==="array"&&l.length===3)return"oklch"}});var Sn=I,Ia=c.type;Sn.prototype.alpha=function(l,h){return h===void 0&&(h=!1),l!==void 0&&Ia(l)==="number"?h?(this._rgb[3]=l,this):new Sn([this._rgb[0],this._rgb[1],this._rgb[2],l],"rgb"):this._rgb[3]};var La=I;La.prototype.clipped=function(){return this._rgb._clipped||!1};var Dt=I,Oa=Dr;Dt.prototype.darken=function(l){l===void 0&&(l=1);var h=this,f=h.lab();return f[0]-=Oa.Kn*l,new Dt(f,"lab").alpha(h.alpha(),!0)},Dt.prototype.brighten=function(l){return l===void 0&&(l=1),this.darken(-l)},Dt.prototype.darker=Dt.prototype.darken,Dt.prototype.brighter=Dt.prototype.brighten;var Ba=I;Ba.prototype.get=function(l){var h=l.split("."),f=h[0],v=h[1],S=this[f]();if(v){var C=f.indexOf(v)-(f.substr(0,2)==="ok"?2:0);if(C>-1)return S[C];throw new Error("unknown channel "+v+" in mode "+f)}else return S};var jt=I,Da=c.type,Pa=Math.pow,Fa=1e-7,za=20;jt.prototype.luminance=function(l){if(l!==void 0&&Da(l)==="number"){if(l===0)return new jt([0,0,0,this._rgb[3]],"rgb");if(l===1)return new jt([255,255,255,this._rgb[3]],"rgb");var h=this.luminance(),f="rgb",v=za,S=function(y,x){var R=y.interpolate(x,.5,f),L=R.luminance();return Math.abs(l-L)<Fa||!v--?R:L>l?S(y,R):S(R,x)},C=(h>l?S(new jt([0,0,0]),this):S(this,new jt([255,255,255]))).rgb();return new jt(C.concat([this._rgb[3]]))}return Ha.apply(void 0,this._rgb.slice(0,3))};var Ha=function(l,h,f){return l=Ni(l),h=Ni(h),f=Ni(f),.2126*l+.7152*h+.0722*f},Ni=function(l){return l/=255,l<=.03928?l/12.92:Pa((l+.055)/1.055,2.4)},Qe={},Cn=I,An=c.type,_r=Qe,xn=function(l,h,f){f===void 0&&(f=.5);for(var v=[],S=arguments.length-3;S-- >0;)v[S]=arguments[S+3];var C=v[0]||"lrgb";if(!_r[C]&&!v.length&&(C=Object.keys(_r)[0]),!_r[C])throw new Error("interpolation mode "+C+" is not defined");return An(l)!=="object"&&(l=new Cn(l)),An(h)!=="object"&&(h=new Cn(h)),_r[C](l,h,f).alpha(l.alpha()+f*(h.alpha()-l.alpha()))},Nn=I,_a=xn;Nn.prototype.mix=Nn.prototype.interpolate=function(l,h){h===void 0&&(h=.5);for(var f=[],v=arguments.length-2;v-- >0;)f[v]=arguments[v+2];return _a.apply(void 0,[this,l,h].concat(f))};var Rn=I;Rn.prototype.premultiply=function(l){l===void 0&&(l=!1);var h=this._rgb,f=h[3];return l?(this._rgb=[h[0]*f,h[1]*f,h[2]*f,f],this):new Rn([h[0]*f,h[1]*f,h[2]*f,f],"rgb")};var Ri=I,Wa=Dr;Ri.prototype.saturate=function(l){l===void 0&&(l=1);var h=this,f=h.lch();return f[1]+=Wa.Kn*l,f[1]<0&&(f[1]=0),new Ri(f,"lch").alpha(h.alpha(),!0)},Ri.prototype.desaturate=function(l){return l===void 0&&(l=1),this.saturate(-l)};var $n=I,kn=c.type;$n.prototype.set=function(l,h,f){f===void 0&&(f=!1);var v=l.split("."),S=v[0],C=v[1],y=this[S]();if(C){var x=S.indexOf(C)-(S.substr(0,2)==="ok"?2:0);if(x>-1){if(kn(h)=="string")switch(h.charAt(0)){case"+":y[x]+=+h;break;case"-":y[x]+=+h;break;case"*":y[x]*=+h.substr(1);break;case"/":y[x]/=+h.substr(1);break;default:y[x]=+h}else if(kn(h)==="number")y[x]=h;else throw new Error("unsupported value for Color.set");var R=new $n(y,S);return f?(this._rgb=R._rgb,this):R}throw new Error("unknown channel "+C+" in mode "+S)}else return y};var Xa=I,Ga=function(l,h,f){var v=l._rgb,S=h._rgb;return new Xa(v[0]+f*(S[0]-v[0]),v[1]+f*(S[1]-v[1]),v[2]+f*(S[2]-v[2]),"rgb")};Qe.rgb=Ga;var Va=I,$i=Math.sqrt,Zt=Math.pow,qa=function(l,h,f){var v=l._rgb,S=v[0],C=v[1],y=v[2],x=h._rgb,R=x[0],L=x[1],P=x[2];return new Va($i(Zt(S,2)*(1-f)+Zt(R,2)*f),$i(Zt(C,2)*(1-f)+Zt(L,2)*f),$i(Zt(y,2)*(1-f)+Zt(P,2)*f),"rgb")};Qe.lrgb=qa;var Ya=I,Ua=function(l,h,f){var v=l.lab(),S=h.lab();return new Ya(v[0]+f*(S[0]-v[0]),v[1]+f*(S[1]-v[1]),v[2]+f*(S[2]-v[2]),"lab")};Qe.lab=Ua;var En=I,Kt=function(l,h,f,v){var S,C,y,x;v==="hsl"?(y=l.hsl(),x=h.hsl()):v==="hsv"?(y=l.hsv(),x=h.hsv()):v==="hcg"?(y=l.hcg(),x=h.hcg()):v==="hsi"?(y=l.hsi(),x=h.hsi()):v==="lch"||v==="hcl"?(v="hcl",y=l.hcl(),x=h.hcl()):v==="oklch"&&(y=l.oklch().reverse(),x=h.oklch().reverse());var R,L,P,W,F,Y;(v.substr(0,1)==="h"||v==="oklch")&&(S=y,R=S[0],P=S[1],F=S[2],C=x,L=C[0],W=C[1],Y=C[2]);var q,ie,oe,fe;return!isNaN(R)&&!isNaN(L)?(L>R&&L-R>180?fe=L-(R+360):L<R&&R-L>180?fe=L+360-R:fe=L-R,ie=R+f*fe):isNaN(R)?isNaN(L)?ie=Number.NaN:(ie=L,(F==1||F==0)&&v!="hsv"&&(q=W)):(ie=R,(Y==1||Y==0)&&v!="hsv"&&(q=P)),q===void 0&&(q=P+f*(W-P)),oe=F+f*(Y-F),v==="oklch"?new En([oe,q,ie],v):new En([ie,q,oe],v)},ja=Kt,Tn=function(l,h,f){return ja(l,h,f,"lch")};Qe.lch=Tn,Qe.hcl=Tn;var Za=I,Ka=function(l,h,f){var v=l.num(),S=h.num();return new Za(v+f*(S-v),"num")};Qe.num=Ka;var Ja=Kt,Qa=function(l,h,f){return Ja(l,h,f,"hcg")};Qe.hcg=Qa;var el=Kt,tl=function(l,h,f){return el(l,h,f,"hsi")};Qe.hsi=tl;var rl=Kt,il=function(l,h,f){return rl(l,h,f,"hsl")};Qe.hsl=il;var nl=Kt,sl=function(l,h,f){return nl(l,h,f,"hsv")};Qe.hsv=sl;var al=I,ll=function(l,h,f){var v=l.oklab(),S=h.oklab();return new al(v[0]+f*(S[0]-v[0]),v[1]+f*(S[1]-v[1]),v[2]+f*(S[2]-v[2]),"oklab")};Qe.oklab=ll;var ol=Kt,hl=function(l,h,f){return ol(l,h,f,"oklch")};Qe.oklch=hl;var ki=I,ul=c.clip_rgb,Ei=Math.pow,Ti=Math.sqrt,Mi=Math.PI,Mn=Math.cos,In=Math.sin,fl=Math.atan2,gl=function(l,h,f){h===void 0&&(h="lrgb"),f===void 0&&(f=null);var v=l.length;f||(f=Array.from(new Array(v)).map(function(){return 1}));var S=v/f.reduce(function(ie,oe){return ie+oe});if(f.forEach(function(ie,oe){f[oe]*=S}),l=l.map(function(ie){return new ki(ie)}),h==="lrgb")return cl(l,f);for(var C=l.shift(),y=C.get(h),x=[],R=0,L=0,P=0;P<y.length;P++)if(y[P]=(y[P]||0)*f[0],x.push(isNaN(y[P])?0:f[0]),h.charAt(P)==="h"&&!isNaN(y[P])){var W=y[P]/180*Mi;R+=Mn(W)*f[0],L+=In(W)*f[0]}var F=C.alpha()*f[0];l.forEach(function(ie,oe){var fe=ie.get(h);F+=ie.alpha()*f[oe+1];for(var ce=0;ce<y.length;ce++)if(!isNaN(fe[ce]))if(x[ce]+=f[oe+1],h.charAt(ce)==="h"){var He=fe[ce]/180*Mi;R+=Mn(He)*f[oe+1],L+=In(He)*f[oe+1]}else y[ce]+=fe[ce]*f[oe+1]});for(var Y=0;Y<y.length;Y++)if(h.charAt(Y)==="h"){for(var q=fl(L/x[Y],R/x[Y])/Mi*180;q<0;)q+=360;for(;q>=360;)q-=360;y[Y]=q}else y[Y]=y[Y]/x[Y];return F/=v,new ki(y,h).alpha(F>.99999?1:F,!0)},cl=function(l,h){for(var f=l.length,v=[0,0,0,0],S=0;S<l.length;S++){var C=l[S],y=h[S]/f,x=C._rgb;v[0]+=Ei(x[0],2)*y,v[1]+=Ei(x[1],2)*y,v[2]+=Ei(x[2],2)*y,v[3]+=x[3]*y}return v[0]=Ti(v[0]),v[1]=Ti(v[1]),v[2]=Ti(v[2]),v[3]>.9999999&&(v[3]=1),new ki(ul(v))},lt=G,Jt=c.type,dl=Math.pow,Ii=function(l){var h="rgb",f=lt("#ccc"),v=0,S=[0,1],C=[],y=[0,0],x=!1,R=[],L=!1,P=0,W=1,F=!1,Y={},q=!0,ie=1,oe=function(H){if(H=H||["#fff","#000"],H&&Jt(H)==="string"&<.brewer&<.brewer[H.toLowerCase()]&&(H=lt.brewer[H.toLowerCase()]),Jt(H)==="array"){H.length===1&&(H=[H[0],H[0]]),H=H.slice(0);for(var ee=0;ee<H.length;ee++)H[ee]=lt(H[ee]);C.length=0;for(var le=0;le<H.length;le++)C.push(le/(H.length-1))}return Ue(),R=H},fe=function(H){if(x!=null){for(var ee=x.length-1,le=0;le<ee&&H>=x[le];)le++;return le-1}return 0},ce=function(H){return H},He=function(H){return H},Pe=function(H,ee){var le,ne;if(ee==null&&(ee=!1),isNaN(H)||H===null)return f;if(ee)ne=H;else if(x&&x.length>2){var _e=fe(H);ne=_e/(x.length-2)}else W!==P?ne=(H-P)/(W-P):ne=1;ne=He(ne),ee||(ne=ce(ne)),ie!==1&&(ne=dl(ne,ie)),ne=y[0]+ne*(1-y[0]-y[1]),ne=Math.min(1,Math.max(0,ne));var ye=Math.floor(ne*1e4);if(q&&Y[ye])le=Y[ye];else{if(Jt(R)==="array")for(var ge=0;ge<C.length;ge++){var de=C[ge];if(ne<=de){le=R[ge];break}if(ne>=de&&ge===C.length-1){le=R[ge];break}if(ne>de&&ne<C[ge+1]){ne=(ne-de)/(C[ge+1]-de),le=lt.interpolate(R[ge],R[ge+1],ne,h);break}}else Jt(R)==="function"&&(le=R(ne));q&&(Y[ye]=le)}return le},Ue=function(){return Y={}};oe(l);var he=function(H){var ee=lt(Pe(H));return L&&ee[L]?ee[L]():ee};return he.classes=function(H){if(H!=null){if(Jt(H)==="array")x=H,S=[H[0],H[H.length-1]];else{var ee=lt.analyze(S);H===0?x=[ee.min,ee.max]:x=lt.limits(ee,"e",H)}return he}return x},he.domain=function(H){if(!arguments.length)return S;P=H[0],W=H[H.length-1],C=[];var ee=R.length;if(H.length===ee&&P!==W)for(var le=0,ne=Array.from(H);le<ne.length;le+=1){var _e=ne[le];C.push((_e-P)/(W-P))}else{for(var ye=0;ye<ee;ye++)C.push(ye/(ee-1));if(H.length>2){var ge=H.map(function(pe,ve){return ve/(H.length-1)}),de=H.map(function(pe){return(pe-P)/(W-P)});de.every(function(pe,ve){return ge[ve]===pe})||(He=function(pe){if(pe<=0||pe>=1)return pe;for(var ve=0;pe>=de[ve+1];)ve++;var ht=(pe-de[ve])/(de[ve+1]-de[ve]),xt=ge[ve]+ht*(ge[ve+1]-ge[ve]);return xt})}}return S=[P,W],he},he.mode=function(H){return arguments.length?(h=H,Ue(),he):h},he.range=function(H,ee){return oe(H),he},he.out=function(H){return L=H,he},he.spread=function(H){return arguments.length?(v=H,he):v},he.correctLightness=function(H){return H==null&&(H=!0),F=H,Ue(),F?ce=function(ee){for(var le=Pe(0,!0).lab()[0],ne=Pe(1,!0).lab()[0],_e=le>ne,ye=Pe(ee,!0).lab()[0],ge=le+(ne-le)*ee,de=ye-ge,pe=0,ve=1,ht=20;Math.abs(de)>.01&&ht-- >0;)(function(){return _e&&(de*=-1),de<0?(pe=ee,ee+=(ve-ee)*.5):(ve=ee,ee+=(pe-ee)*.5),ye=Pe(ee,!0).lab()[0],de=ye-ge})();return ee}:ce=function(ee){return ee},he},he.padding=function(H){return H!=null?(Jt(H)==="number"&&(H=[H,H]),y=H,he):y},he.colors=function(H,ee){arguments.length<2&&(ee="hex");var le=[];if(arguments.length===0)le=R.slice(0);else if(H===1)le=[he(.5)];else if(H>1){var ne=S[0],_e=S[1]-ne;le=pl(0,H,!1).map(function(ve){return he(ne+ve/(H-1)*_e)})}else{l=[];var ye=[];if(x&&x.length>2)for(var ge=1,de=x.length,pe=1<=de;pe?ge<de:ge>de;pe?ge++:ge--)ye.push((x[ge-1]+x[ge])*.5);else ye=S;le=ye.map(function(ve){return he(ve)})}return lt[ee]&&(le=le.map(function(ve){return ve[ee]()})),le},he.cache=function(H){return H!=null?(q=H,he):q},he.gamma=function(H){return H!=null?(ie=H,he):ie},he.nodata=function(H){return H!=null?(f=lt(H),he):f},he};function pl(l,h,f){for(var v=[],S=l<h,C=f?S?h+1:h-1:h,y=l;S?y<C:y>C;S?y++:y--)v.push(y);return v}var fr=I,vl=Ii,ml=function(l){for(var h=[1,1],f=1;f<l;f++){for(var v=[1],S=1;S<=h.length;S++)v[S]=(h[S]||0)+h[S-1];h=v}return h},bl=function(l){var h,f,v,S,C,y,x;if(l=l.map(function(F){return new fr(F)}),l.length===2)h=l.map(function(F){return F.lab()}),C=h[0],y=h[1],S=function(F){var Y=[0,1,2].map(function(q){return C[q]+F*(y[q]-C[q])});return new fr(Y,"lab")};else if(l.length===3)f=l.map(function(F){return F.lab()}),C=f[0],y=f[1],x=f[2],S=function(F){var Y=[0,1,2].map(function(q){return(1-F)*(1-F)*C[q]+2*(1-F)*F*y[q]+F*F*x[q]});return new fr(Y,"lab")};else if(l.length===4){var R;v=l.map(function(F){return F.lab()}),C=v[0],y=v[1],x=v[2],R=v[3],S=function(F){var Y=[0,1,2].map(function(q){return(1-F)*(1-F)*(1-F)*C[q]+3*(1-F)*(1-F)*F*y[q]+3*(1-F)*F*F*x[q]+F*F*F*R[q]});return new fr(Y,"lab")}}else if(l.length>=5){var L,P,W;L=l.map(function(F){return F.lab()}),W=l.length-1,P=ml(W),S=function(F){var Y=1-F,q=[0,1,2].map(function(ie){return L.reduce(function(oe,fe,ce){return oe+P[ce]*Math.pow(Y,W-ce)*Math.pow(F,ce)*fe[ie]},0)});return new fr(q,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return S},wl=function(l){var h=bl(l);return h.scale=function(){return vl(h)},h},Li=G,ot=function(l,h,f){if(!ot[f])throw new Error("unknown blend mode "+f);return ot[f](l,h)},Ct=function(l){return function(h,f){var v=Li(f).rgb(),S=Li(h).rgb();return Li.rgb(l(v,S))}},At=function(l){return function(h,f){var v=[];return v[0]=l(h[0],f[0]),v[1]=l(h[1],f[1]),v[2]=l(h[2],f[2]),v}},yl=function(l){return l},Sl=function(l,h){return l*h/255},Cl=function(l,h){return l>h?h:l},Al=function(l,h){return l>h?l:h},xl=function(l,h){return 255*(1-(1-l/255)*(1-h/255))},Nl=function(l,h){return h<128?2*l*h/255:255*(1-2*(1-l/255)*(1-h/255))},Rl=function(l,h){return 255*(1-(1-h/255)/(l/255))},$l=function(l,h){return l===255?255:(l=255*(h/255)/(1-l/255),l>255?255:l)};ot.normal=Ct(At(yl)),ot.multiply=Ct(At(Sl)),ot.screen=Ct(At(xl)),ot.overlay=Ct(At(Nl)),ot.darken=Ct(At(Cl)),ot.lighten=Ct(At(Al)),ot.dodge=Ct(At($l)),ot.burn=Ct(At(Rl));for(var kl=ot,Oi=c.type,El=c.clip_rgb,Tl=c.TWOPI,Ml=Math.pow,Il=Math.sin,Ll=Math.cos,Ln=G,Ol=function(l,h,f,v,S){l===void 0&&(l=300),h===void 0&&(h=-1.5),f===void 0&&(f=1),v===void 0&&(v=1),S===void 0&&(S=[0,1]);var C=0,y;Oi(S)==="array"?y=S[1]-S[0]:(y=0,S=[S,S]);var x=function(R){var L=Tl*((l+120)/360+h*R),P=Ml(S[0]+y*R,v),W=C!==0?f[0]+R*C:f,F=W*P*(1-P)/2,Y=Ll(L),q=Il(L),ie=P+F*(-.14861*Y+1.78277*q),oe=P+F*(-.29227*Y-.90649*q),fe=P+F*(1.97294*Y);return Ln(El([ie*255,oe*255,fe*255,1]))};return x.start=function(R){return R==null?l:(l=R,x)},x.rotations=function(R){return R==null?h:(h=R,x)},x.gamma=function(R){return R==null?v:(v=R,x)},x.hue=function(R){return R==null?f:(f=R,Oi(f)==="array"?(C=f[1]-f[0],C===0&&(f=f[1])):C=0,x)},x.lightness=function(R){return R==null?S:(Oi(R)==="array"?(S=R,y=R[1]-R[0]):(S=[R,R],y=0),x)},x.scale=function(){return Ln.scale(x)},x.hue(f),x},Bl=I,Dl="0123456789abcdef",Pl=Math.floor,Fl=Math.random,zl=function(){for(var l="#",h=0;h<6;h++)l+=Dl.charAt(Pl(Fl()*16));return new Bl(l,"hex")},Bi=n,On=Math.log,Hl=Math.pow,_l=Math.floor,Wl=Math.abs,Bn=function(l,h){h===void 0&&(h=null);var f={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return Bi(l)==="object"&&(l=Object.values(l)),l.forEach(function(v){h&&Bi(v)==="object"&&(v=v[h]),v!=null&&!isNaN(v)&&(f.values.push(v),f.sum+=v,v<f.min&&(f.min=v),v>f.max&&(f.max=v),f.count+=1)}),f.domain=[f.min,f.max],f.limits=function(v,S){return Dn(f,v,S)},f},Dn=function(l,h,f){h===void 0&&(h="equal"),f===void 0&&(f=7),Bi(l)=="array"&&(l=Bn(l));var v=l.min,S=l.max,C=l.values.sort(function(Pi,Fi){return Pi-Fi});if(f===1)return[v,S];var y=[];if(h.substr(0,1)==="c"&&(y.push(v),y.push(S)),h.substr(0,1)==="e"){y.push(v);for(var x=1;x<f;x++)y.push(v+x/f*(S-v));y.push(S)}else if(h.substr(0,1)==="l"){if(v<=0)throw new Error("Logarithmic scales are only possible for values > 0");var R=Math.LOG10E*On(v),L=Math.LOG10E*On(S);y.push(v);for(var P=1;P<f;P++)y.push(Hl(10,R+P/f*(L-R)));y.push(S)}else if(h.substr(0,1)==="q"){y.push(v);for(var W=1;W<f;W++){var F=(C.length-1)*W/f,Y=_l(F);if(Y===F)y.push(C[Y]);else{var q=F-Y;y.push(C[Y]*(1-q)+C[Y+1]*q)}}y.push(S)}else if(h.substr(0,1)==="k"){var ie,oe=C.length,fe=new Array(oe),ce=new Array(f),He=!0,Pe=0,Ue=null;Ue=[],Ue.push(v);for(var he=1;he<f;he++)Ue.push(v+he/f*(S-v));for(Ue.push(S);He;){for(var H=0;H<f;H++)ce[H]=0;for(var ee=0;ee<oe;ee++)for(var le=C[ee],ne=Number.MAX_VALUE,_e=void 0,ye=0;ye<f;ye++){var ge=Wl(Ue[ye]-le);ge<ne&&(ne=ge,_e=ye),ce[_e]++,fe[ee]=_e}for(var de=new Array(f),pe=0;pe<f;pe++)de[pe]=null;for(var ve=0;ve<oe;ve++)ie=fe[ve],de[ie]===null?de[ie]=C[ve]:de[ie]+=C[ve];for(var ht=0;ht<f;ht++)de[ht]*=1/ce[ht];He=!1;for(var xt=0;xt<f;xt++)if(de[xt]!==Ue[xt]){He=!0;break}Ue=de,Pe++,Pe>200&&(He=!1)}for(var Nt={},Qt=0;Qt<f;Qt++)Nt[Qt]=[];for(var er=0;er<oe;er++)ie=fe[er],Nt[ie].push(C[er]);for(var pt=[],Pt=0;Pt<f;Pt++)pt.push(Nt[Pt][0]),pt.push(Nt[Pt][Nt[Pt].length-1]);pt=pt.sort(function(Pi,Fi){return Pi-Fi}),y.push(pt[0]);for(var gr=1;gr<pt.length;gr+=2){var Ft=pt[gr];!isNaN(Ft)&&y.indexOf(Ft)===-1&&y.push(Ft)}}return y},Pn={analyze:Bn,limits:Dn},Fn=I,Xl=function(l,h){l=new Fn(l),h=new Fn(h);var f=l.luminance(),v=h.luminance();return f>v?(f+.05)/(v+.05):(v+.05)/(f+.05)},zn=I,dt=Math.sqrt,Te=Math.pow,Gl=Math.min,Vl=Math.max,Hn=Math.atan2,_n=Math.abs,Wr=Math.cos,Wn=Math.sin,ql=Math.exp,Xn=Math.PI,Yl=function(l,h,f,v,S){f===void 0&&(f=1),v===void 0&&(v=1),S===void 0&&(S=1);var C=function(Ft){return 360*Ft/(2*Xn)},y=function(Ft){return 2*Xn*Ft/360};l=new zn(l),h=new zn(h);var x=Array.from(l.lab()),R=x[0],L=x[1],P=x[2],W=Array.from(h.lab()),F=W[0],Y=W[1],q=W[2],ie=(R+F)/2,oe=dt(Te(L,2)+Te(P,2)),fe=dt(Te(Y,2)+Te(q,2)),ce=(oe+fe)/2,He=.5*(1-dt(Te(ce,7)/(Te(ce,7)+Te(25,7)))),Pe=L*(1+He),Ue=Y*(1+He),he=dt(Te(Pe,2)+Te(P,2)),H=dt(Te(Ue,2)+Te(q,2)),ee=(he+H)/2,le=C(Hn(P,Pe)),ne=C(Hn(q,Ue)),_e=le>=0?le:le+360,ye=ne>=0?ne:ne+360,ge=_n(_e-ye)>180?(_e+ye+360)/2:(_e+ye)/2,de=1-.17*Wr(y(ge-30))+.24*Wr(y(2*ge))+.32*Wr(y(3*ge+6))-.2*Wr(y(4*ge-63)),pe=ye-_e;pe=_n(pe)<=180?pe:ye<=_e?pe+360:pe-360,pe=2*dt(he*H)*Wn(y(pe)/2);var ve=F-R,ht=H-he,xt=1+.015*Te(ie-50,2)/dt(20+Te(ie-50,2)),Nt=1+.045*ee,Qt=1+.015*ee*de,er=30*ql(-Te((ge-275)/25,2)),pt=2*dt(Te(ee,7)/(Te(ee,7)+Te(25,7))),Pt=-pt*Wn(2*y(er)),gr=dt(Te(ve/(f*xt),2)+Te(ht/(v*Nt),2)+Te(pe/(S*Qt),2)+Pt*(ht/(v*Nt))*(pe/(S*Qt)));return Vl(0,Gl(100,gr))},Gn=I,Ul=function(l,h,f){f===void 0&&(f="lab"),l=new Gn(l),h=new Gn(h);var v=l.get(f),S=h.get(f),C=0;for(var y in v){var x=(v[y]||0)-(S[y]||0);C+=x*x}return Math.sqrt(C)},jl=I,Zl=function(){for(var l=[],h=arguments.length;h--;)l[h]=arguments[h];try{return new(Function.prototype.bind.apply(jl,[null].concat(l))),!0}catch(f){return!1}},Vn=G,qn=Ii,Kl={cool:function(){return qn([Vn.hsl(180,1,.9),Vn.hsl(250,.7,.4)])},hot:function(){return qn(["#000","#f00","#ff0","#fff"]).mode("rgb")}},Xr={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},Di=0,Yn=Object.keys(Xr);Di<Yn.length;Di+=1){var Un=Yn[Di];Xr[Un.toLowerCase()]=Xr[Un]}var Jl=Xr,De=G;De.average=gl,De.bezier=wl,De.blend=kl,De.cubehelix=Ol,De.mix=De.interpolate=xn,De.random=zl,De.scale=Ii,De.analyze=Pn.analyze,De.contrast=Xl,De.deltaE=Yl,De.distance=Ul,De.limits=Pn.limits,De.valid=Zl,De.scales=Kl,De.colors=an,De.brewer=Jl;var Ql=De;return Ql})});var me=class ${static clone(e){let t=Array.isArray(e)?[]:{};for(let r in e){let i=e[r];typeof i.clone=="function"?t[r]=i.clone():t[r]=typeof i=="object"?$.clone(i):i}return t}static equals(e,t){if(e.length!==t.length)return!1;let r=e.slice().sort(),i=t.slice().sort();for(let s=0;s<r.length;s++)if(r[s]!==i[s])return!1;return!0}static print(e){if(e.length==0)return"";let t="(";for(let r=0;r<e.length;r++)t+=e[r].id?e[r].id+", ":e[r]+", ";return t=t.substring(0,t.length-2),t+")"}static each(e,t){for(let r=0;r<e.length;r++)t(e[r])}static get(e,t,r){for(let i=0;i<e.length;i++)if(e[i][t]==r)return e[i]}static contains(e,t){if(!t.property&&!t.func){for(let r=0;r<e.length;r++)if(e[r]==t.value)return!0}else if(t.func){for(let r=0;r<e.length;r++)if(t.func(e[r]))return!0}else for(let r=0;r<e.length;r++)if(e[r][t.property]==t.value)return!0;return!1}static intersection(e,t){let r=[];for(let i=0;i<e.length;i++)for(let s=0;s<t.length;s++)e[i]===t[s]&&r.push(e[i]);return r}static unique(e){let t={};return e.filter(function(r){return t[r]!==void 0?!1:t[r]=!0})}static count(e,t){let r=0;for(let i=0;i<e.length;i++)e[i]===t&&r++;return r}static toggle(e,t){let r=[],i=!1;for(let s=0;s<e.length;s++)e[s]!==t?r.push(e[s]):i=!0;return i||r.push(t),r}static remove(e,t){let r=[];for(let i=0;i<e.length;i++)e[i]!==t&&r.push(e[i]);return r}static removeUnique(e,t){let r=e.indexOf(t);return r>-1&&e.splice(r,1),e}static removeAll(e,t){return e.filter(function(r){return t.indexOf(r)===-1})}static merge(e,t){let r=new Array(e.length+t.length);for(let i=0;i<e.length;i++)r[i]=e[i];for(let i=0;i<t.length;i++)r[e.length+i]=t[i];return r}static containsAll(e,t){let r=0;for(let i=0;i<e.length;i++)for(let s=0;s<t.length;s++)e[i]===t[s]&&r++;return r===t.length}static sortByAtomicNumberDesc(e){let t=e.map(function(r,i){return{index:i,value:r.atomicNumber.split(".").map(Number)}});return t.sort(function(r,i){let s=Math.min(i.value.length,r.value.length),a=0;for(;a<s&&i.value[a]===r.value[a];)a++;return a===s?i.value.length-r.value.length:i.value[a]-r.value[a]}),t.map(function(r){return e[r.index]})}static deepCopy(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r];i instanceof Array?t[r]=$.deepCopy(i):t[r]=i}return t}};var cr=class cr{constructor(e,t="-"){this.idx=null,this.element=e.length===1?e.toUpperCase():e,this.drawExplicit=!1,this.ringbonds=[],this.rings=[],this.bondType=t,this.branchBond=null,this.isBridge=!1,this.isBridgeNode=!1,this.originalRings=[],this.bridgedRing=null,this.anchoredRings=[],this.bracket=null,this.plane=0,this.attachedPseudoElements={},this.hasAttachedPseudoElements=!1,this.isDrawn=!0,this.isConnectedToRing=!1,this.neighbouringElements=[],this.isPartOfAromaticRing=e!==this.element,this.bondCount=0,this.chirality="",this.isStereoCenter=!1,this.priority=0,this.mainChain=!1,this.hydrogenDirection="down",this.subtreeDepth=1,this.hasHydrogen=!1,this.class=void 0}addNeighbouringElement(e){this.neighbouringElements.push(e)}attachPseudoElement(e,t,r=0,i=0){r===null&&(r=0),i===null&&(i=0);let s=r+e+i;this.attachedPseudoElements[s]?this.attachedPseudoElements[s].count+=1:this.attachedPseudoElements[s]={element:e,count:1,hydrogenCount:r,previousElement:t,charge:i},this.hasAttachedPseudoElements=!0}getAttachedPseudoElements(){let e={};return Object.keys(this.attachedPseudoElements).sort().forEach(t=>{e[t]=this.attachedPseudoElements[t]}),e}getAttachedPseudoElementsCount(){return Object.keys(this.attachedPseudoElements).length}isHeteroAtom(){return this.element!=="C"&&this.element!=="H"}addAnchoredRing(e){me.contains(this.anchoredRings,{value:e})||this.anchoredRings.push(e)}getRingbondCount(){return this.ringbonds.length}backupRings(){this.originalRings=Array(this.rings.length);for(let e=0;e<this.rings.length;e++)this.originalRings[e]=this.rings[e]}restoreRings(){this.rings=Array(this.originalRings.length);for(let e=0;e<this.originalRings.length;e++)this.rings[e]=this.originalRings[e]}haveCommonRingbond(e,t){for(let r=0;r<e.ringbonds.length;r++)for(let i=0;i<t.ringbonds.length;i++)if(e.ringbonds[r].id==t.ringbonds[i].id)return!0;return!1}neighbouringElementsEqual(e){if(e.length!==this.neighbouringElements.length)return!1;e.sort(),this.neighbouringElements.sort();for(let t=0;t<this.neighbouringElements.length;t++)if(e[t]!==this.neighbouringElements[t])return!1;return!0}getAtomicNumber(){return cr.atomicNumbers[this.element]}countImplicitHydrogens(){if(this.bracket)return this.bracket.chirality?0:this.bracket.hcount||0;let e=this.bondCount;if(this.isPartOfAromaticRing){if(this.element!=="C")return 0;e+=1}let t=cr.VALENCES[this.element];if(t===void 0)return 0;let r=t.find(i=>i>=e);return r!==void 0?r-e:0}static get atomicNumbers(){return{H:1,He:2,Li:3,Be:4,B:5,b:5,C:6,c:6,N:7,n:7,O:8,o:8,F:9,Ne:10,Na:11,Mg:12,Al:13,Si:14,P:15,p:15,S:16,s:16,Cl:17,Ar:18,K:19,Ca:20,Sc:21,Ti:22,V:23,Cr:24,Mn:25,Fe:26,Co:27,Ni:28,Cu:29,Zn:30,Ga:31,Ge:32,As:33,Se:34,Br:35,Kr:36,Rb:37,Sr:38,Y:39,Zr:40,Nb:41,Mo:42,Tc:43,Ru:44,Rh:45,Pd:46,Ag:47,Cd:48,In:49,Sn:50,Sb:51,Te:52,I:53,Xe:54,Cs:55,Ba:56,La:57,Ce:58,Pr:59,Nd:60,Pm:61,Sm:62,Eu:63,Gd:64,Tb:65,Dy:66,Ho:67,Er:68,Tm:69,Yb:70,Lu:71,Hf:72,Ta:73,W:74,Re:75,Os:76,Ir:77,Pt:78,Au:79,Hg:80,Tl:81,Pb:82,Bi:83,Po:84,At:85,Rn:86,Fr:87,Ra:88,Ac:89,Th:90,Pa:91,U:92,Np:93,Pu:94,Am:95,Cm:96,Bk:97,Cf:98,Es:99,Fm:100,Md:101,No:102,Lr:103,Rf:104,Db:105,Sg:106,Bh:107,Hs:108,Mt:109,Ds:110,Rg:111,Cn:112,Uut:113,Uuq:114,Uup:115,Uuh:116,Uus:117,Uuo:118}}};jn(cr,"VALENCES",{H:[1],B:[3],C:[4],N:[3,5],O:[2],F:[1],P:[3,5],S:[2,4,6],Cl:[1],Br:[1],I:[1]});var zt=cr;var M=class ${constructor(e,t){arguments.length==0?(this.x=0,this.y=0):e instanceof $?(this.x=e.x,this.y=e.y):(this.x=e,this.y=t)}clone(){return new $(this.x,this.y)}toString(){return"("+this.x+","+this.y+")"}add(e){return this.x+=e.x,this.y+=e.y,this}subtract(e){return this.x-=e.x,this.y-=e.y,this}divide(e){return this.x/=e,this.y/=e,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}invert(){return this.x=-this.x,this.y=-this.y,this}angle(){return Math.atan2(this.y,this.x)}distance(e){return Math.sqrt((e.x-this.x)*(e.x-this.x)+(e.y-this.y)*(e.y-this.y))}distanceSq(e){return(e.x-this.x)*(e.x-this.x)+(e.y-this.y)*(e.y-this.y)}clockwise(e){let t=this.y*e.x,r=this.x*e.y;return t>r?-1:t===r?0:1}relativeClockwise(e,t){let r=(this.y-e.y)*(t.x-e.x),i=(this.x-e.x)*(t.y-e.y);return r>i?-1:r===i?0:1}rotate(e){let t=new $(0,0),r=Math.cos(e),i=Math.sin(e);return t.x=this.x*r-this.y*i,t.y=this.x*i+this.y*r,this.x=t.x,this.y=t.y,this}rotateAround(e,t){let r=Math.sin(e),i=Math.cos(e);this.x-=t.x,this.y-=t.y;let s=this.x*i-this.y*r,a=this.x*r+this.y*i;return this.x=s+t.x,this.y=a+t.y,this}rotateTo(e,t,r=0){this.x+=.001,this.y-=.001;let i=$.subtract(this,t),s=$.subtract(e,t),a=$.angle(s,i);return this.rotateAround(a+r,t),this}rotateAwayFrom(e,t,r){this.rotateAround(r,t);let i=this.distanceSq(e);this.rotateAround(-2*r,t),this.distanceSq(e)<i&&this.rotateAround(2*r,t)}getRotateAwayFromAngle(e,t,r){let i=this.clone();i.rotateAround(r,t);let s=i.distanceSq(e);return i.rotateAround(-2*r,t),i.distanceSq(e)<s?r:-r}getRotateTowardsAngle(e,t,r){let i=this.clone();i.rotateAround(r,t);let s=i.distanceSq(e);return i.rotateAround(-2*r,t),i.distanceSq(e)>s?r:-r}getRotateToAngle(e,t){let r=$.subtract(this,t),i=$.subtract(e,t),s=$.angle(i,r);return Number.isNaN(s)?0:s}isInPolygon(e){let t=!1;for(let r=0,i=e.length-1;r<e.length;i=r++){let s=e[r],a=e[i];s.y>this.y!=a.y>this.y&&this.x<(a.x-s.x)*(this.y-s.y)/(a.y-s.y)+s.x&&(t=!t)}return t}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}lengthSq(){return this.x*this.x+this.y*this.y}normalize(){return this.divide(this.length()),this}normalized(){return $.divideScalar(this,this.length())}whichSide(e,t){return(this.x-e.x)*(t.y-e.y)-(this.y-e.y)*(t.x-e.x)}sameSideAs(e,t,r){let i=this.whichSide(e,t),s=r.whichSide(e,t);return i<0&&s<0||i==0&&s==0||i>0&&s>0}static add(e,t){return new $(e.x+t.x,e.y+t.y)}static subtract(e,t){return new $(e.x-t.x,e.y-t.y)}static multiply(e,t){return new $(e.x*t.x,e.y*t.y)}static multiplyScalar(e,t){return new $(e.x,e.y).multiplyScalar(t)}static midpoint(e,t){return new $((e.x+t.x)/2,(e.y+t.y)/2)}static normals(e,t){let r=$.subtract(t,e);return[new $(-r.y,r.x),new $(r.y,-r.x)]}static units(e,t){let r=$.subtract(t,e);return[new $(-r.y,r.x).normalize(),new $(r.y,-r.x).normalize()]}static divide(e,t){return new $(e.x/t.x,e.y/t.y)}static divideScalar(e,t){return new $(e.x/t,e.y/t)}static dot(e,t){return e.x*t.x+e.y*t.y}static angle(e,t){let r=$.dot(e,t);return Math.acos(r/(e.length()*t.length()))}static threePointangle(e,t,r){let i=$.subtract(t,e),s=$.subtract(r,t),a=e.distance(t),n=t.distance(r);return Math.acos($.dot(i,s)/(a*n))}static scalarProjection(e,t){let r=t.normalized();return $.dot(e,r)}static averageDirection(e){let t=new $(0,0);for(let r=0;r<e.length;r++){let i=e[r];t.add(i)}return t.normalize()}};var te=class ${constructor(e=new M(0,0),t=new M(0,0),r=null,i=null,s=!1,a=!1){this.from=e,this.to=t,this.elementFrom=r,this.elementTo=i,this.chiralFrom=s,this.chiralTo=a}clone(){return new $(this.from.clone(),this.to.clone(),this.elementFrom,this.elementTo)}getLength(){let e=this.to.x-this.from.x,t=this.to.y-this.from.y;return Math.sqrt(e*e+t*t)}getAngle(){return M.subtract(this.getRightVector(),this.getLeftVector()).angle()}getRightVector(){return this.from.x<this.to.x?this.to:this.from}getLeftVector(){return this.from.x<this.to.x?this.from:this.to}getRightElement(){return this.from.x<this.to.x?this.elementTo:this.elementFrom}getLeftElement(){return this.from.x<this.to.x?this.elementFrom:this.elementTo}getRightChiral(){return this.from.x<this.to.x?this.chiralTo:this.chiralFrom}getLeftChiral(){return this.from.x<this.to.x?this.chiralFrom:this.chiralTo}setRightVector(e,t){return this.from.x<this.to.x?(this.to.x=e,this.to.y=t):(this.from.x=e,this.from.y=t),this}setLeftVector(e,t){return this.from.x<this.to.x?(this.from.x=e,this.from.y=t):(this.to.x=e,this.to.y=t),this}rotateToXAxis(){let e=this.getLeftVector();return this.setRightVector(e.x+this.getLength(),e.y),this}rotate(e){let t=this.getLeftVector(),r=this.getRightVector(),i=Math.sin(e),s=Math.cos(e),a=s*(r.x-t.x)-i*(r.y-t.y)+t.x,n=i*(r.x-t.x)-s*(r.y-t.y)+t.y;return this.setRightVector(a,n),this}shortenFrom(e){let t=M.subtract(this.to,this.from);return t.normalize(),t.multiplyScalar(e),this.from.add(t),this}shortenTo(e){let t=M.subtract(this.from,this.to);return t.normalize(),t.multiplyScalar(e),this.to.add(t),this}shortenRight(e){return this.from.x<this.to.x?this.shortenTo(e):this.shortenFrom(e),this}shortenLeft(e){return this.from.x<this.to.x?this.shortenFrom(e):this.shortenTo(e),this}shorten(e){let t=M.subtract(this.from,this.to);return t.normalize(),t.multiplyScalar(e/2),this.to.add(t),this.from.subtract(t),this}};var re=class ${static round(e,t){if(t){let r=Math.pow(10,t);return Math.round(e*r)/r}else return Math.round(e)}static meanAngle(e){let t=0,r=0;for(let i=0;i<e.length;i++)t+=Math.sin(e[i]),r+=Math.cos(e[i]);return Math.atan2(t/e.length,r/e.length)}static innerAngle(e){return $.toRad((e-2)*180/e)}static polyCircumradius(e,t){return e/(2*Math.sin(Math.PI/t))}static apothem(e,t){return e*Math.cos(Math.PI/t)}static apothemFromSideLength(e,t){let r=$.polyCircumradius(e,t);return $.apothem(r,t)}static centralAngle(e){return $.toRad(360/e)}static toDeg(e){return e*$.degFactor}static toRad(e){return e*$.radFactor}static parityOfPermutation(e){let t=new Uint8Array(e.length),r=0,i=function(s,a=0){return t[s]===1?a:(a++,t[s]=1,i(e[s],a))};for(let s=0;s<e.length;s++){if(t[s]===1)continue;let a=i(s);r+=1-a%2}return r%2?-1:1}static get radFactor(){return Math.PI/180}static get degFactor(){return 180/Math.PI}static get twoPI(){return 2*Math.PI}};var Ht=class ${constructor(e,t=0,r=0){this.id=null,this.value=e,this.position=new M(t||0,r||0),this.previousPosition=new M(0,0),this.parentVertexId=null,this.children=[],this.spanningTreeChildren=[],this.edges=[],this.positioned=!1,this.angle=null,this.dir=1,this.neighbourCount=0,this.neighbours=[],this.neighbouringElements=[],this.forcePositioned=!1}setPosition(e,t){this.position.x=e,this.position.y=t}setPositionFromVector(e){this.position.x=e.x,this.position.y=e.y}addChild(e){this.children.push(e),this.neighbours.push(e),this.neighbourCount++}addRingbondChild(e,t){if(this.children.push(e),this.value.bracket){let r=1;this.id===0&&this.value.bracket.hcount===0&&(r=0),this.value.bracket.hcount===1&&t===0&&(r=2),this.value.bracket.hcount===1&&t===1&&(this.neighbours.length<3?r=2:r=3),this.value.bracket.hcount===null&&t===0&&(r=1),this.value.bracket.hcount===null&&t===1&&(this.neighbours.length<3?r=1:r=2),this.neighbours.splice(r,0,e)}else this.neighbours.push(e);this.neighbourCount++}setParentVertexId(e){this.neighbourCount++,this.parentVertexId=e,this.neighbours.push(e)}isTerminal(){return this.value.hasAttachedPseudoElements?!0:this.parentVertexId===null&&this.children.length<2||this.children.length===0}clone(){let e=new $(this.value,this.position.x,this.position.y);return e.id=this.id,e.previousPosition=new M(this.previousPosition.x,this.previousPosition.y),e.parentVertexId=this.parentVertexId,e.children=me.clone(this.children),e.spanningTreeChildren=me.clone(this.spanningTreeChildren),e.edges=me.clone(this.edges),e.positioned=this.positioned,e.angle=this.angle,e.forcePositioned=this.forcePositioned,e}equals(e){return this.id===e.id}getAngle(e=null,t=!1){let r=null;return e?r=M.subtract(this.position,e):r=M.subtract(this.position,this.previousPosition),t?re.toDeg(r.angle()):r.angle()}getTextDirection(e,t=!1){let r=this.getDrawnNeighbours(e),i=[];if(e.length===1)return"right";for(let a=0;a<r.length;a++)i.push(this.getAngle(e[r[a]].position));let s=re.meanAngle(i);if(this.isTerminal()||t)Math.round(s*100)/100===1.57&&(s=s-.2),s=Math.round(Math.round(s/Math.PI)*Math.PI);else{let a=Math.PI/2;s=Math.round(Math.round(s/a)*a)}return s===2?"down":s===-2?"up":s===0?"right":s===3||s===-3?"left":"down"}getNeighbours(e=null){if(e===null)return this.neighbours.slice();let t=[];for(let r=0;r<this.neighbours.length;r++)this.neighbours[r]!==e&&t.push(this.neighbours[r]);return t}getDrawnNeighbours(e){let t=[];for(let r=0;r<this.neighbours.length;r++)e[this.neighbours[r]].value.isDrawn&&t.push(this.neighbours[r]);return t}getNeighbourCount(){return this.neighbourCount}getSpanningTreeNeighbours(e=null){let t=[];for(let r=0;r<this.spanningTreeChildren.length;r++)(e===void 0||e!=this.spanningTreeChildren[r])&&t.push(this.spanningTreeChildren[r]);return this.parentVertexId!=null&&(e===void 0||e!=this.parentVertexId)&&t.push(this.parentVertexId),t}getNextInRing(e,t,r){let i=this.getNeighbours();for(let s=0;s<i.length;s++)if(me.contains(e[i[s]].value.rings,{value:t})&&i[s]!=r)return i[s];return null}};var gt=class{constructor(e,t){this.id=null,this.firstRingId=e.id,this.secondRingId=t.id,this.vertices=new Set;for(let r=0;r<e.members.length;r++){let i=e.members[r];for(let s=0;s<t.members.length;s++){let a=t.members[s];i===a&&this.addVertex(i)}}}addVertex(e){this.vertices.add(e)}updateOther(e,t){this.firstRingId===t?this.secondRingId=e:this.firstRingId=e}containsRing(e){return this.firstRingId===e||this.secondRingId===e}isBridge(e){if(this.vertices.size>2)return!0;if(this.vertices.size===2){let[t,r]=[...this.vertices],i=new Set(e[r].neighbours);for(let s of e[t].neighbours)if(s!==r&&i.has(s)){let a=e[s].value.rings;if(a.includes(this.firstRingId)||a.includes(this.secondRingId))return!0}}return!1}static isBridge(e,t,r,i){let s=null;for(let a=0;a<e.length;a++)if(s=e[a],s.firstRingId===r&&s.secondRingId===i||s.firstRingId===i&&s.secondRingId===r)return s.isBridge(t);return!1}static getNeighbours(e,t){let r=[];for(let i=0;i<e.length;i++){let s=e[i];s.firstRingId===t?r.push(s.secondRingId):s.secondRingId===t&&r.push(s.firstRingId)}return r}static getVertices(e,t,r){for(let i=0;i<e.length;i++){let s=e[i];if(s.firstRingId===t&&s.secondRingId===r||s.firstRingId===r&&s.secondRingId===t)return[...s.vertices]}}};var tr=class ${constructor(e){this.id=null,this.members=e,this.edges=[],this.insiders=[],this.neighbours=[],this.positioned=!1,this.center=new M(0,0),this.rings=[],this.isBridged=!1,this.isPartOfBridged=!1,this.isSpiro=!1,this.isFused=!1,this.centralAngle=0,this.canFlip=!0}clone(){let e=new $(this.members);return e.id=this.id,e.insiders=me.clone(this.insiders),e.neighbours=me.clone(this.neighbours),e.positioned=this.positioned,e.center=this.center.clone(),e.rings=me.clone(this.rings),e.isBridged=this.isBridged,e.isPartOfBridged=this.isPartOfBridged,e.isSpiro=this.isSpiro,e.isFused=this.isFused,e.centralAngle=this.centralAngle,e.canFlip=this.canFlip,e}getSize(){return this.members.length}getPolygon(e){let t=[];for(let r=0;r<this.members.length;r++)t.push(e[this.members[r]].position);return t}getAngle(){return Math.PI-this.centralAngle}eachMember(e,t,r,i){r=r||r===0?r:this.members[0];let s=r,a=0;for(;s!=null&&a<100;){let n=s;t(n),s=e[s].getNextInRing(e,this.id,i),i=n,s==r&&(s=null),a++}}getOrderedNeighbours(e){let t=Array(this.neighbours.length);for(let r=0;r<this.neighbours.length;r++){let i=gt.getVertices(e,this.id,this.neighbours[r]);t[r]={n:i.length,neighbour:this.neighbours[r]}}return t.sort((r,i)=>i.n-r.n),t}isBenzeneLike(e){let t=this.getDoubleBondCount(e),r=this.members.length;return t===3&&r===6||t===2&&r===5}getDoubleBondCount(e){let t=0;for(let r=0;r<this.members.length;r++){let i=e[this.members[r]].value;(i.bondType==="="||i.branchBond==="=")&&t++}return t}contains(e){for(let t=0;t<this.members.length;t++)if(this.members[t]==e)return!0;return!1}};var vt=class{constructor(e,t){this.colors=e,this.theme=this.colors[t]}getColor(e){return e&&(e=e.toUpperCase(),e in this.theme)?this.theme[e]:this.theme.C}setTheme(e){e in this.colors&&(this.theme=this.colors[e])}};function Zn($){return $?$===1?"+":$===-1?"-":$>0?$+"+":$+"-":""}var dr=class{constructor(e,t,r){let i=null;if(e instanceof String?i=document.getElementById(e.valueOf()):typeof e=="string"?i=document.getElementById(e):i=e,i instanceof HTMLCanvasElement)this.canvas=i;else throw Error("First argument was not a canvas or the ID of a canvas.");this.ctx=this.canvas.getContext("2d"),this.themeManager=t,this.opts=r,this.drawingWidth=0,this.drawingHeight=0,this.offsetX=0,this.offsetY=0,this.fontLarge=this.opts.fontSizeLarge+"pt Helvetica, Arial, sans-serif",this.fontSmall=this.opts.fontSizeSmall+"pt Helvetica, Arial, sans-serif",this.updateSize(this.opts.width,this.opts.height),this.ctx.font=this.fontLarge,this.hydrogenWidth=this.ctx.measureText("H").width,this.halfHydrogenWidth=this.hydrogenWidth/2,this.halfBondThickness=this.opts.bondThickness/2}updateSize(e,t){this.ratio=window.devicePixelRatio||1,this.ratio!==1?(this.canvas.width=e*this.ratio,this.canvas.height=t*this.ratio,this.canvas.style.width=e+"px",this.canvas.style.height=t+"px",this.ctx.setTransform(this.ratio,0,0,this.ratio,0,0)):(this.canvas.width=e*this.ratio,this.canvas.height=t*this.ratio)}setTheme(e){this.colors=e}scale(e){let t=-Number.MAX_VALUE,r=-Number.MAX_VALUE,i=Number.MAX_VALUE,s=Number.MAX_VALUE;for(let d=0;d<e.length;d++){if(!e[d].value.isDrawn)continue;let g=e[d].position;t<g.x&&(t=g.x),r<g.y&&(r=g.y),i>g.x&&(i=g.x),s>g.y&&(s=g.y)}let a=this.opts.padding;t+=a,r+=a,i-=a,s-=a,this.drawingWidth=t-i,this.drawingHeight=r-s;let n=this.canvas.offsetWidth/this.drawingWidth,o=this.canvas.offsetHeight/this.drawingHeight,u=n<o?n:o;this.ctx.scale(u,u),this.offsetX=-i,this.offsetY=-s,n<o?this.offsetY+=this.canvas.offsetHeight/(2*u)-this.drawingHeight/2:this.offsetX+=this.canvas.offsetWidth/(2*u)-this.drawingWidth/2}reset(){this.ctx.setTransform(1,0,0,1,0,0)}getColor(e){return e=e.toUpperCase(),e in this.colors?this.colors[e]:this.colors.C}drawCircle(e,t,r,i,s=!0,a=!1,n=""){let o=this.ctx,u=this.offsetX,d=this.offsetY;o.save(),o.lineWidth=1.5,o.beginPath(),o.arc(e+u,t+d,r,0,re.twoPI,!0),o.closePath(),a?(s?(o.fillStyle="#f00",o.fill()):(o.strokeStyle="#f00",o.stroke()),this.drawDebugText(e,t,n)):s?(o.fillStyle=i,o.fill()):(o.strokeStyle=i,o.stroke()),o.restore()}drawLine(e,t=!1,r=1){let i=this.ctx,s=this.offsetX,a=this.offsetY,n=e.clone().shorten(4),o=n.getLeftVector().clone(),u=n.getRightVector().clone();o.x+=s,o.y+=a,u.x+=s,u.y+=a,t||(i.save(),i.globalCompositeOperation="destination-out",i.beginPath(),i.moveTo(o.x,o.y),i.lineTo(u.x,u.y),i.lineCap="round",i.lineWidth=this.opts.bondThickness+1.2,i.strokeStyle=this.themeManager.getColor("BACKGROUND"),i.stroke(),i.globalCompositeOperation="source-over",i.restore()),o=e.getLeftVector().clone(),u=e.getRightVector().clone(),o.x+=s,o.y+=a,u.x+=s,u.y+=a,i.save(),i.beginPath(),i.moveTo(o.x,o.y),i.lineTo(u.x,u.y),i.lineCap="round",i.lineWidth=this.opts.bondThickness;let d=this.ctx.createLinearGradient(o.x,o.y,u.x,u.y);d.addColorStop(.4,this.themeManager.getColor(e.getLeftElement())||this.themeManager.getColor("C")),d.addColorStop(.6,this.themeManager.getColor(e.getRightElement())||this.themeManager.getColor("C")),t&&(i.setLineDash([1,1.5]),i.lineWidth=this.opts.bondThickness/1.5),r<1&&(i.globalAlpha=r),i.strokeStyle=d,i.stroke(),i.restore()}drawWedge(e,t=1){if(isNaN(e.from.x)||isNaN(e.from.y)||isNaN(e.to.x)||isNaN(e.to.y))return;let r=this.ctx,i=this.offsetX,s=this.offsetY,a=e.clone().shorten(5),n=a.getLeftVector().clone(),o=a.getRightVector().clone();n.x+=i,n.y+=s,o.x+=i,o.y+=s,n=e.getLeftVector().clone(),o=e.getRightVector().clone(),n.x+=i,n.y+=s,o.x+=i,o.y+=s,r.save();let u=M.normals(n,o);u[0].normalize(),u[1].normalize();let d=e.getRightChiral(),g=n,p=o;d&&(g=o,p=n);let c=M.add(g,M.multiplyScalar(u[0],this.halfBondThickness)),b=M.add(p,M.multiplyScalar(u[0],1.5+this.halfBondThickness)),E=M.add(p,M.multiplyScalar(u[1],1.5+this.halfBondThickness)),T=M.add(g,M.multiplyScalar(u[1],this.halfBondThickness));r.beginPath(),r.moveTo(c.x,c.y),r.lineTo(b.x,b.y),r.lineTo(E.x,E.y),r.lineTo(T.x,T.y);let k=this.ctx.createRadialGradient(o.x,o.y,this.opts.bondLength,o.x,o.y,0);k.addColorStop(.4,this.themeManager.getColor(e.getLeftElement())||this.themeManager.getColor("C")),k.addColorStop(.6,this.themeManager.getColor(e.getRightElement())||this.themeManager.getColor("C")),r.fillStyle=k,r.fill(),r.restore()}drawDashedWedge(e){if(isNaN(e.from.x)||isNaN(e.from.y)||isNaN(e.to.x)||isNaN(e.to.y))return;let t=this.ctx,r=this.offsetX,i=this.offsetY,s=e.getLeftVector().clone(),a=e.getRightVector().clone();s.x+=r,s.y+=i,a.x+=r,a.y+=i,t.save();let n=M.normals(s,a);n[0].normalize(),n[1].normalize();let o=e.getRightChiral(),u,d,g,p,c=e.clone();o?(u=a,d=s,c.shortenRight(1),g=c.getRightVector().clone(),p=c.getLeftVector().clone()):(u=s,d=a,c.shortenLeft(1),g=c.getLeftVector().clone(),p=c.getRightVector().clone()),g.x+=r,g.y+=i,p.x+=r,p.y+=i;let b=M.subtract(d,u).normalize();t.strokeStyle=this.themeManager.getColor("C"),t.lineCap="round",t.lineWidth=this.opts.bondThickness,t.beginPath();let E=e.getLength(),T=1.25/(E/(this.opts.bondThickness*3)),k=!1;for(let O=0;O<1;O+=T){let B=M.multiplyScalar(b,O*E),I=M.add(u,B),U=1.5*O,G=M.multiplyScalar(n[0],U);!k&&O>.5&&(t.stroke(),t.beginPath(),t.strokeStyle=this.themeManager.getColor(e.getRightElement())||this.themeManager.getColor("C"),k=!0),I.subtract(G),t.moveTo(I.x,I.y),I.add(M.multiplyScalar(G,2)),t.lineTo(I.x,I.y)}t.stroke(),t.restore()}drawDebugText(e,t,r){let i=this.ctx;i.save(),i.font="5px Droid Sans, sans-serif",i.textAlign="start",i.textBaseline="top",i.fillStyle="#ff0000",i.fillText(r,e+this.offsetX,t+this.offsetY),i.restore()}drawBall(e,t,r){let i=this.ctx;i.save(),i.beginPath(),i.arc(e+this.offsetX,t+this.offsetY,this.opts.bondLength/4.5,0,re.twoPI,!1),i.fillStyle=this.themeManager.getColor(r),i.fill(),i.restore()}drawPoint(e,t,r){let i=this.ctx,s=this.offsetX,a=this.offsetY;i.save(),i.globalCompositeOperation="destination-out",i.beginPath(),i.arc(e+s,t+a,1.5,0,re.twoPI,!0),i.closePath(),i.fill(),i.globalCompositeOperation="source-over",i.beginPath(),i.arc(e+this.offsetX,t+this.offsetY,.75,0,re.twoPI,!1),i.fillStyle=this.themeManager.getColor(r),i.fill(),i.restore()}drawText(e,t,r,i,s,a,n,o,u,d={}){let g=this.ctx,p=this.offsetX,c=this.offsetY;g.save(),g.textAlign="start",g.textBaseline="alphabetic";let b=!1,E="",T=0;n&&(E=Zn(n),g.font=this.fontSmall,T=g.measureText(E).width);let k="0",O=0;o>0&&(k=o.toString(),g.font=this.fontSmall,O=g.measureText(k).width),n===1&&r==="N"&&"0O"in d&&"0O-1"in d&&(d={"0O":{element:"O",count:2,hydrogenCount:0,previousElement:"C",charge:""}},n=0),g.font=this.fontLarge,g.fillStyle=this.themeManager.getColor("BACKGROUND");let B=g.measureText(r),I=B.width>this.opts.fontSizeLarge?B.width:this.opts.fontSizeLarge;I/=1.5,g.globalCompositeOperation="destination-out",g.beginPath(),g.arc(e+p,t+c,I,0,re.twoPI,!0),g.closePath(),g.fill(),g.globalCompositeOperation="source-over";let U=-B.width/2,G=-B.width/2;g.fillStyle=this.themeManager.getColor(r),g.fillText(r,e+p+U,t+this.opts.halfFontSizeLarge+c),U+=B.width,n&&(g.font=this.fontSmall,g.fillText(E,e+p+U,t-this.opts.fifthFontSizeSmall+c),U+=T),o>0&&(g.font=this.fontSmall,g.fillText(k,e+p+G-O,t-this.opts.fifthFontSizeSmall+c),G-=O),g.font=this.fontLarge;let se=0,we=0;if(i===1){let j=e+p,J=t+c+this.opts.halfFontSizeLarge;se=this.hydrogenWidth,G-=se,s==="left"?j+=G:s==="right"||s==="up"&&a||s==="down"&&a?j+=U:s==="up"&&!a?(J-=this.opts.fontSizeLarge+this.opts.quarterFontSizeLarge,j-=this.halfHydrogenWidth):s==="down"&&!a&&(J+=this.opts.fontSizeLarge+this.opts.quarterFontSizeLarge,j-=this.halfHydrogenWidth),g.fillText("H",j,J),U+=se}else if(i>1){let j=e+p,J=t+c+this.opts.halfFontSizeLarge;se=this.hydrogenWidth,g.font=this.fontSmall,we=g.measureText(i.toString()).width,G-=se+we,s==="left"?j+=G:s==="right"||s==="up"&&a||s==="down"&&a?j+=U:s==="up"&&!a?(J-=this.opts.fontSizeLarge+this.opts.quarterFontSizeLarge,j-=this.halfHydrogenWidth):s==="down"&&!a&&(J+=this.opts.fontSizeLarge+this.opts.quarterFontSizeLarge,j-=this.halfHydrogenWidth),g.font=this.fontLarge,g.fillText("H",j,J),g.font=this.fontSmall,g.fillText(i.toString(),j+this.halfHydrogenWidth+we,J+this.opts.fifthFontSizeSmall),U+=se+this.halfHydrogenWidth+we}if(b){g.restore();return}for(let j of Object.keys(d)){let J=0,Ne=0,Ye=d[j].element,ke=d[j].count,_=d[j].hydrogenCount,Fe=d[j].charge;g.font=this.fontLarge,ke>1&&_>0&&(J=g.measureText("(").width,Ne=g.measureText(")").width);let Ie=g.measureText(Ye).width,Le=0,qe="",je=0;se=0,_>0&&(se=this.hydrogenWidth),g.font=this.fontSmall,ke>1&&(Le=g.measureText(ke).width),Fe!==0&&(qe=Zn(Fe),je=g.measureText(qe).width),we=0,_>1&&(we=g.measureText(_).width),g.font=this.fontLarge;let Ee=e+p,Oe=t+c+this.opts.halfFontSizeLarge;g.fillStyle=this.themeManager.getColor(Ye),ke>0&&(G-=Le),ke>1&&_>0&&(s==="left"?(G-=Ne,g.fillText(")",Ee+G,Oe)):(g.fillText("(",Ee+U,Oe),U+=J)),s==="left"?(G-=Ie,g.fillText(Ye,Ee+G,Oe)):(g.fillText(Ye,Ee+U,Oe),U+=Ie),_>0&&(s==="left"?(G-=se+we,g.fillText("H",Ee+G,Oe),_>1&&(g.font=this.fontSmall,g.fillText(_,Ee+G+se,Oe+this.opts.fifthFontSizeSmall))):(g.fillText("H",Ee+U,Oe),U+=se,_>1&&(g.font=this.fontSmall,g.fillText(_,Ee+U,Oe+this.opts.fifthFontSizeSmall),U+=we))),g.font=this.fontLarge,ke>1&&_>0&&(s==="left"?(G-=J,g.fillText("(",Ee+G,Oe)):(g.fillText(")",Ee+U,Oe),U+=Ne)),g.font=this.fontSmall,ke>1&&(s==="left"?g.fillText(ke,Ee+G+J+Ne+se+we+Ie,Oe+this.opts.fifthFontSizeSmall):(g.fillText(ke,Ee+U,Oe+this.opts.fifthFontSizeSmall),U+=Le)),Fe!==0&&(s==="left"?g.fillText(qe,Ee+G+J+Ne+se+we+Ie,t-this.opts.fifthFontSizeSmall+c):(g.fillText(qe,Ee+U,t-this.opts.fifthFontSizeSmall+c),U+=je))}g.restore()}drawDebugPoint(e,t,r="",i="#f00"){this.drawCircle(e,t,2,i,!0,!0,r)}drawAromaticityRing(e){let t=this.ctx,r=re.apothemFromSideLength(this.opts.bondLength,e.getSize());t.save(),t.strokeStyle=this.themeManager.getColor("C"),t.lineWidth=this.opts.bondThickness,t.beginPath(),t.arc(e.center.x+this.offsetX,e.center.y+this.offsetY,r-this.opts.bondSpacing,0,Math.PI*2,!0),t.closePath(),t.stroke(),t.restore()}clear(){this.ctx.clearRect(0,0,this.canvas.offsetWidth,this.canvas.offsetHeight)}};var Gr=class ${static build(e,t){let r=new $(e,t,null,new Map);return r.findChildren(),r.sortChildren(),r}static compareAtoms(e,t){if(e.atomicNumber!==t.atomicNumber)return[t.atomicNumber-e.atomicNumber,!1];if(e.cloneDepth&&t.cloneDepth){let r=e.cloneDepth-t.cloneDepth;if(r!==0)return[r,!1]}return e.atomicWeight!==t.atomicWeight?[t.atomicWeight-e.atomicWeight,!1]:[0,e.stereocenter||t.stereocenter]}static compareTrees(e,t){let r=this.compareAtoms(e,t);if(r[0]!==0)return r;let i=[e],s=[t],a=!1;for(;i.length!==0;){for(let n=0;n<i.length;++n){let o=i[n].findChildren(),u=s[n].findChildren(),d=Math.max(o.length,u.length);for(let g=0;g<d;++g){if(g>=o.length)return[1,!1];if(g>=u.length)return[-1,!1];if(r=this.compareAtoms(o[g],u[g]),r[0]!==0)return r;a||(a=r[1])}}i=i.flatMap(n=>n.sortChildren()),s=s.flatMap(n=>n.sortChildren())}return[0,a]}constructor(e,t,r,i){this.graph=e,this.parent=r,t instanceof Ht?(this.vertex=t,this.atomicNumber=t.value.getAtomicNumber(),this.atomicWeight=0,this.stereocenter=!!(t.value.bracket&&t.value.bracket.chirality)):(this.vertex=null,this.atomicNumber=t,this.atomicWeight=0,this.stereocenter=!1),i instanceof Map?(this.cloneDepth=void 0,this.visited=i,this.children=void 0,this.sorted=!1):(this.cloneDepth=i,this.visited=null,this.children=[],this.sorted=!0,this.stereocenter=!1)}findChildren(){if(this.children===void 0){this.children=[];let e=this.visited.size+1,t=new Map(this.visited);t.set(this.vertex,e),this.visited=null;for(let i of this.vertex.neighbours){let s=this.graph.getEdge(this.vertex.id,i).weight;if(!s)continue;let a=this.graph.vertices[i],n=t.get(a);if(Object.is(a,this.parent))s-=1;else if(n===void 0){let o=new $(this.graph,a,this.vertex,t);this.children.push(o),n=e+1,s-=1}if(s>0){let o=new $(this.graph,a,this.vertex,n);for(;s-- >0;)this.children.push(o)}}if(this.vertex.value.isPartOfAromaticRing){let i=new $(this.graph,6,this.vertex);this.children.push(i)}let r=this.vertex.value.countImplicitHydrogens();if(r>0){let i=new $(this.graph,1,this.vertex);for(;r-- >0;)this.children.push(i)}this.children.sort((i,s)=>$.compareAtoms(i,s)[0])}return this.children}size(){return this.children!==void 0?this.children.reduce((e,t)=>e+t.size(),1):1}sortChildren(){return this.sorted||(this.children.sort((e,t)=>{let[r,i]=$.compareTrees(e,t);return i&&this.stereocenter?this.vertex.value.bracket.chirality==="@"?t.vertex.id-e.vertex.id:e.vertex.id-t.vertex.id:r}),this.sorted=!0),this.children}},pr=class{static getOrderArray(e,t){let r=Gr.build(e,t);for(let a=1;a<r.children.length;++a){let n=Gr.compareTrees(r.children[a-1],r.children[a]);if(n[0]===0&&!n[1])return}let i=t.neighbours.length,s=new Uint8Array(i);for(let a=0;a<i;++a){let n=r.children[a].vertex.id;s[a]=t.neighbours.findIndex(o=>o===n)}return s}};var _t=class ${constructor(e,t,r=1){this.id=null,this.sourceId=e,this.targetId=t,this.weight=r,this.bondType="-",this.isPartOfAromaticRing=!1,this.center=!1,this.wedge=""}setBondType(e){this.bondType=e,this.weight=$.bonds[e]}static get bonds(){return{".":0,"-":1,"/":1,"\\":1,"=":2,"#":3,$:4}}};var Rt=class ${constructor(e,t=!1){this.vertices=[],this.edges=[],this.atomIdxToVertexId=[],this.vertexIdsToEdgeId={},this.isomeric=t,this._atomIdx=0,this._time=0,this._init(e)}_init(e,t=0,r=null,i=!1){let s=e.atom.element?e.atom.element:e.atom,a=new zt(s,e.bond);(s!=="H"||!e.hasNext&&r===null)&&(a.idx=this._atomIdx,this._atomIdx++),a.branchBond=e.branchBond,a.ringbonds=e.ringbonds,a.bracket=e.atom.element?e.atom:null,a.class=e.atom.class;let n=new Ht(a),o=this.vertices[r];if(this.addVertex(n),a.idx!==null&&this.atomIdxToVertexId.push(n.id),r!==null){n.setParentVertexId(r),n.value.addNeighbouringElement(o.value.element),o.addChild(n.id),o.value.addNeighbouringElement(a.element),o.spanningTreeChildren.push(n.id);let g=new _t(r,n.id,1);i?g.setBondType(n.value.branchBond||"-"):g.setBondType(o.value.bondType||"-"),this.addEdge(g)}let u=e.ringbondCount+1;a.bracket&&(u+=a.bracket.hcount);let d=0;if(a.bracket&&a.bracket.chirality){a.isStereoCenter=!0,d=a.bracket.hcount;for(let g=0;g<d;g++)this._init({atom:"H",isBracket:"false",branches:[],branchCount:0,ringbonds:[],ringbondCount:!1,next:null,hasNext:!1,bond:"-"},g,n.id,!0)}for(let g=0;g<e.branchCount;g++)this._init(e.branches[g],g+u,n.id,!0);e.hasNext&&this._init(e.next,e.branchCount+u,n.id)}clear(){this.vertices=[],this.edges=[],this.vertexIdsToEdgeId={}}addVertex(e){return e.id=this.vertices.length,this.vertices.push(e),e.id}addEdge(e){let t=this.vertices[e.sourceId],r=this.vertices[e.targetId];return e.id=this.edges.length,this.edges.push(e),this.vertexIdsToEdgeId[e.sourceId+"_"+e.targetId]=e.id,this.vertexIdsToEdgeId[e.targetId+"_"+e.sourceId]=e.id,e.isPartOfAromaticRing=t.value.isPartOfAromaticRing&&r.value.isPartOfAromaticRing,t.value.bondCount+=e.weight,r.value.bondCount+=e.weight,t.edges.push(e.id),r.edges.push(e.id),e.id}getEdge(e,t){let r=this.vertexIdsToEdgeId[e+"_"+t];return r===void 0?null:this.edges[r]}getEdges(e){let t=[],r=this.vertices[e];for(let i=0;i<r.neighbours.length;i++)t.push(this.vertexIdsToEdgeId[e+"_"+r.neighbours[i]]);return t}hasEdge(e,t){return this.vertexIdsToEdgeId[e+"_"+t]!==void 0}getVertexList(){let e=[this.vertices.length];for(let t=0;t<this.vertices.length;t++)e[t]=this.vertices[t].id;return e}getEdgeList(){let e=Array(this.edges.length);for(let t=0;t<this.edges.length;t++)e[t]=[this.edges[t].sourceId,this.edges[t].targetId];return e}getAdjacencyMatrix(){let e=this.vertices.length,t=Array(e);for(let r=0;r<e;r++)t[r]=new Array(e),t[r].fill(0);for(let r=0;r<this.edges.length;r++){let i=this.edges[r];t[i.sourceId][i.targetId]=1,t[i.targetId][i.sourceId]=1}return t}getComponentsAdjacencyMatrix(){let e=this.vertices.length,t=Array(e),r=this.getBridges();for(let i=0;i<e;i++)t[i]=new Array(e),t[i].fill(0);for(let i=0;i<this.edges.length;i++){let s=this.edges[i];t[s.sourceId][s.targetId]=1,t[s.targetId][s.sourceId]=1}for(let i=0;i<r.length;i++)t[r[i][0]][r[i][1]]=0,t[r[i][1]][r[i][0]]=0;return t}getSubgraphAdjacencyMatrix(e){let t=e.length,r=Array(t);for(let i=0;i<t;i++){r[i]=new Array(t),r[i].fill(0);for(let s=0;s<t;s++)i!==s&&this.hasEdge(e[i],e[s])&&(r[i][s]=1)}return r}getDistanceMatrix(){let e=this.vertices.length,t=this.getAdjacencyMatrix(),r=Array(e);for(let i=0;i<e;i++)r[i]=Array(e),r[i].fill(1/0);for(let i=0;i<e;i++)for(let s=0;s<e;s++)t[i][s]===1&&(r[i][s]=1);for(let i=0;i<e;i++)for(let s=0;s<e;s++)for(let a=0;a<e;a++)r[s][a]>r[s][i]+r[i][a]&&(r[s][a]=r[s][i]+r[i][a]);return r}getSubgraphDistanceMatrix(e){let t=e.length,r=this.getSubgraphAdjacencyMatrix(e),i=Array(t);for(let s=0;s<t;s++)i[s]=Array(t),i[s].fill(1/0),i[s][s]=0;for(let s=0;s<t;s++)for(let a=0;a<t;a++)r[s][a]===1&&(i[s][a]=1);for(let s=0;s<t;s++)for(let a=0;a<t;a++)for(let n=0;n<t;n++)i[a][n]>i[a][s]+i[s][n]&&(i[a][n]=i[a][s]+i[s][n]);return i}getAdjacencyList(){let e=this.vertices.length,t=Array(e);for(let r=0;r<e;r++){t[r]=[];for(let i=0;i<e;i++)r!==i&&this.hasEdge(this.vertices[r].id,this.vertices[i].id)&&t[r].push(i)}return t}getSubgraphAdjacencyList(e){let t=e.length,r=Array(t);for(let i=0;i<t;i++){r[i]=[];for(let s=0;s<t;s++)i!==s&&this.hasEdge(e[i],e[s])&&r[i].push(s)}return r}getBridgedRingPerimeter(e,t,r){let i=new Set(t.insiders||[]),s=e.filter(p=>!i.has(p));if(s.length<3)return s;let a=new Set(s),n=new Map;for(let p=0;p<s.length;p++){let c=s[p],b=this.vertices[c].neighbours.filter(E=>a.has(E));if(n.set(c,b),b.length!==2)return s}let o=a.has(r)?r:s[0],u=[o],d=null,g=o;for(;u.length<s.length;){let p=n.get(g).filter(b=>b!==d);if(d===null&&p.sort((b,E)=>this.vertices[b].value.smilesOrder-this.vertices[E].value.smilesOrder),p.length===0)return s;let c=p[0];if(c===o)return s;u.push(c),d=g,g=c}return n.get(g).includes(o)?u:s}getBridges(){let e=this.vertices.length,t=new Array(e),r=new Array(e),i=new Array(e),s=new Array(e),a=this.getAdjacencyList(),n=[];t.fill(!1),s.fill(null),this._time=0;for(let o=0;o<e;o++)t[o]||this._bridgeDfs(o,t,r,i,s,a,n);return n}traverseBF(e,t){let r=this.vertices.length,i=new Array(r);i.fill(!1);let s=[e];for(;s.length>0;){let a=s.shift(),n=this.vertices[a];t(n);for(let o=0;o<n.neighbours.length;o++){let u=n.neighbours[o];i[u]||(i[u]=!0,s.push(u))}}}getTreeDepth(e,t){if(e===null||t===null)return 0;let r=this.vertices[e].getSpanningTreeNeighbours(t),i=0;for(let s=0;s<r.length;s++){let a=r[s],n=this.getTreeDepth(a,e);n>i&&(i=n)}return i+1}traverseTree(e,t,r,i=999999,s=!1,a=1,n=null){if(n===null&&(n=new Uint8Array(this.vertices.length)),a>i+1||n[e]===1)return;n[e]=1;let o=this.vertices[e],u=o.getNeighbours(t);(!s||a>1)&&r(o);for(let d=0;d<u.length;d++)this.traverseTree(u[d],e,r,i,s,a+1,n)}kkLayout(e,t,r,i,s,a=.1,n=.1,o=2e3,u=50,d=1e9){let g=s,p=this.getSubgraphDistanceMatrix(e),c=e.length,b=re.polyCircumradius(s,c),E=re.centralAngle(c),T=0,k=new Float32Array(c),O=new Float32Array(c),B=Array(c),I=new Set(i.insiders||[]),U=this.getBridgedRingPerimeter(e,i,r),G=new Set(U),se=U.length,we=se>2?re.polyCircumradius(s,se):b,j=se>0?Math.PI*2/se:E,J=0,Ne=new Map;if(G.has(r)){let V=U.indexOf(r),ae=this.vertices[r];ae.positioned&&(J=M.subtract(ae.position,t).angle()-V*j)}for(let V=0;V<U.length;V++){let ae=U[V],$e=this.vertices[ae];if($e.positioned)Ne.set(ae,$e.position.clone());else{let Se=new M(t.x+Math.cos(J+V*j)*we,t.y+Math.sin(J+V*j)*we);Ne.set(ae,Se)}}let Ye=e.filter(V=>I.has(V)),ke=Math.max(s*.35,we*.35);for(let V=0;V<Ye.length;V++){let ae=Ye[V],$e=this.vertices[ae];if($e.positioned){Ne.set(ae,$e.position.clone());continue}let Se=$e.neighbours.filter(Ce=>G.has(Ce)),ue=new M(t.x,t.y);if(Se.length>0){ue=new M(0,0);for(let Re=0;Re<Se.length;Re++)ue.add(Ne.get(Se[Re]));ue.divide(Se.length);let Ce=M.subtract(ue,t);Ce.lengthSq()<1e-4?Ce=new M(Math.cos(V*j),Math.sin(V*j)):Ce.normalize(),ue=Ce.multiplyScalar(ke).add(t.clone())}else ue.x+=Math.cos(V*j)*ke,ue.y+=Math.sin(V*j)*ke;Ne.set(ae,ue)}for(var _=c;_--;){let V=this.vertices[e[_]];if(V.positioned)k[_]=V.position.x,O[_]=V.position.y;else{let ae=Ne.get(V.id);ae?(k[_]=ae.x,O[_]=ae.y):(k[_]=t.x+Math.cos(T)*b,O[_]=t.y+Math.sin(T)*b)}B[_]=V.positioned,T+=E}let Fe=Array(c);for(_=c;_--;){Fe[_]=new Array(c);let V=c;for(;V--;)Fe[_][V]=s*p[_][V]}let Ie=Array(c);for(_=c;_--;){Ie[_]=Array(c);let V=c;for(;V--;)Ie[_][V]=g*Math.pow(p[_][V],-2)}let Le=Array(c),qe=new Float32Array(c),je=new Float32Array(c);for(_=c;_--;)Le[_]=Array(c);for(_=c;_--;){let V=k[_],ae=O[_],$e=0,Se=0,ue=c;for(;ue--;){if(_===ue)continue;
1let Ce=k[ue],Re=O[ue],Ae=1/Math.sqrt((V-Ce)*(V-Ce)+(ae-Re)*(ae-Re));Le[_][ue]=[Ie[_][ue]*(V-Ce-Fe[_][ue]*(V-Ce)*Ae),Ie[_][ue]*(ae-Re-Fe[_][ue]*(ae-Re)*Ae)],Le[ue][_]=Le[_][ue],$e+=Le[_][ue][0],Se+=Le[_][ue][1]}qe[_]=$e,je[_]=Se}let Ee=function(V){return[qe[V]*qe[V]+je[V]*je[V],qe[V],je[V]]},Oe=function(){let V=0,ae=0,$e=0,Se=0;for(_=c;_--;){let[ue,Ce,Re]=Ee(_);ue>V&&B[_]===!1&&(V=ue,ae=_,$e=Ce,Se=Re)}return[ae,V,$e,Se]},kt=function(V,ae,$e){let Se=0,ue=0,Ce=0,Re=k[V],Ae=O[V],Ze=Fe[V],Be=Ie[V];for(_=c;_--;){if(_===V)continue;let Ge=k[_],Ve=O[_],it=Ze[_],nt=Be[_],ft=(Re-Ge)*(Re-Ge),yt=1/Math.pow(ft+(Ae-Ve)*(Ae-Ve),1.5);Se+=nt*(1-it*(Ae-Ve)*(Ae-Ve)*yt),ue+=nt*(1-it*ft*yt),Ce+=nt*(it*(Re-Ge)*(Ae-Ve)*yt)}Se===0&&(Se=.1),ue===0&&(ue=.1),Ce===0&&(Ce=.1);let ze=Ce/Se-ue/Ce,We,Xe;Math.abs(ze)<1e-6?(Xe=-ae*.1,We=-$e*.1):(We=(ae/Se+$e/Ce)/ze,Xe=-(Ce*We+ae)/Se);let wt=Math.sqrt(Xe*Xe+We*We);if(wt>s){let Ge=s/wt;Xe*=Ge,We*=Ge}k[V]+=Xe,O[V]+=We;let ct=Le[V];for(ae=0,$e=0,Re=k[V],Ae=O[V],_=c;_--;){if(V===_)continue;let Ge=k[_],Ve=O[_],it=ct[_][0],nt=ct[_][1],ft=1/Math.sqrt((Re-Ge)*(Re-Ge)+(Ae-Ve)*(Ae-Ve));Xe=Be[_]*(Re-Ge-Ze[_]*(Re-Ge)*ft),We=Be[_]*(Ae-Ve-Ze[_]*(Ae-Ve)*ft),ct[_]=[Xe,We],ae+=Xe,$e+=We,qe[_]+=Xe-it,je[_]+=We-nt}qe[V]=ae,je[V]=$e},Et=0,Tt=0,Mt=0,It=0,Lt=0,Ot=0;for(;d>a&&o>Lt;)for(Lt++,[Et,d,Tt,Mt]=Oe(),It=d,Ot=0;It>n&&u>Ot;)Ot++,kt(Et,Tt,Mt),[It,Tt,Mt]=Ee(Et);for(_=c;_--;){let V=e[_],ae=this.vertices[V];ae.position.x=k[_],ae.position.y=O[_],ae.positioned=!0,ae.forcePositioned=!0}}_bridgeDfs(e,t,r,i,s,a,n){t[e]=!0,r[e]=i[e]=++this._time;for(let o=0;o<a[e].length;o++){let u=a[e][o];t[u]?u!==s[e]&&(i[e]=Math.min(i[e],r[u])):(s[u]=e,this._bridgeDfs(u,t,r,i,s,a,n),i[e]=Math.min(i[e],i[u]),i[u]>r[e]&&n.push([e,u]))}}static getConnectedComponents(e){let t=e.length,r=new Array(t),i=[];r.fill(!1);for(let s=0;s<t;s++)if(!r[s]){let a=[];r[s]=!0,a.push(s),$._ccGetDfs(s,r,e,a),a.length>1&&i.push(a)}return i}static getConnectedComponentCount(e){let t=e.length,r=new Array(t),i=0;r.fill(!1);for(let s=0;s<t;s++)r[s]||(r[s]=!0,i++,$._ccCountDfs(s,r,e));return i}static _ccCountDfs(e,t,r){for(let i=0;i<r[e].length;i++)!r[e][i]||t[i]||e===i||(t[i]=!0,$._ccCountDfs(i,t,r))}static _ccGetDfs(e,t,r,i){for(let s=0;s<r[e].length;s++)!r[e][s]||t[s]||e===s||(t[s]=!0,i.push(s),$._ccGetDfs(s,t,r,i))}};var mt=class ${static extend(){let e={},t=!1,r=0,i=arguments.length;Object.prototype.toString.call(arguments[0])==="[object Boolean]"&&(t=arguments[0],r++);let s=function(a){for(let n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t&&Object.prototype.toString.call(a[n])==="[object Object]"?e[n]=$.extend(!0,e[n],a[n]):e[n]=a[n])};for(;r<i;r++){let a=arguments[r];s(a)}return e}};var vr=class ${static getRings(e,t=!1){let r=e.getComponentsAdjacencyMatrix();if(r.length===0)return[];let i=Rt.getConnectedComponents(r),s=[];for(let a=0;a<i.length;a++){let n=i[a],o=e.getSubgraphAdjacencyMatrix([...n]),u=new Uint16Array(o.length),d=new Uint16Array(o.length);for(let O=0;O<o.length;O++){d[O]=0,u[O]=0;for(let B=0;B<o[O].length;B++)u[O]+=o[O][B]}let g=0;for(let O=0;O<o.length;O++)for(let B=O+1;B<o.length;B++)g+=o[O][B];let p=g-o.length+1;if(p===1){s.push([...n]);continue}t&&(p=999);let{d:c,pe:b,pe_prime:E}=$.getPathIncludedDistanceMatrices(o),T=$.getRingCandidates(c,b,E),k=$.getSSSR(T,c,o,b,E,u,d,p);if(k.length<p){let O=$.findMissingRings(o,k,p);for(let B=0;B<O.length;B++)k.push(O[B])}for(let O=0;O<k.length;O++){let B=Array(k[O].size),I=0;for(let U of k[O])B[I++]=n[U];s.push(B)}}return s}static matrixToString(e){let t="";for(let r=0;r<e.length;r++){for(let i=0;i<e[r].length;i++)t+=e[r][i]+" ";t+=` 2`}return t}static getPathIncludedDistanceMatrices(e){let t=e.length,r=Array(t),i=Array(t),s=Array(t);var a=0,n=0,o=0,u=0,d=0,g=0;for(a=t;a--;)for(r[a]=Array(t),i[a]=Array(t),s[a]=Array(t),n=t;n--;)r[a][n]=a===n||e[a][n]===1?e[a][n]:Number.POSITIVE_INFINITY,r[a][n]===1?i[a][n]=[[[a,n]]]:i[a][n]=[],s[a][n]=[];for(o=t;o--;)for(a=t;a--;)for(n=t;n--;){let p=r[a][n],c=r[a][o]+r[o][n];if(p>c){if(p===c+1)for(s[a][n]=[i[a][n].length],u=i[a][n].length;u--;)for(s[a][n][u]=[i[a][n][u].length],d=i[a][n][u].length;d--;)for(s[a][n][u][d]=[i[a][n][u][d].length],g=i[a][n][u][d].length;g--;)s[a][n][u][d][g]=[i[a][n][u][d][0],i[a][n][u][d][1]];else s[a][n]=[];for(r[a][n]=c,i[a][n]=[[]],u=i[a][o][0].length;u--;)i[a][n][0].push(i[a][o][0][u]);for(u=i[o][n][0].length;u--;)i[a][n][0].push(i[o][n][0][u])}else if(p===c){if(i[a][o].length&&i[o][n].length)if(i[a][n].length){let b=[];for(u=i[a][o][0].length;u--;)b.push(i[a][o][0][u]);for(u=i[o][n][0].length;u--;)b.push(i[o][n][0][u]);i[a][n].push(b)}else{let b=[];for(u=i[a][o][0].length;u--;)b.push(i[a][o][0][u]);for(u=i[o][n][0].length;u--;)b.push(i[o][n][0][u]);i[a][n][0]=b}}else if(p===c-1)if(s[a][n].length){let b=[];for(u=i[a][o][0].length;u--;)b.push(i[a][o][0][u]);for(u=i[o][n][0].length;u--;)b.push(i[o][n][0][u]);s[a][n].push(b)}else{let b=[];for(u=i[a][o][0].length;u--;)b.push(i[a][o][0][u]);for(u=i[o][n][0].length;u--;)b.push(i[o][n][0][u]);s[a][n][0]=b}}return{d:r,pe:i,pe_prime:s}}static getRingCandidates(e,t,r){let i=e.length,s=[],a=0;for(let n=0;n<i;n++)for(let o=0;o<i;o++)e[n][o]===0||t[n][o].length===1&&r[n][o]===0||(r[n][o].length!==0?a=2*(e[n][o]+.5):a=2*e[n][o],a!==1/0&&s.push([a,t[n][o],r[n][o]]));return s.sort(function(n,o){return n[0]-o[0]}),s}static getSSSR(e,t,r,i,s,a,n,o){let u=[],d=[];for(let g=0;g<e.length;g++)if(e[g][0]%2!==0)for(let p=0;p<e[g][2].length;p++){let c=e[g][1][0].concat(e[g][2][p]);for(let E=0;E<c.length;E++)c[E][0].constructor===Array&&(c[E]=c[E][0]);let b=$.bondsToAtoms(c);if($.getBondCount(b,r)===b.size&&!$.pathSetsContain(u,b,c,d,a,n)&&(u.push(b),d=d.concat(c)),u.length>=o)return u}else for(let p=0;p<e[g][1].length-1;p++){let c=e[g][1][p].concat(e[g][1][p+1]);for(let E=0;E<c.length;E++)c[E][0].constructor===Array&&(c[E]=c[E][0]);let b=$.bondsToAtoms(c);if($.getBondCount(b,r)===b.size&&!$.pathSetsContain(u,b,c,d,a,n)&&(u.push(b),d=d.concat(c)),u.length>=o)return u}return u}static getEdgeCount(e){let t=0,r=e.length;for(var i=r-1;i--;)for(var s=r;s--;)e[i][s]===1&&t++;return t}static getEdgeList(e){let t=e.length,r=[];for(var i=t-1;i--;)for(var s=t;s--;)e[i][s]===1&&r.push([i,s]);return r}static bondsToAtoms(e){let t=new Set;for(var r=e.length;r--;)t.add(e[r][0]),t.add(e[r][1]);return t}static getBondCount(e,t){let r=0;for(let i of e)for(let s of e)i!==s&&(r+=t[i][s]);return r/2}static pathSetsContain(e,t,r,i,s,a){for(var n=e.length;n--;){if($.isSupersetOf(t,e[n]))return!0;
2if(e[n].size===t.size&&$.areSetsEqual(e[n],t))return!0}let o=0,u=!1;for(n=r.length;n--;)for(var d=i.length;d--;)(r[n][0]===i[d][0]&&r[n][1]===i[d][1]||r[n][1]===i[d][0]&&r[n][0]===i[d][1])&&o++,o===r.length&&(u=!0);let g=!1;if(u){for(let p of t)if(a[p]<s[p]){g=!0;break}}if(u&&!g)return!0;for(let p of t)a[p]++;return!1}static areSetsEqual(e,t){if(e.size!==t.size)return!1;for(let r of e)if(!t.has(r))return!1;return!0}static isSupersetOf(e,t){for(let r of t)if(!e.has(r))return!1;return!0}static findMissingRings(e,t,r){let i=e.length,s=[],a=new Set;for(let n of t){let o=[...n];for(let u=0;u<o.length;u++)for(let d=u+1;d<o.length;d++)if(e[o[u]][o[d]]===1){let g=Math.min(o[u],o[d]),p=Math.max(o[u],o[d]);a.add(g+","+p)}}for(let n=0;n<i;n++)for(let o=n+1;o<i;o++){if(e[n][o]!==1)continue;let u=n+","+o;if(a.has(u))continue;let d=$.bfsShortestCycle(e,n,o,i);if(d!==null){let g=new Set(d),p=!1;for(let c of t)if($.areSetsEqual(g,c)){p=!0;break}for(let c of s)if($.areSetsEqual(g,c)){p=!0;break}if(!p){s.push(g);let c=[...g];for(let b=0;b<c.length;b++)for(let E=b+1;E<c.length;E++)if(e[c[b]][c[E]]===1){let T=Math.min(c[b],c[E]),k=Math.max(c[b],c[E]);a.add(T+","+k)}if(t.length+s.length>=r)return s}}}return s}static bfsShortestCycle(e,t,r,i){let s=new Array(i).fill(!1),a=new Array(i).fill(-1),n=[t];for(s[t]=!0;n.length>0;){let o=n.shift();for(let u=0;u<i;u++)if(e[o][u]===1&&!(o===t&&u===r)&&!(o===r&&u===t)){if(u===r){let d=[r],g=o;for(;g!==-1;)d.push(g),g=a[g];return d}s[u]||(s[u]=!0,a[u]=o,n.push(u))}}return null}};var rr=class ${constructor(e){this.graph=null,this.doubleBondConfigCount=0,this.doubleBondConfig=null,this.ringIdCounter=0,this.ringConnectionIdCounter=0,this.canvasWrapper=null,this.totalOverlapScore=0,this.defaultOptions={width:500,height:500,scale:0,bondThickness:1,bondLength:30,shortBondLength:.8,bondSpacing:.17*30,atomVisualization:"default",isomeric:!0,debug:!1,terminalCarbons:!1,showCarbons:"default",explicitHydrogens:!0,overlapSensitivity:.42,overlapResolutionIterations:1,compactDrawing:!0,fontFamily:"Arial, Helvetica, sans-serif",fontSizeLarge:11,fontSizeSmall:3,padding:10,experimentalSSSR:!1,experimentalWeights:!1,kkThreshold:.1,kkInnerThreshold:.1,kkMaxIteration:2e4,kkMaxInnerIteration:50,kkMaxEnergy:1e9,weights:{colormap:null,additionalPadding:20,sigma:10,interval:0,opacity:1},themes:{dark:{FOREGROUND:"#ffffff",BACKGROUND:"#141414",C:"#ffffff",O:"#e74c3c",N:"#3498db",F:"#27ae60",CL:"#16a085",BR:"#d35400",I:"#8e44ad",P:"#d35400",S:"#f1c40f",B:"#e67e22",SI:"#e67e22",H:"#aaaaaa"},light:{FOREGROUND:"#222222",BACKGROUND:"#ffffff",C:"#222222",O:"#e74c3c",N:"#3498db",F:"#27ae60",CL:"#16a085",BR:"#d35400",I:"#8e44ad",P:"#d35400",S:"#f1c40f",B:"#e67e22",SI:"#e67e22",H:"#666666"},oldschool:{FOREGROUND:"#000000",BACKGROUND:"#ffffff",C:"#000000",O:"#000000",N:"#000000",F:"#000000",CL:"#000000",BR:"#000000",I:"#000000",P:"#000000",S:"#000000",B:"#000000",SI:"#000000",H:"#000000"},solarized:{FOREGROUND:"#586e75",BACKGROUND:"#eee8d5",C:"#586e75",O:"#dc322f",N:"#268bd2",F:"#859900",CL:"#16a085",BR:"#cb4b16",I:"#6c71c4",P:"#d33682",S:"#b58900",B:"#2aa198",SI:"#2aa198",H:"#657b83"},"solarized-dark":{FOREGROUND:"#93a1a1",BACKGROUND:"#073642",C:"#93a1a1",O:"#dc322f",N:"#268bd2",F:"#859900",CL:"#16a085",BR:"#cb4b16",I:"#6c71c4",P:"#d33682",S:"#b58900",B:"#2aa198",SI:"#2aa198",H:"#839496"},matrix:{FOREGROUND:"#678c61",BACKGROUND:"#ffffff",C:"#678c61",O:"#2fc079",N:"#4f7e7e",F:"#90d762",CL:"#82d967",BR:"#23755a",I:"#409931",P:"#c1ff8a",S:"#faff00",B:"#50b45a",SI:"#409931",H:"#426644"},github:{FOREGROUND:"#24292f",BACKGROUND:"#ffffff",C:"#24292f",O:"#cf222e",N:"#0969da",F:"#2da44e",CL:"#6fdd8b",BR:"#bc4c00",I:"#8250df",P:"#bf3989",S:"#d4a72c",B:"#fb8f44",SI:"#bc4c00",H:"#57606a"},carbon:{FOREGROUND:"#161616",BACKGROUND:"#ffffff",C:"#161616",O:"#da1e28",N:"#0f62fe",F:"#198038",CL:"#007d79",BR:"#fa4d56",I:"#8a3ffc",P:"#ff832b",S:"#f1c21b",B:"#8a3800",SI:"#e67e22",H:"#525252"},cyberpunk:{FOREGROUND:"#ea00d9",BACKGROUND:"#ffffff",C:"#ea00d9",O:"#ff3131",N:"#0abdc6",F:"#00ff9f",CL:"#00fe00",BR:"#fe9f20",I:"#ff00ff",P:"#fe7f00",S:"#fcee0c",B:"#ff00ff",SI:"#ffffff",H:"#913cb1"},gruvbox:{FOREGROUND:"#665c54",BACKGROUND:"#fbf1c7",C:"#665c54",O:"#cc241d",N:"#458588",F:"#98971a",CL:"#79740e",BR:"#d65d0e",I:"#b16286",P:"#af3a03",S:"#d79921",B:"#689d6a",SI:"#427b58",H:"#7c6f64"},"gruvbox-dark":{FOREGROUND:"#ebdbb2",BACKGROUND:"#282828",C:"#ebdbb2",O:"#cc241d",N:"#458588",F:"#98971a",CL:"#b8bb26",BR:"#d65d0e",I:"#b16286",P:"#fe8019",S:"#d79921",B:"#8ec07c",SI:"#83a598",H:"#bdae93"},custom:{FOREGROUND:"#222222",BACKGROUND:"#ffffff",C:"#222222",O:"#e74c3c",N:"#3498db",F:"#27ae60",CL:"#16a085",BR:"#d35400",I:"#8e44ad",P:"#d35400",S:"#f1c40f",B:"#e67e22",SI:"#e67e22",H:"#666666"}}},this.opts=mt.extend(!0,this.defaultOptions,e),["none","default","terminal","acyclic","all"].indexOf(this.opts.showCarbons)===-1&&(this.opts.showCarbons="default"),this.opts.halfBondSpacing=this.opts.bondSpacing/2,this.opts.bondLengthSq=this.opts.bondLength*this.opts.bondLength,this.opts.halfFontSizeLarge=this.opts.fontSizeLarge/2,this.opts.quarterFontSizeLarge=this.opts.fontSizeLarge/4,this.opts.fifthFontSizeSmall=this.opts.fontSizeSmall/5,this.theme=this.opts.themes.dark}static getEffectiveShowCarbonsMode(e){let t=["none","default","terminal","acyclic","all"],r=e.showCarbons;return(r==null||t.indexOf(r)===-1)&&(r="default"),r==="default"&&e.terminalCarbons?"terminal":r}draw(e,t,r="light",i=!1){this.initDraw(e,r,i),this.infoOnly||(this.themeManager=new vt(this.opts.themes,r),this.canvasWrapper=new dr(t,this.themeManager,this.opts)),i||(this.processGraph(),this.canvasWrapper.scale(this.graph.vertices),this.drawEdges(this.opts.debug),this.drawVertices(this.opts.debug),this.canvasWrapper.reset(),this.opts.debug&&console.debug("DrawerBase::draw()",{graph:this.graph,rings:this.rings,ringConnections:this.ringConnections}))}edgeRingCount(e){let t=this.graph.edges[e],r=this.graph.vertices[t.sourceId],i=this.graph.vertices[t.targetId];return Math.min(r.value.rings.length,i.value.rings.length)}getBridgedRings(){return this.rings.filter(e=>e.isBridged)}getFusedRings(){return this.rings.filter(e=>e.isFused)}getSpiros(){return this.rings.filter(e=>e.isSpiro)}printRingInfo(){let e="";for(let t=0;t<this.rings.length;t++){let r=this.rings[t];e+=r.id+";",e+=r.members.length+";",e+=r.neighbours.length+";",e+=r.isSpiro?"true;":"false;",e+=r.isFused?"true;":"false;",e+=r.isBridged?"true;":"false;",e+=r.rings.length+";",e+=` 3`}return e}rotateDrawing(){let e=0,t=0,r=0;for(let s=0;s<this.graph.vertices.length;s++){let a=this.graph.vertices[s];if(a.value.isDrawn)for(let n=s+1;n<this.graph.vertices.length;n++){let o=this.graph.vertices[n];if(!o.value.isDrawn)continue;let u=a.position.distanceSq(o.position);u>r&&(r=u,e=s,t=n)}}let i=-M.subtract(this.graph.vertices[e].position,this.graph.vertices[t].position).angle();if(!isNaN(i)){let s=i%.523599;s<.2617995?i=i-s:i+=.523599-s;for(let a=0;a<this.graph.vertices.length;
vendor: 34,279 bytes, line 3
3a++)a!==t&&this.graph.vertices[a].position.rotateAround(i,this.graph.vertices[t].position);for(let a=0;a<this.rings.length;a++)this.rings[a].center.rotateAround(i,this.graph.vertices[t].position)}}getTotalOverlapScore(){return this.totalOverlapScore}getRingCount(){return this.rings.length}hasBridgedRing(){return this.bridgedRing}getHeavyAtomCount(){let e=0;for(let t=0;t<this.graph.vertices.length;t++)this.graph.vertices[t].value.element!=="H"&&e++;return e}getMolecularFormula(e=null){let t="",r=new Map,i=e===null?this.graph:new Rt(e,this.opts.isomeric);for(let a=0;a<i.vertices.length;a++){let n=i.vertices[a].value,o=r.get(n.element)||0;r.set(n.element,o+1);let u=n.countImplicitHydrogens();if(u){let d=r.get("H")||0;r.set("H",d+u)}}if(r.has("C")){let a=r.get("C");t+="C"+(a>1?a:""),r.delete("C")}if(r.has("H")){let a=r.get("H");t+="H"+(a>1?a:""),r.delete("H")}return Object.keys(zt.atomicNumbers).sort().map(a=>{if(r.has(a)){let n=r.get(a);t+=a+(n>1?n:"")}}),t}getRingbondType(e,t){if(e.value.getRingbondCount()<1||t.value.getRingbondCount()<1)return null;for(let r=0;r<e.value.ringbonds.length;r++)for(let i=0;i<t.value.ringbonds.length;i++)if(e.value.ringbonds[r].id===t.value.ringbonds[i].id)return e.value.ringbonds[r].bondType==="-"?t.value.ringbonds[i].bond:e.value.ringbonds[r].bond;return null}initDraw(e,t,r,i){this.data=e,this.infoOnly=r,this.ringIdCounter=0,this.ringConnectionIdCounter=0,this.graph=new Rt(e,this.opts.isomeric),this.rings=[],this.ringConnections=[],this.originalRings=[],this.originalRingConnections=[],this.bridgedRing=!1,this.doubleBondConfigCount=null,this.doubleBondConfig=null,this.highlight_atoms=i,this.initRings(),this.initHydrogens()}processGraph(){this.position(),this.fixDoubleBondStereo(),this.restoreRingInformation(),this.resolvePrimaryOverlaps();let e=this.getOverlapScore();this.totalOverlapScore=this.getOverlapScore().total;for(let t=0;t<this.opts.overlapResolutionIterations;t++)for(let r=0;r<this.graph.edges.length;r++){let i=this.graph.edges[r];if(this.isEdgeRotatable(i)){let s=this.graph.getTreeDepth(i.sourceId,i.targetId),a=this.graph.getTreeDepth(i.targetId,i.sourceId),n=i.targetId,o=i.sourceId;if(s>a&&(n=i.sourceId,o=i.targetId),this.getSubtreeOverlapScore(o,n,e.vertexScores).value>this.opts.overlapSensitivity){let d=this.graph.vertices[n],g=this.graph.vertices[o],p=g.getNeighbours(n);if(p.length===1){let c=this.graph.vertices[p[0]],b=c.position.getRotateAwayFromAngle(d.position,g.position,re.toRad(120));this.rotateSubtree(c.id,g.id,b,g.position);let E=this.getOverlapScore().total;E>this.totalOverlapScore?this.rotateSubtree(c.id,g.id,-b,g.position):this.totalOverlapScore=E}else if(p.length===2){if(g.value.rings.length!==0&&d.value.rings.length!==0)continue;let c=this.graph.vertices[p[0]],b=this.graph.vertices[p[1]];if(c.value.rings.length===1&&b.value.rings.length===1){if(c.value.rings[0]!==b.value.rings[0])continue;let E=c.value.rings[0];if(this.getRingExternalConnectionCount(E)!==1)continue;let T=0,k=this.totalOverlapScore,O=this.getRing(E),B=re.centralAngle(O.getSize()),I=Math.max(1,Math.floor(O.getSize()/2));for(let U=1;U<=I;U++){let G=B*U;this.rotateSubtree(g.id,d.id,G,g.position);let se=this.getOverlapScore().total;se<k&&(k=se,T=G),this.rotateSubtree(g.id,d.id,-G,g.position),this.rotateSubtree(g.id,d.id,-G,g.position),se=this.getOverlapScore().total,se<k&&(k=se,T=-G),this.rotateSubtree(g.id,d.id,G,g.position)}T!==0&&(this.rotateSubtree(g.id,d.id,T,g.position),this.totalOverlapScore=k)}else{if(c.value.rings.length!==0||b.value.rings.length!==0)continue;{let E=c.position.getRotateAwayFromAngle(d.position,g.position,re.toRad(120)),T=b.position.getRotateAwayFromAngle(d.position,g.position,re.toRad(120));this.rotateSubtree(c.id,g.id,E,g.position),this.rotateSubtree(b.id,g.id,T,g.position);let k=this.getOverlapScore().total;k>this.totalOverlapScore?(this.rotateSubtree(c.id,g.id,-E,g.position),this.rotateSubtree(b.id,g.id,-T,g.position)):this.totalOverlapScore=k}}}e=this.getOverlapScore()}}}this.resolveSecondaryOverlaps(e.scores),this.resolveRigidRingOverlaps(),e=this.getOverlapScore(),this.resolveSecondaryOverlaps(e.scores),this.opts.isomeric&&this.annotateStereochemistry(),this.opts.compactDrawing&&this.opts.atomVisualization==="default"&&this.initPseudoElements(),this.rotateDrawing()}initRings(){let e=new Map;for(let r=this.graph.vertices.length-1;r>=0;r--){let i=this.graph.vertices[r];if(i.value.ringbonds.length!==0)for(let s=0;s<i.value.ringbonds.length;s++){let a=i.value.ringbonds[s].id,n=i.value.ringbonds[s].bond;if(!e.has(a))e.set(a,[i.id,n]);else{let o=i.id,u=e.get(a)[0],d=e.get(a)[1],g=new _t(o,u,1);g.setBondType(d||n||"-");let p=this.graph.addEdge(g),c=this.graph.vertices[u];i.addRingbondChild(u,s),i.value.addNeighbouringElement(c.value.element);let b=0;for(let E=0;E<c.value.ringbonds.length;E++)if(c.value.ringbonds[E].id===a){b=E;break}c.addRingbondChild(o,b),c.value.addNeighbouringElement(i.value.element),i.edges.push(p),c.edges.push(p),e.delete(a)}}}let t=vr.getRings(this.graph,this.opts.experimentalSSSR);if(!(t===null||t.length===0)){for(let r=0;r<t.length;r++){let i=[...t[r]],s=this.addRing(new tr(i));for(let a=0;a<i.length;a++)this.graph.vertices[i[a]].value.rings.push(s)}for(let r=0;r<this.rings.length-1;r++)for(let i=r+1;i<this.rings.length;i++){let s=this.rings[r],a=this.rings[i],n=new gt(s,a);n.vertices.size>0&&this.addRingConnection(n)}for(let r=0;r<this.rings.length;r++){let i=this.rings[r];i.neighbours=gt.getNeighbours(this.ringConnections,i.id)}for(let r=0;r<this.rings.length;r++){let i=this.rings[r];this.graph.vertices[i.members[0]].value.addAnchoredRing(i.id)}for(this.backupRingInformation();this.rings.length>0;){let r=-1;for(let a=0;a<this.rings.length;a++){let n=this.rings[a];this.isPartOfBridgedRing(n.id)&&!n.isBridged&&(r=n.id)}if(r===-1)break;let i=this.getRing(r),s=this.getBridgedRingRings(i.id);this.bridgedRing=!0,this.createBridgedRing(s,i.members[0]),this.bridgedRing=!1;for(let a=0;a<s.length;a++)this.removeRing(s[a])}}}initHydrogens(){if(!this.opts.explicitHydrogens)for(let e=0;e<this.graph.vertices.length;e++){let t=this.graph.vertices[e];if(t.value.element!=="H")continue;let r=this.graph.vertices[t.neighbours[0]];r.value.hasHydrogen=!0,(!r.value.isStereoCenter||r.value.rings.length<2&&!r.value.bridgedRing||r.value.bridgedRing&&r.value.originalRings.length<2)&&(t.value.isDrawn=!1)}}getBridgedRingRings(e){let t=[],r=s=>{let a=this.getRing(s);t.push(s);for(let n=0;n<a.neighbours.length;n++){let o=a.neighbours[n];t.indexOf(o)===-1&&o!==s&>.isBridge(this.ringConnections,this.graph.vertices,s,o)&&r(o)}};r(e);let i=!0;for(;i;){i=!1;for(let s=0;s<this.ringConnections.length;s++){let a=this.ringConnections[s];if(a.vertices.size<2)continue;let n=t.indexOf(a.firstRingId)!==-1,o=t.indexOf(a.secondRingId)!==-1;n&&!o?(t.push(a.secondRingId),i=!0):o&&!n&&(t.push(a.firstRingId),i=!0)}}return me.unique(t)}isPartOfBridgedRing(e){for(let t=0;t<this.ringConnections.length;t++)if(this.ringConnections[t].containsRing(e)&&this.ringConnections[t].isBridge(this.graph.vertices))return!0;return!1}createBridgedRing(e,t){let r=new Set,i=new Set,s=new Set;for(let u=0;u<e.length;u++){let d=this.getRing(e[u]);d.isPartOfBridged=!0;for(let g=0;g<d.members.length;g++)i.add(d.members[g]);for(let g=0;g<d.neighbours.length;g++){let p=d.neighbours[g];e.indexOf(p)===-1&&s.add(d.neighbours[g])}}let a=new Set;for(let u of i){let d=this.graph.vertices[u],g=me.intersection(e,d.value.rings);d.value.rings.length===1||g.length===1?r.add(d.id):a.add(d.id)}let n=[];for(let u of a){let d=this.graph.vertices[u],g=!1;for(let p=0;p<d.edges.length;p++)this.edgeRingCount(d.edges[p])===1&&(g=!0);g?(d.value.isBridgeNode=!0,r.add(d.id)):(d.value.isBridge=!0,n.push(d.id),r.add(d.id))}let o=new tr([...r]);this.addRing(o),o.isBridged=!0,o.insiders=n,o.neighbours=[...s];for(let u=0;u<e.length;u++)o.rings.push(this.getRing(e[u]).clone());for(let u=0;u<o.members.length;u++)this.graph.vertices[o.members[u]].value.bridgedRing=o.id;for(let u=0;u<n.length;u++){let d=this.graph.vertices[n[u]];d.value.rings=[]}for(let u of r){let d=this.graph.vertices[u];d.value.rings=me.removeAll(d.value.rings,e),d.value.rings.push(o.id)}for(let u=0;u<e.length;u++)for(let d=u+1;d<e.length;d++)this.removeRingConnectionsBetween(e[u],e[d]);for(let u of s){let d=this.getRingConnections(u,e);for(let g=0;g<d.length;g++)this.getRingConnection(d[g]).updateOther(o.id,u);this.getRing(u).neighbours.push(o.id)}return o}areVerticesInSameRing(e,t){for(let r=0;r<e.value.rings.length;r++)for(let i=0;i<t.value.rings.length;i++)if(e.value.rings[r]===t.value.rings[i])return!0;return!1}getCommonRings(e,t){let r=[];for(let i=0;i<e.value.rings.length;i++)for(let s=0;s<t.value.rings.length;s++)e.value.rings[i]==t.value.rings[s]&&r.push(e.value.rings[i]);return r}getLargestOrAromaticCommonRing(e,t){let r=this.getCommonRings(e,t),i=0,s=null;for(let a=0;a<r.length;a++){let n=this.getRing(r[a]),o=n.getSize();if(n.isBenzeneLike(this.graph.vertices))return n;o>i&&(i=o,s=n)}return s}getVerticesAt(e,t,r){let i=[];for(let s=0;s<this.graph.vertices.length;s++){let a=this.graph.vertices[s];if(a.id===r||!a.positioned)continue;e.distanceSq(a.position)<=t*t&&i.push(a.id)}return i}getClosestVertex(e){let t=99999,r=null;for(let i=0;i<this.graph.vertices.length;i++){let s=this.graph.vertices[i];if(s.id===e.id)continue;let a=e.position.distanceSq(s.position);a<t&&(t=a,r=s)}return r}addRing(e){return e.id=this.ringIdCounter++,this.rings.push(e),e.id}removeRing(e){this.rings=this.rings.filter(function(t){return t.id!==e}),this.ringConnections=this.ringConnections.filter(function(t){return t.firstRingId!==e&&t.secondRingId!==e});for(let t=0;t<this.rings.length;t++){let r=this.rings[t];r.neighbours=r.neighbours.filter(function(i){return i!==e})}}getRing(e){for(let t=0;t<this.rings.length;t++)if(this.rings[t].id==e)return this.rings[t]}addRingConnection(e){return e.id=this.ringConnectionIdCounter++,this.ringConnections.push(e),e.id}removeRingConnection(e){this.ringConnections=this.ringConnections.filter(function(t){return t.id!==e})}removeRingConnectionsBetween(e,t){let r=[];for(let i=0;i<this.ringConnections.length;i++){let s=this.ringConnections[i];(s.firstRingId===e&&s.secondRingId===t||s.firstRingId===t&&s.secondRingId===e)&&r.push(s.id)}for(let i=0;i<r.length;i++)this.removeRingConnection(r[i])}getRingConnection(e){for(let t=0;t<this.ringConnections.length;t++)if(this.ringConnections[t].id==e)return this.ringConnections[t]}getRingConnections(e,t){let r=[];for(let i=0;i<this.ringConnections.length;i++){let s=this.ringConnections[i];for(let a=0;a<t.length;a++){let n=t[a];(s.firstRingId===e&&s.secondRingId===n||s.firstRingId===n&&s.secondRingId===e)&&r.push(s.id)}}return r}getOverlapScore(){let e=0,t=new Float32Array(this.graph.vertices.length);for(let i=0;i<this.graph.vertices.length;i++)t[i]=0;for(let i=0;i<this.graph.vertices.length;i++){let s=this.graph.vertices.length;for(;--s>i;){let a=this.graph.vertices[i],n=this.graph.vertices[s];if(!a.value.isDrawn||!n.value.isDrawn)continue;let o=M.subtract(a.position,n.position).lengthSq();if(o<this.opts.bondLengthSq){let u=(this.opts.bondLength-Math.sqrt(o))/this.opts.bondLength;e+=u,t[i]+=u,t[s]+=u}}}let r=[];for(let i=0;i<this.graph.vertices.length;i++)r.push({id:i,score:t[i]});return r.sort(function(i,s){return s.score-i.score}),{total:e,scores:r,vertexScores:t}}chooseSide(e,t,r){let i=e.getNeighbours(t.id),s=t.getNeighbours(e.id),a=i.length,n=s.length,o=me.merge(i,s),u=[0,0];for(let g=0;g<o.length;g++)this.graph.vertices[o[g]].position.sameSideAs(e.position,t.position,r[0])?u[0]++:u[1]++;let d=[0,0];for(let g=0;g<this.graph.vertices.length;g++)this.graph.vertices[g].position.sameSideAs(e.position,t.position,r[0])?d[0]++:d[1]++;return{totalSideCount:d,totalPosition:d[0]>d[1]?0:1,sideCount:u,position:u[0]>u[1]?0:1,anCount:a,bnCount:n}}setRingCenter(e){let t=e.getSize(),r=new M(0,0);for(let i=0;i<t;i++)r.add(this.graph.vertices[e.members[i]].position);e.center=r.divide(t)}getSubringCenter(e,t){let r=t.value.originalRings,i=e.center,s=Number.MAX_VALUE;for(let a=0;a<r.length;a++)for(let n=0;n<e.rings.length;n++)r[a]===e.rings[n].id&&e.rings[n].getSize()<s&&(i=e.rings[n].center,s=e.rings[n].getSize());return i}drawEdges(e){let t=Array(this.graph.edges.length);if(t.fill(!1),this.graph.traverseBF(0,r=>{let i=this.graph.getEdges(r.id);for(let s=0;s<i.length;s++){let a=i[s];t[a]||(t[a]=!0,this.drawEdge(a,e))}}),!this.bridgedRing)for(let r=0;r<this.rings.length;r++){let i=this.rings[r];this.isRingAromatic(i)&&this.canvasWrapper.drawAromaticityRing(i)}}drawEdge(e,t){let r=this.graph.edges[e],i=this.graph.vertices[r.sourceId],s=this.graph.vertices[r.targetId],a=i.value.element,n=s.value.element;if((!i.value.isDrawn||!s.value.isDrawn)&&this.opts.atomVisualization==="default")return;let o=i.position,u=s.position,d=this.getEdgeNormals(r),g=me.clone(d);if(g[0].multiplyScalar(10).add(o),g[1].multiplyScalar(10).add(o),r.bondType==="="||this.getRingbondType(i,s)==="="||r.isPartOfAromaticRing&&this.bridgedRing){let p=this.areVerticesInSameRing(i,s),c=this.chooseSide(i,s,g);if(p){let E=this.getLargestOrAromaticCommonRing(i,s).center;d[0].multiplyScalar(this.opts.bondSpacing),d[1].multiplyScalar(this.opts.bondSpacing);let T=null;E.sameSideAs(i.position,s.position,M.add(o,d[0]))?T=new te(M.add(o,d[0]),M.add(u,d[0]),a,n):T=new te(M.add(o,d[1]),M.add(u,d[1]),a,n),T.shorten(this.opts.bondLength-this.opts.shortBondLength*this.opts.bondLength),r.isPartOfAromaticRing?this.canvasWrapper.drawLine(T,!0):this.canvasWrapper.drawLine(T),this.canvasWrapper.drawLine(new te(o,u,a,n))}else if(r.center||i.isTerminal()&&s.isTerminal()){d[0].multiplyScalar(this.opts.halfBondSpacing),d[1].multiplyScalar(this.opts.halfBondSpacing);let b=new te(M.add(o,d[0]),M.add(u,d[0]),a,n),E=new te(M.add(o,d[1]),M.add(u,d[1]),a,n);this.canvasWrapper.drawLine(b),this.canvasWrapper.drawLine(E)}else if(c.anCount==0&&c.bnCount>1||c.bnCount==0&&c.anCount>1){d[0].multiplyScalar(this.opts.halfBondSpacing),d[1].multiplyScalar(this.opts.halfBondSpacing);let b=new te(M.add(o,d[0]),M.add(u,d[0]),a,n),E=new te(M.add(o,d[1]),M.add(u,d[1]),a,n);this.canvasWrapper.drawLine(b),this.canvasWrapper.drawLine(E)}else if(c.sideCount[0]>c.sideCount[1]){d[0].multiplyScalar(this.opts.bondSpacing),d[1].multiplyScalar(this.opts.bondSpacing);let b=new te(M.add(o,d[0]),M.add(u,d[0]),a,n);b.shorten(this.opts.bondLength-this.opts.shortBondLength*this.opts.bondLength),this.canvasWrapper.drawLine(b),this.canvasWrapper.drawLine(new te(o,u,a,n))}else if(c.sideCount[0]<c.sideCount[1]){d[0].multiplyScalar(this.opts.bondSpacing),d[1].multiplyScalar(this.opts.bondSpacing);let b=new te(M.add(o,d[1]),M.add(u,d[1]),a,n);b.shorten(this.opts.bondLength-this.opts.shortBondLength*this.opts.bondLength),this.canvasWrapper.drawLine(b),this.canvasWrapper.drawLine(new te(o,u,a,n))}else if(c.totalSideCount[0]>c.totalSideCount[1]){d[0].multiplyScalar(this.opts.bondSpacing),d[1].multiplyScalar(this.opts.bondSpacing);let b=new te(M.add(o,d[0]),M.add(u,d[0]),a,n);b.shorten(this.opts.bondLength-this.opts.shortBondLength*this.opts.bondLength),this.canvasWrapper.drawLine(b),this.canvasWrapper.drawLine(new te(o,u,a,n))}else if(c.totalSideCount[0]<=c.totalSideCount[1]){d[0].multiplyScalar(this.opts.bondSpacing),d[1].multiplyScalar(this.opts.bondSpacing);let b=new te(M.add(o,d[1]),M.add(u,d[1]),a,n);b.shorten(this.opts.bondLength-this.opts.shortBondLength*this.opts.bondLength),this.canvasWrapper.drawLine(b),this.canvasWrapper.drawLine(new te(o,u,a,n))}}else if(r.bondType==="#"){d[0].multiplyScalar(this.opts.bondSpacing/1.5),d[1].multiplyScalar(this.opts.bondSpacing/1.5);let p=new te(M.add(o,d[0]),M.add(u,d[0]),a,n),c=new te(M.add(o,d[1]),M.add(u,d[1]),a,n);this.canvasWrapper.drawLine(p),this.canvasWrapper.drawLine(c),this.canvasWrapper.drawLine(new te(o,u,a,n))}else if(r.bondType!=="."){let p=i.value.isStereoCenter,c=s.value.isStereoCenter;r.wedge==="up"?this.canvasWrapper.drawWedge(new te(o,u,a,n,p,c)):r.wedge==="down"?this.canvasWrapper.drawDashedWedge(new te(o,u,a,n,p,c)):this.canvasWrapper.drawLine(new te(o,u,a,n,p,c))}if(t){let p=M.midpoint(o,u);this.canvasWrapper.drawDebugText(p.x,p.y,"e: "+e)}}drawVertices(e){for(let t=0;t<this.graph.vertices.length;t++){let r=this.graph.vertices[t],i=r.value,s=0,a=0,n=i.element,o=i.countImplicitHydrogens(),u=r.getTextDirection(this.graph.vertices),d=$.getEffectiveShowCarbonsMode(this.opts),g=d==="terminal"||n!=="C"||i.hasAttachedPseudoElements?r.isTerminal():!1,p=i.element==="C";if(n==="C"){let c=i.rings&&i.rings.length>0;d==="none"?(p=!0,g=!1):(d==="all"||d==="acyclic"&&!c)&&(p=!1,g=!0)}if(i.element==="N"&&i.isPartOfAromaticRing&&(o=0),i.bracket&&(o=i.bracket.hcount,s=i.bracket.charge,a=i.bracket.isotope),(s||a||this.graph.vertices.length<3)&&(p=!1),this.opts.atomVisualization==="allballs")this.canvasWrapper.drawBall(r.position.x,r.position.y,n);else if(i.isDrawn&&(!p||i.drawExplicit||g||i.hasAttachedPseudoElements)||this.graph.vertices.length===1)this.opts.atomVisualization==="default"?this.canvasWrapper.drawText(r.position.x,r.position.y,n,o,u,g,s,a,this.graph.vertices.length,i.getAttachedPseudoElements()):this.opts.atomVisualization==="balls"&&this.canvasWrapper.drawBall(r.position.x,r.position.y,n);else if(r.getNeighbourCount()===2&&r.forcePositioned==!0){let c=this.graph.vertices[r.neighbours[0]].position,b=this.graph.vertices[r.neighbours[1]].position,E=M.threePointangle(r.position,c,b);Math.abs(Math.PI-E)<.1&&this.canvasWrapper.drawPoint(r.position.x,r.position.y,n)}if(e){let c="v: "+r.id+" "+me.print(i.ringbonds);this.canvasWrapper.drawDebugText(r.position.x,r.position.y,c)}}if(this.opts.debug)for(let t=0;t<this.rings.length;t++){let r=this.rings[t].center;this.canvasWrapper.drawDebugPoint(r.x,r.y,"r: "+this.rings[t].id)}}position(){let e=null;for(let t=0;t<this.graph.vertices.length;t++)if(this.graph.vertices[t].value.bridgedRing!==null){e=this.graph.vertices[t];break}for(let t=0;t<this.rings.length;t++)this.rings[t].isBridged&&(e=this.graph.vertices[this.rings[t].members[0]]);this.rings.length>0&&e===null&&(e=this.graph.vertices[this.rings[0].members[0]]),e===null&&(e=this.graph.vertices[0]),this.createNextBond(e,null,0)}backupRingInformation(){this.originalRings=[],this.originalRingConnections=[];for(let e=0;e<this.rings.length;e++)this.originalRings.push(this.rings[e]);for(let e=0;e<this.ringConnections.length;e++)this.originalRingConnections.push(this.ringConnections[e]);for(let e=0;e<this.graph.vertices.length;e++)this.graph.vertices[e].value.backupRings()}restoreRingInformation(){let e=this.getBridgedRings();this.rings=[],this.ringConnections=[];for(let t=0;t<e.length;t++){let r=e[t];for(let i=0;i<r.rings.length;i++){let s=r.rings[i];this.originalRings[s.id].center=s.center}}for(let t=0;t<this.originalRings.length;t++)this.rings.push(this.originalRings[t]);for(let t=0;t<this.originalRingConnections.length;t++)this.ringConnections.push(this.originalRingConnections[t]);for(let t=0;t<this.graph.vertices.length;t++)this.graph.vertices[t].value.restoreRings()}createRing(e,t=null,r=null,i=null){if(e.positioned)return;t=t||new M(0,0);let s=e.getOrderedNeighbours(this.ringConnections),a=r?M.subtract(r.position,t).angle():0,n=re.polyCircumradius(this.opts.bondLength,e.getSize()),o=re.centralAngle(e.getSize());e.centralAngle=o;let u=a,d=r?r.id:null;if(e.members.indexOf(d)===-1&&(r&&(r.positioned=!1),d=e.members[0]),e.isBridged){this.graph.kkLayout(e.members.slice(),t,r.id,e,this.opts.bondLength,this.opts.kkThreshold,this.opts.kkInnerThreshold,this.opts.kkMaxIteration,this.opts.kkMaxInnerIteration,this.opts.kkMaxEnergy),e.positioned=!0,this.setRingCenter(e),t=e.center;for(let g=0;g<e.rings.length;g++)this.setRingCenter(e.rings[g])}else e.eachMember(this.graph.vertices,g=>{let p=this.graph.vertices[g];p.positioned||p.setPosition(t.x+Math.cos(u)*n,t.y+Math.sin(u)*n),u+=o,(!e.isBridged||e.rings.length<3)&&(p.angle=u,p.positioned=!0)},d,i?i.id:null);e.positioned=!0,e.center=t;for(let g=0;g<s.length;g++){let p=this.getRing(s[g].neighbour);if(p.positioned)continue;let c=gt.getVertices(this.ringConnections,e.id,p.id);if(c.length===2){e.isFused=!0,p.isFused=!0;let b=this.graph.vertices[c[0]],E=this.graph.vertices[c[1]],T=M.midpoint(b.position,E.position),k=M.normals(b.position,E.position);k[0].normalize(),k[1].normalize();let O=re.polyCircumradius(this.opts.bondLength,p.getSize()),B=re.apothem(O,p.getSize());k[0].multiplyScalar(B).add(T),k[1].multiplyScalar(B).add(T);let I=k[0];M.subtract(t,k[1]).lengthSq()>M.subtract(t,k[0]).lengthSq()&&(I=k[1]);let U=M.subtract(b.position,I),G=M.subtract(E.position,I);U.clockwise(G)===-1?p.positioned||this.createRing(p,I,b,E):p.positioned||this.createRing(p,I,E,b)}else if(c.length===1){e.isSpiro=!0,p.isSpiro=!0;let b=this.graph.vertices[c[0]],E=M.subtract(t,b.position);E.invert(),E.normalize();let T=re.polyCircumradius(this.opts.bondLength,p.getSize());E.multiplyScalar(T),E.add(b.position),p.positioned||this.createRing(p,E,b)}}for(let g=0;g<e.members.length;g++){let p=this.graph.vertices[e.members[g]],c=p.neighbours;for(let b=0;b<c.length;b++){let E=this.graph.vertices[c[b]];E.positioned||(E.value.isConnectedToRing=!0,this.createNextBond(E,p,0))}}}fixDoubleBondStereo(){let e=this.graph;for(let t=0;t<e.edges.length;t++){let r=e.edges[t];if(r.bondType!=="=")continue;let i=r.sourceId,s=r.targetId;if(e.vertices[i].value.rings.length>0&&e.vertices[s].value.rings.length>0)continue;let a=null,n=null;for(let j of e.vertices[i].getNeighbours()){if(j===s)continue;let J=e.getEdge(i,j);if(J&&(J.bondType==="/"||J.bondType==="\\")){let Ne=J.sourceId===i?J.bondType==="/":J.bondType==="\\";a={nid:j,above:Ne};break}}for(let j of e.vertices[s].getNeighbours()){if(j===i)continue;let J=e.getEdge(s,j);if(J&&(J.bondType==="/"||J.bondType==="\\")){let Ne=J.sourceId===s?J.bondType==="/":J.bondType==="\\";n={nid:j,above:Ne};break}}if(!a||!n)continue;let o=a.above===n.above,u=e.vertices[i].position,d=e.vertices[s].position,g=e.vertices[a.nid].position,p=e.vertices[n.nid].position,c=d.x-u.x,b=d.y-u.y,E=c*(g.y-u.y)-b*(g.x-u.x),T=c*(p.y-d.y)-b*(p.x-d.x),k=E>0==T>0;if(o===k)continue;let O=0,B=0;for(let j of e.vertices[i].getNeighbours()){if(j===s)continue;let J=e.getEdge(i,j);J&&(J.bondType==="/"||J.bondType==="\\")&&O++}for(let j of e.vertices[s].getNeighbours()){if(j===i)continue;let J=e.getEdge(s,j);J&&(J.bondType==="/"||J.bondType==="\\")&&B++}let I,U;if(O<=B?(I=a.nid,U=i):(I=n.nid,U=s),e.vertices[I].value.rings.length>0&&(I=U===i?n.nid:a.nid,U=U===i?s:i,e.vertices[I].value.rings.length>0))continue;let G=e.vertices[U].position,se=c*c+b*b;if(se<.001)continue;let we=this;e.traverseTree(I,U,function(j){let J=j.position.x-G.x,Ne=j.position.y-G.y,Ye=J*c+Ne*b;j.position.x=G.x+2*Ye*c/se-J,j.position.y=G.y+2*Ye*b/se-Ne;for(let ke=0;ke<j.value.anchoredRings.length;ke++){let _=we.rings[j.value.anchoredRings[ke]];if(_){let Fe=_.center.x-G.x,Ie=_.center.y-G.y,Le=Fe*c+Ie*b;_.center.x=G.x+2*Le*c/se-Fe,_.center.y=G.y+2*Le*b/se-Ie}}})}}rotateSubtree(e,t,r,i){let s=i.clone();this.graph.traverseTree(e,t,a=>{a.position.rotateAround(r,s);for(let n=0;n<a.value.anchoredRings.length;n++){let o=this.rings[a.value.anchoredRings[n]];o&&o.center.rotateAround(r,s)}})}getSubtreeOverlapScore(e,t,r){let i=0,s=new M(0,0),a=0;return this.graph.traverseTree(e,t,n=>{if(!n.value.isDrawn)return;let o=r[n.id];o>this.opts.overlapSensitivity&&(i+=o,a++);let u=this.graph.vertices[n.id].position.clone();u.multiplyScalar(o),s.add(u)}),s.divide(i),{value:i/a,center:s}}getCurrentCenterOfMass(){let e=new M(0,0),t=0;for(let r=0;r<this.graph.vertices.length;r++){let i=this.graph.vertices[r];i.positioned&&(e.add(i.position),t++)}return e.divide(t)}getCurrentCenterOfMassInNeigbourhood(e,t=this.opts.bondLength*2){let r=new M(0,0),i=0,s=t*t;for(let a=0;a<this.graph.vertices.length;a++){let n=this.graph.vertices[a];n.positioned&&e.distanceSq(n.position)<s&&(r.add(n.position),i++)}return r.divide(i)}resolvePrimaryOverlaps(){let e=[],t=Array(this.graph.vertices.length);for(let r=0;r<this.rings.length;r++){let i=this.rings[r];for(let s=0;s<i.members.length;s++){let a=this.graph.vertices[i.members[s]];if(t[a.id])continue;t[a.id]=!0;let n=this.getNonRingNeighbours(a.id);if(n.length>1){let o=[];for(let u=0;u<a.value.rings.length;u++)o.push(a.value.rings[u]);e.push({common:a,rings:o,vertices:n})}else if(n.length===1&&a.value.rings.length===2){let o=[];for(let u=0;u<a.value.rings.length;u++)o.push(a.value.rings[u]);e.push({common:a,rings:o,vertices:n})}}}for(let r=0;r<e.length;r++){let i=e[r];if(i.vertices.length===2){let s=i.vertices[0],a=i.vertices[1];if(!s.value.isDrawn||!a.value.isDrawn)continue;let n=(2*Math.PI-this.getRing(i.rings[0]).getAngle())/6;this.rotateSubtree(s.id,i.common.id,n,i.common.position),this.rotateSubtree(a.id,i.common.id,-n,i.common.position);let o=this.getOverlapScore(),u=this.getSubtreeOverlapScore(s.id,i.common.id,o.vertexScores),d=this.getSubtreeOverlapScore(a.id,i.common.id,o.vertexScores),g=u.value+d.value;this.rotateSubtree(s.id,i.common.id,-2*n,i.common.position),this.rotateSubtree(a.id,i.common.id,2*n,i.common.position),o=this.getOverlapScore(),u=this.getSubtreeOverlapScore(s.id,i.common.id,o.vertexScores),d=this.getSubtreeOverlapScore(a.id,i.common.id,o.vertexScores),u.value+d.value>g&&(this.rotateSubtree(s.id,i.common.id,2*n,i.common.position),this.rotateSubtree(a.id,i.common.id,-2*n,i.common.position))}else i.vertices.length===1&&i.rings.length}}resolveSecondaryOverlaps(e){for(let t=0;t<e.length;t++)if(e[t].score>this.opts.overlapSensitivity){let r=this.graph.vertices[e[t].id];if(r.isTerminal()){let i=this.getClosestVertex(r);if(i){let s=null;i.isTerminal()?s=i.id===0?this.graph.vertices[1].position:i.previousPosition:s=i.id===0?this.graph.vertices[1].position:i.position;let a=r.id===0?this.graph.vertices[1].position:r.previousPosition;r.position.rotateAwayFrom(s,a,re.toRad(20))}}}}getLastAngle(e){for(;e;){let t=this.graph.vertices[e];if(t.value.rings.length>0)return 0;if(t.angle)return t.angle;e=t.parentVertexId}return 0}createNextBond(e,t=null,r=0,i=!1,s=!1){if(e.positioned&&!s)return;let a=!1;if(t){let n=this.graph.getEdge(e.id,t.id);(n.bondType==="/"||n.bondType==="\\")&&++this.doubleBondConfigCount%2===1&&this.doubleBondConfig===null&&(this.doubleBondConfig=n.bondType,a=!0,t.parentVertexId===null&&e.value.branchBond&&(this.doubleBondConfig==="/"?this.doubleBondConfig="\\":this.doubleBondConfig==="\\"&&(this.doubleBondConfig="/")))}if(!s)if(t)if(t.value.rings.length>0){let n=t.neighbours,o=null,u=new M(0,0);if(t.value.bridgedRing===null&&t.value.rings.length>1)for(let d=0;d<n.length;d++){let g=this.graph.vertices[n[d]];if(me.containsAll(g.value.rings,t.value.rings)){o=g;break}}if(o===null){for(let d=0;d<n.length;d++){let g=this.graph.vertices[n[d]];g.positioned&&this.areVerticesInSameRing(g,t)&&u.add(M.subtract(g.position,t.position))}if(u.lengthSq()<1){let d=null;t.value.bridgedRing!==null?d=this.getRing(t.value.bridgedRing):d=this.getRing(t.value.rings[0]),d&&d.center?u=M.subtract(d.center,t.position):u=new M(1,0)}u.invert().normalize().multiplyScalar(this.opts.bondLength).add(t.position)}else u=o.position.clone().rotateAround(Math.PI,t.position);e.previousPosition=t.position,e.setPositionFromVector(u),e.positioned=!0}else{let n=new M(this.opts.bondLength,0);n.rotate(r),n.add(t.position),e.setPositionFromVector(n),e.previousPosition=t.position,e.positioned=!0}else{let n=new M(this.opts.bondLength,0);n.rotate(re.toRad(-60)),e.previousPosition=n,e.setPosition(this.opts.bondLength,0),e.angle=re.toRad(-60),e.value.bridgedRing===null&&(e.positioned=!0)}if(e.value.bridgedRing!==null){let n=this.getRing(e.value.bridgedRing);if(!n.positioned){let o=M.subtract(e.previousPosition,e.position);o.invert(),o.normalize();let u=re.polyCircumradius(this.opts.bondLength,n.members.length);o.multiplyScalar(u),o.add(e.position),this.createRing(n,o,e)}}else if(e.value.rings.length>0){let n=this.getRing(e.value.rings[0]);if(!n.positioned){let o=M.subtract(e.previousPosition,e.position);o.invert(),o.normalize();let u=re.polyCircumradius(this.opts.bondLength,n.getSize());o.multiplyScalar(u),o.add(e.position),this.createRing(n,o,e)}}else{let n=e.getNeighbours(),o=[];for(let d=0;d<n.length;d++)this.graph.vertices[n[d]].value.isDrawn&&o.push(n[d]);t&&(o=me.remove(o,t.id));let u=e.getAngle();if(o.length===1){let d=this.graph.vertices[o[0]],g=t?this.graph.getEdge(e.id,t.id):null,p=this.graph.getEdge(e.id,d.id);if(g&&p&&g.weight+p.weight>=4)g.center=!0,p.center=!0,e.value.drawExplicit=!1,d.drawExplicit=!0,d.angle=0,this.createNextBond(d,e,u+d.angle);else if(t&&t.value.rings.length>0){let c=re.toRad(60),b=-c,E=new M(this.opts.bondLength,0),T=new M(this.opts.bondLength,0);E.rotate(c).add(e.position),T.rotate(b).add(e.position);let k=this.getCurrentCenterOfMass(),O=E.distanceSq(k),B=T.distanceSq(k);d.angle=O<B?b:c,this.createNextBond(d,e,u+d.angle)}else{let c=this.getLastAngle(e.id);if(c=c>=0?1.0472:-1.0472,t&&!a){let b=this.graph.getEdge(e.id,d.id).bondType;b==="/"?(this.doubleBondConfig==="/"||this.doubleBondConfig==="\\"&&(c=-c),this.doubleBondConfig=null):b==="\\"&&(this.doubleBondConfig==="/"?c=-c:this.doubleBondConfig,this.doubleBondConfig=null)}i?d.angle=c:d.angle=-c,this.createNextBond(d,e,u+d.angle)}}else if(o.length===2){let d=e.angle;d||(d=1.0472);let g=this.graph.getTreeDepth(o[0],e.id),p=this.graph.getTreeDepth(o[1],e.id),c=this.graph.vertices[o[0]],b=this.graph.vertices[o[1]];c.value.subtreeDepth=g,b.value.subtreeDepth=p;let E=this.graph.getTreeDepth(t?t.id:null,e.id);t&&(t.value.subtreeDepth=E);let T=0,k=1;b.value.element==="C"&&c.value.element!=="C"&&p>1&&g<5?(T=1,k=0):b.value.element!=="C"&&c.value.element==="C"&&g>1&&p<5?(T=0,k=1):p>g&&(T=1,k=0);let O=this.graph.vertices[o[T]],B=this.graph.vertices[o[k]],I=E<g&&E<p;B.angle=d,O.angle=-d,this.doubleBondConfig==="\\"?B.value.branchBond==="\\"&&(B.angle=-d,O.angle=d):this.doubleBondConfig==="/"&&B.value.branchBond==="/"&&(B.angle=-d,O.angle=d),this.createNextBond(B,e,u+B.angle,I),this.createNextBond(O,e,u+O.angle,I)}else if(o.length>0){let d=o.map(g=>{let p=this.graph.vertices[g],c=this.graph.getTreeDepth(g,e.id);return p.value.subtreeDepth=c,p});if(d.sort((g,p)=>p.value.subtreeDepth-g.value.subtreeDepth),o.length===3&&t&&t.parentVertexId!==null&&t.value.rings.length<1&&d[2].value.rings.length<1&&d[1].value.rings.length<1&&d[0].value.rings.length<1&&d[2].value.subtreeDepth===1&&d[1].value.subtreeDepth===1&&d[0].value.subtreeDepth>1)e.angle>=0?(d[0].angle=-1.0472,d[1].angle=re.toRad(30),d[2].angle=re.toRad(90)):(d[0].angle=1.0472,d[1].angle=-re.toRad(30),d[2].angle=-re.toRad(90)),this.createNextBond(d[0],e,u+d[0].angle),this.createNextBond(d[1],e,u+d[1].angle),this.createNextBond(d[2],e,u+d[2].angle);else{let g=o.length+(t?1:0),p=2*Math.PI/g,c=p,b=0;for(o.length%2!==0?(this.createNextBond(d[0],e,u),b=1):c/=2;b<o.length;)this.createNextBond(d[b+0],e,u+c),this.createNextBond(d[b+1],e,u-c),c+=p,b+=2}}}}getCommonRingbondNeighbour(e){let t=e.neighbours;for(let r=0;r<t.length;r++){let i=this.graph.vertices[t[r]];if(me.containsAll(i.value.rings,e.value.rings))return i}return null}isPointInRing(e){for(let t=0;t<this.rings.length;t++){let r=this.rings[t];if(!r.positioned)continue;let i=re.polyCircumradius(this.opts.bondLength,r.getSize()),s=i*i;if(e.distanceSq(r.center)<s)return!0}return!1}isEdgeInRing(e){let t=this.graph.vertices[e.sourceId],r=this.graph.vertices[e.targetId];return this.areVerticesInSameRing(t,r)}isEdgeRotatable(e){let t=this.graph.vertices[e.sourceId],r=this.graph.vertices[e.targetId];return!(e.bondType!=="-"||t.isTerminal()||r.isTerminal()||t.value.rings.length>0&&r.value.rings.length>0&&this.areVerticesInSameRing(t,r))}isRingAromatic(e){for(let t=0;t<e.members.length;t++)if(!this.graph.vertices[e.members[t]].value.isPartOfAromaticRing)return!1;return!0}getEdgeNormals(e){let t=this.graph.vertices[e.sourceId].position,r=this.graph.vertices[e.targetId].position;return M.units(t,r)}getNonRingNeighbours(e){let t=[],r=this.graph.vertices[e],i=r.neighbours;for(let s=0;s<i.length;s++){let a=this.graph.vertices[i[s]];me.intersection(r.value.rings,a.value.rings).length===0&&a.value.isBridge==!1&&t.push(a)}return t}getMinimumNonBondedDistance(){let e=Number.POSITIVE_INFINITY;for(let t=0;t<this.graph.vertices.length;t++){let r=this.graph.vertices[t];if(r.value.isDrawn)for(let i=t+1;i<this.graph.vertices.length;i++){if(this.graph.hasEdge(t,i))continue;let s=this.graph.vertices[i];if(!s.value.isDrawn)continue;let a=r.position.distance(s.position);a<e&&(e=a)}}return e}getRingExternalConnectionCount(e){let t=this.getRing(e);if(!t)return 0;let r=new Set(t.members),i=new Set;for(let s=0;s<t.members.length;s++){let a=t.members[s],n=this.graph.vertices[a];for(let o=0;o<n.neighbours.length;o++){let u=n.neighbours[o];r.has(u)||i.add(`${a}:${u}`)}}return i.size}resolveRigidRingOverlaps(){let e=this.getOverlapScore().total,t=this.getMinimumNonBondedDistance(),r=this.opts.bondLength*.3;for(let i=0;i<this.graph.edges.length;i++){let s=this.graph.edges[i];if(!this.isEdgeRotatable(s))continue;let a=this.graph.getTreeDepth(s.sourceId,s.targetId),n=this.graph.getTreeDepth(s.targetId,s.sourceId),o=s.targetId,u=s.sourceId;a>n&&(o=s.sourceId,u=s.targetId);let d=this.graph.vertices[o],g=this.graph.vertices[u],p=g.getNeighbours(o);if(p.length!==2)continue;let c=this.graph.vertices[p[0]],b=this.graph.vertices[p[1]];if(c.value.rings.length!==1||b.value.rings.length!==1||c.value.rings[0]!==b.value.rings[0])continue;let E=this.getRing(c.value.rings[0]);if(!E)continue;let T=0,k=e,O=t,B=re.centralAngle(E.getSize()),I=Math.max(1,Math.floor(E.getSize()/2));for(let U=1;U<=I;U++){let G=B*U;for(let se=0;se<2;se++){let we=se===0?G:-G;this.rotateSubtree(g.id,d.id,we,g.position);let j=this.getOverlapScore().total,J=this.getMinimumNonBondedDistance();this.rotateSubtree(g.id,d.id,-we,g.position),!(J<=r)&&(j<k-1e-6||Math.abs(j-k)<=1e-6&&J>O+1e-6)&&(T=we,k=j,O=J)}}T!==0&&(this.rotateSubtree(g.id,d.id,T,g.position),e=k,t=O)}this.totalOverlapScore=e}annotateStereochemistry(){for(let e=0;e<this.graph.vertices.length;e++){let t=this.graph.vertices[e];if(!t.value.isStereoCenter)continue;let r=t.neighbours;if(r.length+t.value.countImplicitHydrogens()!==4){t.value.isStereoCenter=!1;continue}let i=pr.getOrderArray(this.graph,t);
3if(i===void 0){t.value.isStereoCenter=!1;continue}let s=re.parityOfPermutation(i),a=t.value.bracket.chirality==="@"?-1:1,n=s===a?"R":"S";t.value.chirality=n;let o=new Array(r.length-1),u=t.value.rings.length>1&&t.value.hasHydrogen,d=t.value.hasHydrogen?1:0;for(let g=0;g<i.length-d;g++){o[g]=new Uint32Array(2);let p=this.graph.vertices[r[i[g]]];o[g][0]+=p.value.isStereoCenter?0:1e5,o[g][0]+=this.areVerticesInSameRing(p,t)?0:1e4,o[g][0]+=p.value.isHeteroAtom()?1e3:0,o[g][0]-=p.value.subtreeDepth===0?1e3:0,o[g][0]+=1e3-p.value.subtreeDepth,o[g][1]=r[i[g]]}if(o.sort((g,p)=>p[0]-g[0]),!u){let g=o[0][1],p=this._computeWedgeDirection(t,g,i,r,n);if(this.graph.getEdge(t.id,g).wedge=p,t.value.hasHydrogen){let c=r[i[i.length-1]],b=this._computeWedgeDirection(t,c,i,r,n);this.graph.getEdge(t.id,c).wedge=b,t.value.hydrogenDirection=b==="up"?"up":"down"}}}}_computeWedgeDirection(e,t,r,i,s){let a=i.length,n=0;for(let g=0;g<a;g++)if(i[r[g]]===t){n=g;break}let o=[];for(let g=0;g<a;g++)i[r[g]]!==t&&o.push(this.graph.vertices[i[r[g]]].position);if(o.length===2){let g=this.graph.vertices[t].position,p=(g.x+o[0].x+o[1].x)/3,c=(g.y+o[0].y+o[1].y)/3;o.push({x:2*e.position.x-p,y:2*e.position.y-c})}let u=(o[1].x-o[0].x)*(o[2].y-o[0].y)-(o[2].x-o[0].x)*(o[1].y-o[0].y);return(n%2===0?u>0:u<0)===(s==="R")?"up":"down"}initPseudoElements(){for(let e=0;e<this.graph.vertices.length;e++){let t=this.graph.vertices[e],r=t.neighbours,i=Array(r.length);for(let o=0;o<r.length;o++)i[o]=this.graph.vertices[r[o]];if(t.getNeighbourCount()<3||t.value.rings.length>0||t.value.element==="P"||t.value.element==="C"&&i.length===3&&i[0].value.element==="N"&&i[1].value.element==="N"&&i[2].value.element==="N")continue;let s=0,a=0;for(let o=0;o<i.length;o++){let u=i[o],d=u.value.element,g=u.getNeighbourCount();d!=="C"&&d!=="H"&&g===1&&s++,g>1&&a++}if(a>1||s<2)continue;let n=null;for(let o=0;o<i.length;o++){let u=i[o];u.getNeighbourCount()>1&&(n=u)}for(let o=0;o<i.length;o++){let u=i[o];if(u.getNeighbourCount()>1)continue;u.value.isDrawn=!1;let d=u.value.countImplicitHydrogens(),g="";u.value.bracket&&(g=u.value.bracket.charge||0),t.value.attachPseudoElement(u.value.element,n?n.value.element:null,d,g)}}}};function Hi($){"use strict";function e(p,c){let b=p.length;if(b===0||b>0&&b-1 in p)for(let T=0;T<b&&c.call(p[T],T,p[T])!==!1;T++);else for(let T in p)if(c.call(p[T],T,p[T])===!1)break}function t(p){let c=parseInt(p).toString(16);return c.length==1?"0"+c:c}function r(p,c,b,E){return E=parseInt(E),E===void 0||E===255?"#"+t(p)+t(c)+t(b):E===0?!1:"rgba("+p+","+c+","+b+","+E/255+")"}function i(p,c,b){return"M"+p+" "+c+"h"+b}function s(p,c){return'<path stroke="'+p+'" d="'+c+`" /> 4`}function a(p){let c="";return e(p,function(b,E){if(b=r.apply(null,b.split(",")),b===!1)return;let T=[],k,O=1;e(E,function(B,I){k&&I[1]===k[1]&&I[0]===k[0]+O?O++:(k&&(T.push(i(k[0],k[1],O)),O=1),k=I)}),T.push(i(k[0],k[1],O)),c+=s(b,T.join(""))}),c}function n(p){let c={},b=p.data,E=b.length,T=p.width,k=0,O=0,B;for(let I=0;I<E;I+=4)b[I+3]>0&&(B=b[I]+","+b[I+1]+","+b[I+2]+","+b[I+3],c[B]=c[B]||[],k=I/4%T,O=Math.floor(I/4/T),c[B].push([k,O]));return c}let o=n($),u=a(o),d='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -0.5 '+$.width+" "+$.height+'" shape-rendering="crispEdges"><g shape-rendering="crispEdges">'+u+"</g></svg>",g=document.createElement("div");return g.innerHTML=d,g.firstChild}var Jn=oo(Kn()),Wt=class{constructor(e,t,r,i,s=.3,a=0,n=null,o=1,u=!1){this.points=e,this.weights=t,this.width=r,this.height=i,this.sigma=s,this.interval=a,this.opacity=o,this.normalized=u,n===null&&(n=["#c51b7d","#de77ae","#f1b6da","#fde0ef","#ffffff","#e6f5d0","#b8e186","#7fbc41","#4d9221"]),this.colormap=n,this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=this.width,this.canvas.height=this.height}setFromArray(e,t){this.points=[],e.forEach(r=>{this.points.push(new M(r[0],r[1]))}),this.weights=[],t.forEach(r=>{this.weights.push(r)})}draw(){let e=[];for(let s=0;s<this.width;s++){let a=[];for(let n=0;n<this.height;n++)a.push(0);e.push(a)}let t=1/(2*this.sigma*this.sigma);for(let s=0;s<this.points.length;s++){let a=this.points[s],n=this.weights[s];for(let o=0;o<this.width;o++)for(let u=0;u<this.height;u++){let d=o-a.x,g=u-a.y,p=(d*d+g*g)*t,c=n*Math.exp(-p);e[o][u]+=c}}let r=1;if(!this.normalized){let s=-Number.MAX_SAFE_INTEGER,a=Number.MAX_SAFE_INTEGER;for(let n=0;n<this.width;n++)for(let o=0;o<this.height;o++)e[n][o]<a&&(a=e[n][o]),e[n][o]>s&&(s=e[n][o]);r=Math.max(Math.abs(a),Math.abs(s))}let i=Jn.default.scale(this.colormap).domain([-1,1]);for(let s=0;s<this.width;s++)for(let a=0;a<this.height;
vendor: 8,989 bytes, lines 4-11
4a++){this.normalized||(e[s][a]=e[s][a]/r),this.interval!==0&&(e[s][a]=Math.round(e[s][a]/this.interval)*this.interval);let[n,o,u]=i(e[s][a]).rgb();this.setPixel(new M(s,a),n,o,u)}}getImage(e){let t=new Image;t.onload=()=>{this.context.imageSmoothingEnabled=!1,this.context.drawImage(t,0,0,this.width,this.height),e&&e(t)},t.onerror=r=>{console.log(r)},t.src=this.canvas.toDataURL()}getSVG(){return Hi(this.context.getImageData(0,0,this.width,this.height))}setPixel(e,t,r,i){this.context.fillStyle="rgba("+t+","+r+","+i+","+this.opacity+")",this.context.fillRect(e.x,e.y,1,1)}};function ho($){let e="",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=t.length;for(let i=0;i<$;i++)e+=t.charAt(Math.floor(Math.random()*r));return e}var rt=class ${constructor(e,t,r,i=!0){if(typeof t=="string"||t instanceof String?this.svg=document.getElementById(t):this.svg=t,this.container=null,this.opts=r,this.uid=ho(5),this.gradientId=0,this.defaultGradients=new Map,this.backgroundItems=[],this.paths=[],this.vertices=[],this.gradients=[],this.highlights=[],this.drawingWidth=0,this.drawingHeight=0,this.halfBondThickness=this.opts.bondThickness/2,this.themeManager=e,this.maskElements=[],this.maxX=-Number.MAX_VALUE,this.maxY=-Number.MAX_VALUE,this.minX=Number.MAX_VALUE,this.minY=Number.MAX_VALUE,i)for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);this.style=document.createElementNS("http://www.w3.org/2000/svg","style"),this.style.appendChild(document.createTextNode(` 5 .element { 6 font: ${this.opts.fontSizeLarge}pt ${this.opts.fontFamily}; 7 } 8 .sub { 9 font: ${this.opts.fontSizeSmall}pt ${this.opts.fontFamily}; 10 } 11 `)),this.svg?this.svg.appendChild(this.style):(this.container=document.createElementNS("http://www.w3.org/2000/svg","g"),this.container.appendChild(this.style))}constructSvg(){let e=document.createElementNS("http://www.w3.org/2000/svg","defs"),t=document.createElementNS("http://www.w3.org/2000/svg","mask"),r=document.createElementNS("http://www.w3.org/2000/svg","g"),i=document.createElementNS("http://www.w3.org/2000/svg","g"),s=document.createElementNS("http://www.w3.org/2000/svg","g"),a=document.createElementNS("http://www.w3.org/2000/svg","g"),n=this.paths;{let o=document.createElementNS("http://www.w3.org/2000/svg","rect");o.setAttributeNS(null,"x",this.minX),o.setAttributeNS(null,"y",this.minY),o.setAttributeNS(null,"width",this.maxX-this.minX),o.setAttributeNS(null,"height",this.maxY-this.minY),o.setAttributeNS(null,"fill","white"),t.appendChild(o)}t.setAttributeNS(null,"id",this.uid+"-text-mask"),t.setAttributeNS(null,"maskUnits","userSpaceOnUse"),t.setAttributeNS(null,"x",this.minX),t.setAttributeNS(null,"y",this.minY),t.setAttributeNS(null,"width",this.maxX-this.minX),t.setAttributeNS(null,"height",this.maxY-this.minY);for(let o of n)s.appendChild(o);for(let o of this.backgroundItems)r.appendChild(o);for(let o of this.highlights)i.appendChild(o);for(let o of this.vertices)a.appendChild(o);for(let o of this.maskElements)t.appendChild(o);for(let o of this.gradients)e.appendChild(o);if(s.setAttributeNS(null,"mask","url(#"+this.uid+"-text-mask)"),this.updateViewbox(this.opts.scale),this.svg)this.svg.appendChild(e),this.svg.appendChild(t),this.svg.appendChild(r),this.svg.appendChild(i),this.svg.appendChild(s),this.svg.appendChild(a);else return this.container.appendChild(e),this.container.appendChild(t),this.container.appendChild(r),this.container.appendChild(s),this.container.appendChild(a),this.container}addLayer(e){this.backgroundItems.push(e.firstChild)}getBondColor(e,t){let r=this.themeManager.getColor(e.value.element),i=this.themeManager.getColor(t.value.element);if(r===i)return r;let s=this.themeManager.getColor("C"),a=e.position.distance(t.position)/this.opts.bondLength;if(a>.9&&a<1.1){if(r===s)return this.getDefaultGradient(t,i,s);if(i===s)return this.getDefaultGradient(e,r,s)}return this.createLinearGradient(e.position,t.position,[["20%",r],["80%",i]])}getDefaultGradient(e,t,r){let i=this.defaultGradients.get(e);return i||(i=this.createRadialGradient(e.position,this.opts.bondLength,[["20%",t||this.themeManager.getColor(e.value.element)],["80%",r||this.themeManager.getColor("C")]]),this.defaultGradients.set(e,i),i)}createRadialGradient(e,t,r){let i=document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),s=this.uid+`-atom-${this.gradientId++}`;i.setAttributeNS(null,"id",s),i.setAttributeNS(null,"gradientUnits","userSpaceOnUse"),i.setAttributeNS(null,"cx",e.x),i.setAttributeNS(null,"cy",e.y),i.setAttributeNS(null,"r",t);for(let[a,n]of r){let o=document.createElementNS("http://www.w3.org/2000/svg","stop");o.setAttributeNS(null,"offset",a),o.setAttributeNS(null,"stop-color",n),i.appendChild(o)}return this.gradients.push(i),`url(#${s})`}createLinearGradient(e,t,r){let i=document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),s=this.uid+`-bond-${this.gradientId++}`;i.setAttributeNS(null,"id",s),i.setAttributeNS(null,"gradientUnits","userSpaceOnUse"),i.setAttributeNS(null,"x1",e.x),i.setAttributeNS(null,"y1",e.y),i.setAttributeNS(null,"x2",t.x),i.setAttributeNS(null,"y2",t.y);for(let[a,n]of r){let o=document.createElementNS("http://www.w3.org/2000/svg","stop");o.setAttributeNS(null,"offset",a),o.setAttributeNS(null,"stop-color",n),i.appendChild(o)}return this.gradients.push(i),`url(#${s})`}createSubSuperScripts(e,t){let r=document.createElementNS("http://www.w3.org/2000/svg","tspan");return r.setAttributeNS(null,"baseline-shift",t),r.appendChild(document.createTextNode(e)),r.setAttributeNS(null,"class","sub"),r}static createUnicodeCharge(e){return e===1?"\u207A":e===-1?"\u207B":e>1?$.createUnicodeSuperscript(e)+"\u207A":e<-1?$.createUnicodeSuperscript(e)+"\u207B":""}determineDimensions(e){for(let r=0;r<e.length;r++){if(!e[r].value.isDrawn)continue;let i=e[r].position;this.maxX<i.x&&(this.maxX=i.x),this.maxY<i.y&&(this.maxY=i.y),this.minX>i.x&&(this.minX=i.x),this.minY>i.y&&(this.minY=i.y)}let t=this.opts.padding;this.maxX+=t,this.maxY+=t,this.minX-=t,this.minY-=t,this.drawingWidth=this.maxX-this.minX,this.drawingHeight=this.maxY-this.minY}updateViewbox(e){let t=this.minX,r=this.minY,i=this.maxX-this.minX,s=this.maxY-this.minY;if(e<=0)if(i>s){let a=i-s;s=i,r-=a/2}else{let a=s-i;i=s,t-=a/2}else this.svg&&(this.svg.style.width=e*i+"px",this.svg.style.height=e*s+"px");this.svg.setAttributeNS(null,"viewBox",`${t} ${r} ${i} ${s}`)}drawBall(e,t,r){let i=this.opts.bondLength/4.5;e-i<this.minX&&(this.minX=e-i),e+i>this.maxX&&(this.maxX=e+i),t-i<this.minY&&(this.minY=t-i),t+i>this.maxY&&(this.maxY=t+i);let s=document.createElementNS("http://www.w3.org/2000/svg","circle");s.setAttributeNS(null,"cx",e),s.setAttributeNS(null,"cy",t),s.setAttributeNS(null,"r",i),s.setAttributeNS(null,"fill",this.themeManager.getColor(r)),this.vertices.push(s)}drawWedge(e,t="#000"){let r=e.getLeftVector().clone(),i=e.getRightVector().clone(),s=M.normals(r,i);s[0].normalize(),s[1].normalize();let a=e.getRightChiral(),n=r,o=i;a&&(n=i,o=r);let u=M.add(n,M.multiplyScalar(s[0],this.halfBondThickness)),d=M.add(o,M.multiplyScalar(s[0],3+this.opts.fontSizeLarge/4)),g=M.add(o,M.multiplyScalar(s[1],3+this.opts.fontSizeLarge/4)),p=M.add(n,M.multiplyScalar(s[1],this.halfBondThickness)),c=document.createElementNS("http://www.w3.org/2000/svg","polygon");c.setAttributeNS(null,"points",`${u.x},${u.y} ${d.x},${d.y} ${g.x},${g.y} ${p.x},${p.y}`),c.setAttributeNS(null,"fill",t),this.paths.push(c)}drawAtomHighlight(e,t,r="#03fc9d"){let i=document.createElementNS("http://www.w3.org/2000/svg","circle");i.setAttributeNS(null,"cx",e),i.setAttributeNS(null,"cy",t),i.setAttributeNS(null,"r",this.opts.bondLength/3),i.setAttributeNS(null,"fill",r),this.highlights.push(i)}drawDashedWedge(e,t="#000"){if(isNaN(e.from.x)||isNaN(e.from.y)||isNaN(e.to.x)||isNaN(e.to.y)){console.error("Invalid line passed to SvgWrapper.drawDashedWedge()!",e);return}let r=e.getLeftVector().clone(),i=e.getRightVector().clone(),s=M.normals(r,i);s[0].normalize(),s[1].normalize();let a=e.getRightChiral(),n,o;a?(n=i,o=r):(n=r,o=i);let u=M.subtract(o,n).normalize(),d=e.getLength(),g=1.25/(d/(this.opts.bondLength/10));for(let p=0;p<1;p+=g){let c=M.multiplyScalar(u,p*d),b=M.add(n,c),E=this.opts.fontSizeLarge/2*p,T=M.multiplyScalar(s[0],E);b.subtract(T);let k=b.clone();k.add(M.multiplyScalar(T,2)),this.drawLine(new te(b,k),!1,t)}}drawDebugPoint(e,t,r="",i="#f00"){let s=document.createElementNS("http://www.w3.org/2000/svg","circle");s.setAttributeNS(null,"cx",e),s.setAttributeNS(null,"cy",t),s.setAttributeNS(null,"r","2"),s.setAttributeNS(null,"fill",i),this.vertices.push(s),this.drawDebugText(e+2,t-2,r,i)}drawDebugText(e,t,r,i="#f00"){let s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttributeNS(null,"x",e),s.setAttributeNS(null,"y",t),s.setAttributeNS(null,"class","debug"),s.setAttributeNS(null,"fill",i),s.setAttributeNS(null,"
11style","font: 5px sans-serif"),s.appendChild(document.createTextNode(r)),this.vertices.push(s)}drawRing(e,t,r){let i=document.createElementNS("http://www.w3.org/2000/svg","circle"),s=re.apothemFromSideLength(this.opts.bondLength,r);i.setAttributeNS(null,"cx",e),i.setAttributeNS(null,"cy",t),i.setAttributeNS(null,"r",s-this.opts.bondSpacing),i.setAttributeNS(null,"stroke",this.themeManager.getColor("C")),i.setAttributeNS(null,"stroke-width",this.opts.bondThickness),i.setAttributeNS(null,"fill","none"),this.paths.push(i)}drawLine(e,t=!1,r="#000",i="round"){let s=e.getLeftVector(),a=e.getRightVector(),n=document.createElementNS("http://www.w3.org/2000/svg","line");n.setAttributeNS(null,"x1",s.x),n.setAttributeNS(null,"y1",s.y),n.setAttributeNS(null,"x2",a.x),n.setAttributeNS(null,"y2",a.y),n.setAttributeNS(null,"stroke",r),n.setAttributeNS(null,"stroke-width",this.opts.bondThickness),n.setAttributeNS(null,"stroke-linecap",i),t&&n.setAttributeNS(null,"stroke-dasharray","5,5"),this.paths.push(n)}drawPoint(e,t,r){let i=.75;e-i<this.minX&&(this.minX=e-i),e+i>this.maxX&&(this.maxX=e+i),t-i<this.minY&&(this.minY=t-i),t+i>this.maxY&&(this.maxY=t+i);let s=document.createElementNS("http://www.w3.org/2000/svg","circle");s.setAttributeNS(null,"cx",e),s.setAttributeNS(null,"cy",t),s.setAttributeNS(null,"r","1.5"),s.setAttributeNS(null,"fill","black"),this.maskElements.push(s);let a=document.createElementNS("http://www.w3.org/2000/svg","circle");a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",t),a.setAttributeNS(null,"r",i),a.setAttributeNS(null,"fill",this.themeManager.getColor(r)),this.vertices.push(a)}drawText(e,t,r,i,s,a,n,o,u,d={}){let g=[],p=r;n!==0&&n!==null&&(p+=$.createUnicodeCharge(n)),o!==0&&o!==null&&(p=$.createUnicodeSuperscript(o)+p),g.push([p,r]),i===1?g.push(["H","H"]):i>1&&g.push(["H"+$.createUnicodeSubscript(i),"H"]),n===1&&r==="N"&&"0O"in d&&"0O-1"in d&&(d={"0O":{element:"O",count:2,hydrogenCount:0,previousElement:"C",charge:""}},n=0);for(let c of Object.keys(d)){let b=d[c],E=b.element;b.count>1&&(E+=$.createUnicodeSubscript(b.count)),b.charge&&(E+=$.createUnicodeCharge(b.charge)),g.push([E,b.element]);let T=b.hydrogenCount*b.count;T===1?g.push(["H","H"]):T>1&&g.push(["H"+$.createUnicodeSubscript(T),"H"])}this.write(g,s,e,t,u===1)}drawWeights(e,t,r){let i=this.opts.weights.sigma,s=this.opts.weights.colormap,a=s==null?"#4d9221":s[s.length-1],n=s==null?"#c51b7d":s[0],o=document.createElementNS("http://www.w3.org/2000/svg","g");o.setAttributeNS(null,"style",`filter:blur(${i/2}px)`),this.backgroundItems.push(o);for(let u=0;u<e.length;++u){let d=e[u],g=t[u];if(!d)continue;let p=d>0?a:n;p=`rgb(from ${p} r g b / ${Math.abs(d)*r})`;let c=document.createElementNS("http://www.w3.org/2000/svg","circle");c.setAttributeNS(null,"cx",g.x),c.setAttributeNS(null,"cy",g.y),c.setAttributeNS(null,"r",i),c.setAttributeNS(null,"fill",p),o.appendChild(c)}}write(e,t,r,i,s){let a=$.measureText(e[0][1],this.opts.fontSizeLarge,this.opts.fontFamily);if(t==="left"&&e[0][0]!==e[0][1]){let c=$.measureText(e[0][0],this.opts.fontSizeLarge,this.opts.fontFamily);a.width=c.width}s?(r+a.width*e.length>this.maxX&&(this.maxX=r+a.width*e.length),r-a.width/2<this.minX&&(this.minX=r-a.width/2),i-a.height<this.minY&&(this.minY=i-a.height),i+a.height>this.maxY&&(this.maxY=i+a.height)):(t!=="right"?(r+a.width*e.length>this.maxX&&(this.maxX=r+a.width*e.length),r-a.width*e.length<this.minX&&(this.minX=r-a.width*e.length)):t!=="left"&&(r+a.width*e.length>this.maxX&&(this.maxX=r+a.width*e.length),r-a.width/2<this.minX&&(this.minX=r-a.width/2)),i-a.height<this.minY&&(this.minY=i-a.height),i+a.height>this.maxY&&(this.maxY=i+a.height),t==="down"&&i+.8*a.height*e.length>this.maxY&&(this.maxY=i+.8*a.height*e.length),t==="up"&&i-.8*a.height*e.length<this.minY&&(this.minY=i-.8*a.height*e.length));let n=r,o=i,u=document.createElementNS("http://www.w3.org/2000/svg","text");u.setAttributeNS(null,"class","element");let d=document.createElementNS("http://www.w3.org/2000/svg","g");u.setAttributeNS(null,"fill","#ffffff"),t==="left"&&(e=e.reverse()),(t==="right"||t==="down"||t==="up")&&(r-=a.width/2),t==="left"&&(r+=a.width/2),e.forEach((c,b)=>{let E=c[0],T=c[1],k=document.createElementNS("http://www.w3.org/2000/svg","tspan");k.setAttributeNS(null,"fill",this.themeManager.getColor(T)),k.textContent=E,(t==="up"||t==="down")&&(k.setAttributeNS(null,"x","0px"),t==="up"?k.setAttributeNS(null,"y",`-${.9*b}em`):k.setAttributeNS(null,"y",`${.9*b}em`)),u.appendChild(k)}),u.setAttributeNS(null,"data-direction",t),t==="left"||t==="right"?(u.setAttributeNS(null,"dominant-baseline","alphabetic"),u.setAttributeNS(null,"y","0.36em")):u.setAttributeNS(null,"dominant-baseline","central"),t==="left"&&u.setAttributeNS(null,"text-anchor","end"),d.appendChild(u),d.setAttributeNS(null,"
11style",`transform: translateX(${r}px) translateY(${i}px)`);let g=this.opts.fontSizeLarge*.75;e[0][1].length>1&&(g=this.opts.fontSizeLarge*1.1);let p=document.createElementNS("http://www.w3.org/2000/svg","circle");p.setAttributeNS(null,"cx",n),p.setAttributeNS(null,"cy",o),p.setAttributeNS(null,"r",g),p.setAttributeNS(null,"fill","black"),this.maskElements.push(p),this.vertices.push(d)}toCanvas(e,t,r){(typeof e=="string"||e instanceof String)&&(e=document.getElementById(e));let i=new Image;i.onload=function(){e.width=t,e.height=r,e.getContext("2d").drawImage(i,0,0,t,r)},i.src="data:image/svg+xml;charset-utf-8,"+encodeURIComponent(this.svg.outerHTML)}static createUnicodeSubscript(e){let t="";return e.toString().split("").forEach(r=>{t+=["\u2080","\u2081","\u2082","\u2083","\u2084","\u2085","\u2086","\u2087","\u2088","\u2089"][parseInt(r)]}),t}static createUnicodeSuperscript(e){let t="";return e.toString().split("").forEach(r=>{let i=parseInt(r);Number.isFinite(i)&&(t+=["\u2070","\xB9","\xB2","\xB3","\u2074","\u2075","\u2076","\u2077","\u2078","\u2079"][i])}),t}static replaceNumbersWithSubscript(e){let t={0:"\u2080",1:"\u2081",2:"\u2082",3:"\u2083",4:"\u2084",5:"\u2085",6:"\u2086",7:"\u2087",8:"\u2088",9:"\u2089"};for(let[r,i]of Object.entries(t))e=e.replaceAll(r,i);return e}static measureText(e,t,r){let s=document.createElement("canvas").getContext("2d");if(!s)return $.estimateTextSize(e,t);let a=t/16;s.font=`16pt ${r}`;let n=s.measureText(e),o=Math.abs(n.actualBoundingBoxLeft)+Math.abs(n.actualBoundingBoxRight),u=Math.abs(n.actualBoundingBoxAscent)+Math.abs(n.actualBoundingBoxDescent);return{width:o*a,height:u*a}}static estimateTextSize(e,t){let r=0;for(let i of String(e))i===" "?r+=.35:/[A-Z]/.test(i)?r+=.68:/[a-z]/.test(i)?r+=.56:/[0-9]/.test(i)?r+=.55:r+=.45;return{width:t*r,height:t}}static svgToCanvas(e,t,r,i,s=null){e.setAttributeNS(null,"width",r),e.setAttributeNS(null,"height",i);let a=new Image;return a.onload=function(){t.width=r,t.height=i;let n=t.getContext("2d");n.imageSmoothingEnabled=!1,n.drawImage(a,0,0,r,i),s&&s(t)},a.onerror=function(n){console.log(n)},a.src="data:image/svg+xml;charset-utf-8,"+encodeURIComponent(e.outerHTML),t}static svgToImg(e,t,r,i){let s=document.createElement("canvas");this.svgToCanvas(e,s,r,i,()=>{t.src=s.toDataURL("image/png")})}static writeText(e,t,r,i,s=Number.MAX_SAFE_INTEGER){let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),n=document.createElementNS("http://www.w3.org/2000/svg","style");n.appendChild(document.createTextNode(` 12 .text { 13 font: ${r}pt ${i}; 14 dominant-baseline: alphabetic; 15 } 16 `)),a.appendChild(n);let o=document.createElementNS("http://www.w3.org/2000/svg","text");o.setAttributeNS(null,"class","text");let u=[];e.split(` 17`).forEach(g=>{if($.measureText(g,r,i).width>=s){let c=g.split(" "),b=0;for(let E=0;E<c.length;E++){let T=c.slice(b,E+1).join(" ");$.measureText(T,r,i).width>s&&E>b&&(u.push(c.slice(b,E).join(" ")),b=E)}b<c.length&&u.push(c.slice(b,c.length).join(" "))}else u.push(g)});let d=0;return u.forEach((g,p)=>{let c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS(null,"fill",t.getColor("C")),c.textContent=g,c.setAttributeNS(null,"x","0px"),c.setAttributeNS(null,"y",`${p+1}em`),o.appendChild(c);let b=$.measureText(g,r,i);d=Math.max(d,b.width)}),o.setAttributeNS(null,"transform",`translate(${d/2}, 0)`),o.setAttributeNS(null,"text-anchor","middle"),a.appendChild(o),{svg:a,width:d,height:(u.length+.4)*r*4/3}}};var ut=class{constructor(e,t=!0){this.preprocessor=new rr(e),this.opts=this.preprocessor.opts,this.clear=t,this.svgWrapper=null}draw(e,t,r="light",i=null,s=!1,a=[],n=!1){t===null||t==="svg"?(t=document.createElementNS("http://www.w3.org/2000/svg","svg"),t.setAttribute("xmlns","http://www.w3.org/2000/svg"),t.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),t.setAttributeNS(null,"width",this.opts.width),t.setAttributeNS(null,"height",this.opts.height)):t instanceof String&&(t=document.getElementById(t));let o={padding:this.opts.padding,compactDrawing:this.opts.compactDrawing};i!==null&&(this.opts.padding+=this.opts.weights.additionalPadding,this.opts.compactDrawing=!1);let u=this.preprocessor;return u.initDraw(e,r,s,a),s||(this.themeManager=new vt(this.opts.themes,r),(this.svgWrapper===null||this.clear)&&(this.svgWrapper=new rt(this.themeManager,t,this.opts,this.clear))),u.processGraph(),this.svgWrapper.determineDimensions(u.graph.vertices),this.drawAtomHighlights(u.opts.debug),this.drawEdges(u.opts.debug),this.drawVertices(u.opts.debug),i!==null&&this.drawWeights(i,n),u.opts.debug&&console.debug("SvgDrawer::draw()",{graph:u.graph,rings:u.rings,ringConnections:u.ringConnections}),this.svgWrapper.constructSvg(),i!==null&&(this.opts.padding=o.padding,this.opts.compactDrawing=o.padding),t}drawCanvas(e,t,r="light",i=!1){let s=null;typeof t=="string"||t instanceof String?s=document.getElementById(t):s=t;let a=document.createElementNS("http://www.w3.org/2000/svg","svg");return a.setAttribute("xmlns","http://www.w3.org/2000/svg"),a.setAttributeNS(null,"viewBox","0 0 500 500"),a.setAttributeNS(null,"width","500"),a.setAttributeNS(null,"height","500"),a.setAttributeNS(null,"
17style","visibility: hidden: position: absolute; left: -1000px"),document.body.appendChild(a),this.draw(e,a,r,i),this.svgWrapper.toCanvas(s,this.opts.width,this.opts.height),document.body.removeChild(a),t}drawAromaticityRing(e){this.svgWrapper.drawRing(e.center.x,e.center.y,e.getSize())}drawEdges(e){let t=this.preprocessor,r=t.graph,i=t.rings,s=Array(this.preprocessor.graph.edges.length);if(s.fill(!1),r.traverseBF(0,a=>{let n=r.getEdges(a.id);for(let o=0;o<n.length;o++){let u=n[o];s[u]||(s[u]=!0,this.drawEdge(u,e))}}),!t.bridgedRing)for(let a=0;a<i.length;a++){let n=i[a];t.isRingAromatic(n)&&this.drawAromaticityRing(n)}}drawEdge(e,t){let r=this.preprocessor,i=r.opts,s=this.svgWrapper,a=r.graph.edges[e],n=r.graph.vertices[a.sourceId],o=r.graph.vertices[a.targetId],u=n.value.element,d=o.value.element;if((!n.value.isDrawn||!o.value.isDrawn)&&r.opts.atomVisualization==="default")return;let g=s.getBondColor(n,o),p=n.position,c=o.position,b=r.getEdgeNormals(a),E=me.clone(b);if(E[0].multiplyScalar(10).add(p),E[1].multiplyScalar(10).add(p),a.bondType==="="||r.getRingbondType(n,o)==="="||a.isPartOfAromaticRing&&r.bridgedRing){let T=r.areVerticesInSameRing(n,o),k=r.chooseSide(n,o,E);if(T){let B=r.getLargestOrAromaticCommonRing(n,o).center;b[0].multiplyScalar(i.bondSpacing),b[1].multiplyScalar(i.bondSpacing);let I=null;B.sameSideAs(n.position,o.position,M.add(p,b[0]))?I=new te(M.add(p,b[0]),M.add(c,b[0]),u,d):I=new te(M.add(p,b[1]),M.add(c,b[1]),u,d),I.shorten(i.bondLength-i.shortBondLength*i.bondLength),s.drawLine(I,a.isPartOfAromaticRing,g),s.drawLine(new te(p,c,u,d),!1,g)}else if(a.center||n.isTerminal()&&o.isTerminal()||k.anCount==0&&k.bnCount>1||k.bnCount==0&&k.anCount>1){this.multiplyNormals(b,i.halfBondSpacing);let O=new te(M.add(p,b[0]),M.add(c,b[0]),u,d),B=new te(M.add(p,b[1]),M.add(c,b[1]),u,d);s.drawLine(O,!1,g),s.drawLine(B,!1,g)}else if(k.sideCount[0]>k.sideCount[1]||k.totalSideCount[0]>k.totalSideCount[1]){this.multiplyNormals(b,i.bondSpacing);let O=new te(M.add(p,b[0]),M.add(c,b[0]),u,d);O.shorten(i.bondLength-i.shortBondLength*i.bondLength),s.drawLine(O,!1,g),s.drawLine(new te(p,c,u,d),!1,g)}else if(k.sideCount[0]<k.sideCount[1]||k.totalSideCount[0]<=k.totalSideCount[1]){this.multiplyNormals(b,i.bondSpacing);let O=new te(M.add(p,b[1]),M.add(c,b[1]),u,d);O.shorten(i.bondLength-i.shortBondLength*i.bondLength),s.drawLine(O,!1,g),s.drawLine(new te(p,c,u,d),!1,g)}}else if(a.bondType==="#"){b[0].multiplyScalar(i.bondSpacing/1.5),b[1].multiplyScalar(i.bondSpacing/1.5);let T=new te(M.add(p,b[0]),M.add(c,b[0]),u,d),k=new te(M.add(p,b[1]),M.add(c,b[1]),u,d);s.drawLine(T,!1,g),s.drawLine(k,!1,g),s.drawLine(new te(p,c,u,d),!1,g)}else if(a.bondType!=="."){let T=n.value.isStereoCenter,k=o.value.isStereoCenter;a.wedge==="up"?s.drawWedge(new te(p,c,u,d,T,k),g):a.wedge==="down"?s.drawDashedWedge(new te(p,c,u,d,T,k),g):s.drawLine(new te(p,c,u,d,T,k),!1,g)}if(t){let T=M.midpoint(p,c);s.drawDebugText(T.x,T.y,"e"+e,"#0c0")}}drawAtomHighlights(e){let t=this.preprocessor,r=t.graph,i=this.svgWrapper;for(let s=0;s<r.vertices.length;s++){let a=r.vertices[s],n=a.value;for(let o=0;o<t.highlight_atoms.length;o++){let u=t.highlight_atoms[o];n.class===u[0]&&i.drawAtomHighlight(a.position.x,a.position.y,u[1])}}}drawVertices(e){let t=this.preprocessor,r=t.opts,i=t.graph,s=t.rings,a=this.svgWrapper;for(let n=0;n<i.vertices.length;n++){let o=i.vertices[n],u=o.value,d=0,g=0,p=u.element,c=u.countImplicitHydrogens(),b=o.getTextDirection(i.vertices,u.hasAttachedPseudoElements),E=rr.getEffectiveShowCarbonsMode(r),T=E==="terminal"||p!=="C"||u.hasAttachedPseudoElements?o.isTerminal():!1,k=u.element==="C";if(p==="C"){let O=u.rings&&u.rings.length>0;E==="none"?(k=!0,T=!1):(E==="all"||E==="acyclic"&&!O)&&(k=!1,T=!0)}if(u.bracket&&(d=u.bracket.charge,g=u.bracket.isotope),(d||g||i.vertices.length<3)&&(k=!1),r.atomVisualization==="allballs")a.drawBall(o.position.x,o.position.y,p);else if(u.isDrawn&&(!k||u.drawExplicit||T||u.hasAttachedPseudoElements)||i.vertices.length===1)if(r.atomVisualization==="default"){let O=u.getAttachedPseudoElements();u.hasAttachedPseudoElements&&i.vertices.length===Object.keys(O).length+1&&(b="right"),a.drawText(
vendor: 24,838 bytes, line 17
17o.position.x,o.position.y,p,c,b,T,d,g,i.vertices.length,O)}else r.atomVisualization==="balls"&&a.drawBall(o.position.x,o.position.y,p);else if(o.getNeighbourCount()===2&&o.forcePositioned==!0){let O=i.vertices[o.neighbours[0]].position,B=i.vertices[o.neighbours[1]].position,I=M.threePointangle(o.position,O,B);Math.abs(Math.PI-I)<.1&&a.drawPoint(o.position.x,o.position.y,p)}if(e){let O="v"+o.id+" "+me.print(u.ringbonds);a.drawDebugText(o.position.x,o.position.y,O)}}if(r.debug)for(let n=0;n<s.length;n++){let o=s[n].center;a.drawDebugPoint(o.x,o.y,"r"+s[n].id,"#00f")}}drawWeights(e,t){if(!e)return;let r=this.preprocessor.graph.atomIdxToVertexId;e.length<r.length?r=r.slice(0,e.length):e.length>r.length&&(console.warn(`More weights (${e.length}) than heavy atoms (${r.length}); truncating.`),e=e.slice(0,r.length));let i=0,s=0;for(let g=0;g<e.length;++g){let p=e[g];p&&(p<i&&(i=p),p>s&&(s=p))}if(i===0&&s===0)return;if(this.opts.experimentalWeights){let g=r.map(c=>this.preprocessor.graph.vertices[c].position),p=this.opts.weights.opacity;return t||(p/=Math.max(-i,s)),this.svgWrapper.drawWeights(e,g,p)}let a=this.svgWrapper.minX,n=this.svgWrapper.minY,o=r.map(g=>{let p=this.preprocessor.graph.vertices[g];return new M(p.position.x-a,p.position.y-n)}),u=new Wt(o,e,this.svgWrapper.drawingWidth,this.svgWrapper.drawingHeight,this.opts.weights.sigma,this.opts.weights.interval,this.opts.weights.colormap,this.opts.weights.opacity,t);u.draw();let d=u.getSVG();d.firstChild.setAttributeNS(null,"transform",`translate(${a},${n})`),this.svgWrapper.addLayer(d)}getTotalOverlapScore(){return this.preprocessor.getTotalOverlapScore()}getMolecularFormula(e=null){return this.preprocessor.getMolecularFormula(e)}multiplyNormals(e,t){e[0].multiplyScalar(t),e[1].multiplyScalar(t)}};var ir=class{constructor(e){this.svgDrawer=new ut(e)}draw(e,t,r="light",i=!1,s=[]){let a=null,n=null;if(t instanceof String?a=document.getElementById(t.valueOf()):typeof t=="string"?a=document.getElementById(t):a=t,a instanceof HTMLCanvasElement)n=a;else throw Error("Second argument was not a canvas or the ID of a canvas.");let o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttributeNS(null,"viewBox","0 0 "+this.svgDrawer.opts.width+" "+this.svgDrawer.opts.height),o.setAttributeNS(null,"width",this.svgDrawer.opts.width+""),o.setAttributeNS(null,"height",this.svgDrawer.opts.height+""),this.svgDrawer.draw(e,o,r,null,i,s),this.svgDrawer.svgWrapper.toCanvas(n,this.svgDrawer.opts.width,this.svgDrawer.opts.height)}getTotalOverlapScore(){return this.svgDrawer.getTotalOverlapScore()}getMolecularFormula(){return this.svgDrawer.getMolecularFormula()}};var bt=function(){"use strict";function $(r,i){function s(){this.constructor=r}s.prototype=i.prototype,r.prototype=new s}function e(r,i,s,a){this.message=r,this.expected=i,this.found=s,this.location=a,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,e)}$(e,Error),e.buildMessage=function(r,i){var s={literal:function(p){return'"'+n(p.text)+'"'},class:function(p){var c="",b;for(b=0;b<p.parts.length;b++)c+=p.parts[b]instanceof Array?o(p.parts[b][0])+"-"+o(p.parts[b][1]):o(p.parts[b]);return"["+(p.inverted?"^":"")+c+"]"},any:function(p){return"any character"},end:function(p){return"end of input"},other:function(p){return p.description}};function a(p){return p.charCodeAt(0).toString(16).toUpperCase()}function n(p){return p.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(c){return"\\x0"+a(c)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(c){return"\\x"+a(c)})}function o(p){return p.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(c){return"\\x0"+a(c)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(c){return"\\x"+a(c)})}function u(p){return s[p.type](p)}function d(p){var c=new Array(p.length),b,E;for(b=0;b<p.length;b++)c[b]=u(p[b]);if(c.sort(),c.length>0){for(b=1,E=1;b<c.length;b++)c[b-1]!==c[b]&&(c[E]=c[b],E++);c.length=E}switch(c.length){case 1:return c[0];case 2:return c[0]+" or "+c[1];default:return c.slice(0,-1).join(", ")+", or "+c[c.length-1]}}function g(p){return p?'"'+n(p)+'"':"end of input"}return"Expected "+d(r)+" but "+g(i)+" found."};function t(r,i){i=i!==void 0?i:{};var s=r.split("(").length-1,a=r.split(")").length-1;if(s!==a)throw lr("The number of opening parentheses does not match the number of closing parentheses.",0);var n={},o={chain:St},u=St,d=function(A){for(var m=[],D=[],N=0;N<A[1].length;N++)m.push(A[1][N]);for(var N=0;N<A[2].length;N++){var z=A[2][N][0]?A[2][N][0]:"-";D.push({bond:z,id:A[2][N][1]})}for(var N=0;N<A[3].length;N++)m.push(A[3][N]);for(var N=0;N<A[6].length;N++)m.push(A[6][N]);return{atom:A[0],isBracket:!!A[0].element,branches:m,branchCount:m.length,ringbonds:D,ringbondCount:D.length,bond:A[4]?A[4]:"-",next:A[5],hasNext:!!A[5]}},g="(",p=xe("(",!1),c=")",b=xe(")",!1),E=function(A){var m=A[1]?A[1]:"-";return A[2].branchBond=m,A[2]},T=function(A){return A},k=/^[\-=#$:\/\\.]/,O=et(["-","=","#","$",":","/","\\","."],!1,!1),B=function(A){return A},I="[",U=xe("[",!1),G="se",se=xe("se",!1),we="as",j=xe("as",!1),J="]",Ne=xe("]",!1),Ye=function(A){return{isotope:A[1],element:A[2],chirality:A[3],hcount:A[4],charge:A[5],class:A[6]}},ke="B",_=xe("B",!1),Fe="r",Ie=xe("r",!1),Le="C",qe=xe("C",!1),je="l",Ee=xe("l",!1),Oe=/^[NOPSFI]/,kt=et(["N","O","P","S","F","I"],!1,!1),Et=function(A){return A.length>1?A.join(""):A},Tt=/^[bcnops]/,Mt=et(["b","c","n","o","p","s"],!1,!1),It="*",Lt=xe("*",!1),Ot=function(A){return A},V=/^[A-Z]/,ae=et([["A","Z"]],!1,!1),$e=/^[a-z]/,Se=et([["a","z"]],!1,!1),ue=function(A){return A.join("")},Ce="%",Re=xe("%",!1),Ae=/^[1-9]/,Ze=et([["1","9"]],!1,!1),Be=/^[0-9]/,ze=et([["0","9"]],!1,!1),We=function(A){return A.length==1?Number(A):Number(A.join("").replace("%",""))},Xe="@",wt=xe("@",!1),ct="TH",Ge=xe("TH",!1),Ve=/^[12]/,it=et(["1","2"],!1,!1),nt="AL",ft=xe("AL",!1),yt="SP",Vr=xe("SP",!1),br=/^[1-3]/,wr=et([["1","3"]],!1,!1),yr="TB",qr=xe("TB",!1),sr="OH",Sr=xe("OH",!1),Yr=function(A){return A[1]?A[1]=="@"?"@@":A[1].join("").replace(",",""):"@"},Ur=function(A){return A},Cr="+",Ar=xe("+",!1),jr=function(A){return A[1]?A[1]!="+"?Number(A[1].join("")):2:1},xr="-",Nr=xe("-",!1),Zr=function(A){return A[1]?A[1]!="-"?-Number(A[1].join("")):-2:-1},Kr="H",Jr=xe("H",!1),Qr=function(A){return A[1]?Number(A[1]):1},ei=":",ti=xe(":",!1),Rr=/^[0]/,$r=et(["0"],!1,!1),ri=function(A){return Number(A[1][0]+A[1][1].join(""))},ii=function(A){return Number(A.join(""))},w=0,be=0,Vt=[{line:1,column:1}],Ke=0,ar=[],Z=0,qt;if("startRule"in i){if(!(i.startRule in o))throw new Error(`Can't start parsing from rule "`+i.startRule+'".');u=o[i.startRule]}function ni(){return r.substring(be,w)}function Gi(){return Bt(be,w)}function si(A,m){throw m=m!==void 0?m:Bt(be,w),Tr([ai(A)],r.substring(be,w),m)}function Vi(A,m){throw m=m!==void 0?m:Bt(be,w),lr(A,m)}function xe(A,m){return{type:"literal",text:A,ignoreCase:m}}function et(A,m,D){return{type:"class",parts:A,inverted:m,ignoreCase:D}}function qi(){return{type:"any"}}function kr(){return{type:"end"}}function ai(A){return{type:"other",description:A}}function Er(A){var m=Vt[A],D;if(m)return m;for(D=A-1;!Vt[D];)D--;for(m=Vt[D],m={line:m.line,column:m.column};D<A;)r.charCodeAt(D)===10?(m.line++,m.column=1):m.column++,D++;return Vt[A]=m,m}function Bt(A,m){var D=Er(A),N=Er(m);return{start:{offset:A,line:D.line,column:D.column},end:{offset:m,line:N.line,column:N.column}}}function K(A){w<Ke||(w>Ke&&(Ke=w,ar=[]),ar.push(A))}function lr(A,m){return new e(A,null,null,m)}function Tr(A,m,D){return new e(e.buildMessage(A,m),A,m,D)}function St(){var A,m,D,N,z,X,Q,Me,tt,at;if(A=w,m=w,D=or(),D!==n){for(N=[],z=Je();z!==n;)N.push(z),z=Je();if(N!==n){for(z=[],X=w,Q=st(),Q===n&&(Q=null),Q!==n?(Me=hr(),Me!==n?(Q=[Q,Me],X=Q):(w=X,X=n)):(w=X,X=n);X!==n;)z.push(X),X=w,Q=st(),Q===n&&(Q=null),Q!==n?(Me=hr(),Me!==n?(Q=[Q,Me],X=Q):(w=X,X=n)):(w=X,X=n);if(z!==n){for(X=[],Q=Je();Q!==n;)X.push(Q),Q=Je();if(X!==n)if(Q=st(),Q===n&&(Q=null),Q!==n)if(Me=St(),Me===n&&(Me=null),Me!==n){for(tt=[],at=Je();at!==n;)tt.push(at),at=Je();tt!==n?(D=[D,N,z,X,Q,Me,tt],m=D):(w=m,m=n)}else w=m,m=n;else w=m,m=n;else w=m,m=n}else w=m,m=n}else w=m,m=n}else w=m,m=n;return m!==n&&(be=A,m=d(m)),A=m,A}function Je(){var A,m,D,N,z,X;return A=w,m=w,r.charCodeAt(w)===40?(D=g,w++):(D=n,Z===0&&K(p)),D!==n?(N=st(),N===n&&(N=null),N!==n?(z=St(),z!==n?(r.charCodeAt(w)===41?(X=c,w++):(X=n,Z===0&&K(b)),X!==n?(D=[D,N,z,X],m=D):(w=m,m=n)):(w=m,m=n)):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=E(m)),A=m,A}function or(){var A,m;return A=w,m=oi(),m===n&&(m=Mr(),m===n&&(m=li(),m===n&&(m=Ir()))),m!==n&&(be=A,m=T(m)),A=m,A}function st(){var A,m;if(A=w,k.test(r.charAt(w))){if(m=r.charAt(w),m===r.charAt(w+1)&&(m=n,Z===0))throw lr("The parser encountered a bond repetition.",w+1);w++}else m=n,Z===0&&K(O);return m!==n&&(be=A,m=B(m)),A=m,A}function li(){var A,m,D,N,z,X,Q,Me,tt,at;return A=w,m=w,r.charCodeAt(w)===91?(D=I,w++):(D=n,Z===0&&K(U)),D!==n?(N=Br(),N===n&&(N=null),N!==n?(r.substr(w,2)===G?(z=G,w+=2):(z=n,Z===0&&K(se)),z===n&&(r.substr(w,2)===we?(z=we,w+=2):(z=n,Z===0&&K(j)),z===n&&(z=Mr(),z===n&&(z=hi(),z===n&&(z=Ir())))),z!==n?(X=Lr(),X===n&&(X=null),X!==n?(Q=ci(),Q===n&&(Q=null),Q!==n?(Me=ui(),Me===n&&(Me=null),Me!==n?(tt=Or(),tt===n&&(tt=null),tt!==n?(r.charCodeAt(w)===93?(at=J,w++):(at=n,Z===0&&K(Ne)),at!==n?(D=[D,N,z,X,Q,Me,tt,at],m=D):(w=m,m=n)):(w=m,m=n)):(w=m,m=n)):(w=m,m=n)):(w=m,m=n)):(w=m,m=n)):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=Ye(m)),A=m,A}function oi(){var A,m,D,N;return A=w,m=w,r.charCodeAt(w)===66?(D=ke,w++):(D=n,Z===0&&K(_)),D!==n?(r.charCodeAt(w)===114?(N=Fe,w++):(N=n,Z===0&&K(Ie)),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m===n&&(m=w,r.charCodeAt(w)===67?(D=Le,w++):(D=n,Z===0&&K(qe)),D!==n?(r.charCodeAt(w)===108?(N=je,w++):(N=n,Z===0&&K(Ee)),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m===n&&(Oe.test(r.charAt(w))?(m=r.charAt(w),w++):(m=n,Z===0&&K(kt)))),m!==n&&(be=A,m=Et(m)),A=m,A}function Mr(){var A,m;return A=w,Tt.test(r.charAt(w))?(m=r.charAt(w),w++):(m=n,Z===0&&K(Mt)),m!==n&&(be=A,m=T(m)),A=m,A}function Ir(){var A,m;return A=w,r.charCodeAt(w)===42?(m=It,w++):(m=n,Z===0&&K(Lt)),m!==n&&(be=A,m=Ot(m)),A=m,A}function hi(){var A,m,D,N;return A=w,m=w,V.test(r.charAt(w))?(D=r.charAt(w),w++):(D=n,Z===0&&K(ae)),D!==n?($e.test(r.charAt(w))?(N=r.charAt(w),w++):(N=n,Z===0&&K(Se)),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=ue(m)),A=m,A}function hr(){var A,m,D,N,z;return A=w,m=w,r.charCodeAt(w)===37?(D=Ce,w++):(D=n,Z===0&&K(Re)),D!==n?(Ae.test(r.charAt(w))?(N=r.charAt(w),w++):(N=n,Z===0&&K(Ze)),N!==n?(Be.test(r.charAt(w))?(z=r.charAt(w),w++):(z=n,Z===0&&K(ze)),z!==n?(D=[D,N,z],m=D):(w=m,m=n)):(w=m,m=n)):(w=m,m=n),m===n&&(Be.test(r.charAt(w))?(m=r.charAt(w),w++):(m=n,Z===0&&K(ze))),m!==n&&(be=A,m=We(m)),A=m,A}function Lr(){var A,m,D,N,z,X,Q;return A=w,m=w,r.charCodeAt(w)===64?(D=Xe,w++):(D=n,Z===0&&K(wt)),D!==n?(r.charCodeAt(w)===64?(N=Xe,w++):(N=n,Z===0&&K(wt)),N===n&&(N=w,r.substr(w,2)===ct?(z=ct,w+=2):(z=n,Z===0&&K(Ge)),z!==n?(Ve.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(it)),X!==n?(z=[z,X],N=z):(w=N,N=n)):(w=N,N=n),N===n&&(N=w,r.substr(w,2)===nt?(z=nt,w+=2):(z=n,Z===0&&K(ft)),z!==n?(Ve.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(it)),X!==n?(z=[z,X],N=z):(w=N,N=n)):(w=N,N=n),N===n&&(N=w,r.substr(w,2)===yt?(z=yt,w+=2):(z=n,Z===0&&K(Vr)),z!==n?(br.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(wr)),X!==n?(z=[z,X],N=z):(w=N,N=n)):(w=N,N=n),N===n&&(N=w,r.substr(w,2)===yr?(z=yr,w+=2):(z=n,Z===0&&K(qr)),z!==n?(Ae.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(Ze)),X!==n?(Be.test(r.charAt(w))?(Q=r.charAt(w),w++):(Q=n,Z===0&&K(ze)),Q===n&&(Q=null),Q!==n?(z=[z,X,Q],N=z):(w=N,N=n)):(w=N,N=n)):(w=N,N=n),N===n&&(N=w,r.substr(w,2)===sr?(z=sr,w+=2):(z=n,Z===0&&K(Sr)),z!==n?(Ae.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(Ze)),X!==n?(Be.test(r.charAt(w))?(Q=r.charAt(w),w++):(Q=n,Z===0&&K(ze)),Q===n&&(Q=null),Q!==n?(z=[z,X,Q],N=z):(w=N,N=n)):(w=N,N=n)):(w=N,N=n)))))),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=Yr(m)),A=m,A}function ui(){var A,m;return A=w,m=fi(),m===n&&(m=gi()),m!==n&&(be=A,m=Ur(m)),A=m,A}function fi(){var A,m,D,N,z,X;return A=w,m=w,r.charCodeAt(w)===43?(D=Cr,w++):(D=n,Z===0&&K(Ar)),D!==n?(r.charCodeAt(w)===43?(N=Cr,w++):(N=n,Z===0&&K(Ar)),N===n&&(N=w,Ae.test(r.charAt(w))?(z=r.charAt(w),w++):(z=n,Z===0&&K(Ze)),z!==n?(Be.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(ze)),X===n&&(X=null),X!==n?(z=[z,X],N=z):(w=N,N=n)):(w=N,N=n)),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=jr(m)),A=m,A}function gi(){var A,m,D,N,z,X;return A=w,m=w,r.charCodeAt(w)===45?(D=xr,w++):(D=n,Z===0&&K(Nr)),D!==n?(r.charCodeAt(w)===45?(N=xr,w++):(N=n,Z===0&&K(Nr)),N===n&&(N=w,Ae.test(r.charAt(w))?(z=r.charAt(w),w++):(z=n,Z===0&&K(Ze)),z!==n?(Be.test(r.charAt(w))?(X=r.charAt(w),w++):(X=n,Z===0&&K(ze)),X===n&&(X=null),X!==n?(z=[z,X],N=z):(w=N,N=n)):(w=N,N=n)),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=Zr(m)),A=m,A}function ci(){var A,m,D,N;return A=w,m=w,r.charCodeAt(w)===72?(D=Kr,w++):(D=n,Z===0&&K(Jr)),D!==n?(Be.test(r.charAt(w))?(N=r.charAt(w),w++):(N=n,Z===0&&K(ze)),N===n&&(N=null),N!==n?(D=[D,N],m=D):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=Qr(m)),A=m,A}function Or(){var A,m,D,N,z,X,Q;if(A=w,m=w,r.charCodeAt(w)===58?(D=ei,w++):(D=n,Z===0&&K(ti)),D!==n){if(N=w,Ae.test(r.charAt(w))?(z=r.charAt(w),w++):(z=n,Z===0&&K(Ze)),z!==n){for(X=[],Be.test(r.charAt(w))?(Q=r.charAt(w),w++):(Q=n,Z===0&&K(ze));Q!==n;)X.push(Q),Be.test(r.charAt(w))?(Q=r.charAt(w),w++):(Q=n,Z===0&&K(ze));X!==n?(z=[z,X],N=z):(w=N,N=n)}else w=N,N=n;N===n&&(Rr.test(r.charAt(w))?(N=r.charAt(w),w++):(N=n,Z===0&&K($r))),N!==n?(D=[D,N],m=D):(w=m,m=n)}else w=m,m=n;return m!==n&&(be=A,m=ri(m)),A=m,A}function Br(){var A,m,D,N,z;return A=w,m=w,Ae.test(r.charAt(w))?(D=r.charAt(w),w++):(D=n,Z===0&&K(Ze)),D!==n?(Be.test(r.charAt(w))?(N=r.charAt(w),w++):(N=n,Z===0&&K(ze)),N===n&&(N=null),N!==n?(Be.test(r.charAt(w))?(z=r.charAt(w),w++):(z=n,Z===0&&K(ze)),z===n&&(z=null),z!==n?(D=[D,N,z],m=D):(w=m,m=n)):(w=m,m=n)):(w=m,m=n),m!==n&&(be=A,m=ii(m)),A=m,A}if(qt=u(),qt!==n&&w===r.length)return qt;throw qt!==n&&w<r.length&&K(kr()),Tr(ar,Ke<r.length?r.charAt(Ke):null,Ke<r.length?Bt(Ke,Ke+1):Bt(Ke,Ke))}return{SyntaxError:e,parse:t}}();var Xi={C2H4O2:"acetic acid",C3H6O:"acetone",C2H3N:"acetonitrile",C6H6:"benzene",CCl4:"carbon tetrachloride",C6H5Cl:"chlorobenzene",CHCl3:"chloroform",C6H12:"cyclohexane",C2H4Cl2:"1,2-dichloroethane",C4H10O3:"diethylene glycol",C6H14O3:"diglyme",C4H10O2:"DME",C3H7NO:"DMF",C2H6OS:"DMSO",C2H6O:"ethanol",C2H6O2:"ethylene glycol",C3H8O3:"glycerin",C7H16:"heptane",C6H18N3OP:"HMPA",C6H18N3P:"HMPT",C6H14:"hexane",CH4O:"methanol",C5H12O:"MTBE",CH2Cl2:"methylene chloride",CH5H9NO:"NMP",CH3NO2:"nitromethane",C5H12:"pentane",C5H5N:"pyridine",C7H8:"toluene",C6H15N:"triethyl amine",H2O:"water"};var Xt=class{constructor(e,t){this.drawer=new ut(t),this.molOpts=this.drawer.opts,this.defaultOptions={scale:this.molOpts.scale>0?this.molOpts.scale:1,fontSize:this.molOpts.fontSizeLarge*.8,fontFamily:"Arial, Helvetica, sans-serif",spacing:10,plus:{size:9,thickness:1},arrow:{length:this.molOpts.bondLength*4,headSize:6,thickness:1,margin:3},weights:{normalize:!1}},this.opts=mt.extend(!0,this.defaultOptions,e)}draw(e,t,r="light",i=null,s="{reagents}",a="",n=!1){if(this.themeManager=new vt(this.molOpts.themes,r),this.opts.weights.normalize){let T=-Number.MAX_SAFE_INTEGER,k=Number.MAX_SAFE_INTEGER;if("reactants"in i)for(let B=0;B<i.reactants.length;B++)for(let I=0;I<i.reactants[B].length;I++)i.reactants[B][I]<k&&(k=i.reactants[B][I]),i.reactants[B][I]>T&&(T=i.reactants[B][I]);if("reagents"in i)for(let B=0;B<i.reagents.length;B++)for(let I=0;I<i.reagents[B].length;I++)i.reagents[B][I]<k&&(k=i.reagents[B][I]),i.reagents[B][I]>T&&(T=i.reagents[B][I]);if("products"in i)for(let B=0;B<i.products.length;B++)for(let I=0;I<i.products[B].length;I++)i.products[B][I]<k&&(k=i.products[B][I]),i.products[B][I]>T&&(T=i.products[B][I]);let O=Math.max(Math.abs(k),Math.abs(T));if(O===0&&(O=1),"reactants"in i)for(let B=0;B<i.reactants.length;B++)for(let I=0;I<i.reactants[B].length;I++)i.reactants[B][I]/=O;if("reagents"in i)for(let B=0;B<i.reagents.length;B++)for(let I=0;I<i.reagents[B].length;I++)i.reagents[B][I]/=O;if("products"in i)for(let B=0;B<i.products.length;B++)for(let I=0;I<i.products[B].length;I++)i.products[B][I]/=O}let o=null;for(t===null||t==="svg"?(o=document.createElementNS("http://www.w3.org/2000/svg","svg"),o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttributeNS(null,"width","500"),o.setAttributeNS(null,"height","500")):typeof t=="string"||t instanceof String?o=document.getElementById(t):o=t;o.firstChild;)o.removeChild(o.firstChild);let u=[],d=0;for(let T=0;T<e.reactants.length;T++){T>0&&u.push({width:this.opts.plus.size*this.opts.scale,height:this.opts.plus.size*this.opts.scale,svg:this.getPlus()});let k=null;i&&"reactants"in i&&i.reactants.length>T&&(k=i.reactants[T]);let O=document.createElementNS("http://www.w3.org/2000/svg","svg");this.drawer.draw(e.reactants[T],O,r,k,n,[],this.opts.weights.normalize);let B={width:O.viewBox.baseVal.width*this.opts.scale,height:O.viewBox.baseVal.height*this.opts.scale,svg:O};u.push(B),B.height>d&&(d=B.height)}u.push({width:this.opts.arrow.length*this.opts.scale,height:this.opts.arrow.headSize*this.opts.scale*2,svg:this.getArrow()});let g="";for(let T=0;T<e.reagents.length;T++){T>0&&(g+=", ");let k=this.drawer.getMolecularFormula(e.reagents[T]);k in Xi&&(k=Xi[k]),g+=rt.replaceNumbersWithSubscript(k)}s=s.replace("{reagents}",g);let p=rt.writeText(s,this.themeManager,this.opts.fontSize*this.opts.scale,this.opts.fontFamily,this.opts.arrow.length*this.opts.scale),c=(this.opts.arrow.length*this.opts.scale-p.width)/2;u.push({svg:p.svg,height:p.height,width:p.width,offsetX:-(this.opts.arrow.length*this.opts.scale+this.opts.spacing)+c,offsetY:-(p.height/2)-this.opts.arrow.margin,position:"relative"});let b=rt.writeText(a,this.themeManager,this.opts.fontSize*this.opts.scale,this.opts.fontFamily,this.opts.arrow.length*this.opts.scale);c=(this.opts.arrow.length*this.opts.scale-b.width)/2,u.push({svg:b.svg,height:b.height,width:b.width,offsetX:-(this.opts.arrow.length*this.opts.scale+this.opts.spacing)+c,offsetY:b.height/2+this.opts.arrow.margin,position:"relative"});for(let T=0;T<e.products.length;T++){T>0&&u.push({width:this.opts.plus.size*this.opts.scale,height:this.opts.plus.size*this.opts.scale,svg:this.getPlus()});let k=null;i&&"products"in i&&i.products.length>T&&(k=i.products[T]);let O=document.createElementNS("http://www.w3.org/2000/svg","svg");this.drawer.draw(e.products[T],O,r,k,n,[],this.opts.weights.normalize);let B={width:O.viewBox.baseVal.width*this.opts.scale,height:O.viewBox.baseVal.height*this.opts.scale,svg:O};u.push(B),B.height>d&&(d=B.height)}let E=0;return u.forEach(T=>{let k=T.offsetX||0,O=T.offsetY||0;T.svg.setAttributeNS(null,"x",Math.round(E+k)),T.svg.setAttributeNS(null,"y",Math.round((d-T.height)/2+O)),T.svg.setAttributeNS(null,"width",Math.round(T.width)),T.svg.setAttributeNS(null,"height",Math.round(T.height)),o.appendChild(T.svg),T.position!=="relative"&&(E+=Math.round(T.width+this.opts.spacing+k))}),o.setAttributeNS(null,"viewBox",`0 0 ${E} ${d}`),o.style.width=E+"px",o.style.height=d+"px",o}getPlus(){let e=this.opts.plus.size,t=this.opts.plus.thickness,r=document.createElementNS("http://www.w3.org/2000/svg","svg"),i=document.createElementNS("http://www.w3.org/2000/svg","rect"),s=document.createElementNS("http://www.w3.org/2000/svg","rect");return r.setAttributeNS(null,"id","plus"),i.setAttributeNS(null,"x",0),i.setAttributeNS(null,"y",e/2-t/2),i.setAttributeNS(null,"width",e),i.setAttributeNS(null,"height",t),i.setAttributeNS(null,"fill",this.themeManager.getColor("C")),s.setAttributeNS(null,"x",e/2-t/2),s.setAttributeNS(null,"y",0),s.setAttributeNS(null,"width",t),s.setAttributeNS(null,"height",e),s.setAttributeNS(null,"fill",this.themeManager.getColor("C")),r.appendChild(i),r.appendChild(s),r.setAttributeNS(null,"viewBox",`0 0 ${e} ${e}`),r}getArrowhead(){let e=this.opts.arrow.headSize,t=document.createElementNS("http://www.w3.org/2000/svg","marker"),r=document.createElementNS("http://www.w3.org/2000/svg","polygon");return t.setAttributeNS(null,"id","arrowhead"),t.setAttributeNS(null,"viewBox",`0 0 ${e} ${e}`),t.setAttributeNS(null,"markerUnits","userSpaceOnUse"),t.setAttributeNS(null,"markerWidth",e),t.setAttributeNS(null,"markerHeight",e),t.setAttributeNS(null,"refX",0),t.setAttributeNS(null,"refY",e/2),t.setAttributeNS(null,"orient","auto"),t.setAttributeNS(null,"fill",this.themeManager.getColor("C")),r.setAttributeNS(null,"points",`0 0, ${e} ${e/2}, 0 ${e}`),t.appendChild(r),t}getCDArrowhead(){let e=this.opts.arrow.headSize,t=e*(7/4.5),r=document.createElementNS("http://www.w3.org/2000/svg","marker"),i=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttributeNS(null,"id","arrowhead"),r.setAttributeNS(null,"viewBox",`0 0 ${t} ${e}`),r.setAttributeNS(null,"markerUnits","userSpaceOnUse"),r.setAttributeNS(null,"markerWidth",t*2),r.setAttributeNS(null,"markerHeight",e*2),r.setAttributeNS(null,"refX",2.2),r.setAttributeNS(null,"refY",2.2),r.setAttributeNS(null,"orient","auto"),r.setAttributeNS(null,"fill",this.themeManager.getColor("C")),i.setAttributeNS(null,"style","fill-rule:nonzero;"),i.setAttributeNS(null,"d","m 0 0 l 7 2.25 l -7 2.25 c 0 0 0.735 -1.084 0.735 -2.28 c 0 -1.196 -0.735 -2.22 -0.735 -2.22 z"),r.appendChild(i),r}getArrow(){let e=this.opts.arrow.headSize,t=this.opts.arrow.length,r=document.createElementNS("http://www.w3.org/2000/svg","svg"),i=document.createElementNS("http://www.w3.org/2000/svg","defs"),s=document.createElementNS("http://www.w3.org/2000/svg","line");return i.appendChild(this.getCDArrowhead()),r.appendChild(i),r.setAttributeNS(null,"id","arrow"),s.setAttributeNS(null,"x1",0),s.setAttributeNS(null,"y1",-this.opts.arrow.thickness/2),s.setAttributeNS(null,"x2",t),s.setAttributeNS(null,"y2",-this.opts.arrow.thickness/2),s.setAttributeNS(null,"stroke-width",this.opts.arrow.thickness),s.setAttributeNS(null,"stroke",this.themeManager.getColor("C")),s.setAttributeNS(null,"marker-end","url(#arrowhead)"),r.appendChild(s),r.setAttributeNS(null,"viewBox",`0 ${-e/2} ${t+e*(7/4.5)} ${e}`),r}};var mr=class{constructor(e){this.reactantsSmiles=[],this.reagentsSmiles=[],this.productsSmiles=[],this.reactantsWeights=[],this.reagentsWeights=[],this.productsWeights=[],this.reactants=[],this.reagents=[],this.products=[];let t=e.split(">");if(t.length!==3)throw new Error('Invalid reaction SMILES: Expected exactly two ">" symbols.');t[0]!==""&&(this.reactantsSmiles=t[0].split(".")),t[1]!==""&&(this.reagentsSmiles=t[1].split(".")),t[2]!==""&&(this.productsSmiles=t[2].split("."));for(let r=0;r<this.reactantsSmiles.length;r++)this.reactants.push(bt.parse(this.reactantsSmiles[r]));for(let r=0;r<this.reagentsSmiles.length;r++)this.reagents.push(bt.parse(this.reagentsSmiles[r]));for(let r=0;r<this.productsSmiles.length;r++)this.products.push(bt.parse(this.productsSmiles[r]))}};var $t=class{static parse(e){return new mr(e)}};var nr=class ${constructor(e={},t={}){this.drawer=new ut(e),this.reactionDrawer=new Xt(t,JSON.parse(JSON.stringify(this.drawer.opts)))}static apply(e={},t={},r="data-smiles",i="light",s=null,a=null){new $(e,t).apply(r,i,s,a)}apply(e="data-smiles",t="light",r=null,i=null){document.querySelectorAll(`[${e}]`).forEach(a=>{let n=a.getAttribute(e);if(n===null)throw Error("No SMILES provided.");let o=t,u=null;if(a.hasAttribute("data-smiles-theme")&&(o=a.getAttribute("data-smiles-theme")),a.hasAttribute("data-smiles-weights")&&(u=a.getAttribute("data-smiles-weights").split(",").map(parseFloat)),(a.hasAttribute("data-smiles-reactant-weights")||a.hasAttribute("data-smiles-reagent-weights")||a.hasAttribute("data-smiles-product-weights"))&&(u={reactants:[],reagents:[],products:[]},a.hasAttribute("data-smiles-reactant-weights")&&(u.reactants=a.getAttribute("data-smiles-reactant-weights").split(";").map(d=>d.split(",").map(parseFloat))),a.hasAttribute("data-smiles-reagent-weights")&&(u.reagents=a.getAttribute("data-smiles-reagent-weights").split(";").map(d=>d.split(",").map(parseFloat))),a.hasAttribute("data-smiles-product-weights")&&(u.products=a.getAttribute("data-smiles-product-weights").split(";").map(d=>d.split(",").map(parseFloat)))),a.hasAttribute("data-smiles-options")||a.hasAttribute("data-smiles-reaction-options")){let d={};
17a.hasAttribute("data-smiles-options")&&(d=JSON.parse(a.getAttribute("data-smiles-options").replace(/'/g,'"')));let g={};a.hasAttribute("data-smiles-reaction-options")&&(g=JSON.parse(a.getAttribute("data-smiles-reaction-options").replace(/'/g,'"'))),new $(d,g).draw(n,a,o,r,i,u)}else this.draw(n,a,o,r,i,u)})}draw(e,t,r="light",i=null,s=null,a=null){let n=[];[e,...n]=e.split(" ");let o=n.join(" "),u={};if(o.includes("__")){let g=o.substring(o.indexOf("__")+2,o.lastIndexOf("__"));u=JSON.parse(g.replace(/'/g,'"'))}let d={textAboveArrow:"{reagents}",textBelowArrow:""};if(u=mt.extend(!0,d,u),e.includes(">"))try{this.drawReaction(e,t,r,u,a,i)}catch(g){s?s(g):console.error(g)}else try{this.drawMolecule(e,t,r,a,i)}catch(g){s?s(g):console.error(g)}}drawMolecule(e,t,r,i,s){let a=bt.parse(e);if(t===null||t==="svg"){let n=this.drawer.draw(a,null,r,i),o=this.getDimensions(n);n.setAttributeNS(null,"width",""+o.w),n.setAttributeNS(null,"height",""+o.h),s&&s(n)}else if(t==="canvas"){let n=this.svgToCanvas(this.drawer.draw(a,null,r,i));s&&s(n)}else if(t==="img"){let n=this.svgToImg(this.drawer.draw(a,null,r,i));s&&s(n)}else t instanceof HTMLImageElement?(this.svgToImg(this.drawer.draw(a,null,r,i),t),s&&s(t)):t instanceof SVGElement?(this.drawer.draw(a,t,r,i),s&&s(t)):document.querySelectorAll(t).forEach(o=>{let u=o.nodeName.toLowerCase();u==="svg"?(this.drawer.draw(a,o,r,i),s&&s(o)):u==="canvas"?(this.svgToCanvas(this.drawer.draw(a,null,r,i),o),s&&s(o)):u==="img"&&(this.svgToImg(this.drawer.draw(a,null,r,i),o),s&&s(o))})}drawReaction(e,t,r,i,s,a){let n=$t.parse(e);if(t===null||t==="svg"){let o=this.reactionDrawer.draw(n,null,r),u=this.getDimensions(o);o.setAttributeNS(null,"width",""+u.w),o.setAttributeNS(null,"height",""+u.h),a&&a(o)}else if(t==="canvas"){let o=this.svgToCanvas(this.reactionDrawer.draw(n,null,r,s,i.textAboveArrow,i.textBelowArrow));a&&a(o)}else if(t==="img"){let o=this.svgToImg(this.reactionDrawer.draw(n,null,r,s,i.textAboveArrow,i.textBelowArrow));a&&a(o)}else t instanceof HTMLImageElement?(this.svgToImg(this.reactionDrawer.draw(n,null,r,s,i.textAboveArrow,i.textBelowArrow),t),a&&a(t)):t instanceof SVGElement?(this.reactionDrawer.draw(n,t,r,s,i.textAboveArrow,i.textBelowArrow),a&&a(t)):document.querySelectorAll(t).forEach(u=>{let d=u.nodeName.toLowerCase();d==="svg"?(this.reactionDrawer.draw(n,u,r,s,i.textAboveArrow,i.textBelowArrow),this.reactionDrawer.opts.scale<=0&&(u.style.width=null,u.style.height=null),a&&a(u)):d==="canvas"?(this.svgToCanvas(this.reactionDrawer.draw(n,null,r,s,i.textAboveArrow,i.textBelowArrow),u),a&&a(u)):d==="img"&&(this.svgToImg(this.reactionDrawer.draw(n,null,r,s,i.textAboveArrow,i.textBelowArrow),u),a&&a(u))})}svgToCanvas(e,t=null){t===null&&(t=document.createElement("canvas"));let r=this.getDimensions(t,e);return rt.svgToCanvas(e,t,r.w,r.h),t}svgToImg(e,t=null){t===null&&(t=document.createElement("img"));let r=this.getDimensions(t,e);return rt.svgToImg(e,t,r.w,r.h),t}getDimensions(e,t=null){let r=this.drawer.opts.width,i=this.drawer.opts.height;return this.drawer.opts.scale<=0?(e instanceof SVGElement||(r===null&&(r=e.width),i===null&&(i=e.height)),e.style.width!==""&&(r=parseInt(e.style.width)),e.style.height!==""&&(i=parseInt(e.style.height))):t&&(r=parseFloat(t.style.width),i=parseFloat(t.style.height)),{w:r,h:i}}};var Gt={Version:"2.2.1",Drawer:ir,GaussDrawer:Wt,Parser:bt,ReactionDrawer:Xt,ReactionParser:$t,SmiDrawer:nr,SvgDrawer:ut};Gt.clean=function($){return $.replace(/[^A-Za-z0-9@.+\-?!()[\]{}/\\=#$:*]/g,"")};Gt.apply=function($,e="canvas[data-smiles]",t="light",r=null){let i=new ir($),s=document.querySelectorAll(e);for(var a=0;a<s.length;a++){let n=s[a];Gt.parse(n.getAttribute("data-smiles"),function(o){i.draw(o,n,t,!1)},function(o){r&&r(o)})}};Gt.parse=function($,e,t){try{e&&e(bt.parse($))}catch(r){t&&t(r)}};Gt.parseReaction=function($,e,t){try{e&&e($t.parse($))}catch(r){t&&t(r)}};if(!Array.prototype.fill){let $=function(e){if(this==null)throw new TypeError("this is null or not defined");for(var t=Object(this),r=t.length>>>0,i=arguments[1],s=i>>0,a=s<0?Math.max(r+s,0):Math.min(s,r),n=arguments[2],o=n===void 0?r:n>>0,u=o<0?Math.max(r+o,0):Math.min(o,r);a<u;)t[a]=e,a++;return t};Object.defineProperty(Array.prototype,"fill",{value:$,writeable:!1})}typeof window<"u"&&window.document&&window.document.createElement&&(window.SmilesDrawer=Gt,window.SmiDrawer=nr);var yu=Gt
vendor: 2,785 bytes, lines 17-78
17;})(); 18/*! Bundled license information: 19 20chroma-js/chroma.js: 21 (** 22 * chroma.js - JavaScript library for color conversions 23 * 24 * Copyright (c) 2011-2019, Gregor Aisch 25 * All rights reserved. 26 * 27 * Redistribution and use in source and binary forms, with or without 28 * modification, are permitted provided that the following conditions are met: 29 * 30 * 1. Redistributions of source code must retain the above copyright notice, this 31 * list of conditions and the following disclaimer. 32 * 33 * 2. Redistributions in binary form must reproduce the above copyright notice, 34 * this list of conditions and the following disclaimer in the documentation 35 * and/or other materials provided with the distribution. 36 * 37 * 3. The name Gregor Aisch may not be used to endorse or promote products 38 * derived from this software without specific prior written permission. 39 * 40 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 41 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 43 * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 44 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 45 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 46 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 47 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 48 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 49 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 * 51 * ------------------------------------------------------- 52 * 53 * chroma.js includes colors from colorbrewer2.org, which are released under 54 * the following license: 55 * 56 * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, 57 * and The Pennsylvania State University. 58 * 59 * Licensed under the Apache License, Version 2.0 (the "License"); 60 * you may not use this file except in compliance with the License. 61 * You may obtain a copy of the License at 62 * http://www.apache.org/licenses/LICENSE-2.0 63 * 64 * Unless required by applicable law or agreed to in writing, 65 * software distributed under the License is distributed on an 66 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 67 * either express or implied. See the License for the specific 68 * language governing permissions and limitations under the License. 69 * 70 * ------------------------------------------------------ 71 * 72 * Named colors are taken from X11 Color Names. 73 * http://www.w3.org/TR/css3-color/#svg-color 74 * 75 * @preserve 76 *) 77*/ 78//# sourceMappingURL=smiles-drawer.min.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.