3dmol
Version:
JavaScript/TypeScript molecular visualization library
2 lines • 524 kB
JavaScript
/*! For license information please see 3Dmol-min.js.LICENSE.txt */
var root,factory;root=this,factory=()=>(()=>{var __webpack_modules__={3:(e,t,i)=>{var r=i(663),s=i(981),n=i(972),a=i(681),o=i(834),l=i(746),h=i(670),c=Object.prototype.toString;function d(e){if(!(this instanceof d))return new d(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var i=r.inflateInit2(this.strm,t.windowBits);if(i!==a.Z_OK)throw new Error(o[i]);if(this.header=new h,r.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=n.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=r.inflateSetDictionary(this.strm,t.dictionary))!==a.Z_OK))throw new Error(o[i])}function u(e,t){var i=new d(t);if(i.push(e,!0),i.err)throw i.msg||o[i.err];return i.result}d.prototype.push=function(e,t){var i,o,l,h,d,u=this.strm,f=this.options.chunkSize,p=this.options.dictionary,m=!1;if(this.ended)return!1;o=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,"string"==typeof e?u.input=n.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?u.input=new Uint8Array(e):u.input=e,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new s.Buf8(f),u.next_out=0,u.avail_out=f),(i=r.inflate(u,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&p&&(i=r.inflateSetDictionary(this.strm,p)),i===a.Z_BUF_ERROR&&!0===m&&(i=a.Z_OK,m=!1),i!==a.Z_STREAM_END&&i!==a.Z_OK)return this.onEnd(i),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&i!==a.Z_STREAM_END&&(0!==u.avail_in||o!==a.Z_FINISH&&o!==a.Z_SYNC_FLUSH)||("string"===this.options.to?(l=n.utf8border(u.output,u.next_out),h=u.next_out-l,d=n.buf2string(u.output,l),u.next_out=h,u.avail_out=f-h,h&&s.arraySet(u.output,u.output,l,h,0),this.onData(d)):this.onData(s.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(m=!0)}while((u.avail_in>0||0===u.avail_out)&&i!==a.Z_STREAM_END);return i===a.Z_STREAM_END&&(o=a.Z_FINISH),o===a.Z_FINISH?(i=r.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===a.Z_OK):o!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),u.avail_out=0,!0)},d.prototype.onData=function(e){this.chunks.push(e)},d.prototype.onEnd=function(e){e===a.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=d,t.inflate=u,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,u(e,t)},t.ungzip=u},16:(e,t,i)=>{i.r(t),i.d(t,{CAP:()=>r,CC:()=>h.CC,CONTEXTS_PER_VIEWPORT:()=>je,Color:()=>h.Color,CustomLinear:()=>c.CustomLinear,Cylinder:()=>o.Cylinder,GLDraw:()=>s,GLModel:()=>GLModel,GLShape:()=>GLShape,GLViewer:()=>GLViewer,GLVolumetricRender:()=>GLVolumetricRender,Gradient:()=>c.Gradient,GradientType:()=>c.GradientType,Label:()=>Label,LabelCount:()=>Ge,MarchingCube:()=>MarchingCube,MarchingCubeInitializer:()=>MarchingCubeInitializer,Matrix3:()=>l.Matrix3,Matrix4:()=>l.Matrix4,Parsers:()=>pe,PausableTimer:()=>d.PausableTimer,PointGrid:()=>PointGrid,ProteinSurface:()=>ProteinSurface,Quaternion:()=>l.Quaternion,ROYGB:()=>c.ROYGB,RWB:()=>c.RWB,Ray:()=>l.Ray,Sinebow:()=>c.Sinebow,Sphere:()=>o.Sphere,SurfaceType:()=>Re,Triangle:()=>o.Triangle,Vector2:()=>l.Vector2,Vector3:()=>l.Vector3,VolumeData:()=>Be.VolumeData,adjustVolumeStyle:()=>d.adjustVolumeStyle,applyPartialCharges:()=>$e,autoinit:()=>Ye,autoload:()=>Ke,base64ToArray:()=>d.base64ToArray,bondLength:()=>j.bondLength,builtinColorSchemes:()=>h.builtinColorSchemes,builtinGradients:()=>c.builtinGradients,chains:()=>h.chains,clamp:()=>l.clamp,conversionMatrix3:()=>l.conversionMatrix3,createStereoViewer:()=>qe,createViewer:()=>He,createViewerGrid:()=>We,deepCopy:()=>d.deepCopy,degToRad:()=>l.degToRad,download:()=>d.download,drawCartoon:()=>T,elementColors:()=>h.elementColors,extend:()=>d.extend,get:()=>d.get,getAtomProperty:()=>d.getAtomProperty,getColorFromStyle:()=>d.getColorFromStyle,getElement:()=>d.getElement,getExtent:()=>d.getExtent,getGradient:()=>c.getGradient,getPropertyRange:()=>d.getPropertyRange,getbin:()=>d.getbin,htmlColors:()=>h.htmlColors,inflateString:()=>d.inflateString,isEmptyObject:()=>d.isEmptyObject,isNumeric:()=>d.isNumeric,makeFunction:()=>d.makeFunction,mergeGeos:()=>d.mergeGeos,normalizeValue:()=>c.normalizeValue,partialCharges:()=>Qe,processing_autoinit:()=>Ze,residues:()=>h.residues,setBondLength:()=>j.setBondLength,setSyncSurface:()=>Ue,specStringToObject:()=>d.specStringToObject,splitMesh:()=>Ne,ssColors:()=>h.ssColors,subdivide_spline:()=>u,syncSurface:()=>Pe,viewers:()=>Xe});var r,s,n=i(111),a=i(378),o=i(99),l=i(529),h=i(222);!function(e){e[e.NONE=0]="NONE",e[e.FLAT=1]="FLAT",e[e.ROUND=2]="ROUND"}(r||(r={})),function(e){function t(e,t,i){var r,s,n,a,o,l=Math.hypot(e,t);l<1e-4?(s=0,n=1):(s=-e/l,n=t/l),t=-s*e+n*t,(r=Math.hypot(t,i))<1e-4?(a=0,o=1):(a=i/r,o=t/r);var h=new Float32Array(9);return h[0]=n,h[1]=s,h[2]=0,h[3]=-s*o,h[4]=n*o,h[5]=a,h[6]=s*a,h[7]=-n*a,h[8]=o,h}var i=new class CylVertexCache{constructor(){this.cache={};let e,t=[],i=Math.pow(2,4),r=2,s=Math.pow(2,r),n=i/s;for(t[0]=new l.Vector3(-1,0,0),t[n]=new l.Vector3(0,0,1),t[2*n]=new l.Vector3(1,0,0),t[3*n]=new l.Vector3(0,0,-1),r=3;r<=4;r++){for(s=Math.pow(2,r-1),n=i/s,e=0;e<s-1;e++)t[n/2+e*n]=t[e*n].clone().add(t[(e+1)*n]).normalize();e=s-1,t[n/2+e*n]=t[e*n].clone().add(t[0]).normalize()}this.basisVectors=t}getVerticesForRadius(e,t,i){if(void 0!==this.cache&&void 0!==this.cache[e]&&void 0!==this.cache[e][t+i])return this.cache[e][t+i];for(var s,n=this.basisVectors.length,a=[],o=[],h=0;h<n;h++)a.push(this.basisVectors[h].clone().multiplyScalar(e)),a.push(this.basisVectors[h].clone().multiplyScalar(e)),s=this.basisVectors[h].clone().normalize(),o.push(s),o.push(s);var c,d,u=[],f=10,p=n,m=2*Math.PI,g=Math.PI,v=!1,_=!1;for(d=0;d<=f;d++){v=0===d||d===f,_=5===d;var y=[],b=[];for(c=0;c<=p;c++)if(_){var x=c<p?2*c:0;b.push(x+1),y.push(x)}else{var w=c/p,A=d/f;if(v&&0!==c)v&&y.push(a.length-1);else if(c<p){var C=new l.Vector3;C.x=-e*Math.cos(0+w*m)*Math.sin(0+A*g),C.y=1==t?0:e*Math.cos(0+A*g),C.z=e*Math.sin(0+w*m)*Math.sin(0+A*g),Math.abs(C.x)<1e-5&&(C.x=0),Math.abs(C.y)<1e-5&&(C.y=0),Math.abs(C.z)<1e-5&&(C.z=0),t==r.FLAT?(s=new l.Vector3(0,Math.cos(0+A*g),0)).normalize():(s=new l.Vector3(C.x,C.y,C.z)).normalize(),a.push(C),o.push(s),y.push(a.length-1)}else y.push(a.length-p)}_&&u.push(b),u.push(y)}var S={vertices:a,normals:o,verticesRows:u,w:p,h:f};return e in this.cache||(this.cache[e]={}),this.cache[e][t+i]=S,S}};e.drawCylinder=function(e,s,n,a,o,l=0,h=0){if(!s||!n)return;let c=function(e){if("string"==typeof e){let t=e;return"flat"==t.toLowerCase()?r.FLAT:"round"==t.toLowerCase()?r.ROUND:r.NONE}return e};l=c(l);var d=(h=c(h))||l;o=o||{r:0,g:0,b:0};var u,f,p,m,g,v,_=t(n.x-s.x,n.y-s.y,n.z-s.z),y=i.getVerticesForRadius(a,h,"to"),b=y.w,x=y.h,w=d?x*b+2:2*b,A=e.updateGeoGroup(w),C=y.vertices,S=y.normals,z=y.verticesRows,M=z[x/2],T=z[x/2+1],E=A.vertices,L=A.vertexArray,F=A.normalArray,I=A.colorArray,O=A.faceArray;for(p=0;p<b;++p){var D=2*p;m=_[0]*C[D].x+_[3]*C[D].y+_[6]*C[D].z,g=_[1]*C[D].x+_[4]*C[D].y+_[7]*C[D].z,v=_[5]*C[D].y+_[8]*C[D].z,u=3*(E+D),f=A.faceidx,L[u]=m+s.x,L[u+1]=g+s.y,L[u+2]=v+s.z,L[u+3]=m+n.x,L[u+4]=g+n.y,L[u+5]=v+n.z,F[u]=m,F[u+3]=m,F[u+1]=g,F[u+4]=g,F[u+2]=v,F[u+5]=v,I[u]=o.r,I[u+3]=o.r,I[u+1]=o.g,I[u+4]=o.g,I[u+2]=o.b,I[u+5]=o.b,O[f]=T[p]+E,O[f+1]=T[p+1]+E,O[f+2]=M[p]+E,O[f+3]=M[p]+E,O[f+4]=T[p+1]+E,O[f+5]=M[p+1]+E,A.faceidx+=6}if(d){var k,R,P,U,B,N,G,V,j,H,W,q,Y,Z,X,K,Q,$,J,ee,te,ie,re,se,ne,ae,oe,le,he,ce,de,ue,fe=l?x+1:x/2+1;for(g=h?0:x/2;g<fe;g++)if(g!==x/2){var pe=g<=x/2?n:s,me=i.getVerticesForRadius(a,h,"to"),ge=i.getVerticesForRadius(a,l,"from");for(pe===n?(C=me.vertices,S=me.normals,z=me.verticesRows):pe==s&&(C=ge.vertices,S=ge.normals,z=ge.verticesRows),m=0;m<b;m++)f=A.faceidx,he=3*((k=z[g][m+1])+E),ce=3*((R=z[g][m])+E),de=3*((P=z[g+1][m])+E),ue=3*((U=z[g+1][m+1])+E),B=_[0]*C[k].x+_[3]*C[k].y+_[6]*C[k].z,N=_[0]*C[R].x+_[3]*C[R].y+_[6]*C[R].z,G=_[0]*C[P].x+_[3]*C[P].y+_[6]*C[P].z,V=_[0]*C[U].x+_[3]*C[U].y+_[6]*C[U].z,j=_[1]*C[k].x+_[4]*C[k].y+_[7]*C[k].z,H=_[1]*C[R].x+_[4]*C[R].y+_[7]*C[R].z,W=_[1]*C[P].x+_[4]*C[P].y+_[7]*C[P].z,q=_[1]*C[U].x+_[4]*C[U].y+_[7]*C[U].z,Y=_[5]*C[k].y+_[8]*C[k].z,Z=_[5]*C[R].y+_[8]*C[R].z,X=_[5]*C[P].y+_[8]*C[P].z,K=_[5]*C[U].y+_[8]*C[U].z,L[he]=B+pe.x,L[ce]=N+pe.x,L[de]=G+pe.x,L[ue]=V+pe.x,L[he+1]=j+pe.y,L[ce+1]=H+pe.y,L[de+1]=W+pe.y,L[ue+1]=q+pe.y,L[he+2]=Y+pe.z,L[ce+2]=Z+pe.z,L[de+2]=X+pe.z,L[ue+2]=K+pe.z,I[he]=o.r,I[ce]=o.r,I[de]=o.r,I[ue]=o.r,I[he+1]=o.g,I[ce+1]=o.g,I[de+1]=o.g,I[ue+1]=o.g,I[he+2]=o.b,I[ce+2]=o.b,I[de+2]=o.b,I[ue+2]=o.b,Q=_[0]*S[k].x+_[3]*S[k].y+_[6]*S[k].z,$=_[0]*S[R].x+_[3]*S[R].y+_[6]*S[R].z,J=_[0]*S[P].x+_[3]*S[P].y+_[6]*S[P].z,ee=_[0]*S[U].x+_[3]*S[U].y+_[6]*S[U].z,te=_[1]*S[k].x+_[4]*S[k].y+_[7]*S[k].z,ie=_[1]*S[R].x+_[4]*S[R].y+_[7]*S[R].z,re=_[1]*S[P].x+_[4]*S[P].y+_[7]*S[P].z,se=_[1]*S[U].x+_[4]*S[U].y+_[7]*S[U].z,ne=_[5]*S[k].y+_[8]*S[k].z,ae=_[5]*S[R].y+_[8]*S[R].z,oe=_[5]*S[P].y+_[8]*S[P].z,le=_[5]*S[U].y+_[8]*S[U].z,0===g?(F[he]=Q,F[de]=J,F[ue]=ee,F[he+1]=te,F[de+1]=re,F[ue+1]=se,F[he+2]=ne,F[de+2]=oe,F[ue+2]=le,O[f]=k+E,O[f+1]=P+E,O[f+2]=U+E,A.faceidx+=3):g===fe-1?(F[he]=Q,F[ce]=$,F[de]=J,F[he+1]=te,F[ce+1]=ie,F[de+1]=re,F[he+2]=ne,F[ce+2]=ae,F[de+2]=oe,O[f]=k+E,O[f+1]=R+E,O[f+2]=P+E,A.faceidx+=3):(F[he]=Q,F[ce]=$,F[ue]=ee,F[he+1]=te,F[ce+1]=ie,F[ue+1]=se,F[he+2]=ne,F[ce+2]=ae,F[ue+2]=le,F[ce]=$,F[de]=J,F[ue]=ee,F[ce+1]=ie,F[de+1]=re,F[ue+1]=se,F[ce+2]=ae,F[de+2]=oe,F[ue+2]=le,O[f]=k+E,O[f+1]=R+E,O[f+2]=U+E,O[f+3]=R+E,O[f+4]=P+E,O[f+5]=U+E,A.faceidx+=6)}}A.vertices+=w},e.drawCone=function(e,r,s,n,a){if(!r||!s)return;a=a||{r:0,g:0,b:0};let o=new l.Vector3(s.x-r.x,s.y-r.y,s.z-r.z);var h=t(o.x,o.y,o.z);o=o.normalize();var c,d,u,f,p,m,g=i.basisVectors.length,v=i.basisVectors,_=g+2,y=e.updateGeoGroup(_),b=y.vertices,x=y.vertexArray,w=y.normalArray,A=y.colorArray,C=y.faceArray;for(x[c=3*b]=r.x,x[c+1]=r.y,x[c+2]=r.z,w[c]=-o.x,w[c+1]=-o.y,w[c+2]=-o.z,A[c]=a.r,A[c+1]=a.g,A[c+2]=a.b,x[c+3]=s.x,x[c+4]=s.y,x[c+5]=s.z,w[c+3]=o.x,w[c+4]=o.y,w[c+5]=o.z,A[c+3]=a.r,A[c+4]=a.g,A[c+5]=a.b,c+=6,u=0;u<g;++u){var S=v[u].clone();S.multiplyScalar(n),f=h[0]*S.x+h[3]*S.y+h[6]*S.z,p=h[1]*S.x+h[4]*S.y+h[7]*S.z,m=h[5]*S.y+h[8]*S.z,x[c]=f+r.x,x[c+1]=p+r.y,x[c+2]=m+r.z,w[c]=f,w[c+1]=p,w[c+2]=m,A[c]=a.r,A[c+1]=a.g,A[c+2]=a.b,c+=3}for(y.vertices+=g+2,d=y.faceidx,u=0;u<g;u++){var z=b+2+u,M=b+2+(u+1)%g;C[d]=z,C[d+1]=M,C[d+2]=b,C[d+=3]=z,C[d+1]=M,C[d+2]=b+1,d+=3}y.faceidx+=6*g};var s=new class SphereVertexCache{constructor(){this.cache=new Map}getVerticesForRadius(e,t){t=t||2,this.cache.has(t)||this.cache.set(t,new Map);let i=this.cache.get(t);if(i.has(e))return i.get(e);var r={vertices:[],verticesRows:[],normals:[]},s=16*t,n=10*t;e<1&&(s=10*t,n=8*t);var a,o,h=2*Math.PI,c=Math.PI;for(o=0;o<=n;o++){let t=[];for(a=0;a<=s;a++){let i=a/s,u=o/n,f=-e*Math.cos(0+i*h)*Math.sin(0+u*c),p=e*Math.cos(0+u*c),m=e*Math.sin(0+i*h)*Math.sin(0+u*c);var d=new l.Vector3(f,p,m);d.normalize(),r.vertices.push({x:f,y:p,z:m}),r.normals.push(d),t.push(r.vertices.length-1)}r.verticesRows.push(t)}return i.set(e,r),r}};e.drawSphere=function(e,t,i,r,n){var a=s.getVerticesForRadius(i,n),o=a.vertices,l=a.normals,h=e.updateGeoGroup(o.length),c=h.vertices,d=h.vertexArray,u=h.colorArray,f=h.faceArray,p=h.lineArray,m=h.normalArray;for(let e=0,i=o.length;e<i;++e){let i=3*(c+e),s=o[e];d[i]=s.x+t.x,d[i+1]=s.y+t.y,d[i+2]=s.z+t.z,u[i]=r.r,u[i+1]=r.g,u[i+2]=r.b}h.vertices+=o.length;let g=a.verticesRows,v=g.length-1;for(let e=0;e<v;e++){let t=g[e].length-1;for(let r=0;r<t;r++){let t=h.faceidx,s=h.lineidx,n=g[e][r+1]+c,a=3*n,d=g[e][r]+c,u=3*d,v=g[e+1][r]+c,_=3*v,y=g[e+1][r+1]+c,b=3*y,x=l[n-c],w=l[d-c],A=l[v-c],C=l[y-c];Math.abs(o[n-c].y)===i?(m[a]=x.x,m[_]=A.x,m[b]=C.x,m[a+1]=x.y,m[_+1]=A.y,m[b+1]=C.y,m[a+2]=x.z,m[_+2]=A.z,m[b+2]=C.z,f[t]=n,f[t+1]=v,f[t+2]=y,p[s]=n,p[s+1]=v,p[s+2]=n,p[s+3]=y,p[s+4]=v,p[s+5]=y,h.faceidx+=3,h.lineidx+=6):Math.abs(o[v-c].y)===i?(m[a]=x.x,m[u]=w.x,m[_]=A.x,m[a+1]=x.y,m[u+1]=w.y,m[_+1]=A.y,m[a+2]=x.z,m[u+2]=w.z,m[_+2]=A.z,f[t]=n,f[t+1]=d,f[t+2]=v,p[s]=n,p[s+1]=d,p[s+2]=n,p[s+3]=v,p[s+4]=d,p[s+5]=v,h.faceidx+=3,h.lineidx+=6):(m[a]=x.x,m[u]=w.x,m[b]=C.x,m[a+1]=x.y,m[u+1]=w.y,m[b+1]=C.y,m[a+2]=x.z,m[u+2]=w.z,m[b+2]=C.z,m[u]=w.x,m[_]=A.x,m[b]=C.x,m[u+1]=w.y,m[_+1]=A.y,m[b+1]=C.y,m[u+2]=w.z,m[_+2]=A.z,m[b+2]=C.z,f[t]=n,f[t+1]=d,f[t+2]=y,f[t+3]=d,f[t+4]=v,f[t+5]=y,p[s]=n,p[s+1]=d,p[s+2]=n,p[s+3]=y,p[s+4]=d,p[s+5]=v,p[s+6]=v,p[s+7]=y,h.faceidx+=6,h.lineidx+=8)}}}}(s||(s={}));var c=i(546),d=i(864);function u(e,t){var i,r,s,n,a,o,h,c,d,u=[],f=e;for((f=[]).push(e[0]),i=1,r=e.length-1;i<r;i++)if(a=e[i],o=e[i+1],a.smoothen){var p=new l.Vector3((a.x+o.x)/2,(a.y+o.y)/2,(a.z+o.z)/2);p.atom=a.atom,f.push(p)}else f.push(a);for(f.push(e[e.length-1]),i=-1,s=f.length;i<=s-3;i++)if(n=f[-1===i?0:i],a=f[i+1],o=f[i+2],h=f[i===s-3?s-1:i+3],c=(new l.Vector3).subVectors(o,n).multiplyScalar(.5),d=(new l.Vector3).subVectors(h,a).multiplyScalar(.5),!o.skip)for(var m=0;m<t;m++){var g=1/t*m,v=a.x+g*c.x+g*g*(-3*a.x+3*o.x-2*c.x-d.x)+g*g*g*(2*a.x-2*o.x+c.x+d.x),_=a.y+g*c.y+g*g*(-3*a.y+3*o.y-2*c.y-d.y)+g*g*g*(2*a.y-2*o.y+c.y+d.y),y=a.z+g*c.z+g*g*(-3*a.z+3*o.z-2*c.z-d.z)+g*g*g*(2*a.z-2*o.z+c.z+d.z),b=new l.Vector3(v,_,y);b.atom=m<t/2?a.atom:o.atom,u.push(b)}return u.push(f[f.length-1]),u}const f=.5,p=1.3,m=.8,g=.4,v=.4;function _(e,t,i,r){for(var s,n,a,o,l=0,c=t.length;l<c;l++){o=Math.round(l*(r.length-1)/c),a=h.CC.color(r[o]);var d=e.updateGeoGroup(2),u=d.vertexArray,f=d.colorArray,p=d.faceArray;u[n=3*(s=d.vertices)]=t[l].x,u[n+1]=t[l].y,u[n+2]=t[l].z,u[n+3]=i[l].x,u[n+4]=i[l].y,u[n+5]=i[l].z;for(var m=0;m<6;++m)f[n+3*m]=a.r,f[n+1+3*m]=a.g,f[n+2+3*m]=a.b;if(l>0){var g=[s,s+1,s-1,s-2],v=d.faceidx;p[v]=g[0],p[v+1]=g[1],p[v+2]=g[3],p[v+3]=g[1],p[v+4]=g[2],p[v+5]=g[3],d.faceidx+=6}d.vertices+=2}}function y(e,t,i,r,s,n,a){a&&"default"!==a||(a="rectangle"),"edged"===a?function(e,t,i,r,s){if(!(t.length<2)){var n,a;if(n=t[0],a=t[t.length-1],n=u(n,r),a=u(a,r),!s)return _(e,n,a,i);var l,c,d,f,p,m,g,v,y,b,x,w,A,C,S,z,M,T,E,L,F,I,O=[],D=[[0,2,-6,-8],[-4,-2,6,4],[7,-1,-5,3],[-3,5,1,-7]];for(A=0,C=n.length;A<C;A++){if(b=Math.round(A*(i.length-1)/C),y=h.CC.color(i[b]),O.push(c=n[A]),O.push(c),O.push(d=a[A]),O.push(d),A<C-1){var k=n[A+1].clone().sub(n[A]);l=a[A].clone().sub(n[A]).cross(k).normalize().multiplyScalar(s)}for(O.push(f=n[A].clone().add(l)),O.push(f),O.push(p=a[A].clone().add(l)),O.push(p),void 0!==c.atom&&(x=c.atom),L=(E=e.updateGeoGroup(8)).vertexArray,F=E.colorArray,I=E.faceArray,L[g=3*(m=E.vertices)]=c.x,L[g+1]=c.y,L[g+2]=c.z,L[g+3]=c.x,L[g+4]=c.y,L[g+5]=c.z,L[g+6]=d.x,L[g+7]=d.y,L[g+8]=d.z,L[g+9]=d.x,L[g+10]=d.y,L[g+11]=d.z,L[g+12]=f.x,L[g+13]=f.y,L[g+14]=f.z,L[g+15]=f.x,L[g+16]=f.y,L[g+17]=f.z,L[g+18]=p.x,L[g+19]=p.y,L[g+20]=p.z,L[g+21]=p.x,L[g+22]=p.y,L[g+23]=p.z,S=0;S<8;++S)F[g+3*S]=y.r,F[g+1+3*S]=y.g,F[g+2+3*S]=y.b;if(A>0){var R=void 0!==w&&void 0!==x&&w.serial!==x.serial;for(S=0;S<4;S++){var P=[m+D[S][0],m+D[S][1],m+D[S][2],m+D[S][3]];if(I[v=E.faceidx]=P[0],I[v+1]=P[1],I[v+2]=P[3],I[v+3]=P[1],I[v+4]=P[2],I[v+5]=P[3],E.faceidx+=6,x.clickable||w.clickable||x.hoverable||w.hoverable){var U=O[P[3]].clone(),B=O[P[0]].clone(),N=O[P[2]].clone(),G=O[P[1]].clone();if(U.atom=O[P[3]].atom||null,N.atom=O[P[2]].atom||null,B.atom=O[P[0]].atom||null,G.atom=O[P[1]].atom||null,R){var V=U.clone().add(B).multiplyScalar(.5),j=N.clone().add(G).multiplyScalar(.5),H=U.clone().add(G).multiplyScalar(.5);S%2==0?((w.clickable||w.hoverable)&&(z=new o.Triangle(V,H,U),M=new o.Triangle(j,N,H),T=new o.Triangle(H,N,U),w.intersectionShape.triangle.push(z),w.intersectionShape.triangle.push(M),w.intersectionShape.triangle.push(T)),(x.clickable||x.hoverable)&&(z=new o.Triangle(B,G,H),M=new o.Triangle(G,j,H),T=new o.Triangle(B,H,V),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M),x.intersectionShape.triangle.push(T))):((x.clickable||x.hoverable)&&(z=new o.Triangle(V,H,U),M=new o.Triangle(j,N,H),T=new o.Triangle(H,N,U),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M),x.intersectionShape.triangle.push(T)),(w.clickable||w.hoverable)&&(z=new o.Triangle(B,G,H),M=new o.Triangle(G,j,H),T=new o.Triangle(B,H,V),w.intersectionShape.triangle.push(z),w.intersectionShape.triangle.push(M),w.intersectionShape.triangle.push(T)))}else(x.clickable||x.hoverable)&&(z=new o.Triangle(B,G,U),M=new o.Triangle(G,N,U),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M))}}}E.vertices+=8,w=x}var W=O.length-8;for(L=(E=e.updateGeoGroup(8)).vertexArray,F=E.colorArray,I=E.faceArray,g=3*(m=E.vertices),v=E.faceidx,A=0;A<4;A++){O.push(O[2*A]),O.push(O[W+2*A]);var q=O[2*A],Y=O[W+2*A];L[g+6*A]=q.x,L[g+1+6*A]=q.y,L[g+2+6*A]=q.z,L[g+3+6*A]=Y.x,L[g+4+6*A]=Y.y,L[g+5+6*A]=Y.z,F[g+6*A]=y.r,F[g+1+6*A]=y.g,F[g+2+6*A]=y.b,F[g+3+6*A]=y.r,F[g+4+6*A]=y.g,F[g+5+6*A]=y.b}W+=8,z=[m,m+2,m+6,m+4],M=[m+1,m+5,m+7,m+3],I[v]=z[0],I[v+1]=z[1],I[v+2]=z[3],I[v+3]=z[1],I[v+4]=z[2],I[v+5]=z[3],I[v+6]=M[0],I[v+7]=M[1],I[v+8]=M[3],I[v+9]=M[1],I[v+10]=M[2],I[v+11]=M[3],E.faceidx+=12,E.vertices+=8}}(e,t,i,r,s):"rectangle"!==a&&"oval"!==a&&"parabola"!==a||function(e,t,i,r,s,n,a){var l,c,d,f,p,m,g,v,y,b;if((d=t.length)<2||t[0].length<2)return;for(l=0;l<d;l++)t[l]=u(t[l],r);if(f=t[0].length,!s)return _(e,t[0],t[d-1],i);var x=[],w=[],A=[];for(c=0;c<d;c++)x.push(.25+1.5*Math.sqrt((d-1)*c-Math.pow(c,2))/(d-1)),w.push(.5),A.push(2*(Math.pow(c/d,2)-c/d)+.6);var C,S,z,M,T,E,L,F,I,O,D=[];for(c=0;c<2*d-1;c++)D[c]=[c,c+1,c+1-2*d,c-2*d];D[2*d-1]=[c,c+1-2*d,c+1-4*d,c-2*d];let k=e.updateGeoGroup();for(l=0;l<f;l++){let r=e.groups,n=!1;var R,P;for(k=e.updateGeoGroup(2*d),r!=e.groups&&l>0&&(l-=1,n=!0),E=Math.round(l*(i.length-1)/f),T=h.CC.color(i[E]),y=g,b=v,g=[],v=[],p=[],void 0!==t[0][l].atom&&(M=t[0][l].atom,"oval"===a?m=x:"rectangle"===a?m=w:"parabola"===a&&(m=A)),m||(m=w),c=0;c<d;c++)R=l<f-1?t[c][l+1].clone().sub(t[c][l]):t[c][l-1].clone().sub(t[c][l]).negate(),P=c<d-1?t[c+1][l].clone().sub(t[c][l]):t[c-1][l].clone().sub(t[c][l]).negate(),p[c]=P.cross(R).normalize().multiplyScalar(s*m[c]);for(c=0;c<d;c++)g[c]=t[c][l].clone().add(p[c].clone().negate());for(c=0;c<d;c++)v[c]=t[c][l].clone().add(p[c]);for(L=k.vertexArray,F=k.colorArray,I=k.faceArray,S=3*(C=k.vertices),c=0;c<d;c++)L[S+3*c+0]=g[c].x,L[S+3*c+1]=g[c].y,L[S+3*c+2]=g[c].z;for(c=0;c<d;c++)L[S+3*c+0+3*d]=v[d-1-c].x,L[S+3*c+1+3*d]=v[d-1-c].y,L[S+3*c+2+3*d]=v[d-1-c].z;for(c=0;c<2*d;++c)F[S+3*c+0]=T.r,F[S+3*c+1]=T.g,F[S+3*c+2]=T.b;if(l>0&&!n){for(c=0;c<2*d;c++)O=[C+D[c][0],C+D[c][1],C+D[c][2],C+D[c][3]],I[z=k.faceidx]=O[0],I[z+1]=O[1],I[z+2]=O[3],I[z+3]=O[1],I[z+4]=O[2],I[z+5]=O[3],k.faceidx+=6;if(M.clickable||M.hoverable){var U=[];for(c in U.push(new o.Triangle(y[0],g[0],g[d-1])),U.push(new o.Triangle(y[0],g[d-1],y[d-1])),U.push(new o.Triangle(y[d-1],g[d-1],v[d-1])),U.push(new o.Triangle(y[d-1],v[d-1],b[d-1])),U.push(new o.Triangle(v[0],b[0],b[d-1])),U.push(new o.Triangle(v[d-1],v[0],b[d-1])),U.push(new o.Triangle(g[0],y[0],b[0])),U.push(new o.Triangle(v[0],g[0],b[0])),U)M.intersectionShape.triangle.push(U[c])}}k.vertices+=2*d}for(L=k.vertexArray,F=k.colorArray,I=k.faceArray,S=3*(C=k.vertices),z=k.faceidx,l=0;l<d-1;l++)O=[l,l+1,2*d-2-l,2*d-1-l],I[z=k.faceidx]=O[0],I[z+1]=O[1],I[z+2]=O[3],I[z+3]=O[1],I[z+4]=O[2],I[z+5]=O[3],k.faceidx+=6;for(l=0;l<d-1;l++)O=[C-1-l,C-2-l,C-2*d+l+1,C-2*d+l],I[z=k.faceidx]=O[0],I[z+1]=O[1],I[z+2]=O[3],I[z+3]=O[1],I[z+4]=O[2],I[z+5]=O[3],k.faceidx+=6}(e,t,i,r,s,0,a)}function b(e){return e&&"C"===e.elem&&"CA"===e.atom}function x(e,t){if(e&&t&&e.chain===t.chain){if(!(e.hetflag||t.hetflag||e.reschain!==t.reschain||e.resi!==t.resi&&e.resi!==t.resi-1))return!0;if(e.resi<t.resi){var i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,n=i*i+r*r+s*s;if("CA"==e.atom&&"CA"==t.atom&&n<16)return!0;if(("P"==e.atom||"P"==t.atom)&&n<64)return!0}}return!1}function w(e,t,i,r,s){if(null!=t&&0!=t.vertices){s&&(t.initTypedArrays(),t.setUpNormals());var n=new a.MeshDoubleLambertMaterial;n.vertexColors=a.Coloring.FaceColors,"number"==typeof i&&i>=0&&i<1&&(n.transparent=!0,n.opacity=i),n.outline=r;var o=new a.Mesh(t,n);e.add(o)}}function A(e,t,i,r,s,n,a,o,h){var c,d,u,v,_,y;if(r&&s&&a){var b=s.sub(r);b.normalize();var x=o[h];for(d=h+1;d<o.length&&(x=o[d]).atom!=a.atom;d++);if((x=x?new l.Vector3(x.x,x.y,x.z):new l.Vector3(0,0,0)).sub(r),"arrow start"===a.ss){var w=x.clone().multiplyScalar(.3).cross(s);r.add(w);var A=x.clone().cross(b).normalize();b.rotateAboutVector(A,.43)}for(a.style.cartoon.ribbon?c=a.style.cartoon.thickness||g:a.style.cartoon.width?c=a.style.cartoon.width:"c"===a.ss?c="P"===a.atom?m:f:"arrow start"===a.ss?(c=p,_=!0):c="arrow end"===a.ss||"h"===a.ss&&a.style.cartoon.tubes||"tube start"===a.ss?f:p,null!=n&&b.dot(n)<0&&b.negate(),b.multiplyScalar(c),d=0;d<t;d++)u=2*d/(t-1)-1,(v=new l.Vector3(r.x+u*b.x,r.y+u*b.y,r.z+u*b.z)).atom=a,i&&"s"===a.ss&&(v.smoothen=!0),e[d].push(v);if(_)for(b.multiplyScalar(2),d=0;d<t;d++)u=2*d/(t-1)-1,(v=new l.Vector3(r.x+u*b.x,r.y+u*b.y,r.z+u*b.z)).atom=a,v.smoothen=!1,v.skip=!0,e[d].push(v);return y=a.style.cartoon.style||"default",e.style?e.style!=y&&(console.log("Warning: a cartoon chain's strand-style is ambiguous"),e.style="default"):e.style=y,"arrow start"!==a.ss&&"arrow end"!==a.ss||(a.ss="s"),_}}const C={C:!0,CA:!0,O:!0,P:!0,OP2:!0,O2P:!0,"O5'":!0,"O3'":!0,"C5'":!0,"C2'":!0,"O5*":!0,"O3*":!0,"C5*":!0,"C2*":!0,N1:!0,N3:!0},S={DA:!0,DG:!0,A:!0,G:!0},z={DT:!0,DC:!0,U:!0,C:!0,T:!0},M={DA:!0,DG:!0,A:!0,G:!0,DT:!0,DC:!0,U:!0,C:!0,T:!0};function T(e,t,i,n=10){let u=n,f=n;var p,m,_,T,E,L,F,I,O,D,k,R,P,U,B,N,G,V,j=new a.Geometry(!0),H=new a.Geometry(!0),W=[],q=[],Y=1,Z=!1,X={};for(var K in c.Gradient.builtinGradients)c.Gradient.builtinGradients.hasOwnProperty(K)&&(X[K]=new c.Gradient.builtinGradients[K](i[1],i[0]));var Q=function(e,t){return i&&"spectrum"===t.color?t.colorscheme in X?X[t.colorscheme].valueToHex(e.resi):X.sinebow.valueToHex(e.resi):(0,d.getColorFromStyle)(e,t).getHex()};for(I=0;I<u;I++)q[I]=[];var $=!1,J=!1,ee=[];for(I in t){if("C"===(T=t[I]).elem&&"CA"===T.atom){var te=x(_,T);te&&"s"===T.ss?$=!0:$&&(_&&m&&_.style.cartoon.arrows&&m.style.cartoon.arrows&&(_.ss="arrow end",m.ss="arrow start"),$=!1),te&&("h"===_.ss||"tube start"==_.ss)&&_.style.cartoon.tubes?!J&&"tube start"!=_.ss&&T.style.cartoon.tubes&&(T.ss="tube start",J=!0):J&&("tube start"===_.ss?_.ss="tube end":m&&m.style.cartoon.tubes&&(m.ss="tube end"),J=!1),m=_,_=T}T&&T.atom in C&&ee.push(T)}J&&_.style.cartoon.tubes&&(_.ss="tube end",J=!1);var ie=function(t){q[0].length>0&&y(H,q,W,f,F,0,q.style);var i=[],r=null;if(t){for(I=0;I<u;I++)i[I]=q[I][q[I].length-1];r=W[W.length-1]}for(q=[],I=0;I<u;I++)q[I]=[];if(W=[],t){for(I=0;I<u;I++)q[I].push(i[I]);W.push(r)}w(e,H,Y,Z,!0),w(e,j,Y,Z,!1),H=new a.Geometry(!0),j=new a.Geometry(!0)};_=void 0;let re=[];for(var se=0;se<ee.length;se++){var ne=(T=ee[se]).resn.trim(),ae=ne in M;if(Y=1,p=T.style.cartoon,_&&_.style.cartoon&&(Y=_.style.cartoon.opacity),_&&_.style.cartoon&&_.style.cartoon.outline&&(Z=_.style.cartoon.outline),!_||!_.style.cartoon||T.style.cartoon&&_.style.cartoon.opacity==T.style.cartoon.opacity||ie(_.chain==T.chain),_&&T&&!x(_,T)&&_.chain&&_.chain==T.chain&&!_.hetflag&&!T.hetflag&&_.reschain+1==T.reschain&&re.push([_,T]),"trace"===p.style){if(T.hetflag);else if("C"===T.elem&&"CA"===T.atom||ae&&"P"===T.atom||"BB"===T.atom){if(L=Q(T,p),F=(0,d.isNumeric)(p.thickness)?p.thickness:g,x(_,T))if(L==E){var oe=h.CC.color(L);s.drawCylinder(j,_,T,F,oe,2,2)}else{var le=(new l.Vector3).addVectors(_,T).multiplyScalar(.5),he=h.CC.color(E),ce=h.CC.color(L);s.drawCylinder(j,_,le,F,he,2,0),s.drawCylinder(j,le,T,F,ce,0,2)}if((!0===T.clickable||T.hoverable)&&void 0!==T.intersectionShape){var de=new l.Vector3(T.x,T.y,T.z);T.intersectionShape.sphere.push(new o.Sphere(de,F))}_=T,E=L}}else{if(b(T)||ae&&("P"===T.atom||0==T.atom.indexOf("O5"))){if(V)if("tube end"===T.ss)V=!1,G=new l.Vector3(T.x,T.y,T.z),s.drawCylinder(j,N,G,2,h.CC.color(E),1,1),T.ss="h";else{if(_.chain==T.chain&&"tube end"!==_.ss)continue;V=!1,_.ss="h",G=new l.Vector3(_.x,_.y,_.z),s.drawCylinder(j,N,G,2,h.CC.color(E),1,1)}if(_&&(!x(_,T)||"tube start"===_.ss)){for("tube start"===_.ss&&(V=!0,N=new l.Vector3(_.x,_.y,_.z),_.ss="h"),B&&(U=R?(new l.Vector3).addVectors(_,R).multiplyScalar(.5):new l.Vector3(_.x,_.y,_.z),s.drawCylinder(j,U,B,v,h.CC.color(B.color),0,2),A(q,u,!0,R,P,k,_,ee,se),W.push(L),U=null,B=null),q[0].length>0&&y(H,q,W,f,F,0,q.style),q=[],I=0;I<u;I++)q[I]=[];W=[]}if(void 0===_||_.rescode!=T.rescode||_.resi!=T.resi){if(B&&null!=_){var ue=(U=(new l.Vector3).addVectors(_,T).multiplyScalar(.5)).clone().sub(B).multiplyScalar(.02);U.add(ue),s.drawCylinder(j,U,B,v,h.CC.color(B.color),0,2),U=null,B=null}L=Q(T,p),W.push(L),F=(0,d.isNumeric)(p.thickness)?p.thickness:g,_=T,(O=new l.Vector3(_.x,_.y,_.z)).resi=_.resi,E=L}!0!==T.clickable&&!0!==T.hoverable||void 0!==T.intersectionShape&&void 0!==T.intersectionShape.triangle||(T.intersectionShape={sphere:null,cylinder:[],line:[],triangle:[]})}else null!=_&&(b(_)&&"O"===T.atom||ae&&"P"===_.atom&&("OP2"===T.atom||"O2P"===T.atom)||ae&&0==_.atom.indexOf("O5")&&0==T.atom.indexOf("C5"))?((D=new l.Vector3(T.x,T.y,T.z)).resi=T.resi,"OP2"!==T.atom&&"O2P"!==T.atom||(P=new l.Vector3(T.x,T.y,T.z))):ae&&0==T.atom.indexOf("O3")?R=new l.Vector3(T.x,T.y,T.z):("N1"===T.atom&&ne in S||"N3"===T.atom&&ne in z)&&((B=new l.Vector3(T.x,T.y,T.z)).color=(0,d.getColorFromStyle)(T,p).getHex());D&&O&&D.resi===O.resi&&(A(q,u,!0,O,D,k,_,ee,se),k=D,O=null,D=null,W.push(L))}}B&&(U=R?(new l.Vector3).addVectors(_,R).multiplyScalar(.5):new l.Vector3(_.x,_.y,_.z),s.drawCylinder(j,U,B,v,h.CC.color(B.color),0,2),A(q,u,!0,R,P,k,_,ee,se),W.push(L)),ie(!1);var fe=function(e,t){if(e.style.cartoon.gapcutoff&&e.style.cartoon.gapcutoff==t.style.cartoon.gapcutoff){let n=e.style.cartoon.gapcutoff,a=t.resi-e.resi;if(a>0&&a<n){let n=.25,o=t.x-e.x,c=t.y-e.y,u=t.z-e.z,f=Math.sqrt(o*o+c*c+u*u),p=f/(2*a),m=new l.Vector3(e.x,e.y,e.z),g=f/p,v=new l.Vector3((t.x-e.x)/g,(t.y-e.y)/g,(t.z-e.z)/g);m.add({x:v.x/2,y:v.y/2,z:v.z/2});let _=m.clone().add(v);v.multiplyScalar(2);let y=(0,d.extend)({},e);for(var i=0;i<a;i++){y.resi+=1;let e=Q(y,y.style.cartoon);s.drawCylinder(j,m,_,n,h.CC.color(e),r.FLAT,r.FLAT),m.add(v),_.add(v)}ie(!1)}}};for(let e of re)fe(e[0],e[1])}var E=i(797),L=i(865),F=i(392);function I(e,t){for(var i=[[]],r=void 0===(t=t||{}).assignBonds||t.assignBonds,s=e.trimStart().split(/\r?\n|\r/);s.length>0&&!(s.length<3);){var n=parseInt(s[0]);if(isNaN(n)||n<=0)break;if(s.length<n+2)break;var o=/Lattice\s*=\s*["\{\}]([^"\{\}]+)["\{\}]\s*/gi.exec(s[1]);if(null!=o&&o.length>1){var l=new Float32Array(o[1].split(/\s+/)),h=new a.Matrix3(l[0],l[3],l[6],l[1],l[4],l[7],l[2],l[5],l[8]);i.modelData=[{cryst:{matrix:h}}]}for(var c=2,d=i[i.length-1].length,u=d+n,f=d;f<u;f++){var p=s[c++].trim().split(/\s+/),m={};m.serial=f;var g=p[0];m.atom=m.elem=g[0].toUpperCase()+g.substring(1,2).toLowerCase(),m.x=parseFloat(p[1]),m.y=parseFloat(p[2]),m.z=parseFloat(p[3]),m.hetflag=!0,m.bonds=[],m.bondOrder=[],m.properties={},i[i.length-1][f]=m,p.length>=7&&(m.dx=parseFloat(p[4]),m.dy=parseFloat(p[5]),m.dz=parseFloat(p[6]))}if(!t.multimodel)break;i.push([]),s.splice(0,c)}if(r)for(let e=0;e<i.length;e++)(0,F.assignBonds)(i[e],t);if(t.onemol){var v=i;(i=[]).push(v[0]);for(let e=1;e<v.length;e++){let t=i[0].length;for(let r=0;r<v[e].length;r++){let s=v[e][r];for(let e=0;e<s.bonds.length;e++)s.bonds[e]=s.bonds[e]+t;s.index=i[0].length,s.serial=i[0].length,i[0].push(s)}}}return i}function O(e,t){var i="V2000",r=e.split(/\r?\n|\r/);return r.length>3&&r[3].length>38&&(i=r[3].substring(34,39)),"V2000"===i?function(e,t){var i=[[]],r=!1;for(void 0!==t.keepH&&(r=!t.keepH);e.length>0&&!(e.length<4);){var s=parseInt(e[3].substring(0,3));if(isNaN(s)||s<=0)break;var n=parseInt(e[3].substring(3,6)),a=4;if(e.length<4+s+n)break;var o,l,h=[],c=i[i.length-1].length,d=c+s;for(o=c;o<d;o++,a++){var u={},f=(l=e[a]).substring(31,34).replace(/ /g,"");u.atom=u.elem=f[0].toUpperCase()+f.substring(1).toLowerCase(),"H"===u.elem&&r||(u.serial=o,h[o]=i[i.length-1].length,u.x=parseFloat(l.substring(0,10)),u.y=parseFloat(l.substring(10,20)),u.z=parseFloat(l.substring(20,30)),u.hetflag=!0,u.bonds=[],u.bondOrder=[],u.properties={},u.index=i[i.length-1].length,i[i.length-1].push(u))}for(o=0;o<n;o++,a++){l=e[a];var p=h[parseInt(l.substring(0,3))-1+c],m=h[parseInt(l.substring(3,6))-1+c],g=parseFloat(l.substring(6));void 0!==p&&void 0!==m&&(i[i.length-1][p].bonds.push(m),i[i.length-1][p].bondOrder.push(g),i[i.length-1][m].bonds.push(p),i[i.length-1][m].bondOrder.push(g))}if(!t.multimodel)break;for(t.onemol||i.push([]);"$$$$"!==e[a]&&a<e.length;)a++;e.splice(0,++a)}return i}(r,t):"V3000"===i?function(e,t){var i=[[]],r=!1;for(void 0!==t.keepH&&(r=!t.keepH);e.length>0&&!(e.length<8)&&e[4].startsWith("M V30 BEGIN CTAB")&&e[5].startsWith("M V30 COUNTS")&&!(e[5].length<14);){var s=e[5].substring(13).match(/\S+/g);if(s.length<2)break;var n=parseInt(s[0]);if(isNaN(n)||n<=0)break;var a=parseInt(s[1]),o=7;if(e.length<8+n+a)break;var l,h=[],c=i[i.length-1].length,d=c+n;for(l=c;l<d;l++,o++){var u=e[o].substring(6).match(/\S+/g);if(u.length>4){var f={},p=u[1].replace(/ /g,"");f.atom=f.elem=p[0].toUpperCase()+p.substring(1).toLowerCase(),"H"===f.elem&&r||(f.serial=l,h[l]=i[i.length-1].length,f.x=parseFloat(u[2]),f.y=parseFloat(u[3]),f.z=parseFloat(u[4]),f.hetflag=!0,f.bonds=[],f.bondOrder=[],f.properties={},f.index=i[i.length-1].length,i[i.length-1].push(f))}}if("M V30 END ATOM"!==e[o])break;if(o++,0===a||"M V30 BEGIN BOND"!==e[o])break;for(o++,l=0;l<a;l++,o++){var m=e[o].substring(6).match(/\S+/g);if(m.length>3){var g=h[parseInt(m[2])-1+c],v=h[parseInt(m[3])-1+c],_=parseFloat(m[1]);void 0!==g&&void 0!==v&&(i[i.length-1][g].bonds.push(v),i[i.length-1][g].bondOrder.push(_),i[i.length-1][v].bonds.push(g),i[i.length-1][v].bondOrder.push(_))}}if(!t.multimodel)break;for(t.onemol||i.push([]);"$$$$"!==e[o]&&o<e.length;)o++;e.splice(0,++o)}return i}(r,t):[[""]]}function D(e,t){var i=[[]];"string"==typeof e&&(e=JSON.parse(e));for(var r=e.m,s=r[0].a,n=r[0].b,a=r[0].s,o=void 0!==t&&void 0!==t.parseStyle?t.parseStyle:void 0!==a,l=i[i.length-1].length,h=0;h<s.length;h++){var c=s[h],d={};d.id=c.i,d.x=c.x,d.y=c.y,d.z=c.z||0,d.bonds=[],d.bondOrder=[];var u=c.l||"C";d.elem=u[0].toUpperCase()+u.substring(1).toLowerCase(),d.serial=i[i.length-1].length,o&&(d.style=a[c.s||0]),i[i.length-1].push(d)}for(let e=0;e<n.length;e++){let t=n[e],r=t.b+l,s=t.e+l,a=t.o||1,o=i[i.length-1][r],h=i[i.length-1][s];o.bonds.push(s),o.bondOrder.push(a),h.bonds.push(r),h.bondOrder.push(a)}return i}function k(e,t){!function(e,t){const i=t||3.2,r=i*i,s=[];for(let t=0,i=e.length;t<i;t++){e[t].index=t;const i=e[t];i.hetflag||"N"!==i.atom&&"O"!==i.atom||(s.push(i),i.hbondOther=null,i.hbondDistanceSq=Number.POSITIVE_INFINITY)}s.sort((function(e,t){return e.z-t.z}));for(let e=0,t=s.length;e<t;e++){const n=s[e];for(let a=e+1;a<t;a++){const e=s[a],t=e.z-n.z;if(t>i)break;if(e.atom==n.atom)continue;const o=Math.abs(e.y-n.y);if(o>i)continue;const l=Math.abs(e.x-n.x);if(l>i)continue;const h=l*l+o*o+t*t;h>r||e.chain==n.chain&&Math.abs(e.resi-n.resi)<4||(h<n.hbondDistanceSq&&(n.hbondOther=e,n.hbondDistanceSq=h),h<e.hbondDistanceSq&&(e.hbondOther=n,e.hbondDistanceSq=h))}}}(e,t);const i={};let r,s,n,a,o,l;for(r=0,s=e.length;r<s;r++)if(o=e[r],void 0===i[o.chain]&&(i[o.chain]=[]),isFinite(o.hbondDistanceSq)){const e=o.hbondOther;void 0===i[e.chain]&&(i[e.chain]=[]),4===Math.abs(e.resi-o.resi)&&(i[o.chain][o.resi]="h")}for(n in i)for(a=1;a<i[n].length-1;a++){const e=i[n][a-1],t=i[n][a+1];l=i[n][a],"h"==e&&e==t&&l!=e&&(i[n][a]=e)}for(r=0,s=e.length;r<s;r++)o=e[r],isFinite(o.hbondDistanceSq)&&"h"!=i[o.chain][o.resi]&&"h"!==o.ss&&(i[o.chain][o.resi]="maybesheet");for(let t=0,r=e.length;t<r;t++)if(o=e[t],isFinite(o.hbondDistanceSq)&&"maybesheet"==i[o.chain][o.resi]){let e=o.hbondOther,t=i[e.chain][e.resi];"maybesheet"!=t&&"s"!=t||(i[o.chain][o.resi]="s",i[e.chain][e.resi]="s")}for(let e in i){for(let t=1;t<i[e].length-1;t++){const r=i[e][t-1],s=i[e][t+1];l=i[e][t],"s"==r&&r==s&&l!=r&&(i[e][t]=r)}for(let t=0;t<i[e].length;t++){const r=i[e][t];"h"!=r&&"s"!=r||i[e][t-1]!=r&&i[e][t+1]!=r&&delete i[e][t]}}for(r=0,s=e.length;r<s;r++)o=e[r],l=i[o.chain][o.resi],delete o.hbondOther,delete o.hbondDistanceSq,void 0!==l&&"maybesheet"!==l&&(o.ss=l,i[o.chain][o.resi-1]!=l&&(o.ssbegin=!0),i[o.chain][o.resi+1]!=l&&(o.ssend=!0))}function R(e,t,i,r){const s=!i.duplicateAssemblyAtoms,n=t.length;let o=n,l=-1,h=null,c=null;(i.normalizeAssembly||i.wrapAtoms)&&r&&(h=(0,a.conversionMatrix3)(r.a,r.b,r.c,r.alpha,r.beta,r.gamma),c=new a.Matrix3,c.getInverse3(h));let d=function(e){let t=e.clone().applyMatrix3(c);const i=[t.x,t.y,t.z],r=[0,0,0];for(let e=0;e<3;e++){for(;i[e]<-.001;)i[e]+=1,r[e]+=1;for(;i[e]>1.001;)i[e]-=1,r[e]-=1}const s=new a.Vector3(r[0],r[1],r[2]);return s.applyMatrix3(h),s};if(i.normalizeAssembly&&r)for(let i=0;i<e.length;i++){const r=new a.Vector3(0,0,0);for(let s=0;s<n;s++){const n=new a.Vector3(t[s].x,t[s].y,t[s].z);n.applyMatrix4(e[i]),r.add(n)}r.divideScalar(n);const s=d(r);e[i].isNearlyIdentity()&&s.lengthSq()>.001&&(l=i),e[i].translate(s)}if(s){if(e.length>1)for(let i=0;i<t.length;i++){var u=[];for(let r=0;r<e.length;r++)if(!e[r].isNearlyIdentity()){var f=new a.Vector3;f.set(t[i].x,t[i].y,t[i].z),f.applyMatrix4(e[r]),u.push(f)}t[i].symmetries=u}}else{for(let e=0;e<n;e++)t[e].sym=-1;for(let s=0;s<e.length;s++)if(e[s].isNearlyIdentity()||l==s)for(let e=0;e<n;e++)t[e].sym=s;else{let l=new a.Vector3;for(let a=0;a<n;a++){const n=[];for(let e=0;e<t[a].bonds.length;e++)n.push(t[a].bonds[e]+o);if(l.set(t[a].x,t[a].y,t[a].z),l.applyMatrix4(e[s]),i.wrapAtoms&&r){let e=d(l);l.add(e)}const h={};for(const e in t[a])h[e]=t[a][e];h.x=l.x,h.y=l.y,h.z=l.z,h.bonds=n,h.sym=s,h.index=t.length,t.push(h)}o=t.length}if(i.wrapAtoms&&r){let e=new a.Vector3;for(let i=0;i<n;i++){e.set(t[i].x,t[i].y,t[i].z);let r=d(e);e.add(r),t[i].x=e.x,t[i].y=e.y,t[i].z=e.z}}if(l>=0){const i=new a.Vector3;for(let r=0;r<n;r++)i.set(t[r].x,t[r].y,t[r].z),i.applyMatrix4(e[l]),t[r].x=i.x,t[r].y=i.y,t[r].z=i.z}e.length=0}}var P=i(408);const U=new Set(["ABU","ACD","ALA","ALB","ALI","ARG","AR0","ASN","ASP","ASX","BAS","CYS","CYH","CYX","CSS","CSH","GLN","GLU","GLX","GLY","HIS","HIE","HID","HIP","HYP","ILE","ILU","LEU","LYS","MET","PCA","PGA","PHE","PR0","PRO","PRZ","SER","THR","TRP","TYR","VAL","A","1MA","C","5MC","OMC","G","1MG","2MG","M2G","7MG","OMG","YG","I","T","U","+U","H2U","5MU","PSU","ACE","F0R","H2O","HOH","WAT"]);function B(e,t){const i=[],r=[];for(let t=0,s=e.length;t<s;t++){const s=e[t];s.index=t,s.hetflag||!U.has(s.resn)?r.push(s):i.push(s)}(0,F.assignBonds)(r,t),i.sort((function(e,t){return e.chain!==t.chain?e.chain<t.chain?-1:1:e.resi-t.resi}));let s,n=-1,a=-1;for(let e=0,r=i.length;e<r;e++){const r=i[e];r.resi!==n&&(n=r.resi,s||a++,s=!1),r.reschain=a;for(let n=e+1;n<i.length;n++){const e=i[n];if(e.chain!==r.chain||e.resi-r.resi>1)break;(0,P.areConnected)(r,e,t)&&(-1===r.bonds.indexOf(e.index)&&(r.bonds.push(e.index),r.bondOrder.push(1),e.bonds.push(r.index),e.bondOrder.push(1)),r.resi!==e.resi&&(s=!0))}}}function N(e,t={}){const i=[],r=!t.doAssembly,s=i.modelData=[],n=void 0===t.assignBonds||t.assignBonds;function o(e,t){const i=[];let r=0,s=0;for(;s<e.length;){for(;e.substring(s,s+t.length)!==t&&s<e.length;)if("'"===e[s]){for(s++;s<e.length&&"'"!==e[s];)s++;for(;e.substring(s,s+t.length)!==t&&s<e.length;)s++}else if('"'===e[s]){for(s++;s<e.length&&'"'!==e[s];)s++;s++}else s++;i.push(e.substring(r,s)),r=s+=t.length}return i}const l=e.split(/\r?\n|\r/),h=[];let c=!1;for(let e=0;e<l.length;e++){var d=l[e].split("#")[0];if(c?";"===d[0]&&(c=!1):";"===d[0]&&(c=!0),c||""!==d){if(!c&&"_"===(d=d.trim())[0]){const e=d.split(/\s/)[0].indexOf(".");if(e>-1){let t=d.split("");t[e]="_",d=(d=t.join("")).substring(0,e)+"_"+d.substring(e+1)}}h.push(d)}}let u=0;for(;u<h.length;){for(;!h[u].startsWith("data_")||"data_global"===h[u];)u++;u++;const e={};for(;u<h.length&&!h[u].startsWith("data_");)if(void 0===h[u][0])u++;else if("_"===h[u][0]){const t=h[u].split(/\s/)[0].toLowerCase(),i=e[t]=e[t]||[],r=h[u].substring(h[u].indexOf(t)+t.length);if(""===r)if(u++,";"===h[u][0]){let e=h[u].substring(1);for(u++;";"!==h[u];)e=e+"\n"+h[u],u++;i.push(e)}else i.push(h[u]);else i.push(r.trim());u++}else if("loop_"===h[u].substring(0,5)){u++;const t=[];for(;""===h[u]||"_"===h[u][0];){if(""!==h[u]){let i=h[u].split(/\s/)[0].toLowerCase(),r=e[i]=e[i]||[];t.push(r)}u++}let i=0;for(;u<h.length&&"_"!==h[u][0]&&!h[u].startsWith("loop_")&&!h[u].startsWith("data_");){let e=o(h[u]," ");for(let r=0;r<e.length;r++)""!==e[r]&&(t[i].push(e[r]),i=(i+1)%t.length);u++}}else u++;s.push({symmetries:[]}),i.push([]);const t=void 0!==e._atom_site_id?e._atom_site_id.length:e._atom_site_label.length;let n;if(void 0!==e._cell_length_a){const t=parseFloat(e._cell_length_a),i=parseFloat(e._cell_length_b),r=parseFloat(e._cell_length_c),o=parseFloat(e._cell_angle_alpha)||90,l=parseFloat(e._cell_angle_beta)||90,h=parseFloat(e._cell_angle_gamma)||90;n=(0,a.conversionMatrix3)(t,i,r,o,l,h),s[s.length-1].cryst={a:t,b:i,c:r,alpha:o,beta:l,gamma:h}}for(let r=0;r<t;r++){if(void 0!==e._atom_site_group_pdb&&"TER"===e._atom_site_group_pdb[r])continue;const t={};if(void 0!==e._atom_site_cartn_x)t.x=parseFloat(e._atom_site_cartn_x[r]),t.y=parseFloat(e._atom_site_cartn_y[r]),t.z=parseFloat(e._atom_site_cartn_z[r]);else{const i=(f=n,p=parseFloat(e._atom_site_fract_x[r]),m=parseFloat(e._atom_site_fract_y[r]),g=parseFloat(e._atom_site_fract_z[r]),new a.Vector3(p,m,g).applyMatrix3(f));t.x=i.x,t.y=i.y,t.z=i.z}t.chain=e._atom_site_auth_asym_id?e._atom_site_auth_asym_id[r]:e._atom_site_label_asym_id?e._atom_site_label_asym_id[r]:void 0,t.lchain=e._atom_site_label_asym_id?e._atom_site_label_asym_id[r]:void 0,t.resi=e._atom_site_auth_seq_id?parseInt(e._atom_site_auth_seq_id[r]):e._atom_site_label_seq_id?e._atom_site_label_seq_id[r]:void 0,t.resn=e._atom_site_auth_comp_id?e._atom_site_auth_comp_id[r].trim():e._atom_site_label_comp_id?e._atom_site_label_comp_id[r].trim():void 0,t.atom=e._atom_site_auth_atom_id?e._atom_site_auth_atom_id[r].replace(/"/gm,""):e._atom_site_label_atom_id?e._atom_site_label_atom_id[r].replace(/"/gm,""):void 0,t.hetflag=!e._atom_site_group_pdb||"HETA"===e._atom_site_group_pdb[r]||"HETATM"===e._atom_site_group_pdb[r],e._atom_site_b_iso_or_equiv&&(t.b=parseFloat(e._atom_site_b_iso_or_equiv[r]));let s="X";e._atom_site_type_symbol?s=e._atom_site_type_symbol[r].replace(/\(?\+?\d+.*/,""):e._atom_site_label&&(s=e._atom_site_label[r].split("_")[0].replace(/\(?\d+.*/,"")),t.elem=s[0].toUpperCase()+s.substring(1,2).toLowerCase(),t.bonds=[],t.ss="c",t.serial=r,t.bondOrder=[],t.properties={},i[i.length-1].push(t)}if(void 0!==e._pdbx_struct_oper_list_id&&!r)for(let t=0;t<e._pdbx_struct_oper_list_id.length;t++){const i=parseFloat(e["_pdbx_struct_oper_list_matrix[1][1]"][t]),r=parseFloat(e["_pdbx_struct_oper_list_matrix[1][2]"][t]),n=parseFloat(e["_pdbx_struct_oper_list_matrix[1][3]"][t]),o=parseFloat(e["_pdbx_struct_oper_list_vector[1]"][t]),l=parseFloat(e["_pdbx_struct_oper_list_matrix[2][1]"][t]),h=parseFloat(e["_pdbx_struct_oper_list_matrix[2][2]"][t]),c=parseFloat(e["_pdbx_struct_oper_list_matrix[2][3]"][t]),d=parseFloat(e["_pdbx_struct_oper_list_vector[2]"][t]),u=parseFloat(e["_pdbx_struct_oper_list_matrix[3][1]"][t]),f=parseFloat(e["_pdbx_struct_oper_list_matrix[3][2]"][t]),p=parseFloat(e["_pdbx_struct_oper_list_matrix[3][3]"][t]),m=parseFloat(e["_pdbx_struct_oper_list_vector[3]"][t]),g=new a.Matrix4(i,r,n,o,l,h,c,d,u,f,p,m);s[s.length-1].symmetries.push(g)}const l=function(e){const t=e.match("-"),i=(e=e.replace(/[-xyz]/g,"")).split("/");let r,s;return s=void 0===i[1]?1:parseInt(i[1]),r=""===i[0]?1:parseInt(i[0]),r/s*(t?-1:1)};if(void 0!==e._symmetry_equiv_pos_as_xyz&&!r)for(let t=0;t<e._symmetry_equiv_pos_as_xyz.length;t++){const i=e._symmetry_equiv_pos_as_xyz[t].replace(/["' ]/g,"").split(",").map((function(e){return e.replace(/-/g,"+-")}));let r=new a.Matrix4(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1);for(let e=0;e<3;e++){const t=i[e].split("+");for(let i=0;i<t.length;i++){const s=t[i];if(""===s)continue;const n=l(s);s.match("x")?r.elements[e+0]=n:s.match("y")?r.elements[e+4]=n:s.match("z")?r.elements[e+8]=n:r.elements[e+12]=n}}const o=n.getMatrix4(),h=(new a.Matrix4).getInverse(o,!0);r=(new a.Matrix4).multiplyMatrices(r,h),r=(new a.Matrix4).multiplyMatrices(o,r),s[s.length-1].symmetries.push(r)}}var f,p,m,g;for(let e=0;e<i.length;e++)!n||t.duplicateAssemblyAtoms&&!t.dontConnectDuplicatedAtoms||B(i[e],t),k(i[e],t.hbondCutoff),R(s[e].symmetries,i[e],t,s[e].cryst),t.duplicateAssemblyAtoms&&!t.dontConnectDuplicatedAtoms&&n&&B(i[e],t);return i}let G={"C.1":"C",C1:"C","C.2":"C",C2:"C","C.3":"C",C3:"C","C.ar":"C",Car:"C","C.cat":"C",Ccat:"C","H.spc":"H",Hspc:"H","H.t3p":"H",Ht3p:"H","N.1":"N",N1:"N","N.2":"N",N2:"N","N.3":"N",N3:"N","N.4":"N",N4:"N","N.am":"N",Nam:"N","N.ar":"N",Nar:"N","N.p13":"N",Np13:"N","O.2":"O",O2:"O","O.3":"O",O3:"O","O.co2":"O",Oco2:"O","O.spc":"O",Ospc:"O","O.t3p":"O",Ot3p:"O","P.3":"P",P3:"P","S.2":"S",S2:"S","S.3":"S",S3:"S","S.o":"S",So:"S","S.o2":"S",So2:"S"};function V(e,t){var i=[[]],r=!1;void 0!==t.keepH&&(r=!t.keepH);var s=e.search(/@<TRIPOS>MOLECULE/),n=e.search(/@<TRIPOS>ATOM/);if(-1==s||-1==n)return i;for(var a=e.substring(s).split(/\r?\n|\r/);a.length>0;){var o=[],l=a[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),h=parseInt(l[0]),c=0;l.length>1&&(c=parseInt(l[1]));var d,u=4;for(d=3;d<a.length;d++)if("@<TRIPOS>ATOM"==a[d]){u=d+1;break}var f=i[i.length-1].length,p=f+h;for(d=f;d<p;d++){var m={},g=(l=a[u++].replace(/^\s+/,"").replace(/\s+/g," ").split(" "))[5];if(g=void 0!==G[g]?G[g]:(g=g.split(".")[0])[0].toUpperCase()+g.substring(1).toLowerCase(),m.atom=l[1],m.elem=g,"H"==m.elem&&r);else{var v=i[i.length-1].length,_=parseInt(l[0]);m.serial=_,m.x=parseFloat(l[2]),m.y=parseFloat(l[3]),m.z=parseFloat(l[4]),m.atom=l[5];var y=parseFloat(l[8]);m.index=v,m.bonds=[],m.bondOrder=[],m.properties={charge:y,partialCharge:y},o[_]=v,i[i.length-1].push(m)}}for(var b=!1;u<a.length;)if("@<TRIPOS>BOND"==a[u++]){b=!0;break}if(b&&c)for(d=0;d<c;d++){l=a[u++].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");var x=parseInt(l[1]),w=i[i.length-1][o[x]],A=parseInt(l[2]),C=i[i.length-1][o[A]],S=parseInt(l[3]);isNaN(S)&&(S=1),void 0!==w&&void 0!==C&&(w.bonds.push(o[A]),w.bondOrder.push(S),C.bonds.push(o[x]),C.bondOrder.push(S))}if(!t.multimodel)break;t.onemol||i.push([]),a.splice(0,u),e=a.join("\n")}return i}var j=i(40);function H(e,t){let i=e.replace(/ /g,"");return i.length>0&&"H"===i[0]&&"Hg"!==i&&"He"!==i&&"Hf"!==i&&"Hs"!==i&&"Ho"!==i&&(i="H"),i.length>1&&(i=i[0].toUpperCase()+i.substring(1).toLowerCase(),void 0===j.bondTable[i]?i=i[0]:t&&("Ca"===i||"Cd"===i)&&(i="C")),i}function W(e){for(const t in e)return!1;return!0}function q(e,t,i){const r=[],s=void 0===t.assignBonds||t.assignBonds,n=!t.keepH,o=!!t.noSecondaryStructure,l=!t.noComputeSecondaryStructure,h=!t.doAssembly,c=t.altLoc?t.altLoc:"A",d={symmetries:[],cryst:void 0};let u,f=[];const p=[];let m;const g={};for(let t=0;t<e.length;t++){m=e[t].replace(/^\s*/,"");const s=m.substring(0,6);let o,l,v;if(0===s.indexOf("END")){if(f=e.slice(t+1),"END"===s)for(const e in i)i.hasOwnProperty(e)&&delete i[e];break}if("ATOM "===s||"HETATM"===s){let e,t,i,a,o,l,h,d,f,g,v,_;if(v=m.substring(16,17)," "!==v&&v!==c&&"*"!==c)continue;if(g=parseInt(m.substring(6,11)),u=m.substring(12,16).replace(/ /g,""),e=m.substring(17,20).replace(/ /g,""),t=m.substring(21,22),i=parseInt(m.substring(22,26)),a=m.substring(26,27),o=parseFloat(m.substring(30,38)),l=parseFloat(m.substring(38,46)),h=parseFloat(m.substring(46,54)),_=parseFloat(m.substring(60,68)),f=m.substring(76,78).replace(/ /g,""),f=""===f||void 0===j.bondTable[f]?H(m.substring(12,14),"A"==m[0]):f[0].toUpperCase()+f.substring(1).toLowerCase(),"H"===f&&n)continue;d="H"==s[0],p[g]=r.length,r.push({resn:e,x:o,y:l,z:h,elem:f,hetflag:d,altLoc:v,chain:t,resi:i,icode:a,rescode:i+(" "!==a?"^"+a:""),serial:g,atom:u,bonds:[],ss:"c",bondOrder:[],properties:{},b:_,pdbline:m})}else if("SHEET "===s){o=m.substring(21,22),l=parseInt(m.substring(22,26)),v=parseInt(m.substring(33,37)),o in i||(i[o]={}),i[o][l]="s1";for(let e=l+1;e<v;e++)i[o][e]="s";i[o][v]="s2"}else if("CONECT"===s){const e=p[parseInt(m.substring(6,11))],t=r[e],i=[11,16,21,26];for(let s=0;s<4;s++){const n=p[parseInt(m.substring(i[s],i[s]+5))];let a=e+":"+n;const o=r[n];if(void 0!==t&&void 0!==o)if(g[a]){g[a]+=1;for(let e=0;e<t.bonds.length;e++)if(t.bonds[e]==n){const i=g[a];t.bondOrder[e]=i>=4?1:i}}else g[a]=1,0!=t.bonds.length&&t.bonds[t.bonds.length-1]===n||(t.bonds.push(n),t.bondOrder.push(1))}}else if("HELIX "===s){o=m.substring(19,20),l=parseInt(m.substring(21,25)),v=parseInt(m.substring(33,37)),o in i||(i[o]={}),i[o][l]="h1";for(let e=l+1;e<v;e++)i[o][e]="h";i[o][v]="h2"}else if(h||"REMARK"!==s||"BIOMT"!==m.substring(13,18)){if("CRYST1"===s){let e,t,i,r,s,n;e=parseFloat(m.substring(7,15)),t=parseFloat(m.substring(16,24)),i=parseFloat(m.substring(25,33)),r=parseFloat(m.substring(34,40)),s=parseFloat(m.substring(41,47)),n=parseFloat(m.substring(48,54)),d.cryst={a:e,b:t,c:i,alpha:r,beta:s,gamma:n}}else if("ANISOU"===s){const e=r[p[parseInt(m.substring(6,11))]];if(e){const t=m.substring(30).trim().split(/\s+/),i={u11:parseInt(t[0]),u22:parseInt(t[1]),u33:parseInt(t[2]),u12:parseInt(t[3]),u13:parseInt(t[4]),u23:parseInt(t[5])};e.uMat=i}}}else{let i,r=new a.Matrix4;for(i=1;i<=3;i++)if(m=e[t].replace(/^\s*/,""),parseInt(m.substring(18,19))==i)r.elements[i-1]=parseFloat(m.substring(23,33)),r.elements[i-1+4]=parseFloat(m.substring(33,43)),r.elements[i-1+8]=parseFloat(m.substring(43,53)),r.elements[i-1+12]=parseFloat(m.substring(53)),t++;else for(;"BIOMT"===m.substring(13,18);)t++,m=e[t].replace(/^\s*/,"");r.elements[3]=0,r.elements[7]=0,r.elements[11]=0,r.elements[15]=1,d.symmetries.push(r),t--}}if(function(e,t){for(let i=0,r=e.length;i<r;i++){const r=e[i];for(let i=0;i<r.bonds.length;i++){const s=e[r.bonds[i]],n=t[r.serial];s&&n&&s.bonds.indexOf(n)<0&&(s.bonds.push(n),s.bondOrder.push(r.bondOrder[i]))}}}(r,p),s&&B(r,t),h||R(d.symmetries,r,t,d.cryst),l&&!o&&k(r,t.hbondCutoff),!W(i))for(let e=0;e<r.length;e++){const t=r[e];if(void 0!==t&&t.chain in i&&t.resi in i[t.chain]){const e=i[t.chain][t.resi];t.ss=e[0],e.length>1&&("1"==e[1]?t.ssbegin=!0:"2"==e[1]&&(t.ssend=!0))}}return[r,d,f]}function Y(e,t){t=t||{};var i=[],r={};i.modelData=[];for(var s=e.split(/\r?\n|\r/);s.length>0;){var n=q(s,t,r),a=n[0],o=n[1];if(s=n[2],0!=a.length){if(t.multimodel&&t.onemol&&i.length>0)for(var l=i[0].length,h=0;h<a.length;h++){var c=a[h];c.index=h;for(var d=0;d<c.bonds.length;d++)c.bonds[d]+=l;i[0].push(c)}else i.modelData.push(o),i.push(a);if(!t.multimodel)break}}return i}function Z(e,t){var i=[[]],r=!t.noSecondaryStructure;i.modelData=[{symmetries:[]}];var s,n=[],a=e.split(/\r?\n|\r/);for(let e=0;e<a.length;e++){var o=(s=a[e].replace(/^\s*/,"")).substring(0,6);if(0==o.indexOf("END")){if(t.multimodel){t.onemol||i.push([]);continue}break}if("ATOM "==o||"HETATM"==o){var l;let e=parseInt(s.substring(6,11)),t=s.substring(12,16).replace(/ /g,""),r=s.substring(17,20).trim(),a=s.substring(21,22),o=parseInt(s.substring(22,26));var h=s.substring(30).trim().split(/\s+/),c=parseFloat(h[0]),d=parseFloat(h[1]),u=parseFloat(h[2]),f=parseFloat(h[3]),p=parseFloat(h[4]),m=t[0];t.length>1&&t[1].toUpperCase()!=t[1]&&(m=t.substring(0,2)),l="H"==s[0],n[e]=i[i.length-1].length,i[i.length-1].push({resn:r,x:c,y:d,z:u,elem:m,hetflag:l,chain:a,resi:o,serial:e,atom:t,bonds:[],ss:"c",bondOrder:[],properties:{charge:f,partialCharge:f,radius:p},pdbline:s})}else if("CONECT"==o){var g=parseInt(s.substring(6,11)),v=i[i.length-1][n[g]];for(let e=0;e<4;e++){var _=parseInt(s.substring([11,16,21,26][e],[11,16,21,26][e]+5)),y=i[i.length-1][n[_]];void 0!==v&&void 0!==y&&(v.bonds.push(n[_]),v.bondOrder.push(1))}}}for(let e=0;e<i.length;e++)B(i[e],t),r&&k(i[e],t.hbondCutoff);return i}var X=i(471),K=function(e){return String.fromCharCode.apply(null,e).replace(/\0/g,"")},Q=function(e){return 0==e||2==e||4==e?"h":3==e?"s":"c"};let $=new Set(["D-SACCHARIDE","D-SACCHARIDE 1,4 AND 1,4 LINKING","D-SACCHARIDE 1,4 AND 1,6 LINKING","L-SACCHARIDE","L-SACCHARIDE 1,4 AND 1,4 LINKING","L-SACCHARIDE 1,4 AND 1,6 LINKING","NON-POLYMER","OTHER","PEPTIDE-LIKE","SACCHARIDE"]);function J(e,t){var i=!t.keepH,r=t.altLoc?t.altLoc:"A",s=!!t.noSecondaryStructure,n=!t.noComputeSecondaryStructure,o=!t.doAssembly,l=t.assemblyIndex?t.assemblyIndex:0;e="string"==typeof e?(0,d.base64ToArray)(e):new Uint8Array(e);var h,c,u,f,p,m,g=X.decode(e),v=[[]],_=v.modelData=[],y=0,b=0,x=0,w=g.secStructList,A=g.bFactorList,C=g.altLocList,S=g.occupancyList,z=g.bondAtomList,M=g.bondOrderList,T=g.numModels;if(0==T)return v;t.multimodel||(T=1);var E=[];if(!o&&g.bioAssemblyList&&g.bioAssemblyList.length>0){var L=g.bioAssemblyList[l].transformList;for(h=0,m=L.length;h<m;h++){var F=new a.Matrix4(L[h].matrix);F.transpose(),E.push(F)}}var I=null;if(g.unitCell){var O=g.unitCell;I={a:O[0],b:O[1],c:O[2],alpha:O[3],beta:O[4],gamma:O[5]}}let D=[];g.entityList.forEach((e=>{e.chainIndexList.forEach((t=>{D[t]="polymer"==e.type}))}));var P=0;for(p=0;p<T;p++){var U=g.chainsPerModel[p],B=v[v.length-1],N=[];for(_.push({symmetries:E,cryst:I}),h=0;h<U;++h){var G=g.groupsPerChain[y],V=K(g.chainIdList.subarray(4*y,4*y+4));g.chainNameList&&(V=K(g.chainNameList.subarray(4*y,4*y+4)));var j=b,H="";for(c=0;c<G;++c){var W=g.groupList[g.groupTypeList[b]],q=W.atomNameList.length,Y=0,Z=!1,J=!1;if(w){Y=w[b];var ee=Q(Y);0!=b&&ee==H||(Z=!0),H=ee;var te=b+1;(te>=w.length||Q(w[te]!=ee))&&(J=!0)}var ie=g.groupIdList[b],re=W.groupName;let e=W.chemCompType;var se=x;let t=$.has(e)||!D[y];for(u=0