@splinetool/runtime 0.9.81 → 0.9.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/runtime.cjs +8 -8
- package/build/runtime.js +8 -8
- package/package.json +1 -1
package/build/runtime.js
CHANGED
|
@@ -3134,7 +3134,7 @@ void main() {
|
|
|
3134
3134
|
squared_mean = squared_mean / samples;
|
|
3135
3135
|
float std_dev = sqrt( squared_mean - mean * mean );
|
|
3136
3136
|
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
|
|
3137
|
-
}`;function AD(r,e,t){let n=new xc,i=new N,s=new N,o=new Ve,a=new um({depthPacking:PM}),l=new hm,u={},c=t.maxTextureSize,h={0:bn,1:Ui,2:wn},d=new yt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new N},radius:{value:4}},vertexShader:_D,fragmentShader:SD}),f=d.clone();f.defines.HORIZONTAL_PASS=1;let m=new Pe;m.setAttribute("position",new je(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new kt(m,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Vh,this.render=function(b,_,A){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||b.length===0)return;let M=r.getRenderTarget(),v=r.getActiveCubeFace(),T=r.getActiveMipmapLevel(),E=r.state;E.setBlending(Ct),E.buffers.color.setClear(1,1,1,1),E.buffers.depth.setTest(!0),E.setScissorTest(!1);for(let C=0,L=b.length;C<L;C++){let R=b[C],O=R.shadow;if(O===void 0){console.warn("THREE.WebGLShadowMap:",R,"has no shadow.");continue}if(O.autoUpdate===!1&&O.needsUpdate===!1)continue;i.copy(O.mapSize);let W=O.getFrameExtents();if(i.multiply(W),s.copy(O.mapSize),(i.x>c||i.y>c)&&(i.x>c&&(s.x=Math.floor(c/W.x),i.x=s.x*W.x,O.mapSize.x=s.x),i.y>c&&(s.y=Math.floor(c/W.y),i.y=s.y*W.y,O.mapSize.y=s.y)),O.map===null){let Z=this.type!==cc?{minFilter:Ut,magFilter:Ut}:{};O.map=new lt(i.x,i.y,Z),O.map.texture.name=R.name+".shadowMap",O.camera.updateProjectionMatrix()}r.setRenderTarget(O.map),r.clear();let j=O.getViewportCount();for(let Z=0;Z<j;Z++){let Y=O.getViewport(Z);o.set(s.x*Y.x,s.y*Y.y,s.x*Y.z,s.y*Y.w),E.viewport(o),O.updateMatrices(R,Z),n=O.getFrustum(),w(_,A,O.camera,R,this.type)}O.isPointLightShadow!==!0&&this.type===cc&&y(O,A),O.needsUpdate=!1}g.needsUpdate=!1,r.setRenderTarget(M,v,T)};function y(b,_){let A=e.update(p);d.defines.VSM_SAMPLES!==b.blurSamples&&(d.defines.VSM_SAMPLES=b.blurSamples,f.defines.VSM_SAMPLES=b.blurSamples,d.needsUpdate=!0,f.needsUpdate=!0),b.mapPass===null&&(b.mapPass=new lt(i.x,i.y)),d.uniforms.shadow_pass.value=b.map.texture,d.uniforms.resolution.value=b.mapSize,d.uniforms.radius.value=b.radius,r.setRenderTarget(b.mapPass),r.clear(),r.renderBufferDirect(_,null,A,d,p,null),f.uniforms.shadow_pass.value=b.mapPass.texture,f.uniforms.resolution.value=b.mapSize,f.uniforms.radius.value=b.radius,r.setRenderTarget(b.map),r.clear(),r.renderBufferDirect(_,null,A,f,p,null)}function x(b,_,A,M,v,T){let E=null,C=A.isPointLight===!0?b.customDistanceMaterial:b.customDepthMaterial;if(C!==void 0?E=C:E=A.isPointLight===!0?l:a,r.localClippingEnabled&&_.clipShadows===!0&&Array.isArray(_.clippingPlanes)&&_.clippingPlanes.length!==0||_.displacementMap&&_.displacementScale!==0||_.alphaMap&&_.alphaTest>0){let L=E.uuid,R=_.uuid,O=u[L];O===void 0&&(O={},u[L]=O);let W=O[R];W===void 0&&(W=E.clone(),O[R]=W),E=W}return E.visible=_.visible,E.wireframe=_.wireframe,T===cc?E.side=_.shadowSide!==null?_.shadowSide:_.side:E.side=_.shadowSide!==null?_.shadowSide:h[_.side],E.alphaMap=_.alphaMap,E.alphaTest=_.alphaTest,E.clipShadows=_.clipShadows,E.clippingPlanes=_.clippingPlanes,E.clipIntersection=_.clipIntersection,E.displacementMap=_.displacementMap,E.displacementScale=_.displacementScale,E.displacementBias=_.displacementBias,E.wireframeLinewidth=_.wireframeLinewidth,E.linewidth=_.linewidth,A.isPointLight===!0&&E.isMeshDistanceMaterial===!0&&(E.referencePosition.setFromMatrixPosition(A.matrixWorld),E.nearDistance=M,E.farDistance=v),E}function w(b,_,A,M,v){if(b.visible===!1)return;if(b.layers.test(_.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&v===cc)&&(!b.frustumCulled||n.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,b.matrixWorld);let C=e.update(b),L=b.material;if(Array.isArray(L)){let R=C.groups;for(let O=0,W=R.length;O<W;O++){let j=R[O],Z=L[j.materialIndex];if(Z&&Z.visible){let Y=x(b,Z,M,A.near,A.far,v);r.renderBufferDirect(A,null,C,Y,b,j)}}}else if(L.visible){let R=x(b,L,M,A.near,A.far,v);r.renderBufferDirect(A,null,C,R,b,null)}}let E=b.children;for(let C=0,L=E.length;C<L;C++)w(E[C],_,A,M,v)}}function MD(r,e,t){let n=t.isWebGL2;function i(){let U=!1,xe=new Ve,Se=null,Xe=new Ve(0,0,0,0);return{setMask:function(Le){Se!==Le&&!U&&(r.colorMask(Le,Le,Le,Le),Se=Le)},setLocked:function(Le){U=Le},setClear:function(Le,Ye,be,Qe,tt){tt===!0&&(Le*=Qe,Ye*=Qe,be*=Qe),xe.set(Le,Ye,be,Qe),Xe.equals(xe)===!1&&(r.clearColor(Le,Ye,be,Qe),Xe.copy(xe))},reset:function(){U=!1,Se=null,Xe.set(-1,0,0,0)}}}function s(){let U=!1,xe=null,Se=null,Xe=null;return{setTest:function(Le){Le?X(2929):q(2929)},setMask:function(Le){xe!==Le&&!U&&(r.depthMask(Le),xe=Le)},setFunc:function(Le){if(Se!==Le){if(Le)switch(Le){case $A:r.depthFunc(512);break;case eM:r.depthFunc(519);break;case tM:r.depthFunc(513);break;case Yp:r.depthFunc(515);break;case nM:r.depthFunc(514);break;case rM:r.depthFunc(518);break;case iM:r.depthFunc(516);break;case sM:r.depthFunc(517);break;default:r.depthFunc(515)}else r.depthFunc(515);Se=Le}},setLocked:function(Le){U=Le},setClear:function(Le){Xe!==Le&&(r.clearDepth(Le),Xe=Le)},reset:function(){U=!1,xe=null,Se=null,Xe=null}}}function o(){let U=!1,xe=null,Se=null,Xe=null,Le=null,Ye=null,be=null,Qe=null,tt=null;return{setTest:function(ft){U||(ft?X(2960):q(2960))},setMask:function(ft){xe!==ft&&!U&&(r.stencilMask(ft),xe=ft)},setFunc:function(ft,wt,Yn){(Se!==ft||Xe!==wt||Le!==Yn)&&(r.stencilFunc(ft,wt,Yn),Se=ft,Xe=wt,Le=Yn)},setOp:function(ft,wt,Yn){(Ye!==ft||be!==wt||Qe!==Yn)&&(r.stencilOp(ft,wt,Yn),Ye=ft,be=wt,Qe=Yn)},setLocked:function(ft){U=ft},setClear:function(ft){tt!==ft&&(r.clearStencil(ft),tt=ft)},reset:function(){U=!1,xe=null,Se=null,Xe=null,Le=null,Ye=null,be=null,Qe=null,tt=null}}}let a=new i,l=new s,u=new o,c={},h={},d=new WeakMap,f=[],m=null,p=!1,g=null,y=null,x=null,w=null,b=null,_=null,A=null,M=!1,v=null,T=null,E=null,C=null,L=null,R=r.getParameter(35661),O=!1,W=0,j=r.getParameter(7938);j.indexOf("WebGL")!==-1?(W=parseFloat(/^WebGL (\d)/.exec(j)[1]),O=W>=1):j.indexOf("OpenGL ES")!==-1&&(W=parseFloat(/^OpenGL ES (\d)/.exec(j)[1]),O=W>=2);let Z=null,Y={},z=r.getParameter(3088),F=r.getParameter(2978),G=new Ve().fromArray(z),B=new Ve().fromArray(F);function k(U,xe,Se){let Xe=new Uint8Array(4),Le=r.createTexture();r.bindTexture(U,Le),r.texParameteri(U,10241,9728),r.texParameteri(U,10240,9728);for(let Ye=0;Ye<Se;Ye++)r.texImage2D(xe+Ye,0,6408,1,1,0,6408,5121,Xe);return Le}let H={};H[3553]=k(3553,3553,1),H[34067]=k(34067,34069,6),a.setClear(0,0,0,1),l.setClear(1),u.setClear(0),X(2929),l.setFunc(Yp),de(!1),ge(by),X(2884),ce(Ct);function X(U){c[U]!==!0&&(r.enable(U),c[U]=!0)}function q(U){c[U]!==!1&&(r.disable(U),c[U]=!1)}function ae(U,xe){return h[U]!==xe?(r.bindFramebuffer(U,xe),h[U]=xe,n&&(U===36009&&(h[36160]=xe),U===36160&&(h[36009]=xe)),!0):!1}function $(U,xe){let Se=f,Xe=!1;if(U)if(Se=d.get(xe),Se===void 0&&(Se=[],d.set(xe,Se)),U.isWebGLMultipleRenderTargets){let Le=U.texture;if(Se.length!==Le.length||Se[0]!==36064){for(let Ye=0,be=Le.length;Ye<be;Ye++)Se[Ye]=36064+Ye;Se.length=Le.length,Xe=!0}}else Se[0]!==36064&&(Se[0]=36064,Xe=!0);else Se[0]!==1029&&(Se[0]=1029,Xe=!0);Xe&&(t.isWebGL2?r.drawBuffers(Se):e.get("WEBGL_draw_buffers").drawBuffersWEBGL(Se))}function te(U){return m!==U?(r.useProgram(U),m=U,!0):!1}let V={[ra]:32774,[VA]:32778,[HA]:32779};if(n)V[Ay]=32775,V[My]=32776;else{let U=e.get("EXT_blend_minmax");U!==null&&(V[Ay]=U.MIN_EXT,V[My]=U.MAX_EXT)}let le={[WA]:0,[jA]:1,[qA]:768,[Jv]:770,[JA]:776,[ZA]:774,[YA]:772,[XA]:769,[$v]:771,[KA]:775,[QA]:773};function ce(U,xe,Se,Xe,Le,Ye,be,Qe){if(U===Ct){p===!0&&(q(3042),p=!1);return}if(p===!1&&(X(3042),p=!0),U!==kA){if(U!==g||Qe!==M){if((y!==ra||b!==ra)&&(r.blendEquation(32774),y=ra,b=ra),Qe)switch(U){case ss:r.blendFuncSeparate(1,771,1,771);break;case wy:r.blendFunc(1,1);break;case _y:r.blendFuncSeparate(0,769,0,1);break;case Sy:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",U);break}else switch(U){case ss:r.blendFuncSeparate(770,771,1,771);break;case wy:r.blendFunc(770,1);break;case _y:r.blendFuncSeparate(0,769,0,1);break;case Sy:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",U);break}x=null,w=null,_=null,A=null,g=U,M=Qe}return}Le=Le||xe,Ye=Ye||Se,be=be||Xe,(xe!==y||Le!==b)&&(r.blendEquationSeparate(V[xe],V[Le]),y=xe,b=Le),(Se!==x||Xe!==w||Ye!==_||be!==A)&&(r.blendFuncSeparate(le[Se],le[Xe],le[Ye],le[be]),x=Se,w=Xe,_=Ye,A=be),g=U,M=null}function oe(U,xe){U.side===wn?q(2884):X(2884);let Se=U.side===bn;xe&&(Se=!Se),de(Se),U.blending===ss&&U.transparent===!1?ce(Ct):ce(U.blending,U.blendEquation,U.blendSrc,U.blendDst,U.blendEquationAlpha,U.blendSrcAlpha,U.blendDstAlpha,U.premultipliedAlpha),l.setFunc(U.depthFunc),l.setTest(U.depthTest),l.setMask(U.depthWrite),a.setMask(U.colorWrite);let Xe=U.stencilWrite;u.setTest(Xe),Xe&&(u.setMask(U.stencilWriteMask),u.setFunc(U.stencilFunc,U.stencilRef,U.stencilFuncMask),u.setOp(U.stencilFail,U.stencilZFail,U.stencilZPass)),Te(U.polygonOffset,U.polygonOffsetFactor,U.polygonOffsetUnits),U.alphaToCoverage===!0?X(32926):q(32926)}function de(U){v!==U&&(U?r.frontFace(2304):r.frontFace(2305),v=U)}function ge(U){U!==UA?(X(2884),U!==T&&(U===by?r.cullFace(1029):U===zA?r.cullFace(1028):r.cullFace(1032))):q(2884),T=U}function fe(U){U!==E&&(O&&r.lineWidth(U),E=U)}function Te(U,xe,Se){U?(X(32823),(C!==xe||L!==Se)&&(r.polygonOffset(xe,Se),C=xe,L=Se)):q(32823)}function Ce(U){U?X(3089):q(3089)}function ye(U){U===void 0&&(U=33984+R-1),Z!==U&&(r.activeTexture(U),Z=U)}function Ne(U,xe){Z===null&&ye();let Se=Y[Z];Se===void 0&&(Se={type:void 0,texture:void 0},Y[Z]=Se),(Se.type!==U||Se.texture!==xe)&&(r.bindTexture(U,xe||H[U]),Se.type=U,Se.texture=xe)}function dt(){let U=Y[Z];U!==void 0&&U.type!==void 0&&(r.bindTexture(U.type,null),U.type=void 0,U.texture=void 0)}function P(){try{r.compressedTexImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function D(){try{r.texSubImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function K(){try{r.texSubImage3D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function he(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function pe(){try{r.texStorage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function Ee(){try{r.texStorage3D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function Fe(){try{r.texImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function re(){try{r.texImage3D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function Be(U){G.equals(U)===!1&&(r.scissor(U.x,U.y,U.z,U.w),G.copy(U))}function Ie(U){B.equals(U)===!1&&(r.viewport(U.x,U.y,U.z,U.w),B.copy(U))}function ve(){r.disable(3042),r.disable(2884),r.disable(2929),r.disable(32823),r.disable(3089),r.disable(2960),r.disable(32926),r.blendEquation(32774),r.blendFunc(1,0),r.blendFuncSeparate(1,0,1,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(513),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(519,0,4294967295),r.stencilOp(7680,7680,7680),r.clearStencil(0),r.cullFace(1029),r.frontFace(2305),r.polygonOffset(0,0),r.activeTexture(33984),r.bindFramebuffer(36160,null),n===!0&&(r.bindFramebuffer(36009,null),r.bindFramebuffer(36008,null)),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),c={},Z=null,Y={},h={},d=new WeakMap,f=[],m=null,p=!1,g=null,y=null,x=null,w=null,b=null,_=null,A=null,M=!1,v=null,T=null,E=null,C=null,L=null,G.set(0,0,r.canvas.width,r.canvas.height),B.set(0,0,r.canvas.width,r.canvas.height),a.reset(),l.reset(),u.reset()}return{buffers:{color:a,depth:l,stencil:u},enable:X,disable:q,bindFramebuffer:ae,drawBuffers:$,useProgram:te,setBlending:ce,setMaterial:oe,setFlipSided:de,setCullFace:ge,setLineWidth:fe,setPolygonOffset:Te,setScissorTest:Ce,activeTexture:ye,bindTexture:Ne,unbindTexture:dt,compressedTexImage2D:P,texImage2D:Fe,texImage3D:re,texStorage2D:pe,texStorage3D:Ee,texSubImage2D:D,texSubImage3D:K,compressedTexSubImage2D:he,scissor:Be,viewport:Ie,reset:ve}}function TD(r,e,t,n,i,s,o){let a=i.isWebGL2,l=i.maxTextures,u=i.maxCubemapSize,c=i.maxTextureSize,h=i.maxSamples,d=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,f=/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap,p,g=new WeakMap,y=!1;try{y=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function x(P,D){return y?new OffscreenCanvas(P,D):Sh("canvas")}function w(P,D,K,he){let pe=1;if((P.width>he||P.height>he)&&(pe=he/Math.max(P.width,P.height)),pe<1||D===!0)if(typeof HTMLImageElement<"u"&&P instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&P instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&P instanceof ImageBitmap){let Ee=D?_h:Math.floor,Fe=Ee(pe*P.width),re=Ee(pe*P.height);p===void 0&&(p=x(Fe,re));let Be=K?x(Fe,re):p;return Be.width=Fe,Be.height=re,Be.getContext("2d").drawImage(P,0,0,Fe,re),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+P.width+"x"+P.height+") to ("+Fe+"x"+re+")."),Be}else return"data"in P&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+P.width+"x"+P.height+")."),P;return P}function b(P){return em(P.width)&&em(P.height)}function _(P){return a?!1:P.wrapS!==xn||P.wrapT!==xn||P.minFilter!==Ut&&P.minFilter!==et}function A(P,D){return P.generateMipmaps&&D&&P.minFilter!==Ut&&P.minFilter!==et}function M(P){r.generateMipmap(P)}function v(P,D,K,he,pe=!1){if(a===!1)return D;if(P!==null){if(r[P]!==void 0)return r[P];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+P+"'")}let Ee=D;return D===6403&&(K===5126&&(Ee=33326),K===5131&&(Ee=33325),K===5121&&(Ee=33321)),D===33319&&(K===5126&&(Ee=33328),K===5131&&(Ee=33327),K===5121&&(Ee=33323)),D===6408&&(K===5126&&(Ee=34836),K===5131&&(Ee=34842),K===5121&&(Ee=he===We&&pe===!1?35907:32856),K===32819&&(Ee=32854),K===32820&&(Ee=32855)),(Ee===33325||Ee===33326||Ee===33327||Ee===33328||Ee===34842||Ee===34836)&&e.get("EXT_color_buffer_float"),Ee}function T(P,D,K){return A(P,K)===!0||P.isFramebufferTexture&&P.minFilter!==Ut&&P.minFilter!==et?Math.log2(Math.max(D.width,D.height))+1:P.mipmaps!==void 0&&P.mipmaps.length>0?P.mipmaps.length:P.isCompressedTexture&&Array.isArray(P.image)?D.mipmaps.length:1}function E(P){return P===Ut||P===Ty||P===Ey?9728:9729}function C(P){let D=P.target;D.removeEventListener("dispose",C),R(D),D.isVideoTexture&&m.delete(D)}function L(P){let D=P.target;D.removeEventListener("dispose",L),W(D)}function R(P){let D=n.get(P);if(D.__webglInit===void 0)return;let K=P.source,he=g.get(K);if(he){let pe=he[D.__cacheKey];pe.usedTimes--,pe.usedTimes===0&&O(P),Object.keys(he).length===0&&g.delete(K)}n.remove(P)}function O(P){let D=n.get(P);r.deleteTexture(D.__webglTexture);let K=P.source,he=g.get(K);delete he[D.__cacheKey],o.memory.textures--}function W(P){let D=P.texture,K=n.get(P),he=n.get(D);if(he.__webglTexture!==void 0&&(r.deleteTexture(he.__webglTexture),o.memory.textures--),P.depthTexture&&P.depthTexture.dispose(),P.isWebGLCubeRenderTarget)for(let pe=0;pe<6;pe++)r.deleteFramebuffer(K.__webglFramebuffer[pe]),K.__webglDepthbuffer&&r.deleteRenderbuffer(K.__webglDepthbuffer[pe]);else{if(r.deleteFramebuffer(K.__webglFramebuffer),K.__webglDepthbuffer&&r.deleteRenderbuffer(K.__webglDepthbuffer),K.__webglMultisampledFramebuffer&&r.deleteFramebuffer(K.__webglMultisampledFramebuffer),K.__webglColorRenderbuffer)for(let pe=0;pe<K.__webglColorRenderbuffer.length;pe++)K.__webglColorRenderbuffer[pe]&&r.deleteRenderbuffer(K.__webglColorRenderbuffer[pe]);K.__webglDepthRenderbuffer&&r.deleteRenderbuffer(K.__webglDepthRenderbuffer)}if(P.isWebGLMultipleRenderTargets)for(let pe=0,Ee=D.length;pe<Ee;pe++){let Fe=n.get(D[pe]);Fe.__webglTexture&&(r.deleteTexture(Fe.__webglTexture),o.memory.textures--),n.remove(D[pe])}n.remove(D),n.remove(P)}let j=0;function Z(){j=0}function Y(){let P=j;return P>=l&&console.warn("THREE.WebGLTextures: Trying to use "+P+" texture units while this GPU supports only "+l),j+=1,P}function z(P){let D=[];return D.push(P.wrapS),D.push(P.wrapT),D.push(P.magFilter),D.push(P.minFilter),D.push(P.anisotropy),D.push(P.internalFormat),D.push(P.format),D.push(P.type),D.push(P.generateMipmaps),D.push(P.premultiplyAlpha),D.push(P.flipY),D.push(P.unpackAlignment),D.push(P.encoding),D.join()}function F(P,D){let K=n.get(P);if(P.isVideoTexture&&Ne(P),P.isRenderTargetTexture===!1&&P.version>0&&K.__version!==P.version){let he=P.image;if(he===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(he.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{$(K,P,D);return}}t.activeTexture(33984+D),t.bindTexture(3553,K.__webglTexture)}function G(P,D){let K=n.get(P);if(P.version>0&&K.__version!==P.version){$(K,P,D);return}t.activeTexture(33984+D),t.bindTexture(35866,K.__webglTexture)}function B(P,D){let K=n.get(P);if(P.version>0&&K.__version!==P.version){$(K,P,D);return}t.activeTexture(33984+D),t.bindTexture(32879,K.__webglTexture)}function k(P,D){let K=n.get(P);if(P.version>0&&K.__version!==P.version){te(K,P,D);return}t.activeTexture(33984+D),t.bindTexture(34067,K.__webglTexture)}let H={[aa]:10497,[xn]:33071,[Kp]:33648},X={[Ut]:9728,[Ty]:9984,[Ey]:9986,[et]:9729,[fM]:9985,[gs]:9987};function q(P,D,K){if(K?(r.texParameteri(P,10242,H[D.wrapS]),r.texParameteri(P,10243,H[D.wrapT]),(P===32879||P===35866)&&r.texParameteri(P,32882,H[D.wrapR]),r.texParameteri(P,10240,X[D.magFilter]),r.texParameteri(P,10241,X[D.minFilter])):(r.texParameteri(P,10242,33071),r.texParameteri(P,10243,33071),(P===32879||P===35866)&&r.texParameteri(P,32882,33071),(D.wrapS!==xn||D.wrapT!==xn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(P,10240,E(D.magFilter)),r.texParameteri(P,10241,E(D.minFilter)),D.minFilter!==Ut&&D.minFilter!==et&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){let he=e.get("EXT_texture_filter_anisotropic");if(D.type===gr&&e.has("OES_texture_float_linear")===!1||a===!1&&D.type===gc&&e.has("OES_texture_half_float_linear")===!1)return;(D.anisotropy>1||n.get(D).__currentAnisotropy)&&(r.texParameterf(P,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(D.anisotropy,i.getMaxAnisotropy())),n.get(D).__currentAnisotropy=D.anisotropy)}}function ae(P,D){let K=!1;P.__webglInit===void 0&&(P.__webglInit=!0,D.addEventListener("dispose",C));let he=D.source,pe=g.get(he);pe===void 0&&(pe={},g.set(he,pe));let Ee=z(D);if(Ee!==P.__cacheKey){pe[Ee]===void 0&&(pe[Ee]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,K=!0),pe[Ee].usedTimes++;let Fe=pe[P.__cacheKey];Fe!==void 0&&(pe[P.__cacheKey].usedTimes--,Fe.usedTimes===0&&O(D)),P.__cacheKey=Ee,P.__webglTexture=pe[Ee].texture}return K}function $(P,D,K){let he=3553;D.isDataArrayTexture&&(he=35866),D.isData3DTexture&&(he=32879);let pe=ae(P,D),Ee=D.source;if(t.activeTexture(33984+K),t.bindTexture(he,P.__webglTexture),Ee.version!==Ee.__currentVersion||pe===!0){r.pixelStorei(37440,D.flipY),r.pixelStorei(37441,D.premultiplyAlpha),r.pixelStorei(3317,D.unpackAlignment),r.pixelStorei(37443,0);let Fe=_(D)&&b(D.image)===!1,re=w(D.image,Fe,!1,c);re=dt(D,re);let Be=b(re)||a,Ie=s.convert(D.format,D.encoding),ve=s.convert(D.type),U=v(D.internalFormat,Ie,ve,D.encoding,D.isVideoTexture);q(he,D,Be);let xe,Se=D.mipmaps,Xe=a&&D.isVideoTexture!==!0,Le=Ee.__currentVersion===void 0||pe===!0,Ye=T(D,re,Be);if(D.isDepthTexture)U=6402,a?D.type===gr?U=36012:D.type===Bi?U=33190:D.type===os?U=35056:U=33189:D.type===gr&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),D.format===oo&&U===6402&&D.type!==nx&&D.type!==Bi&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),D.type=Bi,ve=s.convert(D.type)),D.format===us&&U===6402&&(U=34041,D.type!==os&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),D.type=os,ve=s.convert(D.type))),Le&&(Xe?t.texStorage2D(3553,1,U,re.width,re.height):t.texImage2D(3553,0,U,re.width,re.height,0,Ie,ve,null));else if(D.isDataTexture)if(Se.length>0&&Be){Xe&&Le&&t.texStorage2D(3553,Ye,U,Se[0].width,Se[0].height);for(let be=0,Qe=Se.length;be<Qe;be++)xe=Se[be],Xe?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Ie,ve,xe.data):t.texImage2D(3553,be,U,xe.width,xe.height,0,Ie,ve,xe.data);D.generateMipmaps=!1}else Xe?(Le&&t.texStorage2D(3553,Ye,U,re.width,re.height),t.texSubImage2D(3553,0,0,0,re.width,re.height,Ie,ve,re.data)):t.texImage2D(3553,0,U,re.width,re.height,0,Ie,ve,re.data);else if(D.isCompressedTexture){Xe&&Le&&t.texStorage2D(3553,Ye,U,Se[0].width,Se[0].height);for(let be=0,Qe=Se.length;be<Qe;be++)xe=Se[be],D.format!==Rr?Ie!==null?Xe?t.compressedTexSubImage2D(3553,be,0,0,xe.width,xe.height,Ie,xe.data):t.compressedTexImage2D(3553,be,U,xe.width,xe.height,0,xe.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Xe?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Ie,ve,xe.data):t.texImage2D(3553,be,U,xe.width,xe.height,0,Ie,ve,xe.data)}else if(D.isDataArrayTexture)Xe?(Le&&t.texStorage3D(35866,Ye,U,re.width,re.height,re.depth),t.texSubImage3D(35866,0,0,0,0,re.width,re.height,re.depth,Ie,ve,re.data)):t.texImage3D(35866,0,U,re.width,re.height,re.depth,0,Ie,ve,re.data);else if(D.isData3DTexture)Xe?(Le&&t.texStorage3D(32879,Ye,U,re.width,re.height,re.depth),t.texSubImage3D(32879,0,0,0,0,re.width,re.height,re.depth,Ie,ve,re.data)):t.texImage3D(32879,0,U,re.width,re.height,re.depth,0,Ie,ve,re.data);else if(D.isFramebufferTexture){if(Le)if(Xe)t.texStorage2D(3553,Ye,U,re.width,re.height);else{let be=re.width,Qe=re.height;for(let tt=0;tt<Ye;tt++)t.texImage2D(3553,tt,U,be,Qe,0,Ie,ve,null),be>>=1,Qe>>=1}}else if(Se.length>0&&Be){Xe&&Le&&t.texStorage2D(3553,Ye,U,Se[0].width,Se[0].height);for(let be=0,Qe=Se.length;be<Qe;be++)xe=Se[be],Xe?t.texSubImage2D(3553,be,0,0,Ie,ve,xe):t.texImage2D(3553,be,U,Ie,ve,xe);D.generateMipmaps=!1}else Xe?(Le&&t.texStorage2D(3553,Ye,U,re.width,re.height),t.texSubImage2D(3553,0,0,0,Ie,ve,re)):t.texImage2D(3553,0,U,Ie,ve,re);A(D,Be)&&M(he),Ee.__currentVersion=Ee.version,D.onUpdate&&D.onUpdate(D)}P.__version=D.version}function te(P,D,K){if(D.image.length!==6)return;let he=ae(P,D),pe=D.source;if(t.activeTexture(33984+K),t.bindTexture(34067,P.__webglTexture),pe.version!==pe.__currentVersion||he===!0){r.pixelStorei(37440,D.flipY),r.pixelStorei(37441,D.premultiplyAlpha),r.pixelStorei(3317,D.unpackAlignment),r.pixelStorei(37443,0);let Ee=D.isCompressedTexture||D.image[0].isCompressedTexture,Fe=D.image[0]&&D.image[0].isDataTexture,re=[];for(let be=0;be<6;be++)!Ee&&!Fe?re[be]=w(D.image[be],!1,!0,u):re[be]=Fe?D.image[be].image:D.image[be],re[be]=dt(D,re[be]);let Be=re[0],Ie=b(Be)||a,ve=s.convert(D.format,D.encoding),U=s.convert(D.type),xe=v(D.internalFormat,ve,U,D.encoding),Se=a&&D.isVideoTexture!==!0,Xe=pe.__currentVersion===void 0||he===!0,Le=T(D,Be,Ie);q(34067,D,Ie);let Ye;if(Ee){Se&&Xe&&t.texStorage2D(34067,Le,xe,Be.width,Be.height);for(let be=0;be<6;be++){Ye=re[be].mipmaps;for(let Qe=0;Qe<Ye.length;Qe++){let tt=Ye[Qe];D.format!==Rr?ve!==null?Se?t.compressedTexSubImage2D(34069+be,Qe,0,0,tt.width,tt.height,ve,tt.data):t.compressedTexImage2D(34069+be,Qe,xe,tt.width,tt.height,0,tt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Se?t.texSubImage2D(34069+be,Qe,0,0,tt.width,tt.height,ve,U,tt.data):t.texImage2D(34069+be,Qe,xe,tt.width,tt.height,0,ve,U,tt.data)}}}else{Ye=D.mipmaps,Se&&Xe&&(Ye.length>0&&Le++,t.texStorage2D(34067,Le,xe,re[0].width,re[0].height));for(let be=0;be<6;be++)if(Fe){Se?t.texSubImage2D(34069+be,0,0,0,re[be].width,re[be].height,ve,U,re[be].data):t.texImage2D(34069+be,0,xe,re[be].width,re[be].height,0,ve,U,re[be].data);for(let Qe=0;Qe<Ye.length;Qe++){let ft=Ye[Qe].image[be].image;Se?t.texSubImage2D(34069+be,Qe+1,0,0,ft.width,ft.height,ve,U,ft.data):t.texImage2D(34069+be,Qe+1,xe,ft.width,ft.height,0,ve,U,ft.data)}}else{Se?t.texSubImage2D(34069+be,0,0,0,ve,U,re[be]):t.texImage2D(34069+be,0,xe,ve,U,re[be]);for(let Qe=0;Qe<Ye.length;Qe++){let tt=Ye[Qe];Se?t.texSubImage2D(34069+be,Qe+1,0,0,ve,U,tt.image[be]):t.texImage2D(34069+be,Qe+1,xe,ve,U,tt.image[be])}}}A(D,Ie)&&M(34067),pe.__currentVersion=pe.version,D.onUpdate&&D.onUpdate(D)}P.__version=D.version}function V(P,D,K,he,pe){let Ee=s.convert(K.format,K.encoding),Fe=s.convert(K.type),re=v(K.internalFormat,Ee,Fe,K.encoding);n.get(D).__hasExternalTextures||(pe===32879||pe===35866?t.texImage3D(pe,0,re,D.width,D.height,D.depth,0,Ee,Fe,null):t.texImage2D(pe,0,re,D.width,D.height,0,Ee,Fe,null)),t.bindFramebuffer(36160,P),ye(D)?d.framebufferTexture2DMultisampleEXT(36160,he,pe,n.get(K).__webglTexture,0,Ce(D)):r.framebufferTexture2D(36160,he,pe,n.get(K).__webglTexture,0),t.bindFramebuffer(36160,null)}function le(P,D,K){if(r.bindRenderbuffer(36161,P),D.depthBuffer&&!D.stencilBuffer){let he=33189;if(K||ye(D)){let pe=D.depthTexture;pe&&pe.isDepthTexture&&(pe.type===gr?he=36012:pe.type===Bi&&(he=33190));let Ee=Ce(D);ye(D)?d.renderbufferStorageMultisampleEXT(36161,Ee,he,D.width,D.height):r.renderbufferStorageMultisample(36161,Ee,he,D.width,D.height)}else r.renderbufferStorage(36161,he,D.width,D.height);r.framebufferRenderbuffer(36160,36096,36161,P)}else if(D.depthBuffer&&D.stencilBuffer){let he=Ce(D);K&&ye(D)===!1?r.renderbufferStorageMultisample(36161,he,35056,D.width,D.height):ye(D)?d.renderbufferStorageMultisampleEXT(36161,he,35056,D.width,D.height):r.renderbufferStorage(36161,34041,D.width,D.height),r.framebufferRenderbuffer(36160,33306,36161,P)}else{let he=D.isWebGLMultipleRenderTargets===!0?D.texture:[D.texture];for(let pe=0;pe<he.length;pe++){let Ee=he[pe],Fe=s.convert(Ee.format,Ee.encoding),re=s.convert(Ee.type),Be=v(Ee.internalFormat,Fe,re,Ee.encoding),Ie=Ce(D);K&&ye(D)===!1?r.renderbufferStorageMultisample(36161,Ie,Be,D.width,D.height):ye(D)?d.renderbufferStorageMultisampleEXT(36161,Ie,Be,D.width,D.height):r.renderbufferStorage(36161,Be,D.width,D.height)}}r.bindRenderbuffer(36161,null)}function ce(P,D){if(D&&D.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(36160,P),!(D.depthTexture&&D.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(D.depthTexture).__webglTexture||D.depthTexture.image.width!==D.width||D.depthTexture.image.height!==D.height)&&(D.depthTexture.image.width=D.width,D.depthTexture.image.height=D.height,D.depthTexture.needsUpdate=!0),F(D.depthTexture,0);let he=n.get(D.depthTexture).__webglTexture,pe=Ce(D);if(D.depthTexture.format===oo)ye(D)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,he,0,pe):r.framebufferTexture2D(36160,36096,3553,he,0);else if(D.depthTexture.format===us)ye(D)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,he,0,pe):r.framebufferTexture2D(36160,33306,3553,he,0);else throw new Error("Unknown depthTexture format")}function oe(P){let D=n.get(P),K=P.isWebGLCubeRenderTarget===!0;if(P.depthTexture&&!D.__autoAllocateDepthBuffer){if(K)throw new Error("target.depthTexture not supported in Cube render targets");ce(D.__webglFramebuffer,P)}else if(K){D.__webglDepthbuffer=[];for(let he=0;he<6;he++)t.bindFramebuffer(36160,D.__webglFramebuffer[he]),D.__webglDepthbuffer[he]=r.createRenderbuffer(),le(D.__webglDepthbuffer[he],P,!1)}else t.bindFramebuffer(36160,D.__webglFramebuffer),D.__webglDepthbuffer=r.createRenderbuffer(),le(D.__webglDepthbuffer,P,!1);t.bindFramebuffer(36160,null)}function de(P,D,K){let he=n.get(P);D!==void 0&&V(he.__webglFramebuffer,P,P.texture,36064,3553),K!==void 0&&oe(P)}function ge(P){let D=P.texture,K=n.get(P),he=n.get(D);P.addEventListener("dispose",L),P.isWebGLMultipleRenderTargets!==!0&&(he.__webglTexture===void 0&&(he.__webglTexture=r.createTexture()),he.__version=D.version,o.memory.textures++);let pe=P.isWebGLCubeRenderTarget===!0,Ee=P.isWebGLMultipleRenderTargets===!0,Fe=b(P)||a;if(pe){K.__webglFramebuffer=[];for(let re=0;re<6;re++)K.__webglFramebuffer[re]=r.createFramebuffer()}else{if(K.__webglFramebuffer=r.createFramebuffer(),Ee)if(i.drawBuffers){let re=P.texture;for(let Be=0,Ie=re.length;Be<Ie;Be++){let ve=n.get(re[Be]);ve.__webglTexture===void 0&&(ve.__webglTexture=r.createTexture(),o.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(a&&P.samples>0&&ye(P)===!1){let re=Ee?D:[D];K.__webglMultisampledFramebuffer=r.createFramebuffer(),K.__webglColorRenderbuffer=[],t.bindFramebuffer(36160,K.__webglMultisampledFramebuffer);for(let Be=0;Be<re.length;Be++){let Ie=re[Be];K.__webglColorRenderbuffer[Be]=r.createRenderbuffer(),r.bindRenderbuffer(36161,K.__webglColorRenderbuffer[Be]);let ve=s.convert(Ie.format,Ie.encoding),U=s.convert(Ie.type),xe=v(Ie.internalFormat,ve,U,Ie.encoding),Se=Ce(P);r.renderbufferStorageMultisample(36161,Se,xe,P.width,P.height),r.framebufferRenderbuffer(36160,36064+Be,36161,K.__webglColorRenderbuffer[Be])}r.bindRenderbuffer(36161,null),P.depthBuffer&&(K.__webglDepthRenderbuffer=r.createRenderbuffer(),le(K.__webglDepthRenderbuffer,P,!0)),t.bindFramebuffer(36160,null)}}if(pe){t.bindTexture(34067,he.__webglTexture),q(34067,D,Fe);for(let re=0;re<6;re++)V(K.__webglFramebuffer[re],P,D,36064,34069+re);A(D,Fe)&&M(34067),t.unbindTexture()}else if(Ee){let re=P.texture;for(let Be=0,Ie=re.length;Be<Ie;Be++){let ve=re[Be],U=n.get(ve);t.bindTexture(3553,U.__webglTexture),q(3553,ve,Fe),V(K.__webglFramebuffer,P,ve,36064+Be,3553),A(ve,Fe)&&M(3553)}t.unbindTexture()}else{let re=3553;(P.isWebGL3DRenderTarget||P.isWebGLArrayRenderTarget)&&(a?re=P.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),t.bindTexture(re,he.__webglTexture),q(re,D,Fe),V(K.__webglFramebuffer,P,D,36064,re),A(D,Fe)&&M(re),t.unbindTexture()}P.depthBuffer&&oe(P)}function fe(P){let D=b(P)||a,K=P.isWebGLMultipleRenderTargets===!0?P.texture:[P.texture];for(let he=0,pe=K.length;he<pe;he++){let Ee=K[he];if(A(Ee,D)){let Fe=P.isWebGLCubeRenderTarget?34067:3553,re=n.get(Ee).__webglTexture;t.bindTexture(Fe,re),M(Fe),t.unbindTexture()}}}function Te(P){if(a&&P.samples>0&&ye(P)===!1){let D=P.isWebGLMultipleRenderTargets?P.texture:[P.texture],K=P.width,he=P.height,pe=16384,Ee=[],Fe=P.stencilBuffer?33306:36096,re=n.get(P),Be=P.isWebGLMultipleRenderTargets===!0;if(Be)for(let Ie=0;Ie<D.length;Ie++)t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Ie,36161,null),t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Ie,3553,null,0);t.bindFramebuffer(36008,re.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,re.__webglFramebuffer);for(let Ie=0;Ie<D.length;Ie++){Ee.push(36064+Ie),P.depthBuffer&&Ee.push(Fe);let ve=re.__ignoreDepthValues!==void 0?re.__ignoreDepthValues:!1;if(ve===!1&&(P.depthBuffer&&(pe|=256),P.stencilBuffer&&(pe|=1024)),Be&&r.framebufferRenderbuffer(36008,36064,36161,re.__webglColorRenderbuffer[Ie]),ve===!0&&(r.invalidateFramebuffer(36008,[Fe]),r.invalidateFramebuffer(36009,[Fe])),Be){let U=n.get(D[Ie]).__webglTexture;r.framebufferTexture2D(36009,36064,3553,U,0)}r.blitFramebuffer(0,0,K,he,0,0,K,he,pe,9728),f&&r.invalidateFramebuffer(36008,Ee)}if(t.bindFramebuffer(36008,null),t.bindFramebuffer(36009,null),Be)for(let Ie=0;Ie<D.length;Ie++){t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Ie,36161,re.__webglColorRenderbuffer[Ie]);let ve=n.get(D[Ie]).__webglTexture;t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Ie,3553,ve,0)}t.bindFramebuffer(36009,re.__webglMultisampledFramebuffer)}}function Ce(P){return Math.min(h,P.samples)}function ye(P){let D=n.get(P);return a&&P.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&D.__useRenderToTexture!==!1}function Ne(P){let D=o.render.frame;m.get(P)!==D&&(m.set(P,D),P.update())}function dt(P,D){let K=P.encoding,he=P.format,pe=P.type;return P.isCompressedTexture===!0||P.isVideoTexture===!0||P.format===$p||K!==ar&&(K===We?a===!1?e.has("EXT_sRGB")===!0&&he===Rr?(P.format=$p,P.minFilter=et,P.generateMipmaps=!1):D=Ah.sRGBToLinear(D):(he!==Rr||pe!==Pt)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",K)),D}this.allocateTextureUnit=Y,this.resetTextureUnits=Z,this.setTexture2D=F,this.setTexture2DArray=G,this.setTexture3D=B,this.setTextureCube=k,this.rebindTextures=de,this.setupRenderTarget=ge,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=Te,this.setupDepthRenderbuffer=oe,this.setupFrameBufferTexture=V,this.useMultisampledRTT=ye}function ED(r,e,t){let n=t.isWebGL2;function i(s,o=null){let a;if(s===Pt)return 5121;if(s===yM)return 32819;if(s===vM)return 32820;if(s===pM)return 5120;if(s===mM)return 5122;if(s===nx)return 5123;if(s===gM)return 5124;if(s===Bi)return 5125;if(s===gr)return 5126;if(s===gc)return n?5131:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===xM)return 6406;if(s===Rr)return 6408;if(s===wM)return 6409;if(s===_M)return 6410;if(s===oo)return 6402;if(s===us)return 34041;if(s===SM)return 6403;if(s===bM)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(s===$p)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===AM)return 36244;if(s===MM)return 33319;if(s===TM)return 33320;if(s===EM)return 36249;if(s===dp||s===fp||s===pp||s===mp)if(o===We)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===dp)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===fp)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===pp)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===mp)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===dp)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===fp)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===pp)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===mp)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Cy||s===Dy||s===Py||s===Iy)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Cy)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Dy)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Py)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Iy)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===CM)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===Ly||s===Oy)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===Ly)return o===We?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Oy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Ry||s===Ny||s===By||s===Fy||s===Uy||s===zy||s===Gy||s===ky||s===Vy||s===Hy||s===Wy||s===jy||s===qy||s===Xy)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Ry)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Ny)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===By)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Fy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Uy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===zy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Gy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===ky)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===Vy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Hy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===Wy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===jy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===qy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===Xy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===Yy)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===Yy)return o===We?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return s===os?n?34042:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var dm=class extends Zt{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},is=class extends ot{constructor(){super(),this.isGroup=!0,this.type="Group"}},CD={type:"move"},fc=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new is,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new is,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new S,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new S),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new is,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new S,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new S),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let i=null,s=null,o=null,a=this._targetRay,l=this._grip,u=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(u&&e.hand){o=!0;for(let p of e.hand.values()){let g=t.getJointPose(p,n);if(u.joints[p.jointName]===void 0){let x=new is;x.matrixAutoUpdate=!1,x.visible=!1,u.joints[p.jointName]=x,u.add(x)}let y=u.joints[p.jointName];g!==null&&(y.matrix.fromArray(g.transform.matrix),y.matrix.decompose(y.position,y.rotation,y.scale),y.jointRadius=g.radius),y.visible=g!==null}let c=u.joints["index-finger-tip"],h=u.joints["thumb-tip"],d=c.position.distanceTo(h.position),f=.02,m=.005;u.inputState.pinching&&d>f+m?(u.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!u.inputState.pinching&&d<=f-m&&(u.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(CD)))}return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=s!==null),u!==null&&(u.visible=o!==null),this}},vr=class extends It{constructor(e,t,n,i,s,o,a,l,u,c){if(c=c!==void 0?c:oo,c!==oo&&c!==us)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&c===oo&&(n=Bi),n===void 0&&c===us&&(n=os),super(null,i,s,o,a,l,c,n,u),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:Ut,this.minFilter=l!==void 0?l:Ut,this.flipY=!1,this.generateMipmaps=!1}},fm=class extends Rt{constructor(e,t){super();let n=this,i=null,s=1,o=null,a="local-floor",l=null,u=null,c=null,h=null,d=null,f=null,m=t.getContextAttributes(),p=null,g=null,y=[],x=[],w=new Zt;w.layers.enable(1),w.viewport=new Ve;let b=new Zt;b.layers.enable(2),b.viewport=new Ve;let _=[w,b],A=new dm;A.layers.enable(1),A.layers.enable(2);let M=null,v=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(z){let F=y[z];return F===void 0&&(F=new fc,y[z]=F),F.getTargetRaySpace()},this.getControllerGrip=function(z){let F=y[z];return F===void 0&&(F=new fc,y[z]=F),F.getGripSpace()},this.getHand=function(z){let F=y[z];return F===void 0&&(F=new fc,y[z]=F),F.getHandSpace()};function T(z){let F=x.indexOf(z.inputSource);if(F===-1)return;let G=y[F];G!==void 0&&G.dispatchEvent({type:z.type,data:z.inputSource})}function E(){i.removeEventListener("select",T),i.removeEventListener("selectstart",T),i.removeEventListener("selectend",T),i.removeEventListener("squeeze",T),i.removeEventListener("squeezestart",T),i.removeEventListener("squeezeend",T),i.removeEventListener("end",E),i.removeEventListener("inputsourceschange",C);for(let z=0;z<y.length;z++){let F=x[z];F!==null&&(x[z]=null,y[z].disconnect(F))}M=null,v=null,e.setRenderTarget(p),d=null,h=null,c=null,i=null,g=null,Y.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(z){s=z,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(z){a=z,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||o},this.setReferenceSpace=function(z){l=z},this.getBaseLayer=function(){return h!==null?h:d},this.getBinding=function(){return c},this.getFrame=function(){return f},this.getSession=function(){return i},this.setSession=async function(z){if(i=z,i!==null){if(p=e.getRenderTarget(),i.addEventListener("select",T),i.addEventListener("selectstart",T),i.addEventListener("selectend",T),i.addEventListener("squeeze",T),i.addEventListener("squeezestart",T),i.addEventListener("squeezeend",T),i.addEventListener("end",E),i.addEventListener("inputsourceschange",C),m.xrCompatible!==!0&&await t.makeXRCompatible(),i.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let F={antialias:i.renderState.layers===void 0?m.antialias:!0,alpha:m.alpha,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(i,t,F),i.updateRenderState({baseLayer:d}),g=new lt(d.framebufferWidth,d.framebufferHeight,{format:Rr,type:Pt,encoding:e.outputEncoding})}else{let F=null,G=null,B=null;m.depth&&(B=m.stencil?35056:33190,F=m.stencil?us:oo,G=m.stencil?os:Bi);let k={colorFormat:32856,depthFormat:B,scaleFactor:s};c=new XRWebGLBinding(i,t),h=c.createProjectionLayer(k),i.updateRenderState({layers:[h]}),g=new lt(h.textureWidth,h.textureHeight,{format:Rr,type:Pt,depthTexture:new vr(h.textureWidth,h.textureHeight,G,void 0,void 0,void 0,void 0,void 0,void 0,F),stencilBuffer:m.stencil,encoding:e.outputEncoding,samples:m.antialias?4:0});let H=e.properties.get(g);H.__ignoreDepthValues=h.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(1),l=null,o=await i.requestReferenceSpace(a),Y.setContext(i),Y.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}};function C(z){for(let F=0;F<z.removed.length;F++){let G=z.removed[F],B=x.indexOf(G);B>=0&&(x[B]=null,y[B].dispatchEvent({type:"disconnected",data:G}))}for(let F=0;F<z.added.length;F++){let G=z.added[F],B=x.indexOf(G);if(B===-1){for(let H=0;H<y.length;H++)if(H>=x.length){x.push(G),B=H;break}else if(x[H]===null){x[H]=G,B=H;break}if(B===-1)break}let k=y[B];k&&k.dispatchEvent({type:"connected",data:G})}}let L=new S,R=new S;function O(z,F,G){L.setFromMatrixPosition(F.matrixWorld),R.setFromMatrixPosition(G.matrixWorld);let B=L.distanceTo(R),k=F.projectionMatrix.elements,H=G.projectionMatrix.elements,X=k[14]/(k[10]-1),q=k[14]/(k[10]+1),ae=(k[9]+1)/k[5],$=(k[9]-1)/k[5],te=(k[8]-1)/k[0],V=(H[8]+1)/H[0],le=X*te,ce=X*V,oe=B/(-te+V),de=oe*-te;F.matrixWorld.decompose(z.position,z.quaternion,z.scale),z.translateX(de),z.translateZ(oe),z.matrixWorld.compose(z.position,z.quaternion,z.scale),z.matrixWorldInverse.copy(z.matrixWorld).invert();let ge=X+oe,fe=q+oe,Te=le-de,Ce=ce+(B-de),ye=ae*q/fe*ge,Ne=$*q/fe*ge;z.projectionMatrix.makePerspective(Te,Ce,ye,Ne,ge,fe)}function W(z,F){F===null?z.matrixWorld.copy(z.matrix):z.matrixWorld.multiplyMatrices(F.matrixWorld,z.matrix),z.matrixWorldInverse.copy(z.matrixWorld).invert()}this.updateCamera=function(z){if(i===null)return;A.near=b.near=w.near=z.near,A.far=b.far=w.far=z.far,(M!==A.near||v!==A.far)&&(i.updateRenderState({depthNear:A.near,depthFar:A.far}),M=A.near,v=A.far);let F=z.parent,G=A.cameras;W(A,F);for(let k=0;k<G.length;k++)W(G[k],F);A.matrixWorld.decompose(A.position,A.quaternion,A.scale),z.position.copy(A.position),z.quaternion.copy(A.quaternion),z.scale.copy(A.scale),z.matrix.copy(A.matrix),z.matrixWorld.copy(A.matrixWorld);let B=z.children;for(let k=0,H=B.length;k<H;k++)B[k].updateMatrixWorld(!0);G.length===2?O(A,w,b):A.projectionMatrix.copy(w.projectionMatrix)},this.getCamera=function(){return A},this.getFoveation=function(){if(h!==null)return h.fixedFoveation;if(d!==null)return d.fixedFoveation},this.setFoveation=function(z){h!==null&&(h.fixedFoveation=z),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=z)};let j=null;function Z(z,F){if(u=F.getViewerPose(l||o),f=F,u!==null){let G=u.views;d!==null&&(e.setRenderTargetFramebuffer(g,d.framebuffer),e.setRenderTarget(g));let B=!1;G.length!==A.cameras.length&&(A.cameras.length=0,B=!0);for(let k=0;k<G.length;k++){let H=G[k],X=null;if(d!==null)X=d.getViewport(H);else{let ae=c.getViewSubImage(h,H);X=ae.viewport,k===0&&(e.setRenderTargetTextures(g,ae.colorTexture,h.ignoreDepthValues?void 0:ae.depthStencilTexture),e.setRenderTarget(g))}let q=_[k];q===void 0&&(q=new Zt,q.layers.enable(k),q.viewport=new Ve,_[k]=q),q.matrix.fromArray(H.transform.matrix),q.projectionMatrix.fromArray(H.projectionMatrix),q.viewport.set(X.x,X.y,X.width,X.height),k===0&&A.matrix.copy(q.matrix),B===!0&&A.cameras.push(q)}}for(let G=0;G<y.length;G++){let B=x[G],k=y[G];B!==null&&k!==void 0&&k.update(B,F,l||o)}j&&j(z,F),f=null}let Y=new sx;Y.setAnimationLoop(Z),this.setAnimationLoop=function(z){j=z},this.dispose=function(){}}};function DD(r,e){function t(p,g){p.fogColor.value.copy(g.color),g.isFog?(p.fogNear.value=g.near,p.fogFar.value=g.far):g.isFogExp2&&(p.fogDensity.value=g.density)}function n(p,g,y,x,w){g.isMeshBasicMaterial||g.isMeshLambertMaterial?i(p,g):g.isMeshToonMaterial?(i(p,g),c(p,g)):g.isMeshPhongMaterial?(i(p,g),u(p,g)):g.isMeshStandardMaterial?(i(p,g),h(p,g),g.isMeshPhysicalMaterial&&d(p,g,w)):g.isMeshMatcapMaterial?(i(p,g),f(p,g)):g.isMeshDepthMaterial?i(p,g):g.isMeshDistanceMaterial?(i(p,g),m(p,g)):g.isMeshNormalMaterial?i(p,g):g.isLineBasicMaterial?(s(p,g),g.isLineDashedMaterial&&o(p,g)):g.isPointsMaterial?a(p,g,y,x):g.isSpriteMaterial?l(p,g):g.isShadowMaterial?(p.color.value.copy(g.color),p.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function i(p,g){p.opacity.value=g.opacity,g.color&&p.diffuse.value.copy(g.color),g.emissive&&p.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(p.map.value=g.map),g.alphaMap&&(p.alphaMap.value=g.alphaMap),g.bumpMap&&(p.bumpMap.value=g.bumpMap,p.bumpScale.value=g.bumpScale,g.side===bn&&(p.bumpScale.value*=-1)),g.displacementMap&&(p.displacementMap.value=g.displacementMap,p.displacementScale.value=g.displacementScale,p.displacementBias.value=g.displacementBias),g.emissiveMap&&(p.emissiveMap.value=g.emissiveMap),g.normalMap&&(p.normalMap.value=g.normalMap,p.normalScale.value.copy(g.normalScale),g.side===bn&&p.normalScale.value.negate()),g.specularMap&&(p.specularMap.value=g.specularMap),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let y=e.get(g).envMap;if(y&&(p.envMap.value=y,p.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=g.reflectivity,p.ior.value=g.ior,p.refractionRatio.value=g.refractionRatio),g.lightMap){p.lightMap.value=g.lightMap;let b=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=g.lightMapIntensity*b}g.aoMap&&(p.aoMap.value=g.aoMap,p.aoMapIntensity.value=g.aoMapIntensity);let x;g.map?x=g.map:g.specularMap?x=g.specularMap:g.displacementMap?x=g.displacementMap:g.normalMap?x=g.normalMap:g.bumpMap?x=g.bumpMap:g.roughnessMap?x=g.roughnessMap:g.metalnessMap?x=g.metalnessMap:g.alphaMap?x=g.alphaMap:g.emissiveMap?x=g.emissiveMap:g.clearcoatMap?x=g.clearcoatMap:g.clearcoatNormalMap?x=g.clearcoatNormalMap:g.clearcoatRoughnessMap?x=g.clearcoatRoughnessMap:g.iridescenceMap?x=g.iridescenceMap:g.iridescenceThicknessMap?x=g.iridescenceThicknessMap:g.specularIntensityMap?x=g.specularIntensityMap:g.specularColorMap?x=g.specularColorMap:g.transmissionMap?x=g.transmissionMap:g.thicknessMap?x=g.thicknessMap:g.sheenColorMap?x=g.sheenColorMap:g.sheenRoughnessMap&&(x=g.sheenRoughnessMap),x!==void 0&&(x.isWebGLRenderTarget&&(x=x.texture),x.matrixAutoUpdate===!0&&x.updateMatrix(),p.uvTransform.value.copy(x.matrix));let w;g.aoMap?w=g.aoMap:g.lightMap&&(w=g.lightMap),w!==void 0&&(w.isWebGLRenderTarget&&(w=w.texture),w.matrixAutoUpdate===!0&&w.updateMatrix(),p.uv2Transform.value.copy(w.matrix))}function s(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity}function o(p,g){p.dashSize.value=g.dashSize,p.totalSize.value=g.dashSize+g.gapSize,p.scale.value=g.scale}function a(p,g,y,x){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.size.value=g.size*y,p.scale.value=x*.5,g.map&&(p.map.value=g.map),g.alphaMap&&(p.alphaMap.value=g.alphaMap),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let w;g.map?w=g.map:g.alphaMap&&(w=g.alphaMap),w!==void 0&&(w.matrixAutoUpdate===!0&&w.updateMatrix(),p.uvTransform.value.copy(w.matrix))}function l(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.rotation.value=g.rotation,g.map&&(p.map.value=g.map),g.alphaMap&&(p.alphaMap.value=g.alphaMap),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let y;g.map?y=g.map:g.alphaMap&&(y=g.alphaMap),y!==void 0&&(y.matrixAutoUpdate===!0&&y.updateMatrix(),p.uvTransform.value.copy(y.matrix))}function u(p,g){p.specular.value.copy(g.specular),p.shininess.value=Math.max(g.shininess,1e-4)}function c(p,g){g.gradientMap&&(p.gradientMap.value=g.gradientMap)}function h(p,g){p.roughness.value=g.roughness,p.metalness.value=g.metalness,g.roughnessMap&&(p.roughnessMap.value=g.roughnessMap),g.metalnessMap&&(p.metalnessMap.value=g.metalnessMap),e.get(g).envMap&&(p.envMapIntensity.value=g.envMapIntensity)}function d(p,g,y){p.ior.value=g.ior,g.sheen>0&&(p.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),p.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(p.sheenColorMap.value=g.sheenColorMap),g.sheenRoughnessMap&&(p.sheenRoughnessMap.value=g.sheenRoughnessMap)),g.clearcoat>0&&(p.clearcoat.value=g.clearcoat,p.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(p.clearcoatMap.value=g.clearcoatMap),g.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap),g.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),p.clearcoatNormalMap.value=g.clearcoatNormalMap,g.side===bn&&p.clearcoatNormalScale.value.negate())),g.iridescence>0&&(p.iridescence.value=g.iridescence,p.iridescenceIOR.value=g.iridescenceIOR,p.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(p.iridescenceMap.value=g.iridescenceMap),g.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=g.iridescenceThicknessMap)),g.transmission>0&&(p.transmission.value=g.transmission,p.transmissionSamplerMap.value=y.texture,p.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(p.transmissionMap.value=g.transmissionMap),p.thickness.value=g.thickness,g.thicknessMap&&(p.thicknessMap.value=g.thicknessMap),p.attenuationDistance.value=g.attenuationDistance,p.attenuationColor.value.copy(g.attenuationColor)),p.specularIntensity.value=g.specularIntensity,p.specularColor.value.copy(g.specularColor),g.specularIntensityMap&&(p.specularIntensityMap.value=g.specularIntensityMap),g.specularColorMap&&(p.specularColorMap.value=g.specularColorMap)}function f(p,g){g.matcap&&(p.matcap.value=g.matcap)}function m(p,g){p.referencePosition.value.copy(g.referencePosition),p.nearDistance.value=g.nearDistance,p.farDistance.value=g.farDistance}return{refreshFogUniforms:t,refreshMaterialUniforms:n}}function PD(){let r=Sh("canvas");return r.style.display="block",r}function Um(r={}){this.isWebGLRenderer=!0;let e=r.canvas!==void 0?r.canvas:PD(),t=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,o=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,a=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,l=r.powerPreference!==void 0?r.powerPreference:"default",u=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,c;t!==null?c=t.getContextAttributes().alpha:c=r.alpha!==void 0?r.alpha:!1;let h=null,d=null,f=[],m=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=ar,this.physicallyCorrectLights=!1,this.toneMapping=Fi,this.toneMappingExposure=1,Object.defineProperties(this,{gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});let p=this,g=!1,y=0,x=0,w=null,b=-1,_=null,A=new Ve,M=new Ve,v=null,T=e.width,E=e.height,C=1,L=null,R=null,O=new Ve(0,0,T,E),W=new Ve(0,0,T,E),j=!1,Z=new xc,Y=!1,z=!1,F=null,G=new Oe,B=new N,k=new S,H={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function X(){return w===null?C:1}let q=t;function ae(I,J){for(let ie=0;ie<I.length;ie++){let ne=I[ie],ue=e.getContext(ne,J);if(ue!==null)return ue}return null}try{let I={alpha:!0,depth:n,stencil:i,antialias:s,premultipliedAlpha:o,preserveDrawingBuffer:a,powerPreference:l,failIfMajorPerformanceCaveat:u};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${bo}`),e.addEventListener("webglcontextlost",U,!1),e.addEventListener("webglcontextrestored",xe,!1),e.addEventListener("webglcontextcreationerror",Se,!1),q===null){let J=["webgl2","webgl","experimental-webgl"];if(p.isWebGL1Renderer===!0&&J.shift(),q=ae(J,I),q===null)throw ae(J)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}q.getShaderPrecisionFormat===void 0&&(q.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(I){throw console.error("THREE.WebGLRenderer: "+I.message),I}let $,te,V,le,ce,oe,de,ge,fe,Te,Ce,ye,Ne,dt,P,D,K,he,pe,Ee,Fe,re,Be;function Ie(){$=new KC(q),te=new jC(q,$,r),$.init(te),re=new ED(q,$,te),V=new MD(q,$,te),le=new e2,ce=new fD,oe=new TD(q,$,V,ce,te,re,le),de=new XC(p),ge=new ZC(p),fe=new dT(q,te),Be=new HC(q,$,fe,te),Te=new JC(q,fe,le,Be),Ce=new i2(q,Te,fe,le),pe=new r2(q,te,oe),D=new qC(ce),ye=new dD(p,de,ge,$,te,Be,D),Ne=new DD(p,ce),dt=new mD,P=new wD($,te),he=new VC(p,de,V,Ce,c,o),K=new AD(p,Ce,te),Ee=new WC(q,$,le,te),Fe=new $C(q,$,le,te),le.programs=ye.programs,p.capabilities=te,p.extensions=$,p.properties=ce,p.renderLists=dt,p.shadowMap=K,p.state=V,p.info=le}Ie();let ve=new fm(p,q);this.xr=ve,this.getContext=function(){return q},this.getContextAttributes=function(){return q.getContextAttributes()},this.forceContextLoss=function(){let I=$.get("WEBGL_lose_context");I&&I.loseContext()},this.forceContextRestore=function(){let I=$.get("WEBGL_lose_context");I&&I.restoreContext()},this.getPixelRatio=function(){return C},this.setPixelRatio=function(I){I!==void 0&&(C=I,this.setSize(T,E,!1))},this.getSize=function(I){return I.set(T,E)},this.setSize=function(I,J,ie){if(ve.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}T=I,E=J,e.width=Math.floor(I*C),e.height=Math.floor(J*C),ie!==!1&&(e.style.width=I+"px",e.style.height=J+"px"),this.setViewport(0,0,I,J)},this.getDrawingBufferSize=function(I){return I.set(T*C,E*C).floor()},this.setDrawingBufferSize=function(I,J,ie){T=I,E=J,C=ie,e.width=Math.floor(I*ie),e.height=Math.floor(J*ie),this.setViewport(0,0,I,J)},this.getCurrentViewport=function(I){return I.copy(A)},this.getViewport=function(I){return I.copy(O)},this.setViewport=function(I,J,ie,ne){I.isVector4?O.set(I.x,I.y,I.z,I.w):O.set(I,J,ie,ne),V.viewport(A.copy(O).multiplyScalar(C).floor())},this.getScissor=function(I){return I.copy(W)},this.setScissor=function(I,J,ie,ne){I.isVector4?W.set(I.x,I.y,I.z,I.w):W.set(I,J,ie,ne),V.scissor(M.copy(W).multiplyScalar(C).floor())},this.getScissorTest=function(){return j},this.setScissorTest=function(I){V.setScissorTest(j=I)},this.setOpaqueSort=function(I){L=I},this.setTransparentSort=function(I){R=I},this.getClearColor=function(I){return I.copy(he.getClearColor())},this.setClearColor=function(){he.setClearColor.apply(he,arguments)},this.getClearAlpha=function(){return he.getClearAlpha()},this.setClearAlpha=function(){he.setClearAlpha.apply(he,arguments)},this.clear=function(I=!0,J=!0,ie=!0){let ne=0;I&&(ne|=16384),J&&(ne|=256),ie&&(ne|=1024),q.clear(ne)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",U,!1),e.removeEventListener("webglcontextrestored",xe,!1),e.removeEventListener("webglcontextcreationerror",Se,!1),dt.dispose(),P.dispose(),ce.dispose(),de.dispose(),ge.dispose(),Ce.dispose(),Be.dispose(),ye.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",tt),ve.removeEventListener("sessionend",ft),F&&(F.dispose(),F=null),wt.stop()};function U(I){I.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),g=!0}function xe(){console.log("THREE.WebGLRenderer: Context Restored."),g=!1;let I=le.autoReset,J=K.enabled,ie=K.autoUpdate,ne=K.needsUpdate,ue=K.type;Ie(),le.autoReset=I,K.enabled=J,K.autoUpdate=ie,K.needsUpdate=ne,K.type=ue}function Se(I){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",I.statusMessage)}function Xe(I){let J=I.target;J.removeEventListener("dispose",Xe),Le(J)}function Le(I){Ye(I),ce.remove(I)}function Ye(I){let J=ce.get(I).programs;J!==void 0&&(J.forEach(function(ie){ye.releaseProgram(ie)}),I.isShaderMaterial&&ye.releaseShaderCache(I))}this.renderBufferDirect=function(I,J,ie,ne,ue,Ze){J===null&&(J=H);let $e=ue.isMesh&&ue.matrixWorld.determinant()<0,rt=CA(I,J,ie,ne,ue);V.setMaterial(ne,$e);let nt=ie.index,Tt=ie.attributes.position;if(nt===null){if(Tt===void 0||Tt.count===0)return}else if(nt.count===0)return;let ut=1;ne.wireframe===!0&&(nt=Te.getWireframeAttribute(ie),ut=2),Be.setup(ue,ne,rt,ie,nt);let pt,Wt=Ee;nt!==null&&(pt=fe.get(nt),Wt=Fe,Wt.setIndex(pt));let $s=nt!==null?nt.count:Tt.count,Go=ie.drawRange.start*ut,ko=ie.drawRange.count*ut,Jr=Ze!==null?Ze.start*ut:0,_t=Ze!==null?Ze.count*ut:1/0,Vo=Math.max(Go,Jr),tn=Math.min($s,Go+ko,Jr+_t)-1,$r=Math.max(0,tn-Vo+1);if($r!==0){if(ue.isMesh)ne.wireframe===!0?(V.setLineWidth(ne.wireframeLinewidth*X()),Wt.setMode(1)):Wt.setMode(4);else if(ue.isLine){let Zi=ne.linewidth;Zi===void 0&&(Zi=1),V.setLineWidth(Zi*X()),ue.isLineSegments?Wt.setMode(1):ue.isLineLoop?Wt.setMode(2):Wt.setMode(3)}else ue.isPoints?Wt.setMode(0):ue.isSprite&&Wt.setMode(4);if(ue.isInstancedMesh)Wt.renderInstances(Vo,$r,ue.count);else if(ie.isInstancedBufferGeometry){let Zi=Math.min(ie.instanceCount,ie._maxInstanceCount);Wt.renderInstances(Vo,$r,Zi)}else Wt.render(Vo,$r)}},this.compile=function(I,J){d=P.get(I),d.init(),m.push(d),I.traverseVisible(function(ie){ie.isLight&&ie.layers.test(J.layers)&&(d.pushLight(ie),ie.castShadow&&d.pushShadow(ie))}),d.setupLights(p.physicallyCorrectLights),I.traverse(function(ie){let ne=ie.material;if(ne)if(Array.isArray(ne))for(let ue=0;ue<ne.length;ue++){let Ze=ne[ue];lp(Ze,I,ie)}else lp(ne,I,ie)}),m.pop(),d=null};let be=null;function Qe(I){be&&be(I)}function tt(){wt.stop()}function ft(){wt.start()}let wt=new sx;wt.setAnimationLoop(Qe),typeof self<"u"&&wt.setContext(self),this.setAnimationLoop=function(I){be=I,ve.setAnimationLoop(I),I===null?wt.stop():wt.start()},ve.addEventListener("sessionstart",tt),ve.addEventListener("sessionend",ft),this.render=function(I,J){if(J!==void 0&&J.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(g===!0)return;I.autoUpdate===!0&&I.updateMatrixWorld(),J.parent===null&&J.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(J),J=ve.getCamera()),I.isScene===!0&&I.onBeforeRender(p,I,J,w),d=P.get(I,m.length),d.init(),m.push(d),G.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),Z.setFromProjectionMatrix(G),z=this.localClippingEnabled,Y=D.init(this.clippingPlanes,z,J),h=dt.get(I,f.length),h.init(),f.push(h),Yn(I,J,0,p.sortObjects),h.finish(),p.sortObjects===!0&&h.sort(L,R),Y===!0&&D.beginShadows();let ie=d.state.shadowsArray;if(K.render(ie,I,J),Y===!0&&D.endShadows(),this.info.autoReset===!0&&this.info.reset(),he.render(h,I),d.setupLights(p.physicallyCorrectLights),J.isArrayCamera){let ne=J.cameras;for(let ue=0,Ze=ne.length;ue<Ze;ue++){let $e=ne[ue];Hu(h,I,$e,$e.viewport)}}else Hu(h,I,J);w!==null&&(oe.updateMultisampleRenderTarget(w),oe.updateRenderTargetMipmap(w)),I.isScene===!0&&I.onAfterRender(p,I,J),Be.resetDefaultState(),b=-1,_=null,m.pop(),m.length>0?d=m[m.length-1]:d=null,f.pop(),f.length>0?h=f[f.length-1]:h=null};function Yn(I,J,ie,ne){if(I.visible===!1)return;if(I.layers.test(J.layers)){if(I.isGroup)ie=I.renderOrder;else if(I.isLOD)I.autoUpdate===!0&&I.update(J);else if(I.isLight)d.pushLight(I),I.castShadow&&d.pushShadow(I);else if(I.isSprite){if(!I.frustumCulled||Z.intersectsSprite(I)){ne&&k.setFromMatrixPosition(I.matrixWorld).applyMatrix4(G);let $e=Ce.update(I),rt=I.material;rt.visible&&h.push(I,$e,rt,ie,k.z,null)}}else if((I.isMesh||I.isLine||I.isPoints)&&(I.isSkinnedMesh&&I.skeleton.frame!==le.render.frame&&(I.skeleton.update(),I.skeleton.frame=le.render.frame),!I.frustumCulled||Z.intersectsObject(I))){ne&&k.setFromMatrixPosition(I.matrixWorld).applyMatrix4(G);let $e=Ce.update(I),rt=I.material;if(Array.isArray(rt)){let nt=$e.groups;for(let Tt=0,ut=nt.length;Tt<ut;Tt++){let pt=nt[Tt],Wt=rt[pt.materialIndex];Wt&&Wt.visible&&h.push(I,$e,Wt,ie,k.z,pt)}}else rt.visible&&h.push(I,$e,rt,ie,k.z,null)}}let Ze=I.children;for(let $e=0,rt=Ze.length;$e<rt;$e++)Yn(Ze[$e],J,ie,ne)}function Hu(I,J,ie,ne){let ue=I.opaque,Ze=I.transmissive,$e=I.transparent;d.setupLightsView(ie),Ze.length>0&&zo(ue,J,ie),ne&&V.viewport(A.copy(ne)),ue.length>0&&Wu(ue,J,ie),Ze.length>0&&Wu(Ze,J,ie),$e.length>0&&Wu($e,J,ie),V.buffers.depth.setTest(!0),V.buffers.depth.setMask(!0),V.buffers.color.setMask(!0),V.setPolygonOffset(!1)}function zo(I,J,ie){let ne=te.isWebGL2;F===null&&(F=new lt(1,1,{generateMipmaps:!0,type:$.has("EXT_color_buffer_half_float")?gc:Pt,minFilter:gs,samples:ne&&s===!0?4:0})),p.getDrawingBufferSize(B),ne?F.setSize(B.x,B.y):F.setSize(_h(B.x),_h(B.y));let ue=p.getRenderTarget();p.setRenderTarget(F),p.clear();let Ze=p.toneMapping;p.toneMapping=Fi,Wu(I,J,ie),p.toneMapping=Ze,oe.updateMultisampleRenderTarget(F),oe.updateRenderTargetMipmap(F),p.setRenderTarget(ue)}function Wu(I,J,ie){let ne=J.isScene===!0?J.overrideMaterial:null;for(let ue=0,Ze=I.length;ue<Ze;ue++){let $e=I[ue],rt=$e.object,nt=$e.geometry,Tt=ne===null?$e.material:ne,ut=$e.group;rt.layers.test(ie.layers)&&EA(rt,J,ie,nt,Tt,ut)}}function EA(I,J,ie,ne,ue,Ze){I.onBeforeRender(p,J,ie,ne,ue,Ze),I.modelViewMatrix.multiplyMatrices(ie.matrixWorldInverse,I.matrixWorld),I.normalMatrix.getNormalMatrix(I.modelViewMatrix),ue.onBeforeRender(p,J,ie,ne,I,Ze),ue.transparent===!0&&ue.side===wn?(ue.side=bn,ue.needsUpdate=!0,p.renderBufferDirect(ie,J,ne,ue,I,Ze),ue.side=Ui,ue.needsUpdate=!0,p.renderBufferDirect(ie,J,ne,ue,I,Ze),ue.side=wn):p.renderBufferDirect(ie,J,ne,ue,I,Ze),I.onAfterRender(p,J,ie,ne,ue,Ze)}function lp(I,J,ie){J.isScene!==!0&&(J=H);let ne=ce.get(I),ue=d.state.lights,Ze=d.state.shadowsArray,$e=ue.state.version,rt=ye.getParameters(I,ue.state,Ze,J,ie),nt=ye.getProgramCacheKey(rt),Tt=ne.programs;ne.environment=I.isMeshStandardMaterial?J.environment:null,ne.fog=J.fog,ne.envMap=(I.isMeshStandardMaterial?ge:de).get(I.envMap||ne.environment),Tt===void 0&&(I.addEventListener("dispose",Xe),Tt=new Map,ne.programs=Tt);let ut=Tt.get(nt);if(ut!==void 0){if(ne.currentProgram===ut&&ne.lightsStateVersion===$e)return yy(I,rt),ut}else rt.uniforms=ye.getUniforms(I),I.onBuild(ie,rt,p),I.onBeforeCompile(rt,p),ut=ye.acquireProgram(rt,nt),Tt.set(nt,ut),ne.uniforms=rt.uniforms;let pt=ne.uniforms;(!I.isShaderMaterial&&!I.isRawShaderMaterial||I.clipping===!0)&&(pt.clippingPlanes=D.uniform),yy(I,rt),ne.needsLights=PA(I),ne.lightsStateVersion=$e,ne.needsLights&&(pt.ambientLightColor.value=ue.state.ambient,pt.lightProbe.value=ue.state.probe,pt.directionalLights.value=ue.state.directional,pt.directionalLightShadows.value=ue.state.directionalShadow,pt.spotLights.value=ue.state.spot,pt.spotLightShadows.value=ue.state.spotShadow,pt.rectAreaLights.value=ue.state.rectArea,pt.ltc_1.value=ue.state.rectAreaLTC1,pt.ltc_2.value=ue.state.rectAreaLTC2,pt.pointLights.value=ue.state.point,pt.pointLightShadows.value=ue.state.pointShadow,pt.hemisphereLights.value=ue.state.hemi,pt.directionalShadowMap.value=ue.state.directionalShadowMap,pt.directionalShadowMatrix.value=ue.state.directionalShadowMatrix,pt.spotShadowMap.value=ue.state.spotShadowMap,pt.spotShadowMatrix.value=ue.state.spotShadowMatrix,pt.pointShadowMap.value=ue.state.pointShadowMap,pt.pointShadowMatrix.value=ue.state.pointShadowMatrix);let Wt=ut.getUniforms(),$s=oa.seqWithValue(Wt.seq,pt);return ne.currentProgram=ut,ne.uniformsList=$s,ut}function yy(I,J){let ie=ce.get(I);ie.outputEncoding=J.outputEncoding,ie.instancing=J.instancing,ie.skinning=J.skinning,ie.morphTargets=J.morphTargets,ie.morphNormals=J.morphNormals,ie.morphColors=J.morphColors,ie.morphTargetsCount=J.morphTargetsCount,ie.numClippingPlanes=J.numClippingPlanes,ie.numIntersection=J.numClipIntersection,ie.vertexAlphas=J.vertexAlphas,ie.vertexTangents=J.vertexTangents,ie.toneMapping=J.toneMapping}function CA(I,J,ie,ne,ue){J.isScene!==!0&&(J=H),oe.resetTextureUnits();let Ze=J.fog,$e=ne.isMeshStandardMaterial?J.environment:null,rt=w===null?p.outputEncoding:w.isXRRenderTarget===!0?w.texture.encoding:ar,nt=(ne.isMeshStandardMaterial?ge:de).get(ne.envMap||$e),Tt=ne.vertexColors===!0&&!!ie.attributes.color&&ie.attributes.color.itemSize===4,ut=!!ne.normalMap&&!!ie.attributes.tangent,pt=!!ie.morphAttributes.position,Wt=!!ie.morphAttributes.normal,$s=!!ie.morphAttributes.color,Go=ne.toneMapped?p.toneMapping:Fi,ko=ie.morphAttributes.position||ie.morphAttributes.normal||ie.morphAttributes.color,Jr=ko!==void 0?ko.length:0,_t=ce.get(ne),Vo=d.state.lights;if(Y===!0&&(z===!0||I!==_)){let ei=I===_&&ne.id===b;D.setState(ne,I,ei)}let tn=!1;ne.version===_t.__version?(_t.needsLights&&_t.lightsStateVersion!==Vo.state.version||_t.outputEncoding!==rt||ue.isInstancedMesh&&_t.instancing===!1||!ue.isInstancedMesh&&_t.instancing===!0||ue.isSkinnedMesh&&_t.skinning===!1||!ue.isSkinnedMesh&&_t.skinning===!0||_t.envMap!==nt||ne.fog===!0&&_t.fog!==Ze||_t.numClippingPlanes!==void 0&&(_t.numClippingPlanes!==D.numPlanes||_t.numIntersection!==D.numIntersection)||_t.vertexAlphas!==Tt||_t.vertexTangents!==ut||_t.morphTargets!==pt||_t.morphNormals!==Wt||_t.morphColors!==$s||_t.toneMapping!==Go||te.isWebGL2===!0&&_t.morphTargetsCount!==Jr)&&(tn=!0):(tn=!0,_t.__version=ne.version);let $r=_t.currentProgram;tn===!0&&($r=lp(ne,J,ue));let Zi=!1,rc=!1,cp=!1,Un=$r.getUniforms(),ic=_t.uniforms;if(V.useProgram($r.program)&&(Zi=!0,rc=!0,cp=!0),ne.id!==b&&(b=ne.id,rc=!0),Zi||_!==I){if(Un.setValue(q,"projectionMatrix",I.projectionMatrix),te.logarithmicDepthBuffer&&Un.setValue(q,"logDepthBufFC",2/(Math.log(I.far+1)/Math.LN2)),_!==I&&(_=I,rc=!0,cp=!0),ne.isShaderMaterial||ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshStandardMaterial||ne.envMap){let ei=Un.map.cameraPosition;ei!==void 0&&ei.setValue(q,k.setFromMatrixPosition(I.matrixWorld))}(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial)&&Un.setValue(q,"isOrthographic",I.isOrthographicCamera===!0),(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial||ne.isShadowMaterial||ue.isSkinnedMesh)&&Un.setValue(q,"viewMatrix",I.matrixWorldInverse)}if(ue.isSkinnedMesh){Un.setOptional(q,ue,"bindMatrix"),Un.setOptional(q,ue,"bindMatrixInverse");let ei=ue.skeleton;ei&&(te.floatVertexTextures?(ei.boneTexture===null&&ei.computeBoneTexture(),Un.setValue(q,"boneTexture",ei.boneTexture,oe),Un.setValue(q,"boneTextureSize",ei.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let up=ie.morphAttributes;return(up.position!==void 0||up.normal!==void 0||up.color!==void 0&&te.isWebGL2===!0)&&pe.update(ue,ie,ne,$r),(rc||_t.receiveShadow!==ue.receiveShadow)&&(_t.receiveShadow=ue.receiveShadow,Un.setValue(q,"receiveShadow",ue.receiveShadow)),rc&&(Un.setValue(q,"toneMappingExposure",p.toneMappingExposure),_t.needsLights&&DA(ic,cp),Ze&&ne.fog===!0&&Ne.refreshFogUniforms(ic,Ze),Ne.refreshMaterialUniforms(ic,ne,C,E,F),oa.upload(q,_t.uniformsList,ic,oe)),ne.isShaderMaterial&&ne.uniformsNeedUpdate===!0&&(oa.upload(q,_t.uniformsList,ic,oe),ne.uniformsNeedUpdate=!1),ne.isSpriteMaterial&&Un.setValue(q,"center",ue.center),Un.setValue(q,"modelViewMatrix",ue.modelViewMatrix),Un.setValue(q,"normalMatrix",ue.normalMatrix),Un.setValue(q,"modelMatrix",ue.matrixWorld),$r}function DA(I,J){I.ambientLightColor.needsUpdate=J,I.lightProbe.needsUpdate=J,I.directionalLights.needsUpdate=J,I.directionalLightShadows.needsUpdate=J,I.pointLights.needsUpdate=J,I.pointLightShadows.needsUpdate=J,I.spotLights.needsUpdate=J,I.spotLightShadows.needsUpdate=J,I.rectAreaLights.needsUpdate=J,I.hemisphereLights.needsUpdate=J}function PA(I){return I.isMeshLambertMaterial||I.isMeshToonMaterial||I.isMeshPhongMaterial||I.isMeshStandardMaterial||I.isShadowMaterial||I.isShaderMaterial&&I.lights===!0}this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return x},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(I,J,ie){ce.get(I.texture).__webglTexture=J,ce.get(I.depthTexture).__webglTexture=ie;let ne=ce.get(I);ne.__hasExternalTextures=!0,ne.__hasExternalTextures&&(ne.__autoAllocateDepthBuffer=ie===void 0,ne.__autoAllocateDepthBuffer||$.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),ne.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(I,J){let ie=ce.get(I);ie.__webglFramebuffer=J,ie.__useDefaultFramebuffer=J===void 0},this.setRenderTarget=function(I,J=0,ie=0){w=I,y=J,x=ie;let ne=!0;if(I){let nt=ce.get(I);nt.__useDefaultFramebuffer!==void 0?(V.bindFramebuffer(36160,null),ne=!1):nt.__webglFramebuffer===void 0?oe.setupRenderTarget(I):nt.__hasExternalTextures&&oe.rebindTextures(I,ce.get(I.texture).__webglTexture,ce.get(I.depthTexture).__webglTexture)}let ue=null,Ze=!1,$e=!1;if(I){let nt=I.texture;(nt.isData3DTexture||nt.isDataArrayTexture)&&($e=!0);let Tt=ce.get(I).__webglFramebuffer;I.isWebGLCubeRenderTarget?(ue=Tt[J],Ze=!0):te.isWebGL2&&I.samples>0&&oe.useMultisampledRTT(I)===!1?ue=ce.get(I).__webglMultisampledFramebuffer:ue=Tt,A.copy(I.viewport),M.copy(I.scissor),v=I.scissorTest}else A.copy(O).multiplyScalar(C).floor(),M.copy(W).multiplyScalar(C).floor(),v=j;if(V.bindFramebuffer(36160,ue)&&te.drawBuffers&&ne&&V.drawBuffers(I,ue),V.viewport(A),V.scissor(M),V.setScissorTest(v),Ze){let nt=ce.get(I.texture);q.framebufferTexture2D(36160,36064,34069+J,nt.__webglTexture,ie)}else if($e){let nt=ce.get(I.texture),Tt=J||0;q.framebufferTextureLayer(36160,36064,nt.__webglTexture,ie||0,Tt)}b=-1},this.readRenderTargetPixels=function(I,J,ie,ne,ue,Ze,$e){if(!(I&&I.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let rt=ce.get(I).__webglFramebuffer;if(I.isWebGLCubeRenderTarget&&$e!==void 0&&(rt=rt[$e]),rt){V.bindFramebuffer(36160,rt);try{let nt=I.texture,Tt=nt.format,ut=nt.type;if(Tt!==Rr&&re.convert(Tt)!==q.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let pt=ut===gc&&($.has("EXT_color_buffer_half_float")||te.isWebGL2&&$.has("EXT_color_buffer_float"));if(ut!==Pt&&re.convert(ut)!==q.getParameter(35738)&&!(ut===gr&&(te.isWebGL2||$.has("OES_texture_float")||$.has("WEBGL_color_buffer_float")))&&!pt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=I.width-ne&&ie>=0&&ie<=I.height-ue&&q.readPixels(J,ie,ne,ue,re.convert(Tt),re.convert(ut),Ze)}finally{let nt=w!==null?ce.get(w).__webglFramebuffer:null;V.bindFramebuffer(36160,nt)}}},this.copyFramebufferToTexture=function(I,J,ie=0){let ne=Math.pow(2,-ie),ue=Math.floor(J.image.width*ne),Ze=Math.floor(J.image.height*ne);oe.setTexture2D(J,0),q.copyTexSubImage2D(3553,ie,0,0,I.x,I.y,ue,Ze),V.unbindTexture()},this.copyTextureToTexture=function(I,J,ie,ne=0){let ue=J.image.width,Ze=J.image.height,$e=re.convert(ie.format),rt=re.convert(ie.type);oe.setTexture2D(ie,0),q.pixelStorei(37440,ie.flipY),q.pixelStorei(37441,ie.premultiplyAlpha),q.pixelStorei(3317,ie.unpackAlignment),J.isDataTexture?q.texSubImage2D(3553,ne,I.x,I.y,ue,Ze,$e,rt,J.image.data):J.isCompressedTexture?q.compressedTexSubImage2D(3553,ne,I.x,I.y,J.mipmaps[0].width,J.mipmaps[0].height,$e,J.mipmaps[0].data):q.texSubImage2D(3553,ne,I.x,I.y,$e,rt,J.image),ne===0&&ie.generateMipmaps&&q.generateMipmap(3553),V.unbindTexture()},this.copyTextureToTexture3D=function(I,J,ie,ne,ue=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Ze=I.max.x-I.min.x+1,$e=I.max.y-I.min.y+1,rt=I.max.z-I.min.z+1,nt=re.convert(ne.format),Tt=re.convert(ne.type),ut;if(ne.isData3DTexture)oe.setTexture3D(ne,0),ut=32879;else if(ne.isDataArrayTexture)oe.setTexture2DArray(ne,0),ut=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}q.pixelStorei(37440,ne.flipY),q.pixelStorei(37441,ne.premultiplyAlpha),q.pixelStorei(3317,ne.unpackAlignment);let pt=q.getParameter(3314),Wt=q.getParameter(32878),$s=q.getParameter(3316),Go=q.getParameter(3315),ko=q.getParameter(32877),Jr=ie.isCompressedTexture?ie.mipmaps[0]:ie.image;q.pixelStorei(3314,Jr.width),q.pixelStorei(32878,Jr.height),q.pixelStorei(3316,I.min.x),q.pixelStorei(3315,I.min.y),q.pixelStorei(32877,I.min.z),ie.isDataTexture||ie.isData3DTexture?q.texSubImage3D(ut,ue,J.x,J.y,J.z,Ze,$e,rt,nt,Tt,Jr.data):ie.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),q.compressedTexSubImage3D(ut,ue,J.x,J.y,J.z,Ze,$e,rt,nt,Jr.data)):q.texSubImage3D(ut,ue,J.x,J.y,J.z,Ze,$e,rt,nt,Tt,Jr),q.pixelStorei(3314,pt),q.pixelStorei(32878,Wt),q.pixelStorei(3316,$s),q.pixelStorei(3315,Go),q.pixelStorei(32877,ko),ue===0&&ne.generateMipmaps&&q.generateMipmap(ut),V.unbindTexture()},this.initTexture=function(I){I.isCubeTexture?oe.setTextureCube(I,0):I.isData3DTexture?oe.setTexture3D(I,0):I.isDataArrayTexture?oe.setTexture2DArray(I,0):oe.setTexture2D(I,0),V.unbindTexture()},this.resetState=function(){y=0,x=0,w=null,V.reset(),Be.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var pm=class extends Um{};pm.prototype.isWebGL1Renderer=!0;var ha=class{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new Re(e),this.near=t,this.far=n}clone(){return new ha(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},lr=class extends ot{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}},Dh=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Jp,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=ni()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,s=this.stride;i<s;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=ni()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=ni()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},zn=new S,co=class{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=i===!0}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)zn.fromBufferAttribute(this,t),zn.applyMatrix4(e),this.setXYZ(t,zn.x,zn.y,zn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)zn.fromBufferAttribute(this,t),zn.applyNormalMatrix(e),this.setXYZ(t,zn.x,zn.y,zn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)zn.fromBufferAttribute(this,t),zn.transformDirection(e),this.setXYZ(t,zn.x,zn.y,zn.z);return this}setX(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){return this.data.array[e*this.data.stride+this.offset]}getY(e){return this.data.array[e*this.data.stride+this.offset+1]}getZ(e){return this.data.array[e*this.data.stride+this.offset+2]}getW(e){return this.data.array[e*this.data.stride+this.offset+3]}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,s){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=s,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let n=0;n<this.count;n++){let i=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[i+s])}return new je(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new co(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let n=0;n<this.count;n++){let i=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[i+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}};var Ph=class extends je{constructor(e,t,n,i=1){typeof n=="number"&&(i=n,n=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}};var xr=class extends lo{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Re(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},Lv=new S,Ov=new S,Rv=new Oe,Hp=new zi,dh=new Ln,uo=class extends ot{constructor(e=new Pe,t=new xr){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[0];for(let i=1,s=t.count;i<s;i++)Lv.fromBufferAttribute(t,i-1),Ov.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=Lv.distanceTo(Ov);e.setAttribute("lineDistance",new _e(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){let n=this.geometry,i=this.matrixWorld,s=e.params.Line.threshold,o=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),dh.copy(n.boundingSphere),dh.applyMatrix4(i),dh.radius+=s,e.ray.intersectsSphere(dh)===!1)return;Rv.copy(i).invert(),Hp.copy(e.ray).applyMatrix4(Rv);let a=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=a*a,u=new S,c=new S,h=new S,d=new S,f=this.isLineSegments?2:1,m=n.index,g=n.attributes.position;if(m!==null){let y=Math.max(0,o.start),x=Math.min(m.count,o.start+o.count);for(let w=y,b=x-1;w<b;w+=f){let _=m.getX(w),A=m.getX(w+1);if(u.fromBufferAttribute(g,_),c.fromBufferAttribute(g,A),Hp.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let v=e.ray.origin.distanceTo(d);v<e.near||v>e.far||t.push({distance:v,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}else{let y=Math.max(0,o.start),x=Math.min(g.count,o.start+o.count);for(let w=y,b=x-1;w<b;w+=f){if(u.fromBufferAttribute(g,w),c.fromBufferAttribute(g,w+1),Hp.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let A=e.ray.origin.distanceTo(d);A<e.near||A>e.far||t.push({distance:A,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s<o;s++){let a=i[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[a]=s}}}}},Nv=new S,Bv=new S,ds=class extends uo{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[];for(let i=0,s=t.count;i<s;i+=2)Nv.fromBufferAttribute(t,i),Bv.fromBufferAttribute(t,i+1),n[i]=i===0?0:n[i-1],n[i+1]=n[i]+Nv.distanceTo(Bv);e.setAttribute("lineDistance",new _e(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}};var br=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,i=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)n=this.getPoint(o/e),s+=n.distanceTo(i),t.push(s),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let n=this.getLengths(),i=0,s=n.length,o;t?o=t:o=e*n[s-1];let a=0,l=s-1,u;for(;a<=l;)if(i=Math.floor(a+(l-a)/2),u=n[i]-o,u<0)a=i+1;else if(u>0)l=i-1;else{l=i;break}if(i=l,n[i]===o)return i/(s-1);let c=n[i],d=n[i+1]-c,f=(o-c)/d;return(i+f)/(s-1)}getTangent(e,t){let i=e-1e-4,s=e+1e-4;i<0&&(i=0),s>1&&(s=1);let o=this.getPoint(i),a=this.getPoint(s),l=t||(o.isVector2?new N:new S);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new S,i=[],s=[],o=[],a=new S,l=new Oe;for(let f=0;f<=e;f++){let m=f/e;i[f]=this.getTangentAt(m,new S)}s[0]=new S,o[0]=new S;let u=Number.MAX_VALUE,c=Math.abs(i[0].x),h=Math.abs(i[0].y),d=Math.abs(i[0].z);c<=u&&(u=c,n.set(1,0,0)),h<=u&&(u=h,n.set(0,1,0)),d<=u&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),s[0].crossVectors(i[0],a),o[0].crossVectors(i[0],s[0]);for(let f=1;f<=e;f++){if(s[f]=s[f-1].clone(),o[f]=o[f-1].clone(),a.crossVectors(i[f-1],i[f]),a.length()>Number.EPSILON){a.normalize();let m=Math.acos(cn(i[f-1].dot(i[f]),-1,1));s[f].applyMatrix4(l.makeRotationAxis(a,m))}o[f].crossVectors(i[f],s[f])}if(t===!0){let f=Math.acos(cn(s[0].dot(s[e]),-1,1));f/=e,i[0].dot(a.crossVectors(s[0],s[e]))>0&&(f=-f);for(let m=1;m<=e;m++)s[m].applyMatrix4(l.makeRotationAxis(i[m],f*m)),o[m].crossVectors(i[m],s[m])}return{tangents:i,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},ho=class extends br{constructor(e=0,t=0,n=1,i=1,s=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){let n=t||new N,i=Math.PI*2,s=this.aEndAngle-this.aStartAngle,o=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=i;for(;s>i;)s-=i;s<Number.EPSILON&&(o?s=0:s=i),this.aClockwise===!0&&!o&&(s===i?s=-i:s=s-i);let a=this.aStartAngle+e*s,l=this.aX+this.xRadius*Math.cos(a),u=this.aY+this.yRadius*Math.sin(a);if(this.aRotation!==0){let c=Math.cos(this.aRotation),h=Math.sin(this.aRotation),d=l-this.aX,f=u-this.aY;l=d*c-f*h+this.aX,u=d*h+f*c+this.aY}return n.set(l,u)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},mm=class extends ho{constructor(e,t,n,i,s,o){super(e,t,n,n,i,s,o),this.isArcCurve=!0,this.type="ArcCurve"}};function zm(){let r=0,e=0,t=0,n=0;function i(s,o,a,l){r=s,e=a,t=-3*s+3*o-2*a-l,n=2*s-2*o+a+l}return{initCatmullRom:function(s,o,a,l,u){i(o,a,u*(a-s),u*(l-o))},initNonuniformCatmullRom:function(s,o,a,l,u,c,h){let d=(o-s)/u-(a-s)/(u+c)+(a-o)/c,f=(a-o)/c-(l-o)/(c+h)+(l-a)/h;d*=c,f*=c,i(o,a,d,f)},calc:function(s){let o=s*s,a=o*s;return r+e*s+t*o+n*a}}}var fh=new S,Wp=new zm,jp=new zm,qp=new zm,gm=class extends br{constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new S){let n=t,i=this.points,s=i.length,o=(s-(this.closed?0:1))*e,a=Math.floor(o),l=o-a;this.closed?a+=a>0?0:(Math.floor(Math.abs(a)/s)+1)*s:l===0&&a===s-1&&(a=s-2,l=1);let u,c;this.closed||a>0?u=i[(a-1)%s]:(fh.subVectors(i[0],i[1]).add(i[0]),u=fh);let h=i[a%s],d=i[(a+1)%s];if(this.closed||a+2<s?c=i[(a+2)%s]:(fh.subVectors(i[s-1],i[s-2]).add(i[s-1]),c=fh),this.curveType==="centripetal"||this.curveType==="chordal"){let f=this.curveType==="chordal"?.5:.25,m=Math.pow(u.distanceToSquared(h),f),p=Math.pow(h.distanceToSquared(d),f),g=Math.pow(d.distanceToSquared(c),f);p<1e-4&&(p=1),m<1e-4&&(m=p),g<1e-4&&(g=p),Wp.initNonuniformCatmullRom(u.x,h.x,d.x,c.x,m,p,g),jp.initNonuniformCatmullRom(u.y,h.y,d.y,c.y,m,p,g),qp.initNonuniformCatmullRom(u.z,h.z,d.z,c.z,m,p,g)}else this.curveType==="catmullrom"&&(Wp.initCatmullRom(u.x,h.x,d.x,c.x,this.tension),jp.initCatmullRom(u.y,h.y,d.y,c.y,this.tension),qp.initCatmullRom(u.z,h.z,d.z,c.z,this.tension));return n.set(Wp.calc(l),jp.calc(l),qp.calc(l)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(new S().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function Fv(r,e,t,n,i){let s=(n-e)*.5,o=(i-t)*.5,a=r*r,l=r*a;return(2*t-2*n+s+o)*l+(-3*t+3*n-2*s-o)*a+s*r+t}function ID(r,e){let t=1-r;return t*t*e}function LD(r,e){return 2*(1-r)*r*e}function OD(r,e){return r*r*e}function pc(r,e,t,n){return ID(r,e)+LD(r,t)+OD(r,n)}function RD(r,e){let t=1-r;return t*t*t*e}function ND(r,e){let t=1-r;return 3*t*t*r*e}function BD(r,e){return 3*(1-r)*r*r*e}function FD(r,e){return r*r*r*e}function mc(r,e,t,n,i){return RD(r,e)+ND(r,t)+BD(r,n)+FD(r,i)}var Zn=class extends br{constructor(e=new N,t=new N,n=new N,i=new N){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new N){let n=t,i=this.v0,s=this.v1,o=this.v2,a=this.v3;return n.set(mc(e,i.x,s.x,o.x,a.x),mc(e,i.y,s.y,o.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},ym=class extends br{constructor(e=new S,t=new S,n=new S,i=new S){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new S){let n=t,i=this.v0,s=this.v1,o=this.v2,a=this.v3;return n.set(mc(e,i.x,s.x,o.x,a.x),mc(e,i.y,s.y,o.y,a.y),mc(e,i.z,s.z,o.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Kn=class extends br{constructor(e=new N,t=new N){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new N){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t){let n=t||new N;return n.copy(this.v2).sub(this.v1).normalize(),n}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},bc=class extends br{constructor(e=new S,t=new S){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new S){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Fr=class extends br{constructor(e=new N,t=new N,n=new N){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new N){let n=t,i=this.v0,s=this.v1,o=this.v2;return n.set(pc(e,i.x,s.x,o.x),pc(e,i.y,s.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},vm=class extends br{constructor(e=new S,t=new S,n=new S){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new S){let n=t,i=this.v0,s=this.v1,o=this.v2;return n.set(pc(e,i.x,s.x,o.x),pc(e,i.y,s.y,o.y),pc(e,i.z,s.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},da=class extends br{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new N){let n=t,i=this.points,s=(i.length-1)*e,o=Math.floor(s),a=s-o,l=i[o===0?o:o-1],u=i[o],c=i[o>i.length-2?i.length-1:o+1],h=i[o>i.length-3?i.length-1:o+2];return n.set(Fv(a,l.x,u.x,c.x,h.x),Fv(a,l.y,u.y,c.y,h.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(i.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let i=this.points[t];e.points.push(i.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(new N().fromArray(i))}return this}},UD=Object.freeze({__proto__:null,ArcCurve:mm,CatmullRomCurve3:gm,CubicBezierCurve:Zn,CubicBezierCurve3:ym,EllipseCurve:ho,LineCurve:Kn,LineCurve3:bc,QuadraticBezierCurve:Fr,QuadraticBezierCurve3:vm,SplineCurve:da}),xm=class extends br{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new Kn(t,e))}getPoint(e,t){let n=e*this.getLength(),i=this.getCurveLengths(),s=0;for(;s<i.length;){if(i[s]>=n){let o=i[s]-n,a=this.curves[s],l=a.getLength(),u=l===0?0:1-o/l;return a.getPointAt(u,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n<i;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],n;for(let i=0,s=this.curves;i<s.length;i++){let o=s[i],a=o.isEllipseCurve?e*2:o.isLineCurve||o.isLineCurve3?1:o.isSplineCurve?e*o.points.length:e,l=o.getPoints(a);for(let u=0;u<l.length;u++){let c=l[u];n&&n.equals(c)||(t.push(c),n=c)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let i=e.curves[t];this.curves.push(i.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t<n;t++){let i=this.curves[t];e.curves.push(i.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let i=e.curves[t];this.curves.push(new UD[i.type]().fromJSON(i))}return this}},wc=class extends xm{constructor(e){super(),this.type="Path",this.currentPoint=new N,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let n=new Kn(this.currentPoint.clone(),new N(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,i){let s=new Fr(this.currentPoint.clone(),new N(e,t),new N(n,i));return this.curves.push(s),this.currentPoint.set(n,i),this}bezierCurveTo(e,t,n,i,s,o){let a=new Zn(this.currentPoint.clone(),new N(e,t),new N(n,i),new N(s,o));return this.curves.push(a),this.currentPoint.set(s,o),this}splineThru(e){let t=[this.currentPoint.clone()].concat(e),n=new da(t);return this.curves.push(n),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,i,s,o){let a=this.currentPoint.x,l=this.currentPoint.y;return this.absarc(e+a,t+l,n,i,s,o),this}absarc(e,t,n,i,s,o){return this.absellipse(e,t,n,n,i,s,o),this}ellipse(e,t,n,i,s,o,a,l){let u=this.currentPoint.x,c=this.currentPoint.y;return this.absellipse(e+u,t+c,n,i,s,o,a,l),this}absellipse(e,t,n,i,s,o,a,l){let u=new ho(e,t,n,i,s,o,a,l);if(this.curves.length>0){let h=u.getPoint(0);h.equals(this.currentPoint)||this.lineTo(h.x,h.y)}this.curves.push(u);let c=u.getPoint(1);return this.currentPoint.copy(c),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},fa=class extends Pe{constructor(e=[new N(0,.5),new N(.5,0),new N(0,-.5)],t=12,n=0,i=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=cn(i,0,Math.PI*2);let s=[],o=[],a=[],l=[],u=[],c=1/t,h=new S,d=new N,f=new S,m=new S,p=new S,g=0,y=0;for(let x=0;x<=e.length-1;x++)switch(x){case 0:g=e[x+1].x-e[x].x,y=e[x+1].y-e[x].y,f.x=y*1,f.y=-g,f.z=y*0,p.copy(f),f.normalize(),l.push(f.x,f.y,f.z);break;case e.length-1:l.push(p.x,p.y,p.z);break;default:g=e[x+1].x-e[x].x,y=e[x+1].y-e[x].y,f.x=y*1,f.y=-g,f.z=y*0,m.copy(f),f.x+=p.x,f.y+=p.y,f.z+=p.z,f.normalize(),l.push(f.x,f.y,f.z),p.copy(m)}for(let x=0;x<=t;x++){let w=n+x*c*i,b=Math.sin(w),_=Math.cos(w);for(let A=0;A<=e.length-1;A++){h.x=e[A].x*b,h.y=e[A].y,h.z=e[A].x*_,o.push(h.x,h.y,h.z),d.x=x/t,d.y=A/(e.length-1),a.push(d.x,d.y);let M=l[3*A+0]*b,v=l[3*A+1],T=l[3*A+0]*_;u.push(M,v,T)}}for(let x=0;x<t;x++)for(let w=0;w<e.length-1;w++){let b=w+x*e.length,_=b,A=b+e.length,M=b+e.length+1,v=b+1;s.push(_,A,v),s.push(M,v,A)}this.setIndex(s),this.setAttribute("position",new _e(o,3)),this.setAttribute("uv",new _e(a,2)),this.setAttribute("normal",new _e(u,3))}static fromJSON(e){return new fa(e.points,e.segments,e.phiStart,e.phiLength)}};var fo=class extends Pe{constructor(e=1,t=1,n=1,i=8,s=1,o=!1,a=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l};let u=this;i=Math.floor(i),s=Math.floor(s);let c=[],h=[],d=[],f=[],m=0,p=[],g=n/2,y=0;x(),o===!1&&(e>0&&w(!0),t>0&&w(!1)),this.setIndex(c),this.setAttribute("position",new _e(h,3)),this.setAttribute("normal",new _e(d,3)),this.setAttribute("uv",new _e(f,2));function x(){let b=new S,_=new S,A=0,M=(t-e)/n;for(let v=0;v<=s;v++){let T=[],E=v/s,C=E*(t-e)+e;for(let L=0;L<=i;L++){let R=L/i,O=R*l+a,W=Math.sin(O),j=Math.cos(O);_.x=C*W,_.y=-E*n+g,_.z=C*j,h.push(_.x,_.y,_.z),b.set(W,M,j).normalize(),d.push(b.x,b.y,b.z),f.push(R,1-E),T.push(m++)}p.push(T)}for(let v=0;v<i;v++)for(let T=0;T<s;T++){let E=p[T][v],C=p[T+1][v],L=p[T+1][v+1],R=p[T][v+1];c.push(E,C,R),c.push(C,L,R),A+=6}u.addGroup(y,A,0),y+=A}function w(b){let _=m,A=new N,M=new S,v=0,T=b===!0?e:t,E=b===!0?1:-1;for(let L=1;L<=i;L++)h.push(0,g*E,0),d.push(0,E,0),f.push(.5,.5),m++;let C=m;for(let L=0;L<=i;L++){let O=L/i*l+a,W=Math.cos(O),j=Math.sin(O);M.x=T*j,M.y=g*E,M.z=T*W,h.push(M.x,M.y,M.z),d.push(0,E,0),A.x=W*.5+.5,A.y=j*.5*E+.5,f.push(A.x,A.y),m++}for(let L=0;L<i;L++){let R=_+L,O=C+L;b===!0?c.push(O,O+1,R):c.push(O+1,O,R),v+=3}u.addGroup(y,v,b===!0?1:2),y+=v}}static fromJSON(e){return new fo(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},pa=class extends fo{constructor(e=1,t=1,n=8,i=1,s=!1,o=0,a=Math.PI*2){super(0,e,t,n,i,s,o,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:s,thetaStart:o,thetaLength:a}}static fromJSON(e){return new pa(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},ma=class extends Pe{constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};let s=[],o=[];a(i),u(n),c(),this.setAttribute("position",new _e(s,3)),this.setAttribute("normal",new _e(s.slice(),3)),this.setAttribute("uv",new _e(o,2)),i===0?this.computeVertexNormals():this.normalizeNormals();function a(x){let w=new S,b=new S,_=new S;for(let A=0;A<t.length;A+=3)f(t[A+0],w),f(t[A+1],b),f(t[A+2],_),l(w,b,_,x)}function l(x,w,b,_){let A=_+1,M=[];for(let v=0;v<=A;v++){M[v]=[];let T=x.clone().lerp(b,v/A),E=w.clone().lerp(b,v/A),C=A-v;for(let L=0;L<=C;L++)L===0&&v===A?M[v][L]=T:M[v][L]=T.clone().lerp(E,L/C)}for(let v=0;v<A;v++)for(let T=0;T<2*(A-v)-1;T++){let E=Math.floor(T/2);T%2===0?(d(M[v][E+1]),d(M[v+1][E]),d(M[v][E])):(d(M[v][E+1]),d(M[v+1][E+1]),d(M[v+1][E]))}}function u(x){let w=new S;for(let b=0;b<s.length;b+=3)w.x=s[b+0],w.y=s[b+1],w.z=s[b+2],w.normalize().multiplyScalar(x),s[b+0]=w.x,s[b+1]=w.y,s[b+2]=w.z}function c(){let x=new S;for(let w=0;w<s.length;w+=3){x.x=s[w+0],x.y=s[w+1],x.z=s[w+2];let b=g(x)/2/Math.PI+.5,_=y(x)/Math.PI+.5;o.push(b,1-_)}m(),h()}function h(){for(let x=0;x<o.length;x+=6){let w=o[x+0],b=o[x+2],_=o[x+4],A=Math.max(w,b,_),M=Math.min(w,b,_);A>.9&&M<.1&&(w<.2&&(o[x+0]+=1),b<.2&&(o[x+2]+=1),_<.2&&(o[x+4]+=1))}}function d(x){s.push(x.x,x.y,x.z)}function f(x,w){let b=x*3;w.x=e[b+0],w.y=e[b+1],w.z=e[b+2]}function m(){let x=new S,w=new S,b=new S,_=new S,A=new N,M=new N,v=new N;for(let T=0,E=0;T<s.length;T+=9,E+=6){x.set(s[T+0],s[T+1],s[T+2]),w.set(s[T+3],s[T+4],s[T+5]),b.set(s[T+6],s[T+7],s[T+8]),A.set(o[E+0],o[E+1]),M.set(o[E+2],o[E+3]),v.set(o[E+4],o[E+5]),_.copy(x).add(w).add(b).divideScalar(3);let C=g(_);p(A,E+0,x,C),p(M,E+2,w,C),p(v,E+4,b,C)}}function p(x,w,b,_){_<0&&x.x===1&&(o[w]=x.x-1),b.x===0&&b.z===0&&(o[w]=_/2/Math.PI+.5)}function g(x){return Math.atan2(x.z,-x.x)}function y(x){return Math.atan2(-x.y,Math.sqrt(x.x*x.x+x.z*x.z))}}static fromJSON(e){return new ma(e.vertices,e.indices,e.radius,e.details)}},ga=class extends ma{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,i=1/n,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],o=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(s,o,e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new ga(e.radius,e.detail)}};var Nr=class extends wc{constructor(e){super(e),this.uuid=ni(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,i=this.holes.length;n<i;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let i=e.holes[t];this.holes.push(i.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t<n;t++){let i=this.holes[t];e.holes.push(i.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let i=e.holes[t];this.holes.push(new wc().fromJSON(i))}return this}},zD={triangulate:function(r,e,t=2){let n=e&&e.length,i=n?e[0]*t:r.length,s=hx(r,0,i,t,!0),o=[];if(!s||s.next===s.prev)return o;let a,l,u,c,h,d,f;if(n&&(s=WD(r,e,s,t)),r.length>80*t){a=u=r[0],l=c=r[1];for(let m=t;m<i;m+=t)h=r[m],d=r[m+1],h<a&&(a=h),d<l&&(l=d),h>u&&(u=h),d>c&&(c=d);f=Math.max(u-a,c-l),f=f!==0?1/f:0}return _c(s,o,t,a,l,f),o}};function hx(r,e,t,n,i){let s,o;if(i===tP(r,e,t,n)>0)for(s=e;s<t;s+=n)o=Uv(s,r[s],r[s+1],o);else for(s=t-n;s>=e;s-=n)o=Uv(s,r[s],r[s+1],o);return o&&Wh(o,o.next)&&(Ac(o),o=o.next),o}function fs(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(Wh(t,t.next)||zt(t.prev,t,t.next)===0)){if(Ac(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function _c(r,e,t,n,i,s,o){if(!r)return;!o&&s&&QD(r,n,i,s);let a=r,l,u;for(;r.prev!==r.next;){if(l=r.prev,u=r.next,s?kD(r,n,i,s):GD(r)){e.push(l.i/t),e.push(r.i/t),e.push(u.i/t),Ac(r),r=u.next,a=u.next;continue}if(r=u,r===a){o?o===1?(r=VD(fs(r),e,t),_c(r,e,t,n,i,s,2)):o===2&&HD(r,e,t,n,i,s):_c(fs(r),e,t,n,i,s,1);break}}}function GD(r){let e=r.prev,t=r,n=r.next;if(zt(e,t,n)>=0)return!1;let i=r.next.next;for(;i!==r.prev;){if(sa(e.x,e.y,t.x,t.y,n.x,n.y,i.x,i.y)&&zt(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function kD(r,e,t,n){let i=r.prev,s=r,o=r.next;if(zt(i,s,o)>=0)return!1;let a=i.x<s.x?i.x<o.x?i.x:o.x:s.x<o.x?s.x:o.x,l=i.y<s.y?i.y<o.y?i.y:o.y:s.y<o.y?s.y:o.y,u=i.x>s.x?i.x>o.x?i.x:o.x:s.x>o.x?s.x:o.x,c=i.y>s.y?i.y>o.y?i.y:o.y:s.y>o.y?s.y:o.y,h=bm(a,l,e,t,n),d=bm(u,c,e,t,n),f=r.prevZ,m=r.nextZ;for(;f&&f.z>=h&&m&&m.z<=d;){if(f!==r.prev&&f!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&zt(f.prev,f,f.next)>=0||(f=f.prevZ,m!==r.prev&&m!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,m.x,m.y)&&zt(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;f&&f.z>=h;){if(f!==r.prev&&f!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&zt(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;m&&m.z<=d;){if(m!==r.prev&&m!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,m.x,m.y)&&zt(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function VD(r,e,t){let n=r;do{let i=n.prev,s=n.next.next;!Wh(i,s)&&dx(i,n,n.next,s)&&Sc(i,s)&&Sc(s,i)&&(e.push(i.i/t),e.push(n.i/t),e.push(s.i/t),Ac(n),Ac(n.next),n=r=s),n=n.next}while(n!==r);return fs(n)}function HD(r,e,t,n,i,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&JD(o,a)){let l=fx(o,a);o=fs(o,o.next),l=fs(l,l.next),_c(o,e,t,n,i,s),_c(l,e,t,n,i,s);return}a=a.next}o=o.next}while(o!==r)}function WD(r,e,t,n){let i=[],s,o,a,l,u;for(s=0,o=e.length;s<o;s++)a=e[s]*n,l=s<o-1?e[s+1]*n:r.length,u=hx(r,a,l,n,!1),u===u.next&&(u.steiner=!0),i.push(KD(u));for(i.sort(jD),s=0;s<i.length;s++)qD(i[s],t),t=fs(t,t.next);return t}function jD(r,e){return r.x-e.x}function qD(r,e){if(e=XD(r,e),e){let t=fx(e,r);fs(e,e.next),fs(t,t.next)}}function XD(r,e){let t=e,n=r.x,i=r.y,s=-1/0,o;do{if(i<=t.y&&i>=t.next.y&&t.next.y!==t.y){let d=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=n&&d>s){if(s=d,d===n){if(i===t.y)return t;if(i===t.next.y)return t.next}o=t.x<t.next.x?t:t.next}}t=t.next}while(t!==e);if(!o)return null;if(n===s)return o;let a=o,l=o.x,u=o.y,c=1/0,h;t=o;do n>=t.x&&t.x>=l&&n!==t.x&&sa(i<u?n:s,i,l,u,i<u?s:n,i,t.x,t.y)&&(h=Math.abs(i-t.y)/(n-t.x),Sc(t,r)&&(h<c||h===c&&(t.x>o.x||t.x===o.x&&YD(o,t)))&&(o=t,c=h)),t=t.next;while(t!==a);return o}function YD(r,e){return zt(r.prev,r,e.prev)<0&&zt(e.next,r,r.next)<0}function QD(r,e,t,n){let i=r;do i.z===null&&(i.z=bm(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,ZD(i)}function ZD(r){let e,t,n,i,s,o,a,l,u=1;do{for(t=r,r=null,s=null,o=0;t;){for(o++,n=t,a=0,e=0;e<u&&(a++,n=n.nextZ,!!n);e++);for(l=u;a>0||l>0&&n;)a!==0&&(l===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,a--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;t=n}s.nextZ=null,u*=2}while(o>1);return r}function bm(r,e,t,n,i){return r=32767*(r-t)*i,e=32767*(e-n)*i,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function KD(r){let e=r,t=r;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==r);return t}function sa(r,e,t,n,i,s,o,a){return(i-o)*(e-a)-(r-o)*(s-a)>=0&&(r-o)*(n-a)-(t-o)*(e-a)>=0&&(t-o)*(s-a)-(i-o)*(n-a)>=0}function JD(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!$D(r,e)&&(Sc(r,e)&&Sc(e,r)&&eP(r,e)&&(zt(r.prev,r,e.prev)||zt(r,e.prev,e))||Wh(r,e)&&zt(r.prev,r,r.next)>0&&zt(e.prev,e,e.next)>0)}function zt(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function Wh(r,e){return r.x===e.x&&r.y===e.y}function dx(r,e,t,n){let i=mh(zt(r,e,t)),s=mh(zt(r,e,n)),o=mh(zt(t,n,r)),a=mh(zt(t,n,e));return!!(i!==s&&o!==a||i===0&&ph(r,t,e)||s===0&&ph(r,n,e)||o===0&&ph(t,r,n)||a===0&&ph(t,e,n))}function ph(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function mh(r){return r>0?1:r<0?-1:0}function $D(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&dx(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function Sc(r,e){return zt(r.prev,r,r.next)<0?zt(r,e,r.next)>=0&&zt(r,r.prev,e)>=0:zt(r,e,r.prev)<0||zt(r,r.next,e)<0}function eP(r,e){let t=r,n=!1,i=(r.x+e.x)/2,s=(r.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&i<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function fx(r,e){let t=new wm(r.i,r.x,r.y),n=new wm(e.i,e.x,e.y),i=r.next,s=e.prev;return r.next=e,e.prev=r,t.next=i,i.prev=t,n.next=t,t.prev=n,s.next=n,n.prev=s,n}function Uv(r,e,t,n){let i=new wm(r,e,t);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Ac(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function wm(r,e,t){this.i=r,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function tP(r,e,t,n){let i=0;for(let s=e,o=t-n;s<t;s+=n)i+=(r[o]-r[s])*(r[s+1]+r[o+1]),o=s;return i}var as=class{static area(e){let t=e.length,n=0;for(let i=t-1,s=0;s<t;i=s++)n+=e[i].x*e[s].y-e[s].x*e[i].y;return n*.5}static isClockWise(e){return as.area(e)<0}static triangulateShape(e,t){let n=[],i=[],s=[];zv(e),Gv(n,e);let o=e.length;t.forEach(zv);for(let l=0;l<t.length;l++)i.push(o),o+=t[l].length,Gv(n,t[l]);let a=zD.triangulate(n,i);for(let l=0;l<a.length;l+=3)s.push(a.slice(l,l+3));return s}};function zv(r){let e=r.length;e>2&&r[e-1].equals(r[0])&&r.pop()}function Gv(r,e){for(let t=0;t<e.length;t++)r.push(e[t].x),r.push(e[t].y)}var ya=class extends ma{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,i=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(i,s,e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new ya(e.radius,e.detail)}};var va=class extends Pe{constructor(e=new Nr([new N(0,.5),new N(-.5,-.5),new N(.5,-.5)]),t=12){super(),this.type="ShapeGeometry",this.parameters={shapes:e,curveSegments:t};let n=[],i=[],s=[],o=[],a=0,l=0;if(Array.isArray(e)===!1)u(e);else for(let c=0;c<e.length;c++)u(e[c]),this.addGroup(a,l,c),a+=l,l=0;this.setIndex(n),this.setAttribute("position",new _e(i,3)),this.setAttribute("normal",new _e(s,3)),this.setAttribute("uv",new _e(o,2));function u(c){let h=i.length/3,d=c.extractPoints(t),f=d.shape,m=d.holes;as.isClockWise(f)===!1&&(f=f.reverse());for(let g=0,y=m.length;g<y;g++){let x=m[g];as.isClockWise(x)===!0&&(m[g]=x.reverse())}let p=as.triangulateShape(f,m);for(let g=0,y=m.length;g<y;g++){let x=m[g];f=f.concat(x)}for(let g=0,y=f.length;g<y;g++){let x=f[g];i.push(x.x,x.y,0),s.push(0,0,1),o.push(x.x,x.y)}for(let g=0,y=p.length;g<y;g++){let x=p[g],w=x[0]+h,b=x[1]+h,_=x[2]+h;n.push(w,b,_),l+=3}}}toJSON(){let e=super.toJSON(),t=this.parameters.shapes;return nP(t,e)}static fromJSON(e,t){let n=[];for(let i=0,s=e.shapes.length;i<s;i++){let o=t[e.shapes[i]];n.push(o)}return new va(n,e.curveSegments)}};function nP(r,e){if(e.shapes=[],Array.isArray(r))for(let t=0,n=r.length;t<n;t++){let i=r[t];e.shapes.push(i.uuid)}else e.shapes.push(r.uuid);return e}var po=class extends Pe{constructor(e=1,t=32,n=16,i=0,s=Math.PI*2,o=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:s,thetaStart:o,thetaLength:a},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));let l=Math.min(o+a,Math.PI),u=0,c=[],h=new S,d=new S,f=[],m=[],p=[],g=[];for(let y=0;y<=n;y++){let x=[],w=y/n,b=0;y==0&&o==0?b=.5/t:y==n&&l==Math.PI&&(b=-.5/t);for(let _=0;_<=t;_++){let A=_/t;h.x=-e*Math.cos(i+A*s)*Math.sin(o+w*a),h.y=e*Math.cos(o+w*a),h.z=e*Math.sin(i+A*s)*Math.sin(o+w*a),m.push(h.x,h.y,h.z),d.copy(h).normalize(),p.push(d.x,d.y,d.z),g.push(A+b,1-w),x.push(u++)}c.push(x)}for(let y=0;y<n;y++)for(let x=0;x<t;x++){let w=c[y][x+1],b=c[y][x],_=c[y+1][x],A=c[y+1][x+1];(y!==0||o>0)&&f.push(w,b,A),(y!==n-1||l<Math.PI)&&f.push(b,_,A)}this.setIndex(f),this.setAttribute("position",new _e(m,3)),this.setAttribute("normal",new _e(p,3)),this.setAttribute("uv",new _e(g,2))}static fromJSON(e){return new po(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}};var xa=class extends Pe{constructor(e=1,t=.4,n=64,i=8,s=2,o=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:s,q:o},n=Math.floor(n),i=Math.floor(i);let a=[],l=[],u=[],c=[],h=new S,d=new S,f=new S,m=new S,p=new S,g=new S,y=new S;for(let w=0;w<=n;++w){let b=w/n*s*Math.PI*2;x(b,s,o,e,f),x(b+.01,s,o,e,m),g.subVectors(m,f),y.addVectors(m,f),p.crossVectors(g,y),y.crossVectors(p,g),p.normalize(),y.normalize();for(let _=0;_<=i;++_){let A=_/i*Math.PI*2,M=-t*Math.cos(A),v=t*Math.sin(A);h.x=f.x+(M*y.x+v*p.x),h.y=f.y+(M*y.y+v*p.y),h.z=f.z+(M*y.z+v*p.z),l.push(h.x,h.y,h.z),d.subVectors(h,f).normalize(),u.push(d.x,d.y,d.z),c.push(w/n),c.push(_/i)}}for(let w=1;w<=n;w++)for(let b=1;b<=i;b++){let _=(i+1)*(w-1)+(b-1),A=(i+1)*w+(b-1),M=(i+1)*w+b,v=(i+1)*(w-1)+b;a.push(_,A,v),a.push(A,M,v)}this.setIndex(a),this.setAttribute("position",new _e(l,3)),this.setAttribute("normal",new _e(u,3)),this.setAttribute("uv",new _e(c,2));function x(w,b,_,A,M){let v=Math.cos(w),T=Math.sin(w),E=_/b*w,C=Math.cos(E);M.x=A*(2+C)*.5*v,M.y=A*(2+C)*T*.5,M.z=A*Math.sin(E)*.5}}static fromJSON(e){return new xa(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}};var ln={arraySlice:function(r,e,t){return ln.isTypedArray(r)?new r.constructor(r.subarray(e,t!==void 0?t:r.length)):r.slice(e,t)},convertArray:function(r,e,t){return!r||!t&&r.constructor===e?r:typeof e.BYTES_PER_ELEMENT=="number"?new e(r):Array.prototype.slice.call(r)},isTypedArray:function(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)},getKeyframeOrder:function(r){function e(i,s){return r[i]-r[s]}let t=r.length,n=new Array(t);for(let i=0;i!==t;++i)n[i]=i;return n.sort(e),n},sortedArray:function(r,e,t){let n=r.length,i=new r.constructor(n);for(let s=0,o=0;o!==n;++s){let a=t[s]*e;for(let l=0;l!==e;++l)i[o++]=r[a+l]}return i},flattenJSON:function(r,e,t,n){let i=1,s=r[0];for(;s!==void 0&&s[n]===void 0;)s=r[i++];if(s===void 0)return;let o=s[n];if(o!==void 0)if(Array.isArray(o))do o=s[n],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=r[i++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[n],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=r[i++];while(s!==void 0);else do o=s[n],o!==void 0&&(e.push(s.time),t.push(o)),s=r[i++];while(s!==void 0)},subclip:function(r,e,t,n,i=30){let s=r.clone();s.name=e;let o=[];for(let l=0;l<s.tracks.length;++l){let u=s.tracks[l],c=u.getValueSize(),h=[],d=[];for(let f=0;f<u.times.length;++f){let m=u.times[f]*i;if(!(m<t||m>=n)){h.push(u.times[f]);for(let p=0;p<c;++p)d.push(u.values[f*c+p])}}h.length!==0&&(u.times=ln.convertArray(h,u.times.constructor),u.values=ln.convertArray(d,u.values.constructor),o.push(u))}s.tracks=o;let a=1/0;for(let l=0;l<s.tracks.length;++l)a>s.tracks[l].times[0]&&(a=s.tracks[l].times[0]);for(let l=0;l<s.tracks.length;++l)s.tracks[l].shift(-1*a);return s.resetDuration(),s},makeClipAdditive:function(r,e=0,t=r,n=30){n<=0&&(n=30);let i=t.tracks.length,s=e/n;for(let o=0;o<i;++o){let a=t.tracks[o],l=a.ValueTypeName;if(l==="bool"||l==="string")continue;let u=r.tracks.find(function(y){return y.name===a.name&&y.ValueTypeName===l});if(u===void 0)continue;let c=0,h=a.getValueSize();a.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(c=h/3);let d=0,f=u.getValueSize();u.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(d=f/3);let m=a.times.length-1,p;if(s<=a.times[0]){let y=c,x=h-c;p=ln.arraySlice(a.values,y,x)}else if(s>=a.times[m]){let y=m*h+c,x=y+h-c;p=ln.arraySlice(a.values,y,x)}else{let y=a.createInterpolant(),x=c,w=h-c;y.evaluate(s),p=ln.arraySlice(y.resultBuffer,x,w)}l==="quaternion"&&new qt().fromArray(p).normalize().conjugate().toArray(p);let g=u.times.length;for(let y=0;y<g;++y){let x=y*f+d;if(l==="quaternion")qt.multiplyQuaternionsFlat(u.values,x,p,0,u.values,x);else{let w=f-d*2;for(let b=0;b<w;++b)u.values[x+b]-=p[b]}}}return r.blendMode=DM,r}},ba=class{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,i=t[n],s=t[n-1];n:{e:{let o;t:{r:if(!(e<i)){for(let a=n+2;;){if(i===void 0){if(e<s)break r;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(s=i,i=t[++n],e<i)break e}o=t.length;break t}if(!(e>=s)){let a=t[1];e<a&&(n=2,s=a);for(let l=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(i=s,s=t[--n-1],e>=s)break e}o=n,n=0;break t}break n}for(;n<o;){let a=n+o>>>1;e<t[a]?o=a:n=a+1}if(i=t[n],s=t[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,i)}return this.interpolate_(n,s,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,s=e*i;for(let o=0;o!==i;++o)t[o]=n[s+o];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},_m=class extends ba{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Qy,endingEnd:Qy}}intervalChanged_(e,t,n){let i=this.parameterPositions,s=e-2,o=e+1,a=i[s],l=i[o];if(a===void 0)switch(this.getSettings_().endingStart){case Zy:s=e,a=2*t-n;break;case Ky:s=i.length-2,a=t+i[s]-i[s+1];break;default:s=e,a=n}if(l===void 0)switch(this.getSettings_().endingEnd){case Zy:o=e,l=2*n-t;break;case Ky:o=1,l=n+i[1]-i[0];break;default:o=e-1,l=t}let u=(n-t)*.5,c=this.valueSize;this._weightPrev=u/(t-a),this._weightNext=u/(l-n),this._offsetPrev=s*c,this._offsetNext=o*c}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,u=l-a,c=this._offsetPrev,h=this._offsetNext,d=this._weightPrev,f=this._weightNext,m=(n-t)/(i-t),p=m*m,g=p*m,y=-d*g+2*d*p-d*m,x=(1+d)*g+(-1.5-2*d)*p+(-.5+d)*m+1,w=(-1-f)*g+(1.5+f)*p+.5*m,b=f*g-f*p;for(let _=0;_!==a;++_)s[_]=y*o[c+_]+x*o[u+_]+w*o[l+_]+b*o[h+_];return s}},Sm=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,u=l-a,c=(n-t)/(i-t),h=1-c;for(let d=0;d!==a;++d)s[d]=o[u+d]*h+o[l+d]*c;return s}},Am=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}},Ur=class{constructor(e,t,n,i){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=ln.convertArray(t,this.TimeBufferType),this.values=ln.convertArray(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:ln.convertArray(e.times,Array),values:ln.convertArray(e.values,Array)};let i=e.getInterpolation();i!==e.DefaultInterpolation&&(n.interpolation=i)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new Am(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new Sm(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new _m(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case bh:t=this.InterpolantFactoryMethodDiscrete;break;case wh:t=this.InterpolantFactoryMethodLinear;break;case gp:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){let n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return bh;case this.InterpolantFactoryMethodLinear:return wh;case this.InterpolantFactoryMethodSmooth:return gp}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){let t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(e!==1){let t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){let n=this.times,i=n.length,s=0,o=i-1;for(;s!==i&&n[s]<e;)++s;for(;o!==-1&&n[o]>t;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=ln.arraySlice(n,s,o),this.values=ln.arraySlice(this.values,s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(i!==void 0&&ln.isTypedArray(i))for(let a=0,l=i.length;a!==l;++a){let u=i[a];if(isNaN(u)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,u),e=!1;break}}return e}optimize(){let e=ln.arraySlice(this.times),t=ln.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===gp,s=e.length-1,o=1;for(let a=1;a<s;++a){let l=!1,u=e[a],c=e[a+1];if(u!==c&&(a!==1||u!==e[0]))if(i)l=!0;else{let h=a*n,d=h-n,f=h+n;for(let m=0;m!==n;++m){let p=t[h+m];if(p!==t[d+m]||p!==t[f+m]){l=!0;break}}}if(l){if(a!==o){e[o]=e[a];let h=a*n,d=o*n;for(let f=0;f!==n;++f)t[d+f]=t[h+f]}++o}}if(s>0){e[o]=e[s];for(let a=s*n,l=o*n,u=0;u!==n;++u)t[l+u]=t[a+u];++o}return o!==e.length?(this.times=ln.arraySlice(e,0,o),this.values=ln.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=ln.arraySlice(this.times,0),t=ln.arraySlice(this.values,0),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};Ur.prototype.TimeBufferType=Float32Array;Ur.prototype.ValueBufferType=Float32Array;Ur.prototype.DefaultInterpolation=wh;var mo=class extends Ur{};mo.prototype.ValueTypeName="bool";mo.prototype.ValueBufferType=Array;mo.prototype.DefaultInterpolation=bh;mo.prototype.InterpolantFactoryMethodLinear=void 0;mo.prototype.InterpolantFactoryMethodSmooth=void 0;var Mm=class extends Ur{};Mm.prototype.ValueTypeName="color";var Tm=class extends Ur{};Tm.prototype.ValueTypeName="number";var Em=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(i-t),u=e*a;for(let c=u+a;u!==c;u+=4)qt.slerpFlat(s,0,o,u-a,o,u,l);return s}},Mc=class extends Ur{InterpolantFactoryMethodLinear(e){return new Em(this.times,this.values,this.getValueSize(),e)}};Mc.prototype.ValueTypeName="quaternion";Mc.prototype.DefaultInterpolation=wh;Mc.prototype.InterpolantFactoryMethodSmooth=void 0;var go=class extends Ur{};go.prototype.ValueTypeName="string";go.prototype.ValueBufferType=Array;go.prototype.DefaultInterpolation=bh;go.prototype.InterpolantFactoryMethodLinear=void 0;go.prototype.InterpolantFactoryMethodSmooth=void 0;var Cm=class extends Ur{};Cm.prototype.ValueTypeName="vector";var kv={enabled:!1,files:{},add:function(r,e){this.enabled!==!1&&(this.files[r]=e)},get:function(r){if(this.enabled!==!1)return this.files[r]},remove:function(r){delete this.files[r]},clear:function(){this.files={}}},yo=class{constructor(e,t,n){let i=this,s=!1,o=0,a=0,l,u=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(c){a++,s===!1&&i.onStart!==void 0&&i.onStart(c,o,a),s=!0},this.itemEnd=function(c){o++,i.onProgress!==void 0&&i.onProgress(c,o,a),o===a&&(s=!1,i.onLoad!==void 0&&i.onLoad())},this.itemError=function(c){i.onError!==void 0&&i.onError(c)},this.resolveURL=function(c){return l?l(c):c},this.setURLModifier=function(c){return l=c,this},this.addHandler=function(c,h){return u.push(c,h),this},this.removeHandler=function(c){let h=u.indexOf(c);return h!==-1&&u.splice(h,2),this},this.getHandler=function(c){for(let h=0,d=u.length;h<d;h+=2){let f=u[h],m=u[h+1];if(f.global&&(f.lastIndex=0),f.test(c))return m}return null}}},rP=new yo,ps=class{constructor(e){this.manager=e!==void 0?e:rP,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let n=this;return new Promise(function(i,s){n.load(e,i,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}},Ri={},ms=class extends ps{constructor(e){super(e)}load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=kv.get(e);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(Ri[e]!==void 0){Ri[e].push({onLoad:t,onProgress:n,onError:i});return}Ri[e]=[],Ri[e].push({onLoad:t,onProgress:n,onError:i});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(u=>{if(u.status===200||u.status===0){if(u.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||u.body===void 0||u.body.getReader===void 0)return u;let c=Ri[e],h=u.body.getReader(),d=u.headers.get("Content-Length"),f=d?parseInt(d):0,m=f!==0,p=0,g=new ReadableStream({start(y){x();function x(){h.read().then(({done:w,value:b})=>{if(w)y.close();else{p+=b.byteLength;let _=new ProgressEvent("progress",{lengthComputable:m,loaded:p,total:f});for(let A=0,M=c.length;A<M;A++){let v=c[A];v.onProgress&&v.onProgress(_)}y.enqueue(b),x()}})}}});return new Response(g)}else throw Error(`fetch for "${u.url}" responded with ${u.status}: ${u.statusText}`)}).then(u=>{switch(l){case"arraybuffer":return u.arrayBuffer();case"blob":return u.blob();case"document":return u.text().then(c=>new DOMParser().parseFromString(c,a));case"json":return u.json();default:if(a===void 0)return u.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),d=h&&h[1]?h[1].toLowerCase():void 0,f=new TextDecoder(d);return u.arrayBuffer().then(m=>f.decode(m))}}}).then(u=>{kv.add(e,u);let c=Ri[e];delete Ri[e];for(let h=0,d=c.length;h<d;h++){let f=c[h];f.onLoad&&f.onLoad(u)}}).catch(u=>{let c=Ri[e];if(c===void 0)throw this.manager.itemError(e),u;delete Ri[e];for(let h=0,d=c.length;h<d;h++){let f=c[h];f.onError&&f.onError(u)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}};var wa=class extends ot{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Re(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}},vo=class extends wa{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.groundColor=new Re(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},Vv=new Oe,Hv=new S,Wv=new S,Tc=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new N(512,512),this.map=null,this.mapPass=null,this.matrix=new Oe,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new xc,this._frameExtents=new N(1,1),this._viewportCount=1,this._viewports=[new Ve(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,n=this.matrix;Hv.setFromMatrixPosition(e.matrixWorld),t.position.copy(Hv),Wv.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Wv),t.updateMatrixWorld(),Vv.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Vv),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(t.projectionMatrix),n.multiply(t.matrixWorldInverse)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},Dm=class extends Tc{constructor(){super(new Zt(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,n=yc*2*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,s=e.distance||t.far;(n!==t.fov||i!==t.aspect||s!==t.far)&&(t.fov=n,t.aspect=i,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},Ih=class extends wa{constructor(e,t,n=0,i=Math.PI/3,s=0,o=1){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.target=new ot,this.distance=n,this.angle=i,this.penumbra=s,this.decay=o,this.shadow=new Dm}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},jv=new Oe,lc=new S,Xp=new S,Pm=class extends Tc{constructor(){super(new Zt(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new N(4,2),this._viewportCount=6,this._viewports=[new Ve(2,1,1,1),new Ve(0,1,1,1),new Ve(3,1,1,1),new Ve(1,1,1,1),new Ve(3,0,1,1),new Ve(1,0,1,1)],this._cubeDirections=[new S(1,0,0),new S(-1,0,0),new S(0,0,1),new S(0,0,-1),new S(0,1,0),new S(0,-1,0)],this._cubeUps=[new S(0,1,0),new S(0,1,0),new S(0,1,0),new S(0,1,0),new S(0,0,1),new S(0,0,-1)]}updateMatrices(e,t=0){let n=this.camera,i=this.matrix,s=e.distance||n.far;s!==n.far&&(n.far=s,n.updateProjectionMatrix()),lc.setFromMatrixPosition(e.matrixWorld),n.position.copy(lc),Xp.copy(n.position),Xp.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(Xp),n.updateMatrixWorld(),i.makeTranslation(-lc.x,-lc.y,-lc.z),jv.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(jv)}},Lh=class extends wa{constructor(e,t,n=0,i=1){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new Pm}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},Im=class extends Tc{constructor(){super(new ua(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},Oh=class extends wa{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.target=new ot,this.shadow=new Im}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};var Lm=class extends Pe{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}clone(){return new this.constructor().copy(this)}toJSON(){let e=super.toJSON(this);return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}},_a=class extends ps{constructor(e){super(e)}load(e,t,n,i){let s=this,o=new ms(s.manager);o.setPath(s.path),o.setRequestHeader(s.requestHeader),o.setWithCredentials(s.withCredentials),o.load(e,function(a){try{t(s.parse(JSON.parse(a)))}catch(l){i?i(l):console.error(l),s.manager.itemError(e)}},n,i)}parse(e){let t={},n={};function i(f,m){if(t[m]!==void 0)return t[m];let g=f.interleavedBuffers[m],y=s(f,g.buffer),x=ju(g.type,y),w=new Dh(x,g.stride);return w.uuid=g.uuid,t[m]=w,w}function s(f,m){if(n[m]!==void 0)return n[m];let g=f.arrayBuffers[m],y=new Uint32Array(g).buffer;return n[m]=y,y}let o=e.isInstancedBufferGeometry?new Lm:new Pe,a=e.data.index;if(a!==void 0){let f=ju(a.type,a.array);o.setIndex(new je(f,1))}let l=e.data.attributes;for(let f in l){let m=l[f],p;if(m.isInterleavedBufferAttribute){let g=i(e.data,m.data);p=new co(g,m.itemSize,m.offset,m.normalized)}else{let g=ju(m.type,m.array),y=m.isInstancedBufferAttribute?Ph:je;p=new y(g,m.itemSize,m.normalized)}m.name!==void 0&&(p.name=m.name),m.usage!==void 0&&p.setUsage(m.usage),m.updateRange!==void 0&&(p.updateRange.offset=m.updateRange.offset,p.updateRange.count=m.updateRange.count),o.setAttribute(f,p)}let u=e.data.morphAttributes;if(u)for(let f in u){let m=u[f],p=[];for(let g=0,y=m.length;g<y;g++){let x=m[g],w;if(x.isInterleavedBufferAttribute){let b=i(e.data,x.data);w=new co(b,x.itemSize,x.offset,x.normalized)}else{let b=ju(x.type,x.array);w=new je(b,x.itemSize,x.normalized)}x.name!==void 0&&(w.name=x.name),p.push(w)}o.morphAttributes[f]=p}e.data.morphTargetsRelative&&(o.morphTargetsRelative=!0);let h=e.data.groups||e.data.drawcalls||e.data.offsets;if(h!==void 0)for(let f=0,m=h.length;f!==m;++f){let p=h[f];o.addGroup(p.start,p.count,p.materialIndex)}let d=e.data.boundingSphere;if(d!==void 0){let f=new S;d.center!==void 0&&f.fromArray(d.center),o.boundingSphere=new Ln(f,d.radius)}return e.name&&(o.name=e.name),e.userData&&(o.userData=e.userData),o}};var Rh=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=qv(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=qv();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function qv(){return(typeof performance>"u"?Date:performance).now()}var Gm="\\[\\]\\.:\\/",iP=new RegExp("["+Gm+"]","g"),km="[^"+Gm+"]",sP="[^"+Gm.replace("\\.","")+"]",oP=/((?:WC+[\/:])*)/.source.replace("WC",km),aP=/(WCOD+)?/.source.replace("WCOD",sP),lP=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",km),cP=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",km),uP=new RegExp("^"+oP+aP+lP+cP+"$"),hP=["material","materials","bones"],Om=class{constructor(e,t,n){let i=n||St.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},St=class{constructor(e,t,n){this.path=t,this.parsedPath=n||St.parseTrackName(t),this.node=St.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new St.Composite(e,t,n):new St(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(iP,"")}static parseTrackName(e){let t=uP.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);hP.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(s){for(let o=0;o<s.length;o++){let a=s[o];if(a.name===t||a.uuid===t)return a;let l=n(a.children);if(l)return l}return null},i=n(e.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)e[t++]=n[i]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,n=t.objectName,i=t.propertyName,s=t.propertyIndex;if(e||(e=St.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(n){let u=t.objectIndex;switch(n){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let c=0;c<e.length;c++)if(e[c].name===u){u=c;break}break;default:if(e[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[n]}if(u!==void 0){if(e[u]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[u]}}let o=e[i];if(o===void 0){let u=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+u+"."+i+" but it wasn't found.",e);return}let a=this.Versioning.None;this.targetObject=e,e.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:e.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(i==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=s}else o.fromArray!==void 0&&o.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(l=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=i;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};St.Composite=Om;St.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};St.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};St.prototype.GetterByBindingType=[St.prototype._getValue_direct,St.prototype._getValue_array,St.prototype._getValue_arrayElement,St.prototype._getValue_toArray];St.prototype.SetterByBindingTypeAndVersioning=[[St.prototype._setValue_direct,St.prototype._setValue_direct_setNeedsUpdate,St.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[St.prototype._setValue_array,St.prototype._setValue_array_setNeedsUpdate,St.prototype._setValue_array_setMatrixWorldNeedsUpdate],[St.prototype._setValue_arrayElement,St.prototype._setValue_arrayElement_setNeedsUpdate,St.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[St.prototype._setValue_fromArray,St.prototype._setValue_fromArray_setNeedsUpdate,St.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var we=class{constructor(e){typeof e=="string"&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}clone(){return new we(this.value.clone===void 0?this.value:this.value.clone())}};var Sa=class{constructor(e,t,n=0,i=1/0){this.ray=new zi(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new vc,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,n=[]){return Rm(e,this,n,t),n.sort(Xv),n}intersectObjects(e,t=!0,n=[]){for(let i=0,s=e.length;i<s;i++)Rm(e[i],this,n,t);return n.sort(Xv),n}};function Xv(r,e){return r.distance-e.distance}function Rm(r,e,t,n){if(r.layers.test(e.layers)&&r.raycast(e,t),n===!0){let i=r.children;for(let s=0,o=i.length;s<o;s++)Rm(i[s],e,t,!0)}}var Ec=class{constructor(e=1,t=0,n=0){return this.radius=e,this.phi=t,this.theta=n,this}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(cn(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}};var Yv=new S,gh=new S,Nh=class{constructor(e=new S,t=new S){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Yv.subVectors(e,this.start),gh.subVectors(this.end,this.start);let n=gh.dot(gh),s=gh.dot(Yv)/n;return t&&(s=cn(s,0,1)),s}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},Qv=new S,Bh=class extends ot{constructor(e,t){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;let n=new Pe,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,l=32;o<l;o++,a++){let u=o/l*Math.PI*2,c=a/l*Math.PI*2;i.push(Math.cos(u),Math.sin(u),1,Math.cos(c),Math.sin(c),1)}n.setAttribute("position",new _e(i,3));let s=new xr({fog:!1,toneMapped:!1});this.cone=new ds(n,s),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateMatrixWorld();let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),Qv.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Qv),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}};var Fh=class extends kt{constructor(e,t,n){let i=new po(t,4,2),s=new ri({wireframe:!0,fog:!1,toneMapped:!1});super(i,s),this.light=e,this.light.updateMatrixWorld(),this.color=n,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}};var Zv=new S,yh=new S,Kv=new S,Uh=class extends ot{constructor(e,t,n){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,t===void 0&&(t=1);let i=new Pe;i.setAttribute("position",new _e([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let s=new xr({fog:!1,toneMapped:!1});this.lightPlane=new uo(i,s),this.add(this.lightPlane),i=new Pe,i.setAttribute("position",new _e([0,0,0,0,0,1],3)),this.targetLine=new uo(i,s),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){Zv.setFromMatrixPosition(this.light.matrixWorld),yh.setFromMatrixPosition(this.light.target.matrixWorld),Kv.subVectors(yh,Zv),this.lightPlane.lookAt(yh),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(yh),this.targetLine.scale.z=Kv.length()}},vh=new S,jt=new Br,wr=class extends ds{constructor(e){let t=new Pe,n=new xr({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],o={};a("n1","n2"),a("n2","n4"),a("n4","n3"),a("n3","n1"),a("f1","f2"),a("f2","f4"),a("f4","f3"),a("f3","f1"),a("n1","f1"),a("n2","f2"),a("n3","f3"),a("n4","f4"),a("p","n1"),a("p","n2"),a("p","n3"),a("p","n4"),a("u1","u2"),a("u2","u3"),a("u3","u1"),a("c","t"),a("p","c"),a("cn1","cn2"),a("cn3","cn4"),a("cf1","cf2"),a("cf3","cf4");function a(m,p){l(m),l(p)}function l(m){i.push(0,0,0),s.push(0,0,0),o[m]===void 0&&(o[m]=[]),o[m].push(i.length/3-1)}t.setAttribute("position",new _e(i,3)),t.setAttribute("color",new _e(s,3)),super(t,n),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=o,this.update();let u=new Re(16755200),c=new Re(16711680),h=new Re(43775),d=new Re(16777215),f=new Re(3355443);this.setColors(u,c,h,d,f)}setColors(e,t,n,i,s){let a=this.geometry.getAttribute("color");a.setXYZ(0,e.r,e.g,e.b),a.setXYZ(1,e.r,e.g,e.b),a.setXYZ(2,e.r,e.g,e.b),a.setXYZ(3,e.r,e.g,e.b),a.setXYZ(4,e.r,e.g,e.b),a.setXYZ(5,e.r,e.g,e.b),a.setXYZ(6,e.r,e.g,e.b),a.setXYZ(7,e.r,e.g,e.b),a.setXYZ(8,e.r,e.g,e.b),a.setXYZ(9,e.r,e.g,e.b),a.setXYZ(10,e.r,e.g,e.b),a.setXYZ(11,e.r,e.g,e.b),a.setXYZ(12,e.r,e.g,e.b),a.setXYZ(13,e.r,e.g,e.b),a.setXYZ(14,e.r,e.g,e.b),a.setXYZ(15,e.r,e.g,e.b),a.setXYZ(16,e.r,e.g,e.b),a.setXYZ(17,e.r,e.g,e.b),a.setXYZ(18,e.r,e.g,e.b),a.setXYZ(19,e.r,e.g,e.b),a.setXYZ(20,e.r,e.g,e.b),a.setXYZ(21,e.r,e.g,e.b),a.setXYZ(22,e.r,e.g,e.b),a.setXYZ(23,e.r,e.g,e.b),a.setXYZ(24,t.r,t.g,t.b),a.setXYZ(25,t.r,t.g,t.b),a.setXYZ(26,t.r,t.g,t.b),a.setXYZ(27,t.r,t.g,t.b),a.setXYZ(28,t.r,t.g,t.b),a.setXYZ(29,t.r,t.g,t.b),a.setXYZ(30,t.r,t.g,t.b),a.setXYZ(31,t.r,t.g,t.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,s.r,s.g,s.b),a.setXYZ(41,s.r,s.g,s.b),a.setXYZ(42,s.r,s.g,s.b),a.setXYZ(43,s.r,s.g,s.b),a.setXYZ(44,s.r,s.g,s.b),a.setXYZ(45,s.r,s.g,s.b),a.setXYZ(46,s.r,s.g,s.b),a.setXYZ(47,s.r,s.g,s.b),a.setXYZ(48,s.r,s.g,s.b),a.setXYZ(49,s.r,s.g,s.b),a.needsUpdate=!0}update(){let e=this.geometry,t=this.pointMap,n=1,i=1;jt.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Qt("c",t,e,jt,0,0,-1),Qt("t",t,e,jt,0,0,1),Qt("n1",t,e,jt,-n,-i,-1),Qt("n2",t,e,jt,n,-i,-1),Qt("n3",t,e,jt,-n,i,-1),Qt("n4",t,e,jt,n,i,-1),Qt("f1",t,e,jt,-n,-i,1),Qt("f2",t,e,jt,n,-i,1),Qt("f3",t,e,jt,-n,i,1),Qt("f4",t,e,jt,n,i,1),Qt("u1",t,e,jt,n*.7,i*1.1,-1),Qt("u2",t,e,jt,-n*.7,i*1.1,-1),Qt("u3",t,e,jt,0,i*2,-1),Qt("cf1",t,e,jt,-n,0,1),Qt("cf2",t,e,jt,n,0,1),Qt("cf3",t,e,jt,0,-i,1),Qt("cf4",t,e,jt,0,i,1),Qt("cn1",t,e,jt,-n,0,-1),Qt("cn2",t,e,jt,n,0,-1),Qt("cn3",t,e,jt,0,-i,-1),Qt("cn4",t,e,jt,0,i,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Qt(r,e,t,n,i,s,o){vh.set(i,s,o).unproject(n);let a=e[r];if(a!==void 0){let l=t.getAttribute("position");for(let u=0,c=a.length;u<c;u++)l.setXYZ(a[u],vh.x,vh.y,vh.z)}}var xo=class extends ds{constructor(e,t=16776960){let n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],s=new Pe;s.setIndex(new je(n,1)),s.setAttribute("position",new _e(i,3)),super(s,new xr({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){let t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}};var zh=class extends ds{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],i=new Pe;i.setAttribute("position",new _e(t,3)),i.setAttribute("color",new _e(n,3));let s=new xr({vertexColors:!0,toneMapped:!1});super(i,s),this.type="AxesHelper"}setColors(e,t,n){let i=new Re,s=this.geometry.attributes.color.array;return i.set(e),i.toArray(s,0),i.toArray(s,3),i.set(t),i.toArray(s,6),i.toArray(s,9),i.set(n),i.toArray(s,12),i.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},Gh=class{constructor(){this.type="ShapePath",this.color=new Re,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new wc,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,s,o){return this.currentPath.bezierCurveTo(e,t,n,i,s,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e,t){function n(x){let w=[];for(let b=0,_=x.length;b<_;b++){let A=x[b],M=new Nr;M.curves=A.curves,w.push(M)}return w}function i(x,w){let b=w.length,_=!1;for(let A=b-1,M=0;M<b;A=M++){let v=w[A],T=w[M],E=T.x-v.x,C=T.y-v.y;if(Math.abs(C)>Number.EPSILON){if(C<0&&(v=w[M],E=-E,T=w[A],C=-C),x.y<v.y||x.y>T.y)continue;if(x.y===v.y){if(x.x===v.x)return!0}else{let L=C*(x.x-v.x)-E*(x.y-v.y);if(L===0)return!0;if(L<0)continue;_=!_}}else{if(x.y!==v.y)continue;if(T.x<=x.x&&x.x<=v.x||v.x<=x.x&&x.x<=T.x)return!0}}return _}let s=as.isClockWise,o=this.subPaths;if(o.length===0)return[];if(t===!0)return n(o);let a,l,u,c=[];if(o.length===1)return l=o[0],u=new Nr,u.curves=l.curves,c.push(u),c;let h=!s(o[0].getPoints());h=e?!h:h;let d=[],f=[],m=[],p=0,g;f[p]=void 0,m[p]=[];for(let x=0,w=o.length;x<w;x++)l=o[x],g=l.getPoints(),a=s(g),a=e?!a:a,a?(!h&&f[p]&&p++,f[p]={s:new Nr,p:g},f[p].s.curves=l.curves,h&&p++,m[p]=[]):m[p].push({h:l,p:g[0]});if(!f[0])return n(o);if(f.length>1){let x=!1,w=0;for(let b=0,_=f.length;b<_;b++)d[b]=[];for(let b=0,_=f.length;b<_;b++){let A=m[b];for(let M=0;M<A.length;M++){let v=A[M],T=!0;for(let E=0;E<f.length;E++)i(v.p,f[E].p)&&(b!==E&&w++,T?(T=!1,d[E].push(v)):x=!0);T&&d[b].push(v)}}w>0&&x===!1&&(m=d)}let y;for(let x=0,w=f.length;x<w;x++){u=f[x].s,c.push(u),y=m[x];for(let b=0,_=y.length;b<_;b++)u.holes.push(y[b].h)}return c}},{floatView:Bz,uint32View:Fz,baseTable:Uz,shiftTable:zz,mantissaTable:Gz,exponentTable:kz,offsetTable:Vz}=dP();function dP(){let r=new ArrayBuffer(4),e=new Float32Array(r),t=new Uint32Array(r),n=new Uint32Array(512),i=new Uint32Array(512);for(let l=0;l<256;++l){let u=l-127;u<-27?(n[l]=0,n[l|256]=32768,i[l]=24,i[l|256]=24):u<-14?(n[l]=1024>>-u-14,n[l|256]=1024>>-u-14|32768,i[l]=-u-1,i[l|256]=-u-1):u<=15?(n[l]=u+15<<10,n[l|256]=u+15<<10|32768,i[l]=13,i[l|256]=13):u<128?(n[l]=31744,n[l|256]=64512,i[l]=24,i[l|256]=24):(n[l]=31744,n[l|256]=64512,i[l]=13,i[l|256]=13)}let s=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let l=1;l<1024;++l){let u=l<<13,c=0;for(;(u&8388608)===0;)u<<=1,c-=8388608;u&=-8388609,c+=947912704,s[l]=u|c}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)o[l]=l<<23;o[31]=1199570944,o[32]=2147483648;for(let l=33;l<63;++l)o[l]=2147483648+(l-32<<23);o[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(a[l]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:i,mantissaTable:s,exponentTable:o,offsetTable:a}}var kh=class extends lt{constructor(e,t,n){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(e,t,n),this.samples=4}};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:bo}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=bo);var Ta=".",Cc=Symbol("target"),Vm=Symbol("unsubscribe");function Dc(r){return r instanceof Date||r instanceof Set||r instanceof Map||r instanceof WeakSet||r instanceof WeakMap||ArrayBuffer.isView(r)}function px(r){return(typeof r=="object"?r===null:typeof r!="function")||r instanceof RegExp}var ur=Array.isArray;function wo(r){return typeof r=="symbol"}var fP={after:(r,e)=>ur(r)?r.slice(e.length):e===""?r:r.slice(e.length+1),concat:(r,e)=>ur(r)?(r=[...r],e&&r.push(e),r):e&&e.toString!==void 0?(r!==""&&(r+=Ta),wo(e)?r+e.toString():r+e):r,initial:r=>{if(ur(r))return r.slice(0,-1);if(r==="")return r;let e=r.lastIndexOf(Ta);return e===-1?"":r.slice(0,e)},last:r=>{if(ur(r))return r[r.length-1]||"";if(r==="")return r;let e=r.lastIndexOf(Ta);return e===-1?r:r.slice(e+1)},walk:(r,e)=>{if(ur(r))for(let t of r)e(t);else if(r!==""){let t=0,n=r.indexOf(Ta);if(n===-1)e(r);else for(;t<r.length;)n===-1&&(n=r.length),e(r.slice(t,n)),t=n+1,n=r.indexOf(Ta,t)}},get(r,e){return this.walk(e,t=>{r&&(r=r[t])}),r}},Hn=fP;function Hm(r){return typeof r=="object"&&typeof r.next=="function"}function Wm(r,e,t,n,i){let s=r.next;if(e.name==="entries")r.next=function(){let o=s.call(this);return o.done===!1&&(o.value[0]=i(o.value[0],e,o.value[0],n),o.value[1]=i(o.value[1],e,o.value[0],n)),o};else if(e.name==="values"){let o=t[Cc].keys();r.next=function(){let a=s.call(this);return a.done===!1&&(a.value=i(a.value,e,o.next().value,n)),a}}else r.next=function(){let o=s.call(this);return o.done===!1&&(o.value=i(o.value,e,o.value,n)),o};return r}function jh(r,e,t){return r.isUnsubscribed||e.ignoreSymbols&&wo(t)||e.ignoreUnderscores&&t.charAt(0)==="_"||"ignoreKeys"in e&&e.ignoreKeys.includes(t)}var Pc=class{constructor(e){this._equals=e,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return this._descriptorCache===void 0&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(e){let t=this._getDescriptorCache(),n=t.get(e);return n===void 0&&(n={},t.set(e,n)),n}_getOwnPropertyDescriptor(e,t){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(e,t);let n=this._getProperties(e),i=n[t];return i===void 0&&(i=Reflect.getOwnPropertyDescriptor(e,t),n[t]=i),i}getProxy(e,t,n,i){if(this.isUnsubscribed)return e;let s=e[i],o=s||e;this._pathCache.set(o,t);let a=this._proxyCache.get(o);return a===void 0&&(a=s===void 0?new Proxy(e,n):e,this._proxyCache.set(o,a)),a}getPath(e){return this.isUnsubscribed?void 0:this._pathCache.get(e)}isDetached(e,t){return!Object.is(e,Hn.get(t,this.getPath(e)))}defineProperty(e,t,n){return Reflect.defineProperty(e,t,n)?(this.isUnsubscribed||(this._getProperties(e)[t]=n),!0):!1}setProperty(e,t,n,i,s){if(!this._equals(s,n)||!(t in e)){let o=this._getOwnPropertyDescriptor(e,t);return o!==void 0&&"set"in o?Reflect.set(e,t,n,i):Reflect.set(e,t,n)}return!0}deleteProperty(e,t,n){if(Reflect.deleteProperty(e,t)){if(!this.isUnsubscribed){let i=this._getDescriptorCache().get(e);i&&(delete i[t],this._pathCache.delete(n))}return!0}return!1}isSameDescriptor(e,t,n){let i=this._getOwnPropertyDescriptor(t,n);return e!==void 0&&i!==void 0&&Object.is(e.value,i.value)&&(e.writable||!1)===(i.writable||!1)&&(e.enumerable||!1)===(i.enumerable||!1)&&(e.configurable||!1)===(i.configurable||!1)&&e.get===i.get&&e.set===i.set}isGetInvariant(e,t){let n=this._getOwnPropertyDescriptor(e,t);return n!==void 0&&n.configurable!==!0&&n.writable!==!0}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function Ea(r){return toString.call(r)==="[object Object]"}function Ca(){return!0}function ys(r,e){return r.length!==e.length||r.some((t,n)=>e[n]!==t)}var qh=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]);var pP=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),jm={push:Ca,pop:Ca,shift:Ca,unshift:Ca,copyWithin:ys,reverse:ys,sort:ys,splice:ys,flat:ys,fill:ys},mx=new Set([...qh,...pP,...Object.keys(jm)]);function Da(r,e){if(r.size!==e.size)return!0;for(let t of r)if(!e.has(t))return!0;return!1}var qm=["keys","values","entries"],Xm=new Set(["has","toString"]),Ym={add:Da,clear:Da,delete:Da,forEach:Da},gx=new Set([...Xm,...Object.keys(Ym),...qm]);function Pa(r,e){if(r.size!==e.size)return!0;let t;for(let[n,i]of r)if(t=e.get(n),t!==i||t===void 0&&!e.has(n))return!0;return!1}var mP=new Set([...Xm,"get"]),Qm={set:Pa,clear:Pa,delete:Pa,forEach:Pa},yx=new Set([...mP,...Object.keys(Qm),...qm]);var An=class{constructor(e,t,n,i){this._path=t,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=i,this._changes=i?[]:null,this.clone=t===void 0?e:this._shallowClone(e)}static isHandledMethod(e){return qh.has(e)}_shallowClone(e){let t=e;if(Ea(e))t={...e};else if(ur(e))t=[...e];else if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set([...e].map(n=>this._shallowClone(n)));else if(e instanceof Map){t=new Map;for(let[n,i]of e.entries())t.set(n,this._shallowClone(i))}return this._clonedCache.add(t),t}preferredThisArg(e,t,n,i){return e?(ur(i)?this._onIsChanged=jm[t]:i instanceof Set?this._onIsChanged=Ym[t]:i instanceof Map&&(this._onIsChanged=Qm[t]),i):n}update(e,t,n){let i=Hn.after(e,this._path);if(t!=="length"){let s=this.clone;Hn.walk(i,o=>{s&&s[o]&&(this._clonedCache.has(s[o])||(s[o]=this._shallowClone(s[o])),s=s[o])}),this._hasOnValidate&&this._changes.push({path:i,property:t,previous:n}),s&&s[t]&&(s[t]=n)}this._isChanged=!0}undo(e){let t;for(let n=this._changes.length-1;n!==-1;n--)t=this._changes[n],Hn.get(e,t.path)[t.property]=t.previous}isChanged(e){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,e)}};var Ia=class extends An{static isHandledMethod(e){return mx.has(e)}};var Ic=class extends An{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}};var La=class extends An{static isHandledMethod(e){return gx.has(e)}undo(e){for(let t of this.clone)e.add(t);for(let t of e)this.clone.has(t)||e.delete(t)}};var Oa=class extends An{static isHandledMethod(e){return yx.has(e)}undo(e){for(let[t,n]of this.clone.entries())e.set(t,n);for(let t of e.keys())this.clone.has(t)||e.delete(t)}};var Lc=class extends An{constructor(e,t,n,i){super(void 0,t,n,i),this._arg1=n[0],this._weakValue=e.has(this._arg1)}isChanged(e){return this._weakValue!==e.has(this._arg1)}undo(e){this._weakValue&&!e.has(this._arg1)?e.add(this._arg1):e.delete(this._arg1)}};var Oc=class extends An{constructor(e,t,n,i){super(void 0,t,n,i),this._weakKey=n[0],this._weakHas=e.has(this._weakKey),this._weakValue=e.get(this._weakKey)}isChanged(e){return this._weakValue!==e.get(this._weakKey)}undo(e){let t=e.has(this._weakKey);this._weakHas&&!t?e.set(this._weakKey,this._weakValue):!this._weakHas&&t?e.delete(this._weakKey):this._weakValue!==e.get(this._weakKey)&&e.set(this._weakKey,this._weakValue)}};var Gr=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return Ea(e)||ur(e)||Dc(e)}static isHandledMethod(e,t){return Ea(e)?An.isHandledMethod(t):ur(e)?Ia.isHandledMethod(t):e instanceof Set?La.isHandledMethod(t):e instanceof Map?Oa.isHandledMethod(t):Dc(e)}get isCloning(){return this._stack.length>0}start(e,t,n){let i=An;ur(e)?i=Ia:e instanceof Date?i=Ic:e instanceof Set?i=La:e instanceof Map?i=Oa:e instanceof WeakSet?i=Lc:e instanceof WeakMap&&(i=Oc),this._stack.push(new i(e,t,n,this._hasOnValidate))}update(e,t,n){this._stack[this._stack.length-1].update(e,t,n)}preferredThisArg(e,t,n){let{name:i}=e,s=Gr.isHandledMethod(n,i);return this._stack[this._stack.length-1].preferredThisArg(s,i,t,n)}isChanged(e,t,n){return this._stack[this._stack.length-1].isChanged(e,t,n)}undo(e){this._previousClone!==void 0&&this._previousClone.undo(e)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}};var gP={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},Zm=(r,e,t={})=>{t={...gP,...t};let n=Symbol("ProxyTarget"),{equals:i,isShallow:s,ignoreDetached:o,details:a}=t,l=new Pc(i),u=typeof t.onValidate=="function",c=new Gr(u),h=(x,w,b,_,A)=>!u||c.isCloning||t.onValidate(Hn.concat(l.getPath(x),w),b,_,A)===!0,d=(x,w,b,_)=>{!jh(l,t,w)&&!(o&&l.isDetached(x,r))&&f(l.getPath(x),w,b,_)},f=(x,w,b,_,A)=>{c.isCloning?c.update(x,w,_):e(Hn.concat(x,w),b,_,A)},m=x=>x&&(x[n]||x),p=(x,w,b,_)=>px(x)||b==="constructor"||s&&!Gr.isHandledMethod(w,b)||jh(l,t,b)||l.isGetInvariant(w,b)||o&&l.isDetached(w,r)?x:(_===void 0&&(_=l.getPath(w)),l.getProxy(x,Hn.concat(_,b),g,n)),g={get(x,w,b){if(wo(w)){if(w===n||w===Cc)return x;if(w===Vm&&!l.isUnsubscribed&&l.getPath(x).length===0)return l.unsubscribe(),x}let _=Dc(x)?Reflect.get(x,w):Reflect.get(x,w,b);return p(_,x,w)},set(x,w,b,_){b=m(b);let A=x[n]||x,M=A[w];if(i(M,b)&&w in x)return!0;let v=h(x,w,b,M);return v&&l.setProperty(A,w,b,_,M)?(d(x,w,x[w],M),!0):!v},defineProperty(x,w,b){if(!l.isSameDescriptor(b,x,w)){let _=x[w];h(x,w,b.value,_)&&l.defineProperty(x,w,b,_)&&d(x,w,b.value,_)}return!0},deleteProperty(x,w){if(!Reflect.has(x,w))return!0;let b=Reflect.get(x,w),_=h(x,w,void 0,b);return _&&l.deleteProperty(x,w,b)?(d(x,w,void 0,b),!0):!_},apply(x,w,b){let _=w[n]||w;if(l.isUnsubscribed)return Reflect.apply(x,_,b);if((a===!1||a!==!0&&!a.includes(x.name))&&Gr.isHandledType(_)){let A=Hn.initial(l.getPath(x)),M=Gr.isHandledMethod(_,x.name);c.start(_,A,b);let v=Reflect.apply(x,c.preferredThisArg(x,w,_),M?b.map(C=>m(C)):b),T=c.isChanged(_,i),E=c.stop();if(Gr.isHandledType(v)&&M&&(w instanceof Map&&x.name==="get"&&(A=Hn.concat(A,b[0])),v=l.getProxy(v,A,g)),T){let C={name:x.name,args:b,result:v},L=c.isCloning?Hn.initial(A):A,R=c.isCloning?Hn.last(A):"";h(Hn.get(r,L),R,_,E,C)?f(L,R,_,E,C):c.undo(_)}return(w instanceof Map||w instanceof Set)&&Hm(v)?Wm(v,x,w,A,p):v}return Reflect.apply(x,w,b)}},y=l.getProxy(r,t.pathAsArray?[]:"",g);return e=e.bind(y),u&&(t.onValidate=t.onValidate.bind(y)),y};Zm.target=r=>r&&r[Cc]||r;Zm.unsubscribe=r=>r[Vm]||r;var Km=Zm;var yP=typeof global=="object"&&global&&global.Object===Object&&global,Xh=yP;var vP=typeof self=="object"&&self&&self.Object===Object&&self,xP=Xh||vP||Function("return this")(),Xt=xP;var bP=Xt.Symbol,Wn=bP;var vx=Object.prototype,wP=vx.hasOwnProperty,_P=vx.toString,Rc=Wn?Wn.toStringTag:void 0;function SP(r){var e=wP.call(r,Rc),t=r[Rc];try{r[Rc]=void 0;var n=!0}catch{}var i=_P.call(r);return n&&(e?r[Rc]=t:delete r[Rc]),i}var xx=SP;var AP=Object.prototype,MP=AP.toString;function TP(r){return MP.call(r)}var bx=TP;var EP="[object Null]",CP="[object Undefined]",wx=Wn?Wn.toStringTag:void 0;function DP(r){return r==null?r===void 0?CP:EP:wx&&wx in Object(r)?xx(r):bx(r)}var hr=DP;function PP(r){return r!=null&&typeof r=="object"}var On=PP;var IP="[object Symbol]";function LP(r){return typeof r=="symbol"||On(r)&&hr(r)==IP}var vs=LP;function OP(r,e){for(var t=-1,n=r==null?0:r.length,i=Array(n);++t<n;)i[t]=e(r[t],t,r);return i}var Yh=OP;var RP=Array.isArray,un=RP;var NP=1/0,_x=Wn?Wn.prototype:void 0,Sx=_x?_x.toString:void 0;function Ax(r){if(typeof r=="string")return r;if(un(r))return Yh(r,Ax)+"";if(vs(r))return Sx?Sx.call(r):"";var e=r+"";return e=="0"&&1/r==-NP?"-0":e}var Mx=Ax;var BP=/\s/;function FP(r){for(var e=r.length;e--&&BP.test(r.charAt(e)););return e}var Tx=FP;var UP=/^\s+/;function zP(r){return r&&r.slice(0,Tx(r)+1).replace(UP,"")}var Ex=zP;function GP(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var Nt=GP;var Cx=0/0,kP=/^[-+]0x[0-9a-f]+$/i,VP=/^0b[01]+$/i,HP=/^0o[0-7]+$/i,WP=parseInt;function jP(r){if(typeof r=="number")return r;if(vs(r))return Cx;if(Nt(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=Nt(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=Ex(r);var t=VP.test(r);return t||HP.test(r)?WP(r.slice(2),t?2:8):kP.test(r)?Cx:+r}var Jm=jP;function qP(r){return r}var Qh=qP;var XP="[object AsyncFunction]",YP="[object Function]",QP="[object GeneratorFunction]",ZP="[object Proxy]";function KP(r){if(!Nt(r))return!1;var e=hr(r);return e==YP||e==QP||e==XP||e==ZP}var Ra=KP;var JP=Xt["__core-js_shared__"],Zh=JP;var Dx=function(){var r=/[^.]+$/.exec(Zh&&Zh.keys&&Zh.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function $P(r){return!!Dx&&Dx in r}var Px=$P;var eI=Function.prototype,tI=eI.toString;function nI(r){if(r!=null){try{return tI.call(r)}catch{}try{return r+""}catch{}}return""}var ki=nI;var rI=/[\\^$.*+?()[\]{}|]/g,iI=/^\[object .+?Constructor\]$/,sI=Function.prototype,oI=Object.prototype,aI=sI.toString,lI=oI.hasOwnProperty,cI=RegExp("^"+aI.call(lI).replace(rI,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function uI(r){if(!Nt(r)||Px(r))return!1;var e=Ra(r)?cI:iI;return e.test(ki(r))}var Ix=uI;function hI(r,e){return r?.[e]}var Lx=hI;function dI(r,e){var t=Lx(r,e);return Ix(t)?t:void 0}var Jn=dI;var fI=Jn(Xt,"WeakMap"),Kh=fI;var Ox=Object.create,pI=function(){function r(){}return function(e){if(!Nt(e))return{};if(Ox)return Ox(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}(),Rx=pI;function mI(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var Nx=mI;function gI(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++t<n;)e[t]=r[t];return e}var Jh=gI;var yI=800,vI=16,xI=Date.now;function bI(r){var e=0,t=0;return function(){var n=xI(),i=vI-(n-t);if(t=n,i>0){if(++e>=yI)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}var Bx=bI;function wI(r){return function(){return r}}var Fx=wI;var _I=function(){try{var r=Jn(Object,"defineProperty");return r({},"",{}),r}catch{}}(),Na=_I;var SI=Na?function(r,e){return Na(r,"toString",{configurable:!0,enumerable:!1,value:Fx(e),writable:!0})}:Qh,Ux=SI;var AI=Bx(Ux),$h=AI;function MI(r,e){for(var t=-1,n=r==null?0:r.length;++t<n&&e(r[t],t,r)!==!1;);return r}var zx=MI;var TI=9007199254740991,EI=/^(?:0|[1-9]\d*)$/;function CI(r,e){var t=typeof r;return e=e??TI,!!e&&(t=="number"||t!="symbol"&&EI.test(r))&&r>-1&&r%1==0&&r<e}var xs=CI;function DI(r,e,t){e=="__proto__"&&Na?Na(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}var Ba=DI;function PI(r,e){return r===e||r!==r&&e!==e}var bs=PI;var II=Object.prototype,LI=II.hasOwnProperty;function OI(r,e,t){var n=r[e];(!(LI.call(r,e)&&bs(n,t))||t===void 0&&!(e in r))&&Ba(r,e,t)}var Fa=OI;function RI(r,e,t,n){var i=!t;t||(t={});for(var s=-1,o=e.length;++s<o;){var a=e[s],l=n?n(t[a],r[a],a,t,r):void 0;l===void 0&&(l=r[a]),i?Ba(t,a,l):Fa(t,a,l)}return t}var _r=RI;var Gx=Math.max;function NI(r,e,t){return e=Gx(e===void 0?r.length-1:e,0),function(){for(var n=arguments,i=-1,s=Gx(n.length-e,0),o=Array(s);++i<s;)o[i]=n[e+i];i=-1;for(var a=Array(e+1);++i<e;)a[i]=n[i];return a[e]=t(o),Nx(r,this,a)}}var ed=NI;function BI(r,e){return $h(ed(r,e,Qh),r+"")}var kx=BI;var FI=9007199254740991;function UI(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=FI}var Ua=UI;function zI(r){return r!=null&&Ua(r.length)&&!Ra(r)}var ws=zI;function GI(r,e,t){if(!Nt(t))return!1;var n=typeof e;return(n=="number"?ws(t)&&xs(e,t.length):n=="string"&&e in t)?bs(t[e],r):!1}var Vx=GI;function kI(r){return kx(function(e,t){var n=-1,i=t.length,s=i>1?t[i-1]:void 0,o=i>2?t[2]:void 0;for(s=r.length>3&&typeof s=="function"?(i--,s):void 0,o&&Vx(t[0],t[1],o)&&(s=i<3?void 0:s,i=1),e=Object(e);++n<i;){var a=t[n];a&&r(e,a,n,s)}return e})}var Hx=kI;var VI=Object.prototype;function HI(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||VI;return r===t}var za=HI;function WI(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var Wx=WI;var jI="[object Arguments]";function qI(r){return On(r)&&hr(r)==jI}var $m=qI;var jx=Object.prototype,XI=jx.hasOwnProperty,YI=jx.propertyIsEnumerable,QI=$m(function(){return arguments}())?$m:function(r){return On(r)&&XI.call(r,"callee")&&!YI.call(r,"callee")},Vi=QI;function ZI(){return!1}var qx=ZI;var Qx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xx=Qx&&typeof module=="object"&&module&&!module.nodeType&&module,KI=Xx&&Xx.exports===Qx,Yx=KI?Xt.Buffer:void 0,JI=Yx?Yx.isBuffer:void 0,$I=JI||qx,Ga=$I;var eL="[object Arguments]",tL="[object Array]",nL="[object Boolean]",rL="[object Date]",iL="[object Error]",sL="[object Function]",oL="[object Map]",aL="[object Number]",lL="[object Object]",cL="[object RegExp]",uL="[object Set]",hL="[object String]",dL="[object WeakMap]",fL="[object ArrayBuffer]",pL="[object DataView]",mL="[object Float32Array]",gL="[object Float64Array]",yL="[object Int8Array]",vL="[object Int16Array]",xL="[object Int32Array]",bL="[object Uint8Array]",wL="[object Uint8ClampedArray]",_L="[object Uint16Array]",SL="[object Uint32Array]",Lt={};Lt[mL]=Lt[gL]=Lt[yL]=Lt[vL]=Lt[xL]=Lt[bL]=Lt[wL]=Lt[_L]=Lt[SL]=!0;Lt[eL]=Lt[tL]=Lt[fL]=Lt[nL]=Lt[pL]=Lt[rL]=Lt[iL]=Lt[sL]=Lt[oL]=Lt[aL]=Lt[lL]=Lt[cL]=Lt[uL]=Lt[hL]=Lt[dL]=!1;function AL(r){return On(r)&&Ua(r.length)&&!!Lt[hr(r)]}var Zx=AL;function ML(r){return function(e){return r(e)}}var ka=ML;var Kx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nc=Kx&&typeof module=="object"&&module&&!module.nodeType&&module,TL=Nc&&Nc.exports===Kx,eg=TL&&Xh.process,EL=function(){try{var r=Nc&&Nc.require&&Nc.require("util").types;return r||eg&&eg.binding&&eg.binding("util")}catch{}}(),Hi=EL;var Jx=Hi&&Hi.isTypedArray,CL=Jx?ka(Jx):Zx,td=CL;var DL=Object.prototype,PL=DL.hasOwnProperty;function IL(r,e){var t=un(r),n=!t&&Vi(r),i=!t&&!n&&Ga(r),s=!t&&!n&&!i&&td(r),o=t||n||i||s,a=o?Wx(r.length,String):[],l=a.length;for(var u in r)(e||PL.call(r,u))&&!(o&&(u=="length"||i&&(u=="offset"||u=="parent")||s&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||xs(u,l)))&&a.push(u);return a}var nd=IL;function LL(r,e){return function(t){return r(e(t))}}var rd=LL;var OL=rd(Object.keys,Object),$x=OL;var RL=Object.prototype,NL=RL.hasOwnProperty;function BL(r){if(!za(r))return $x(r);var e=[];for(var t in Object(r))NL.call(r,t)&&t!="constructor"&&e.push(t);return e}var eb=BL;function FL(r){return ws(r)?nd(r):eb(r)}var Va=FL;function UL(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var tb=UL;var zL=Object.prototype,GL=zL.hasOwnProperty;function kL(r){if(!Nt(r))return tb(r);var e=za(r),t=[];for(var n in r)n=="constructor"&&(e||!GL.call(r,n))||t.push(n);return t}var nb=kL;function VL(r){return ws(r)?nd(r,!0):nb(r)}var ii=VL;var HL=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WL=/^\w*$/;function jL(r,e){if(un(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||vs(r)?!0:WL.test(r)||!HL.test(r)||e!=null&&r in Object(e)}var rb=jL;var qL=Jn(Object,"create"),Wi=qL;function XL(){this.__data__=Wi?Wi(null):{},this.size=0}var ib=XL;function YL(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var sb=YL;var QL="__lodash_hash_undefined__",ZL=Object.prototype,KL=ZL.hasOwnProperty;function JL(r){var e=this.__data__;if(Wi){var t=e[r];return t===QL?void 0:t}return KL.call(e,r)?e[r]:void 0}var ob=JL;var $L=Object.prototype,e3=$L.hasOwnProperty;function t3(r){var e=this.__data__;return Wi?e[r]!==void 0:e3.call(e,r)}var ab=t3;var n3="__lodash_hash_undefined__";function r3(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Wi&&e===void 0?n3:e,this}var lb=r3;function Ha(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}Ha.prototype.clear=ib;Ha.prototype.delete=sb;Ha.prototype.get=ob;Ha.prototype.has=ab;Ha.prototype.set=lb;var tg=Ha;function i3(){this.__data__=[],this.size=0}var cb=i3;function s3(r,e){for(var t=r.length;t--;)if(bs(r[t][0],e))return t;return-1}var _s=s3;var o3=Array.prototype,a3=o3.splice;function l3(r){var e=this.__data__,t=_s(e,r);if(t<0)return!1;var n=e.length-1;return t==n?e.pop():a3.call(e,t,1),--this.size,!0}var ub=l3;function c3(r){var e=this.__data__,t=_s(e,r);return t<0?void 0:e[t][1]}var hb=c3;function u3(r){return _s(this.__data__,r)>-1}var db=u3;function h3(r,e){var t=this.__data__,n=_s(t,r);return n<0?(++this.size,t.push([r,e])):t[n][1]=e,this}var fb=h3;function Wa(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}Wa.prototype.clear=cb;Wa.prototype.delete=ub;Wa.prototype.get=hb;Wa.prototype.has=db;Wa.prototype.set=fb;var Ss=Wa;var d3=Jn(Xt,"Map"),As=d3;function f3(){this.size=0,this.__data__={hash:new tg,map:new(As||Ss),string:new tg}}var pb=f3;function p3(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var mb=p3;function m3(r,e){var t=r.__data__;return mb(e)?t[typeof e=="string"?"string":"hash"]:t.map}var Ms=m3;function g3(r){var e=Ms(this,r).delete(r);return this.size-=e?1:0,e}var gb=g3;function y3(r){return Ms(this,r).get(r)}var yb=y3;function v3(r){return Ms(this,r).has(r)}var vb=v3;function x3(r,e){var t=Ms(this,r),n=t.size;return t.set(r,e),this.size+=t.size==n?0:1,this}var xb=x3;function ja(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}ja.prototype.clear=pb;ja.prototype.delete=gb;ja.prototype.get=yb;ja.prototype.has=vb;ja.prototype.set=xb;var Bc=ja;var b3="Expected a function";function ng(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(b3);var t=function(){var n=arguments,i=e?e.apply(this,n):n[0],s=t.cache;if(s.has(i))return s.get(i);var o=r.apply(this,n);return t.cache=s.set(i,o)||s,o};return t.cache=new(ng.Cache||Bc),t}ng.Cache=Bc;var bb=ng;var w3=500;function _3(r){var e=bb(r,function(n){return t.size===w3&&t.clear(),n}),t=e.cache;return e}var wb=_3;var S3=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,A3=/\\(\\)?/g,M3=wb(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(S3,function(t,n,i,s){e.push(i?s.replace(A3,"$1"):n||t)}),e}),_b=M3;function T3(r){return r==null?"":Mx(r)}var Sb=T3;function E3(r,e){return un(r)?r:rb(r,e)?[r]:_b(Sb(r))}var Sr=E3;var C3=1/0;function D3(r){if(typeof r=="string"||vs(r))return r;var e=r+"";return e=="0"&&1/r==-C3?"-0":e}var Ts=D3;function P3(r,e){e=Sr(e,r);for(var t=0,n=e.length;r!=null&&t<n;)r=r[Ts(e[t++])];return t&&t==n?r:void 0}var id=P3;function I3(r,e){for(var t=-1,n=e.length,i=r.length;++t<n;)r[i+t]=e[t];return r}var qa=I3;var Ab=Wn?Wn.isConcatSpreadable:void 0;function L3(r){return un(r)||Vi(r)||!!(Ab&&r&&r[Ab])}var Mb=L3;function Tb(r,e,t,n,i){var s=-1,o=r.length;for(t||(t=Mb),i||(i=[]);++s<o;){var a=r[s];e>0&&t(a)?e>1?Tb(a,e-1,t,n,i):qa(i,a):n||(i[i.length]=a)}return i}var Eb=Tb;function O3(r){var e=r==null?0:r.length;return e?Eb(r,1):[]}var Cb=O3;function R3(r){return $h(ed(r,void 0,Cb),r+"")}var sd=R3;var N3=rd(Object.getPrototypeOf,Object),Xa=N3;var B3="[object Object]",F3=Function.prototype,U3=Object.prototype,Db=F3.toString,z3=U3.hasOwnProperty,G3=Db.call(Object);function k3(r){if(!On(r)||hr(r)!=B3)return!1;var e=Xa(r);if(e===null)return!0;var t=z3.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Db.call(t)==G3}var od=k3;function V3(r,e,t){var n=-1,i=r.length;e<0&&(e=-e>i?0:i+e),t=t>i?i:t,t<0&&(t+=i),i=e>t?0:t-e>>>0,e>>>=0;for(var s=Array(i);++n<i;)s[n]=r[n+e];return s}var Pb=V3;function H3(){this.__data__=new Ss,this.size=0}var Ib=H3;function W3(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}var Lb=W3;function j3(r){return this.__data__.get(r)}var Ob=j3;function q3(r){return this.__data__.has(r)}var Rb=q3;var X3=200;function Y3(r,e){var t=this.__data__;if(t instanceof Ss){var n=t.__data__;if(!As||n.length<X3-1)return n.push([r,e]),this.size=++t.size,this;t=this.__data__=new Bc(n)}return t.set(r,e),this.size=t.size,this}var Nb=Y3;function Ya(r){var e=this.__data__=new Ss(r);this.size=e.size}Ya.prototype.clear=Ib;Ya.prototype.delete=Lb;Ya.prototype.get=Ob;Ya.prototype.has=Rb;Ya.prototype.set=Nb;var ad=Ya;function Q3(r,e){return r&&_r(e,Va(e),r)}var Bb=Q3;function Z3(r,e){return r&&_r(e,ii(e),r)}var Fb=Z3;var kb=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ub=kb&&typeof module=="object"&&module&&!module.nodeType&&module,K3=Ub&&Ub.exports===kb,zb=K3?Xt.Buffer:void 0,Gb=zb?zb.allocUnsafe:void 0;function J3(r,e){if(e)return r.slice();var t=r.length,n=Gb?Gb(t):new r.constructor(t);return r.copy(n),n}var ld=J3;function $3(r,e){for(var t=-1,n=r==null?0:r.length,i=0,s=[];++t<n;){var o=r[t];e(o,t,r)&&(s[i++]=o)}return s}var Vb=$3;function eO(){return[]}var cd=eO;var tO=Object.prototype,nO=tO.propertyIsEnumerable,Hb=Object.getOwnPropertySymbols,rO=Hb?function(r){return r==null?[]:(r=Object(r),Vb(Hb(r),function(e){return nO.call(r,e)}))}:cd,Qa=rO;function iO(r,e){return _r(r,Qa(r),e)}var Wb=iO;var sO=Object.getOwnPropertySymbols,oO=sO?function(r){for(var e=[];r;)qa(e,Qa(r)),r=Xa(r);return e}:cd,ud=oO;function aO(r,e){return _r(r,ud(r),e)}var jb=aO;function lO(r,e,t){var n=e(r);return un(r)?n:qa(n,t(r))}var hd=lO;function cO(r){return hd(r,Va,Qa)}var qb=cO;function uO(r){return hd(r,ii,ud)}var dd=uO;var hO=Jn(Xt,"DataView"),fd=hO;var dO=Jn(Xt,"Promise"),pd=dO;var fO=Jn(Xt,"Set"),md=fO;var Xb="[object Map]",pO="[object Object]",Yb="[object Promise]",Qb="[object Set]",Zb="[object WeakMap]",Kb="[object DataView]",mO=ki(fd),gO=ki(As),yO=ki(pd),vO=ki(md),xO=ki(Kh),_o=hr;(fd&&_o(new fd(new ArrayBuffer(1)))!=Kb||As&&_o(new As)!=Xb||pd&&_o(pd.resolve())!=Yb||md&&_o(new md)!=Qb||Kh&&_o(new Kh)!=Zb)&&(_o=function(r){var e=hr(r),t=e==pO?r.constructor:void 0,n=t?ki(t):"";if(n)switch(n){case mO:return Kb;case gO:return Xb;case yO:return Yb;case vO:return Qb;case xO:return Zb}return e});var Za=_o;var bO=Object.prototype,wO=bO.hasOwnProperty;function _O(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&wO.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var Jb=_O;var SO=Xt.Uint8Array,rg=SO;function AO(r){var e=new r.constructor(r.byteLength);return new rg(e).set(new rg(r)),e}var Ka=AO;function MO(r,e){var t=e?Ka(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}var $b=MO;var TO=/\w*$/;function EO(r){var e=new r.constructor(r.source,TO.exec(r));return e.lastIndex=r.lastIndex,e}var ew=EO;var tw=Wn?Wn.prototype:void 0,nw=tw?tw.valueOf:void 0;function CO(r){return nw?Object(nw.call(r)):{}}var rw=CO;function DO(r,e){var t=e?Ka(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var gd=DO;var PO="[object Boolean]",IO="[object Date]",LO="[object Map]",OO="[object Number]",RO="[object RegExp]",NO="[object Set]",BO="[object String]",FO="[object Symbol]",UO="[object ArrayBuffer]",zO="[object DataView]",GO="[object Float32Array]",kO="[object Float64Array]",VO="[object Int8Array]",HO="[object Int16Array]",WO="[object Int32Array]",jO="[object Uint8Array]",qO="[object Uint8ClampedArray]",XO="[object Uint16Array]",YO="[object Uint32Array]";function QO(r,e,t){var n=r.constructor;switch(e){case UO:return Ka(r);case PO:case IO:return new n(+r);case zO:return $b(r,t);case GO:case kO:case VO:case HO:case WO:case jO:case qO:case XO:case YO:return gd(r,t);case LO:return new n;case OO:case BO:return new n(r);case RO:return ew(r);case NO:return new n;case FO:return rw(r)}}var iw=QO;function ZO(r){return typeof r.constructor=="function"&&!za(r)?Rx(Xa(r)):{}}var yd=ZO;var KO="[object Map]";function JO(r){return On(r)&&Za(r)==KO}var sw=JO;var ow=Hi&&Hi.isMap,$O=ow?ka(ow):sw,aw=$O;var eR="[object Set]";function tR(r){return On(r)&&Za(r)==eR}var lw=tR;var cw=Hi&&Hi.isSet,nR=cw?ka(cw):lw,uw=nR;var rR=1,iR=2,sR=4,hw="[object Arguments]",oR="[object Array]",aR="[object Boolean]",lR="[object Date]",cR="[object Error]",dw="[object Function]",uR="[object GeneratorFunction]",hR="[object Map]",dR="[object Number]",fw="[object Object]",fR="[object RegExp]",pR="[object Set]",mR="[object String]",gR="[object Symbol]",yR="[object WeakMap]",vR="[object ArrayBuffer]",xR="[object DataView]",bR="[object Float32Array]",wR="[object Float64Array]",_R="[object Int8Array]",SR="[object Int16Array]",AR="[object Int32Array]",MR="[object Uint8Array]",TR="[object Uint8ClampedArray]",ER="[object Uint16Array]",CR="[object Uint32Array]",Dt={};Dt[hw]=Dt[oR]=Dt[vR]=Dt[xR]=Dt[aR]=Dt[lR]=Dt[bR]=Dt[wR]=Dt[_R]=Dt[SR]=Dt[AR]=Dt[hR]=Dt[dR]=Dt[fw]=Dt[fR]=Dt[pR]=Dt[mR]=Dt[gR]=Dt[MR]=Dt[TR]=Dt[ER]=Dt[CR]=!0;Dt[cR]=Dt[dw]=Dt[yR]=!1;function vd(r,e,t,n,i,s){var o,a=e&rR,l=e&iR,u=e&sR;if(t&&(o=i?t(r,n,i,s):t(r)),o!==void 0)return o;if(!Nt(r))return r;var c=un(r);if(c){if(o=Jb(r),!a)return Jh(r,o)}else{var h=Za(r),d=h==dw||h==uR;if(Ga(r))return ld(r,a);if(h==fw||h==hw||d&&!i){if(o=l||d?{}:yd(r),!a)return l?jb(r,Fb(o,r)):Wb(r,Bb(o,r))}else{if(!Dt[h])return i?r:{};o=iw(r,h,a)}}s||(s=new ad);var f=s.get(r);if(f)return f;s.set(r,o),uw(r)?r.forEach(function(g){o.add(vd(g,e,t,g,r,s))}):aw(r)&&r.forEach(function(g,y){o.set(y,vd(g,e,t,y,r,s))});var m=u?l?dd:qb:l?ii:Va,p=c?void 0:m(r);return zx(p||r,function(g,y){p&&(y=g,g=r[y]),Fa(o,y,vd(g,e,t,y,r,s))}),o}var xd=vd;var DR=1,PR=4;function IR(r){return xd(r,DR|PR)}var Fc=IR;function LR(r,e){return r!=null&&e in Object(r)}var pw=LR;function OR(r,e,t){e=Sr(e,r);for(var n=-1,i=e.length,s=!1;++n<i;){var o=Ts(e[n]);if(!(s=r!=null&&t(r,o)))break;r=r[o]}return s||++n!=i?s:(i=r==null?0:r.length,!!i&&Ua(i)&&xs(o,i)&&(un(r)||Vi(r)))}var mw=OR;function RR(r,e){return r!=null&&mw(r,e,pw)}var gw=RR;function NR(r){return function(e,t,n){for(var i=-1,s=Object(e),o=n(e),a=o.length;a--;){var l=o[r?a:++i];if(t(s[l],l,s)===!1)break}return e}}var yw=NR;var BR=yw(),vw=BR;var FR=function(){return Xt.Date.now()},bd=FR;var UR="Expected a function",zR=Math.max,GR=Math.min;function kR(r,e,t){var n,i,s,o,a,l,u=0,c=!1,h=!1,d=!0;if(typeof r!="function")throw new TypeError(UR);e=Jm(e)||0,Nt(t)&&(c=!!t.leading,h="maxWait"in t,s=h?zR(Jm(t.maxWait)||0,e):s,d="trailing"in t?!!t.trailing:d);function f(A){var M=n,v=i;return n=i=void 0,u=A,o=r.apply(v,M),o}function m(A){return u=A,a=setTimeout(y,e),c?f(A):o}function p(A){var M=A-l,v=A-u,T=e-M;return h?GR(T,s-v):T}function g(A){var M=A-l,v=A-u;return l===void 0||M>=e||M<0||h&&v>=s}function y(){var A=bd();if(g(A))return x(A);a=setTimeout(y,p(A))}function x(A){return a=void 0,d&&n?f(A):(n=i=void 0,o)}function w(){a!==void 0&&clearTimeout(a),u=0,n=l=i=a=void 0}function b(){return a===void 0?o:x(bd())}function _(){var A=bd(),M=g(A);if(n=arguments,i=this,l=A,M){if(a===void 0)return m(l);if(h)return clearTimeout(a),a=setTimeout(y,e),f(l)}return a===void 0&&(a=setTimeout(y,e)),o}return _.cancel=w,_.flush=b,_}var Uc=kR;function VR(r,e,t){(t!==void 0&&!bs(r[e],t)||t===void 0&&!(e in r))&&Ba(r,e,t)}var zc=VR;function HR(r){return On(r)&&ws(r)}var xw=HR;function WR(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}var Gc=WR;function jR(r){return _r(r,ii(r))}var bw=jR;function qR(r,e,t,n,i,s,o){var a=Gc(r,t),l=Gc(e,t),u=o.get(l);if(u){zc(r,t,u);return}var c=s?s(a,l,t+"",r,e,o):void 0,h=c===void 0;if(h){var d=un(l),f=!d&&Ga(l),m=!d&&!f&&td(l);c=l,d||f||m?un(a)?c=a:xw(a)?c=Jh(a):f?(h=!1,c=ld(l,!0)):m?(h=!1,c=gd(l,!0)):c=[]:od(l)||Vi(l)?(c=a,Vi(a)?c=bw(a):(!Nt(a)||Ra(a))&&(c=yd(l))):h=!1}h&&(o.set(l,c),i(c,l,n,s,o),o.delete(l)),zc(r,t,c)}var ww=qR;function _w(r,e,t,n,i){r!==e&&vw(e,function(s,o){if(i||(i=new ad),Nt(s))ww(r,e,o,t,_w,n,i);else{var a=n?n(Gc(r,o),s,o+"",r,e,i):void 0;a===void 0&&(a=s),zc(r,o,a)}},ii)}var Sw=_w;function XR(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var Aw=XR;function YR(r,e){return e.length<2?r:id(r,Pb(e,0,-1))}var Mw=YR;var QR=Hx(function(r,e,t){Sw(r,e,t)}),So=QR;function ZR(r,e){return e=Sr(e,r),r=Mw(r,e),r==null||delete r[Ts(Aw(e))]}var Tw=ZR;function KR(r){return od(r)?void 0:r}var Ew=KR;var JR=1,$R=2,eN=4,tN=sd(function(r,e){var t={};if(r==null)return t;var n=!1;e=Yh(e,function(s){return s=Sr(s,r),n||(n=s.length>1),s}),_r(r,dd(r),t),n&&(t=xd(t,JR|$R|eN,Ew));for(var i=e.length;i--;)Tw(t,e[i]);return t}),Ja=tN;function nN(r,e,t,n){if(!Nt(r))return r;e=Sr(e,r);for(var i=-1,s=e.length,o=s-1,a=r;a!=null&&++i<s;){var l=Ts(e[i]),u=t;if(l==="__proto__"||l==="constructor"||l==="prototype")return r;if(i!=o){var c=a[l];u=n?n(c,l,a):void 0,u===void 0&&(u=Nt(c)?c:xs(e[i+1])?[]:{})}Fa(a,l,u),a=a[l]}return r}var Cw=nN;function rN(r,e,t){for(var n=-1,i=e.length,s={};++n<i;){var o=e[n],a=id(r,o);t(a,o)&&Cw(s,Sr(o,r),a)}return s}var Dw=rN;function iN(r,e){return Dw(r,e,function(t,n){return gw(r,n)})}var Pw=iN;var sN=sd(function(r,e){return r==null?{}:Pw(r,e)}),ig=sN;function $a(r,e){return Object.setPrototypeOf(r,e),r}var oN=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),aN=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),lN=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||kc&&"ontouchend"in document,cN=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,uN=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,hN=()=>{if(typeof window>"u")return!1;let r=navigator.userAgent,e=navigator.vendor;return/Safari/i.test(r)&&/Apple Computer/.test(e)},dN=()=>{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]},Jj=oN(),kc=aN(),Vc=lN(),Iw=cN(),Kt=uN(),$j=hN(),e9=Number(dN());function Lw(r){return Array.isArray(r)?r:[r]}function Hc(r){return kc?r.metaKey:r.ctrlKey}var Es;(t=>{t.all=["PerspectiveCamera","OrthographicCamera"];function e(n){return t.all.includes(n)}t.is=e})(Es||(Es={}));var Ao;(i=>{i.DefaultUp=[0,1,0],i.DefaultTargetOffset=1e3,i.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:i.DefaultUp,isUpVectorFlipped:!1,targetOffset:i.DefaultTargetOffset};function n(s){return s.type==="PerspectiveCamera"?s.perspective.zoom:s.orthographic.zoom}i.getZoom=n})(Ao||(Ao={}));var ji;(t=>{function r(n,i){return n[0]===i[0]&&n[1]===i[1]}t.isEqual=r;function e(n,i,s){return[n[0]+(i[0]-n[0])*s,n[1]+(i[1]-n[1])*s]}t.lerp=e})(ji||(ji={}));var rn;(i=>{function r(s,o){return s[0]===o[0]&&s[1]===o[1]&&s[2]===o[2]}i.isEqual=r;function e(s,o){return[s[0]+o[0],s[1]+o[1],s[2]+o[2]]}i.add=e;function t(s,o){return[s[0]-o[0],s[1]-o[1],s[2]-o[2]]}i.sub=t;function n(s,o,a){return[s[0]+(o[0]-s[0])*a,s[1]+(o[1]-s[1])*a,s[2]+(o[2]-s[2])*a]}i.lerp=n})(rn||(rn={}));var Wc;(t=>{function r(n,i){return n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]}t.isEqual=r;function e(n,i,s){return[n[0]+(i[0]-n[0])*s,n[1]+(i[1]-n[1])*s,n[2]+(i[2]-n[2])*s,n[3]+(i[3]-n[3])*s]}t.lerp=e})(Wc||(Wc={}));var si;(i=>{i.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function e(s,o){for(let a=0;a<16;a++)if(s[a]!==o[a])return!1;return!0}i.isEqual=e;function t(s){return s??i.identity}i.simplify=t;function n(s,o){let a=o.slice(0);for(var l=0,u=o.length;l<u;l+=3){let c=s[3]*o[l]+s[7]*o[l+1]+s[11]*o[l+2]+s[15];a[l]=(s[0]*o[l]+s[4]*o[l+1]+s[8]*o[l+2]+s[12])/c,a[l+1]=(s[1]*o[l]+s[5]*o[l+1]+s[9]*o[l+2]+s[13])/c,a[l+2]=(s[2]*o[l]+s[6]*o[l+1]+s[10]*o[l+2]+s[14])/c}return a}i.applyMatrix4=n})(si||(si={}));var hn;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function n(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}l.toRgb255a1=n;function i(u){return{r:u.r,g:u.g,b:u.b}}l.clone=i;function s(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}l.fromHex=s;function o(u,c){return u.r===c.r&&u.g===c.g&&u.b===c.b}l.equals=o;function a(u,c,h){return{r:u.r+(c.r-u.r)*h,g:u.g+(c.g-u.g)*h,b:u.b+(c.b-u.b)*h}}l.lerp=a})(hn||(hn={}));var Rn;(o=>{o.white={...hn.white,a:1};function e(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}o.from0to1=e;function t(a,l){return{...hn.fromHex(a),a:l}}o.fromHexAndA=t;function n(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}o.toRgb255a1=n;function i(a,l){return hn.equals(a,l)&&a.a===l.a}o.equals=i;function s(a,l,u){return{r:a.r+(l.r-a.r)*u,g:a.g+(l.g-a.g)*u,b:a.b+(l.b-a.b)*u,a:a.a+(l.a-a.a)*u}}o.lerp=s})(Rn||(Rn={}));var wd;(e=>e.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(wd||(wd={}));var _d;(e=>e.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(_d||(_d={}));var Sd;(e=>e.defaultData={control1:[.5,.05],control2:[.1,.3]})(Sd||(Sd={}));var Ad;(e=>{function r(t,n=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*n,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+n)),useCenter:!0}}}e.defaultData=r})(Ad||(Ad={}));var Vt=class{modifyById(e,t){let n=this;if(n[e]===void 0)throw new Error("not expected");{let s={...n,[e]:t};return Object.setPrototypeOf(s,Vt.prototype),s}}add(e,t){return this.runOp({type:1,id:e,data:t})?.data??this}runOp(e){let t=this;if(e.type===1){let n=t[e.id],i;n===void 0?i={type:2,id:e.id}:i={type:1,id:e.id,data:n};let{id:s,data:o}=e,a={...t,[s]:o};return Object.setPrototypeOf(a,Vt.prototype),{data:a,actual:e,reverse:i}}else if(e.type===2){let{id:n}=e,i=t[n];if(i===void 0)return null;{let s={...t};return Object.setPrototypeOf(s,Vt.prototype),delete s[n],{data:s,actual:e,reverse:{type:1,id:n,data:i}}}}throw new Error("illegal arg")}};function jc(r){if(r.deepFreeze!==void 0){r.deepFreeze(r);return}let e=Object.getOwnPropertyNames(r);for(let t of e){let n=r[t];n&&typeof n=="object"&&jc(n)}return Object.freeze(r)}function Ow(r,e){let t=0;for(;t<r.length&&t<e.length;){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1;t+=1}return t!==e.length?-1:t!==r.length?1:0}var Md=class extends Error{};function oi(r,e,t){if(r===void 0?e===void 0?(r=0,e=10):r=e-10:e===void 0&&(e=r+10),r>e){let s=r;r=e,e=s}let n=[],i=1/(t+1);for(let s=0;s<t;s++){let o=r+(e-r)*(s+.75+Math.random()*.5)*i;n.push(o)}return n}function Td(r){return r instanceof Uint8Array||r instanceof Uint16Array||r instanceof Uint32Array||r instanceof Int8Array||r instanceof Int16Array||r instanceof Int32Array||r instanceof Float32Array||r instanceof Float64Array}function Rw(){return typeof process<"u"}function Nw(r,e){for(let t of r)e(t.id,t.data),Nw(t.children,e)}function Bw(r,e){e(r.id,r.data);for(let t of r.children)Bw(t,e)}var Ar=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Ar.prototype)}deepFreeze(){let t=0;for(;t<this.length;)jc(this[t]),t++}fillCaches0(t,n){this.objCaches.set(t.id,t),this.parentCaches.set(t.id,n);for(let i of t.children)this.fillCaches0(i,t.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let t of this)this.fillCaches0(t,null)}}randomId(){this.fillCaches();let t=Array.from(this.objCaches.keys());if(t.length!==0)return t[Math.max(0,Math.floor(Math.random()*t.length)-1)]}isDescendantOf(t,n){for(;t;){let i=this.parent(t);if(i===n)return!0;t=i}return!1}data(t){return this.get(t)?.data}has(t){return this.childrenOf(t)!==void 0}get(t){return this.fillCaches(),this.objCaches.get(t)}childrenOf(t){return t===null?this:this.get(t)?.children}traverseFrom(t,n){if(t===null)this.traverse(n);else{let i=this.get(t);i&&Bw(i,n)}}traverse(t){Nw(this,t)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(t){return this.fillCaches(),this.parentCaches.get(t)}childrenArray(t){return t===null?this:this.get(t).children}modifyById(t,n){if(this.get(t)===void 0)throw new Error("not expected");{let s=this.parent(t),o=this.childrenArray(s),a=o.findIndex(c=>c.id===t);if(a<0)throw new Error("not expected");let l=o[a];return o=[...o],o[a]={...l,data:n},this.modifyArrayBy(s,o)}}modifyArrayBy(t,n){let i=t,s=n;for(;i!==null;){let a=s,l=i;if(i=this.parent(i),i===void 0)throw new Error;s=this.childrenArray(i);let u=s.findIndex(c=>c.id===l);if(u<0)throw new Error;s=[...s],s[u]={...s[u],children:a}}Object.setPrototypeOf(s,Ar.prototype);let o=s;return o.fillCaches(),o}runOp(t){switch(t.type){case 7:return this.addOp(t);case 8:return this.deleteOp(t);case 9:return this.moveOp(t)}}checkDuplicatedIdRec({id:t,children:n}){if(this.get(t)!==void 0)return!0;for(let i of n)if(this.checkDuplicatedIdRec(i))return!0;return!1}addOp(t){let{parent:n,fi:i,id:s,data:o,children:a}=t;if(n!==null&&this.get(n)===void 0)return null;if(this.checkDuplicatedIdRec(t))return null;{let l=n,u=this.childrenArray(l),c={fi:i,id:s,data:o,children:a};return u=[...u,c],u.sort((d,f)=>d.fi-f.fi),t.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:t,reverse:{type:8,id:s}}}}deleteOp(t){let{id:n}=t;if(this.get(n)===null)return null;{let i=this.parent(n);if(i===void 0)return null;let s=this.childrenArray(i),o=s.findIndex(u=>u.id===n);t.localIndex=o,s=[...s];let a=s.splice(o,1)[0];return{data:this.modifyArrayBy(i,s),actual:t,reverse:{type:7,...a,parent:i}}}}moveOp(t){let{parent:n,fi:i,id:s}=t;if(n!==null&&this.get(n)===void 0)return this.deleteOp({type:8,id:s});if(n!==null){let f=n;for(;f!==null;){if(f===void 0)throw new Error;if(f===s)throw new Md("cyclic tree");f=this.parent(f)}}let o=this.parent(s);if(o===void 0)return null;let a=o,l=this.childrenArray(o),u=l.findIndex(f=>f.id===s);l=[...l];let c=l.splice(u,1)[0],h=this.modifyArrayBy(o,l);o=n,l=h.childrenArray(o);let d=c.fi;return c={...c,fi:i},l=[...l,c],l.sort((f,m)=>f.fi-m.fi),t.localIndex=l.indexOf(c),h=h.modifyArrayBy(o,l),{data:h,actual:t,reverse:{type:9,parent:a,fi:d,id:s}}}previous(t,n){if(n===null){let s=this.childrenArray(t);return s.length===0?null:s[s.length-1].id}let i=null;for(let s of this.childrenArray(t)){if(s.id===n)return i;i=s.id}return null}traverseSortNext(t){let n=this.parent(t);if(n!==void 0){let i=this.childrenArray(n),s=i.findIndex(o=>o.id===t)+1;if(s<i.length)return i[s].id;if(n)return this.traverseSortNext(n)}}sortNext(t){let n=this.childrenArray(t);return n.length>0?n[0].id:this.traverseSortNext(t)}traverseSortPrevious(t){let n=this.childrenArray(t);return n.length>0?this.traverseSortPrevious(n[n.length-1].id):t}sortPrevious(t){let n=this.parent(t);if(n!==void 0){let i=this.childrenArray(n),s=i.findIndex(o=>o.id===t)-1;return s>=0?this.traverseSortPrevious(i[s].id):n}}getAllSorted(t){let n=[];for(let i of t){let s=this.getWithSortKey(i.id);s!==void 0&&n.push({...i,...s})}n.sort((i,s)=>Ow(i.sortKey,s.sortKey));for(let i of n)delete i.sortKey;return n}getWithSortKey(t){var n=t;let i=[],s=this.get(n),o=s;if(s!==void 0){for(;n;)i.splice(0,0,s.fi),n=this.parent(n),n!==null&&(s=this.get(n));return{...o,sortKey:i}}}insertBeforeHelper(t,n,i){return this.insertAfterHelper(t,this.previous(t,n),i)}insertAfterHelper(t,n,i){let s=this.childrenArray(t);if(n===null){if(s.length===0)return oi(0,i,i);{let o=s[0].fi;return oi(o-i,o,i)}}else{let o=this.get(n);if(o===void 0||this.parent(n)!==t)throw new Error("illegal args");let a=s.find(l=>l.fi>o.fi);if(a===void 0){let l=s[s.length-1].fi;return oi(l,l+i,i)}else return oi(o.fi,a.fi,i)}}};var Ed;(e=>{function r(t,n){if(Array.isArray(t)){let i=n.props,s={},o=[...t],a=!1;if(i)for(let l of Object.keys(i)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");s[l]=o[u],o[u]=i[l],a=!0}return a?{data:o,actual:n,reverse:{type:0,props:s}}:null}else{let i=n.props,s={},o={...t},a=!1;if(i)for(let l of Object.keys(i)){s[l]=o[l];let u=i[l];u===void 0?delete o[l]:o[l]=u,a=!0}return a?{data:o,actual:n,reverse:{type:0,props:s}}:null}}e.runOp=r})(Ed||(Ed={}));var Ht=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Ht.prototype)}deepFreeze(){let t=0;for(;t<this.length;)jc(this[t]),t++}fillCaches0(t){this.objCaches.set(t.id,t)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let t of this)this.fillCaches0(t)}}randomId(){this.fillCaches();let t=Array.from(this.objCaches.keys());if(t.length!==0)return t[Math.max(0,Math.floor(Math.random()*t.length)-1)]}data(t){return this.get(t)?.data}get(t){return this.fillCaches(),this.objCaches.get(t)}modifyById(t,n){if(this.get(t)===void 0)throw new Error("not expected");{let s=this,o=s.findIndex(u=>u.id===t);if(o<0)throw new Error("not expected");let a=s[o];return s=[...s],s[o]={...a,data:n},this.modifyArrayBy(s)}}modifyArrayBy(t){Object.setPrototypeOf(t,Ht.prototype);let n=t;return Rw()||n.fillCaches(),n}runOp(t){switch(t.type){case 4:return this.addOp(t);case 5:return this.deleteOp(t);case 6:return this.moveOp(t)}}addOp(t){let{fi:n,id:i,data:s}=t,o=this,a={fi:n,id:i,data:s};return o=[...o,a],o.sort((u,c)=>u.fi-c.fi),t.localIndex=o.indexOf(a),{data:this.modifyArrayBy(o),actual:t,reverse:{type:5,id:i}}}deleteOp(t){let{id:n}=t,i=this,s=i.findIndex(l=>l.id===n);if(s===-1)return null;t.localIndex=s,i=[...i];let o=i.splice(s,1)[0];return{data:this.modifyArrayBy(i),actual:t,reverse:{type:4,...o}}}moveOp(t){let{fi:n,id:i}=t,s=this;s=[...s];let o=s.findIndex(c=>c.id===i);if(o===-1)return null;let a=s[o].fi,l={...s[o],fi:n};return s[o]=l,s.sort((c,h)=>c.fi-h.fi),t.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:t,reverse:{type:6,fi:a,id:i}}}previous(t){if(t===null)return this.length===0?null:this[this.length-1].id;let n=null;for(let i of this){if(i.id===t)return n;n=i.id}return null}insertBeforeHelper(t,n){return this.insertAfterHelper(this.previous(t),n)}insertAfterHelper(t,n){let i=this;if(t===null){if(i.length===0)return oi(0,n,n);{let s=i[0].fi;return oi(s-n,s,n)}}else{let s=this.get(t);if(s===void 0)throw new Error("illegal args");let o=i.find(a=>a.fi>s.fi);if(o===void 0){let a=i[i.length-1].fi;return oi(a,a+n,n)}else return oi(s.fi,o.fi,n)}}};var Fw=Symbol(),Dd=Symbol(),el=class{reportOp(e,t){let n=this;if(t===null)return;n._current=t.data;let i=[];for(;!(n instanceof Cd);){let s=n._path,o=n._current;if(s!==""&&i.splice(0,0,s),n=n._parent,n===null)return;n.update(s,o)}n.push(i,e,t.actual,t.reverse)}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let n=t[Dd];n&&n(),delete this._children[e]}}}},og=class extends el{constructor(e,t,n){super(),this._parent=e,this._path=t,this._current=n}update(e,t){if(Array.isArray(this._current)){if(typeof e=="string"&&(e=parseInt(e),isNaN(e)))throw new Error("Invalid path");this._current=[...this._current],this._current[e]=t}else this._current={...this._current,[e]:t}}runOp(e){this.reportOp(e,Ed.runOp(this._current,e))}},ag=class extends el{constructor(e,t,n){super(),this._parent=e,this._path=t,this._current=n}update(e,t){this._current={...this._current,[e]:t},Object.setPrototypeOf(this._current,Vt.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},Uw={get(r,e){if(e===Dd)return()=>{r._parent=null};if(e===Fw)return r._current;let{_current:t,_children:n}=r;if(e==="push"&&Array.isArray(t))throw new Error("not supported to expand array");let i=n===void 0?void 0:n[e];if(i!==void 0)return i;let s=t[e],o=Pd(r,e,s);return o!==s?(n===void 0&&(n={},r._children=n),n[e]=o,o):s},has(r,e){return e in r._current},ownKeys(r){return Reflect.ownKeys(r._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(r){return Object.getPrototypeOf(r._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(r,e){let t=r._current,n=Reflect.getOwnPropertyDescriptor(t,e);return n&&{writable:!0,configurable:!0,enumerable:n.enumerable,value:t[e]}}},fN={...Uw,set(r,e,t){let n={type:0,props:{[e]:Cs(t)??t}};return r.deleteChildren(e),r.runOp(n),!0},deleteProperty(r,e){let t={type:0,props:{[e]:void 0}};return r.deleteChildren(e),r.runOp(t),!0}},pN={...Uw,set(r,e,t){return t===void 0?this.deleteProperty(r,e):(r.deleteChildren(e),r.runOp({type:1,id:e,data:t})),!0},deleteProperty(r,e){return r.runOp({type:2,id:e}),!0}},tl=class extends el{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Dd]=()=>{this._parent=null}}unproxy(){return this._current}update(e,t){this._current=this._current.modifyById(e,t)}runOp(e){this.reportOp(e,this._current.runOp(e))}randomId(){return this._current.randomId()}isDescendantOf(e,t){return this._current.isDescendantOf(e,t)}childrenOf(e){return this._current.childrenOf(e)}traverse(e){return this._current.traverse(e)}get(e){return this._current.get(e)}parent(e){return this._current.parent(e)}traverse(e){this._current.traverse((t,n)=>{e(t,this.data(t))})}data(e){let{_current:t,_children:n}=this,i=n===void 0?void 0:n[e];if(i!==void 0)return i;let s=t.get(e)?.data,o=Pd(this,e,s);return o!==s?(n===void 0&&(n={},this._children=n),n[e]=o,o):s}add(e,t,n,i,s){this.runOp({type:7,parent:e,fi:t,id:n,data:i,children:s})}move(e,t,n){this.runOp({type:9,parent:e,fi:t,id:n})}insertAfter(e,t,n){let i=this._current.insertAfterHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.add(e,i[s],o.id,o.data,o.children)}}insertBefore(e,t,n){let i=this._current.insertBeforeHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.add(e,i[s],o.id,o.data,o.children)}}moveAfter(e,t,n){let i=this._current.insertAfterHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.move(e,i[s],o)}}moveBefore(e,t,n){let i=this._current.insertBeforeHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.move(e,i[s],o)}}delete(e){this.deleteChildren(e),this.runOp({type:8,id:e})}sortNext(e){return this._current.sortNext(e)}sortPrevious(e){return this._current.sortPrevious(e)}getAllSorted(e){return this._current.getAllSorted(e)}},nl=class extends el{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Dd]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(e){let t=this.length;for(let n=0;n<t;n++){let i=this._current[n].id;e(this.data(this._current[n].id),i)}}update(e,t){this._current=this._current.modifyById(e,t)}randomId(){return this._current.randomId()}get(e){return{...this._current.get(e),data:this.data(e)}}data(e){let{_current:t,_children:n}=this,i=n===void 0?void 0:n[e];if(i!==void 0)return i;let s=t.get(e)?.data,o=Pd(this,e,s);return o!==s?(n===void 0&&(n={},this._children=n),n[e]=o,o):s}runOp(e){this.reportOp(e,this._current.runOp(e))}add(e,t,n){this.runOp({type:4,fi:e,id:t,data:n})}move(e,t){this.runOp({type:6,fi:e,id:t})}insertAfter(e,t){let n=this._current.insertAfterHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(n[i],s.id,s.data)}}insertBefore(e,t){let n=this._current.insertBeforeHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(n[i],s.id,s.data)}}moveAfter(e,t){let n=this._current.insertAfterHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(n[i],s)}}moveBefore(e,t){let n=this._current.insertBeforeHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(n[i],s)}}delete(e){this.deleteChildren(e),this.runOp({type:5,id:e})}};function sg(r,e,t){if(r.length>0){let n=r[r.length-1];if(n.type===0&&e.type===0&&Id.equal(n.path,t)){Object.assign(n.props,e.props);return}}r.push({...e,path:t})}var Cd=class{constructor(e){this.ts=[],this.actual=[],this.reverse=[],this._current=e}update(e,t){if(e!=="")throw new Error("");this._current=t}push(e,t,n,i){sg(this.ts,t,e),sg(this.actual,n,e),sg(this.reverse,i,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Pd(r,e,t){return t instanceof Ar?new tl(r,e,t):t instanceof Ht?new nl(r,e,t):t instanceof Vt?new Proxy(new ag(r,e,t),pN):t!==null&&typeof t=="object"?Td(t)?t:new Proxy(new og(r,e,t),fN):t}function lg(r){let e=new Cd(r);return[Pd(e,"",r),e]}function cg(r,e){let[t,n]=lg(r);return e(t),n.result()}function Cs(r){return r instanceof tl||r instanceof nl?r._current:r!==null&&typeof r=="object"?r[Fw]:r}var Id;(n=>{function r(i,s){if(s.length===i.length)for(var o=0;o<i.length;){if(i[o]!==s[o])return!1;o+=1}else return!1;return!0}n.equal=r;function e(i,s,o){let a=t(o,i);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...s};return Object.keys(a).forEach(u=>{delete l[u]}),l}else return s}n.removeOverridden=e;function t(i,s,o=0){if(s.length<=o)return i;if((i instanceof Ar||i instanceof tl)&&typeof s[o]=="string")return t(i.data(s[o]),s,o+1);if((i instanceof Ht||i instanceof nl)&&typeof s[o]=="string")return t(i.data(s[o]),s,o+1);if(typeof s[o]=="number"&&Array.isArray(i))return t(i[s[o]],s,o+1);if(typeof s[o]=="string"&&typeof i=="object")return t(i[s[o]],s,o+1)}n.zoom=t})(Id||(Id={}));var Ld=class{},qc=class extends Ld{constructor(t){super();this.id=t}},Xc=class extends Ld{constructor(t){super();this.data=t}};var hg;try{hg=new TextDecoder}catch{}var De,Ps,Q=0;var qw=[],dg=qw,fg=0,$n={},mt,Ds,Mr=0,ai=0,dr,qi,jn=[],At,zw={useRecords:!1,mapsAsObjects:!0},Yc=class{},mg=new Yc;mg.name="MessagePack 0xC1";var rl=!1,li=class{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0)),Object.assign(this,e)}unpack(e,t){if(De)return Kw(()=>(Rd(),this?this.unpack(e,t):li.prototype.unpack.call(zw,e,t)));Ps=t>-1?t:e.length,Q=0,fg=0,ai=0,Ds=null,dg=qw,dr=null,De=e;try{At=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(n){throw De=null,e instanceof Uint8Array?n:new Error("Source must be a Uint8Array or Buffer but was a "+(e&&typeof e=="object"?e.constructor.name:typeof e))}if(this instanceof li){if($n=this,this.structures)return mt=this.structures,Od();(!mt||mt.length>0)&&(mt=[])}else $n=zw,(!mt||mt.length>0)&&(mt=[]);return Od()}unpackMultiple(e,t){let n,i=0;try{rl=!0;let s=e.length,o=this?this.unpack(e,s):Fd.unpack(e,s);if(t){for(t(o);Q<s;)if(i=Q,t(Od())===!1)return}else{for(n=[o];Q<s;)i=Q,n.push(Od());return n}}catch(s){throw s.lastPosition=i,s.values=n,s}finally{rl=!1,Rd()}}_mergeStructures(e,t){e=e||[];for(let n=0,i=e.length;n<i;n++){let s=e[n];s&&(s.isShared=!0,n>=32&&(s.highByte=n-32>>5))}e.sharedLength=e.length;for(let n in t||[])if(n>=0){let i=e[n],s=t[n];s&&(i&&((e.restoreStructures||(e.restoreStructures=[]))[n]=i),e[n]=s)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function Od(){try{if(!$n.trusted&&!rl){let e=mt.sharedLength||0;e<mt.length&&(mt.length=e)}let r=Yt();if(Q==Ps)mt.restoreStructures&&Gw(),mt=null,De=null,qi&&(qi=null);else if(Q>Ps){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}else if(!rl)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw mt.restoreStructures&&Gw(),Rd(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function Gw(){for(let r in mt.restoreStructures)mt[r]=mt.restoreStructures[r];mt.restoreStructures=null}function Yt(){let r=De[Q++];if(r<160)if(r<128){if(r<64)return r;{let e=mt[r&63]||$n.getStructures&&Xw()[r&63];return e?(e.read||(e.read=gg(e,r&63)),e.read()):r}}else if(r<144)if(r-=128,$n.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[Qw()]=Yt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Yt(),Yt());return e}else{r-=144;let e=new Array(r);for(let t=0;t<r;t++)e[t]=Yt();return e}else if(r<192){let e=r-160;if(ai>=Q)return Ds.slice(Q-Mr,(Q+=e)-Mr);if(ai==0&&Ps<140){let t=e<16?yg(e):Yw(e);if(t!=null)return t}return pg(e)}else{let e;switch(r){case 192:return null;case 193:return dr?(e=Yt(),e>0?dr[1].slice(dr.position1,dr.position1+=e):dr[0].slice(dr.position0,dr.position0-=e)):mg;case 194:return!1;case 195:return!0;case 196:return ug(De[Q++]);case 197:return e=At.getUint16(Q),Q+=2,ug(e);case 198:return e=At.getUint32(Q),Q+=4,ug(e);case 199:return Mo(De[Q++]);case 200:return e=At.getUint16(Q),Q+=2,Mo(e);case 201:return e=At.getUint32(Q),Q+=4,Mo(e);case 202:if(e=At.getFloat32(Q),$n.useFloat32>2){let t=Bd[(De[Q]&127)<<1|De[Q+1]>>7];return Q+=4,(t*e+(e>0?.5:-.5)>>0)/t}return Q+=4,e;case 203:return e=At.getFloat64(Q),Q+=8,e;case 204:return De[Q++];case 205:return e=At.getUint16(Q),Q+=2,e;case 206:return e=At.getUint32(Q),Q+=4,e;case 207:return $n.int64AsNumber?(e=At.getUint32(Q)*4294967296,e+=At.getUint32(Q+4)):e=At.getBigUint64(Q),Q+=8,e;case 208:return At.getInt8(Q++);case 209:return e=At.getInt16(Q),Q+=2,e;case 210:return e=At.getInt32(Q),Q+=4,e;case 211:return $n.int64AsNumber?(e=At.getInt32(Q)*4294967296,e+=At.getUint32(Q+4)):e=At.getBigInt64(Q),Q+=8,e;case 212:if(e=De[Q++],e==114)return jw(De[Q++]&63);{let t=jn[e];if(t)return t.read?(Q++,t.read(Yt())):t.noBuffer?(Q++,t()):t(De.subarray(Q,++Q));throw new Error("Unknown extension "+e)}case 213:return e=De[Q],e==114?(Q++,jw(De[Q++]&63,De[Q++])):Mo(2);case 214:return Mo(4);case 215:return Mo(8);case 216:return Mo(16);case 217:return e=De[Q++],ai>=Q?Ds.slice(Q-Mr,(Q+=e)-Mr):gN(e);case 218:return e=At.getUint16(Q),Q+=2,ai>=Q?Ds.slice(Q-Mr,(Q+=e)-Mr):yN(e);case 219:return e=At.getUint32(Q),Q+=4,ai>=Q?Ds.slice(Q-Mr,(Q+=e)-Mr):vN(e);case 220:return e=At.getUint16(Q),Q+=2,Vw(e);case 221:return e=At.getUint32(Q),Q+=4,Vw(e);case 222:return e=At.getUint16(Q),Q+=2,Hw(e);case 223:return e=At.getUint32(Q),Q+=4,Hw(e);default:if(r>=224)return r-256;if(r===void 0){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}throw new Error("Unknown MessagePack token "+r)}}}var mN=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function gg(r,e){function t(){if(t.count++>2){let i=r.read=new Function("r","return function(){return {"+r.map(s=>mN.test(s)?s+":r()":"["+JSON.stringify(s)+"]:r()").join(",")+"}}")(Yt);return r.highByte===0&&(r.read=kw(e,r.read)),i()}let n={};for(let i=0,s=r.length;i<s;i++){let o=r[i];n[o]=Yt()}return n}return t.count=0,r.highByte===0?kw(e,t):t}var kw=(r,e)=>function(){let t=De[Q++];if(t===0)return e();let n=r<32?-(r+(t<<5)):r+(t<<5),i=mt[n]||Xw()[n];if(!i)throw new Error("Record id is not defined for "+n);return i.read||(i.read=gg(i,r)),i.read()};function Xw(){let r=Kw(()=>(De=null,$n.getStructures()));return mt=$n._mergeStructures(r,mt)}var pg=Nd,gN=Nd,yN=Nd,vN=Nd;function Nd(r){let e;if(r<16&&(e=yg(r)))return e;if(r>64&&hg)return hg.decode(De.subarray(Q,Q+=r));let t=Q+r,n=[];for(e="";Q<t;){let i=De[Q++];if((i&128)===0)n.push(i);else if((i&224)===192){let s=De[Q++]&63;n.push((i&31)<<6|s)}else if((i&240)===224){let s=De[Q++]&63,o=De[Q++]&63;n.push((i&31)<<12|s<<6|o)}else if((i&248)===240){let s=De[Q++]&63,o=De[Q++]&63,a=De[Q++]&63,l=(i&7)<<18|s<<12|o<<6|a;l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|l&1023),n.push(l)}else n.push(i);n.length>=4096&&(e+=Mn.apply(String,n),n.length=0)}return n.length>0&&(e+=Mn.apply(String,n)),e}function Vw(r){let e=new Array(r);for(let t=0;t<r;t++)e[t]=Yt();return e}function Hw(r){if($n.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[Qw()]=Yt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Yt(),Yt());return e}}var Mn=String.fromCharCode;function Yw(r){let e=Q,t=new Array(r);for(let n=0;n<r;n++){let i=De[Q++];if((i&128)>0){Q=e;return}t[n]=i}return Mn.apply(String,t)}function yg(r){if(r<4)if(r<2){if(r===0)return"";{let e=De[Q++];if((e&128)>1){Q-=1;return}return Mn(e)}}else{let e=De[Q++],t=De[Q++];if((e&128)>0||(t&128)>0){Q-=2;return}if(r<3)return Mn(e,t);let n=De[Q++];if((n&128)>0){Q-=3;return}return Mn(e,t,n)}else{let e=De[Q++],t=De[Q++],n=De[Q++],i=De[Q++];if((e&128)>0||(t&128)>0||(n&128)>0||(i&128)>0){Q-=4;return}if(r<6){if(r===4)return Mn(e,t,n,i);{let s=De[Q++];if((s&128)>0){Q-=5;return}return Mn(e,t,n,i,s)}}else if(r<8){let s=De[Q++],o=De[Q++];if((s&128)>0||(o&128)>0){Q-=6;return}if(r<7)return Mn(e,t,n,i,s,o);let a=De[Q++];if((a&128)>0){Q-=7;return}return Mn(e,t,n,i,s,o,a)}else{let s=De[Q++],o=De[Q++],a=De[Q++],l=De[Q++];if((s&128)>0||(o&128)>0||(a&128)>0||(l&128)>0){Q-=8;return}if(r<10){if(r===8)return Mn(e,t,n,i,s,o,a,l);{let u=De[Q++];if((u&128)>0){Q-=9;return}return Mn(e,t,n,i,s,o,a,l,u)}}else if(r<12){let u=De[Q++],c=De[Q++];if((u&128)>0||(c&128)>0){Q-=10;return}if(r<11)return Mn(e,t,n,i,s,o,a,l,u,c);let h=De[Q++];if((h&128)>0){Q-=11;return}return Mn(e,t,n,i,s,o,a,l,u,c,h)}else{let u=De[Q++],c=De[Q++],h=De[Q++],d=De[Q++];if((u&128)>0||(c&128)>0||(h&128)>0||(d&128)>0){Q-=12;return}if(r<14){if(r===12)return Mn(e,t,n,i,s,o,a,l,u,c,h,d);{let f=De[Q++];if((f&128)>0){Q-=13;return}return Mn(e,t,n,i,s,o,a,l,u,c,h,d,f)}}else{let f=De[Q++],m=De[Q++];if((f&128)>0||(m&128)>0){Q-=14;return}if(r<15)return Mn(e,t,n,i,s,o,a,l,u,c,h,d,f,m);let p=De[Q++];if((p&128)>0){Q-=15;return}return Mn(e,t,n,i,s,o,a,l,u,c,h,d,f,m,p)}}}}}function ug(r){return $n.copyBuffers?Uint8Array.prototype.slice.call(De,Q,Q+=r):De.subarray(Q,Q+=r)}function Mo(r){let e=De[Q++];if(jn[e])return jn[e](De.subarray(Q,Q+=r));throw new Error("Unknown extension type "+e)}var Ww=new Array(4096);function Qw(){let r=De[Q++];if(r>=160&&r<192){if(r=r-160,ai>=Q)return Ds.slice(Q-Mr,(Q+=r)-Mr);if(!(ai==0&&Ps<180))return pg(r)}else return Q--,Yt();let e=(r<<5^(r>1?At.getUint16(Q):r>0?De[Q]:0))&4095,t=Ww[e],n=Q,i=Q+r-3,s,o=0;if(t&&t.bytes==r){for(;n<i;){if(s=At.getUint32(n),s!=t[o++]){n=1879048192;break}n+=4}for(i+=3;n<i;)if(s=De[n++],s!=t[o++]){n=1879048192;break}if(n===i)return Q=n,t.string;i-=3,n=Q}for(t=[],Ww[e]=t,t.bytes=r;n<i;)s=At.getUint32(n),t.push(s),n+=4;for(i+=3;n<i;)s=De[n++],t.push(s);let a=r<16?yg(r):Yw(r);return a!=null?t.string=a:t.string=pg(r)}var jw=(r,e)=>{var t=Yt();let n=r;e!==void 0&&(r=r<32?-((e<<5)+r):(e<<5)+r,t.highByte=e);let i=mt[r];return i&&i.isShared&&((mt.restoreStructures||(mt.restoreStructures=[]))[r]=i),mt[r]=t,t.read=gg(t,n),t.read()},Zw=typeof self=="object"?self:global;jn[0]=()=>{};jn[0].noBuffer=!0;jn[101]=()=>{let r=Yt();return(Zw[r[0]]||Error)(r[1])};jn[105]=r=>{let e=At.getUint32(Q-4);qi||(qi=new Map);let t=De[Q],n;t>=144&&t<160||t==220||t==221?n=[]:n={};let i={target:n};qi.set(e,i);let s=Yt();return i.used?Object.assign(n,s):(i.target=s,s)};jn[112]=r=>{let e=At.getUint32(Q-4),t=qi.get(e);return t.used=!0,t.target};jn[115]=()=>new Set(Yt());var vg=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");jn[116]=r=>{let e=r[0],t=vg[e];if(!t)throw new Error("Could not find typed array for code "+e);return new Zw[t](Uint8Array.prototype.slice.call(r,1).buffer)};jn[120]=()=>{let r=Yt();return new RegExp(r[0],r[1])};jn[98]=r=>{let e=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],t=Q;Q+=e-4,dr=[Yt(),Yt()],dr.position0=0,dr.position1=0;let n=Q;Q=t;try{return Yt()}finally{Q=n}};jn[255]=r=>r.length==4?new Date((r[0]*16777216+(r[1]<<16)+(r[2]<<8)+r[3])*1e3):r.length==8?new Date(((r[0]<<22)+(r[1]<<14)+(r[2]<<6)+(r[3]>>2))/1e6+((r[3]&3)*4294967296+r[4]*16777216+(r[5]<<16)+(r[6]<<8)+r[7])*1e3):r.length==12?new Date(((r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3])/1e6+((r[4]&128?-281474976710656:0)+r[6]*1099511627776+r[7]*4294967296+r[8]*16777216+(r[9]<<16)+(r[10]<<8)+r[11])*1e3):new Date("invalid");function Kw(r){let e=Ps,t=Q,n=fg,i=Mr,s=ai,o=Ds,a=dg,l=qi,u=dr,c=new Uint8Array(De.slice(0,Ps)),h=mt,d=mt.slice(0,mt.length),f=$n,m=rl,p=r();return Ps=e,Q=t,fg=n,Mr=i,ai=s,Ds=o,dg=a,qi=l,dr=u,De=c,rl=m,mt=h,mt.splice(0,mt.length,...d),$n=f,At=new DataView(De.buffer,De.byteOffset,De.byteLength),p}function Rd(){De=null,qi=null,mt=null}function Jw(r){r.unpack?jn[r.type]=r.unpack:jn[r.type]=r}var Bd=new Array(147);for(let r=0;r<256;r++)Bd[r]=+("1e"+Math.floor(45.15-r*.30103));var Fd=new li({useRecords:!1}),xN=Fd.unpack,bN=Fd.unpackMultiple,wN=Fd.unpack,Ud={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},_N=new Float32Array(1),L9=new Uint8Array(_N.buffer,0,4);var zd;try{zd=new TextEncoder}catch{}var Gd,bg,kd=typeof Buffer<"u",xg=kd?Buffer.allocUnsafeSlow:Uint8Array,n_=kd?Buffer:Uint8Array,$w=kd?4294967296:2144337920,se,Jt,ee=0,ci,ui=null,SN=/[\u0080-\uFFFF]/,Qc=Symbol("record-id"),To=class extends li{constructor(e){super(e),this.offset=0;let t,n,i,s,o,a,l=0,u=n_.prototype.utf8Write?function(v,T,E){return se.utf8Write(v,T,E)}:zd&&zd.encodeInto?function(v,T){return zd.encodeInto(v,se.subarray(T)).written}:!1,c=this;e||(e={});let h=e&&e.sequential,d=e.structures||e.saveStructures,f=e.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=e.maxOwnStructures;m==null&&(m=d?32:64),h&&!e.saveStructures&&(this.structures=[]);let p=f>32||m+f>64,g=f+64,y=f+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],w=0,b=0;this.pack=this.encode=function(v,T){if(se||(se=new xg(8192),Jt=new DataView(se.buffer,0,8192),ee=0),ci=se.length-10,ci-ee<2048?(se=new xg(se.length),Jt=new DataView(se.buffer,0,se.length),ci=se.length-10,ee=0):ee=ee+7&2147483640,n=ee,a=c.structuredClone?new Map:null,c.bundleStrings?(ui=["",""],se[ee++]=214,se[ee++]=98,ui.position=ee-n,ee+=4):ui=null,i=c.structures,i){i.uninitialized&&(i=c._mergeStructures(c.getStructures()));let E=i.sharedLength||0;if(E>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let C=0;C<E;C++){let L=i[C];if(!L)continue;let R,O=i.transitions;for(let W=0,j=L.length;W<j;W++){let Z=L[W];R=O[Z],R||(R=O[Z]=Object.create(null)),O=R}O[Qc]=C+64}l=E}h||(i.nextId=E+64)}s&&(s=!1),o=i||[];try{if(_(v),ui){Jt.setUint32(ui.position+n,ee-ui.position-n);let E=ui;ui=null,_(E[0]),_(E[1])}if(c.offset=ee,a&&a.idsToInsert){ee+=a.idsToInsert.length*6,ee>ci&&M(ee),c.offset=ee;let E=MN(se.subarray(n,ee),a.idsToInsert);return a=null,E}return T&i_?(se.start=n,se.end=ee,se):se.subarray(n,ee)}finally{if(i){if(b<10&&b++,w>1e4)i.transitions=null,b=0,w=0,x.length>0&&(x=[]);else if(x.length>0&&!h){for(let E=0,C=x.length;E<C;E++)x[E][Qc]=0;x=[]}if(s&&c.saveStructures){let E=i.sharedLength||f;i.length>E&&(i=i.slice(0,E));let C=se.subarray(n,ee);return c.saveStructures(i,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(v)):(l=E,C)}}T&LN&&(ee=n)}};let _=v=>{ee>ci&&(se=M(ee));var T=typeof v,E;if(T==="string"){let C=v.length;if(ui&&C>=8&&C<4096){let O=SN.test(v);ui[O?0:1]+=v,se[ee++]=193,_(O?-C:C);return}let L;C<32?L=1:C<256?L=2:C<65536?L=3:L=5;let R=C*3;if(ee+R>ci&&(se=M(ee+R)),C<64||!u){let O,W,j,Z=ee+L;for(O=0;O<C;O++)W=v.charCodeAt(O),W<128?se[Z++]=W:W<2048?(se[Z++]=W>>6|192,se[Z++]=W&63|128):(W&64512)===55296&&((j=v.charCodeAt(O+1))&64512)===56320?(W=65536+((W&1023)<<10)+(j&1023),O++,se[Z++]=W>>18|240,se[Z++]=W>>12&63|128,se[Z++]=W>>6&63|128,se[Z++]=W&63|128):(se[Z++]=W>>12|224,se[Z++]=W>>6&63|128,se[Z++]=W&63|128);E=Z-ee-L}else E=u(v,ee+L,R);E<32?se[ee++]=160|E:E<256?(L<2&&se.copyWithin(ee+2,ee+1,ee+1+E),se[ee++]=217,se[ee++]=E):E<65536?(L<3&&se.copyWithin(ee+3,ee+2,ee+2+E),se[ee++]=218,se[ee++]=E>>8,se[ee++]=E&255):(L<5&&se.copyWithin(ee+5,ee+3,ee+3+E),se[ee++]=219,Jt.setUint32(ee,E),ee+=4),ee+=E}else if(T==="number")if(v>>>0===v)v<64?se[ee++]=v:v<256?(se[ee++]=204,se[ee++]=v):v<65536?(se[ee++]=205,se[ee++]=v>>8,se[ee++]=v&255):(se[ee++]=206,Jt.setUint32(ee,v),ee+=4);else if(v>>0===v)v>=-32?se[ee++]=256+v:v>=-128?(se[ee++]=208,se[ee++]=v+256):v>=-32768?(se[ee++]=209,Jt.setInt16(ee,v),ee+=2):(se[ee++]=210,Jt.setInt32(ee,v),ee+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){se[ee++]=202,Jt.setFloat32(ee,v);let L;if(C<4||(L=v*Bd[(se[ee]&127)<<1|se[ee+1]>>7])>>0===L){ee+=4;return}else ee--}se[ee++]=203,Jt.setFloat64(ee,v),ee+=8}else if(T==="object")if(!v)se[ee++]=192;else{if(a){let L=a.get(v);if(L){if(!L.id){let R=a.idsToInsert||(a.idsToInsert=[]);L.id=R.push(L)}se[ee++]=214,se[ee++]=112,Jt.setUint32(ee,L.id),ee+=4;return}else a.set(v,{offset:ee-n})}let C=v.constructor;if(C===Object)A(v,!0);else if(C===Array){E=v.length,E<16?se[ee++]=144|E:E<65536?(se[ee++]=220,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=221,Jt.setUint32(ee,E),ee+=4);for(let L=0;L<E;L++)_(v[L])}else if(C===Map){E=v.size,E<16?se[ee++]=128|E:E<65536?(se[ee++]=222,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=223,Jt.setUint32(ee,E),ee+=4);for(let[L,R]of v)_(L),_(R)}else{for(let L=0,R=Gd.length;L<R;L++){let O=bg[L];if(v instanceof O){let W=Gd[L];if(W.write){W.type&&(se[ee++]=212,se[ee++]=W.type,se[ee++]=0),_(W.write.call(this,v));return}let j=se,Z=Jt,Y=ee;se=null;let z;try{z=W.pack.call(this,v,F=>(se=j,j=null,ee+=F,ee>ci&&M(ee),{target:se,targetView:Jt,position:ee-F}),_)}finally{j&&(se=j,Jt=Z,ee=Y,ci=se.length-10)}z&&(z.length+ee>ci&&M(z.length+ee),ee=AN(z,se,ee,W.type));return}}A(v,!v.hasOwnProperty)}}else if(T==="boolean")se[ee++]=v?195:194;else if(T==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))se[ee++]=211,Jt.setBigInt64(ee,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)se[ee++]=207,Jt.setBigUint64(ee,v);else if(this.largeBigIntToFloat)se[ee++]=203,Jt.setFloat64(ee,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");ee+=8}else if(T==="undefined")this.encodeUndefinedAsNil?se[ee++]=192:(se[ee++]=212,se[ee++]=0,se[ee++]=0);else if(T==="function")_(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},A=this.useRecords===!1?this.variableMapSize?v=>{let T=Object.keys(v),E=T.length;E<16?se[ee++]=128|E:E<65536?(se[ee++]=222,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=223,Jt.setUint32(ee,E),ee+=4);let C;for(let L=0;L<E;L++)_(C=T[L]),_(v[C])}:(v,T)=>{se[ee++]=222;let E=ee-n;ee+=2;let C=0;for(let L in v)(T||v.hasOwnProperty(L))&&(_(L),_(v[L]),C++);se[E+++n]=C>>8,se[E+n]=C&255}:v=>{let T=Object.keys(v),E,C=o.transitions||(o.transitions=Object.create(null)),L=0;for(let O=0,W=T.length;O<W;O++){let j=T[O];E=C[j],E||(E=C[j]=Object.create(null),L++),C=E}let R=C[Qc];if(R)R>=96&&p?(se[ee++]=((R-=96)&31)+96,se[ee++]=R>>5):se[ee++]=R;else{R=o.nextId,R||(R=64),R<g&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(R=o.nextOwnId,R<y||(R=g),o.nextOwnId=R+1):(R>=y&&(R=g),o.nextId=R+1);let O=T.highByte=R>=96&&p?R-96>>5:-1;C[Qc]=R,o[R-64]=T,R<g?(T.isShared=!0,o.sharedLength=R-63,s=!0,O>=0?(se[ee++]=(R&31)+96,se[ee++]=O):se[ee++]=R):(O>=0?(se[ee++]=213,se[ee++]=114,se[ee++]=(R&31)+96,se[ee++]=O):(se[ee++]=212,se[ee++]=114,se[ee++]=R),L&&(w+=b*L),x.length>=m&&(x.shift()[Qc]=0),x.push(C),_(T))}for(let O=0,W=T.length;O<W;O++)_(v[T[O]])},M=v=>{let T;if(v>16777216){if(v-n>$w)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min($w,Math.round(Math.max((v-n)*(v>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(v-n<<2,se.length-1)>>12)+1<<12;let E=new xg(T);return Jt=new DataView(E.buffer,0,T),se.copy?se.copy(E,0,n,v):E.set(se.slice(n,v)),ee-=n,n=0,ci=E.length-10,se=E}}useBuffer(e){se=e,Jt=new DataView(se.buffer,se.byteOffset,se.byteLength),ee=0}};bg=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Yc];Gd=[{pack(r,e,t){let n=r.getTime()/1e3;if((this.useTimestamp32||r.getMilliseconds()===0)&&n>=0&&n<4294967296){let{target:i,targetView:s,position:o}=e(6);i[o++]=214,i[o++]=255,s.setUint32(o,n)}else if(n>0&&n<17179869184){let{target:i,targetView:s,position:o}=e(10);i[o++]=215,i[o++]=255,s.setUint32(o,r.getMilliseconds()*4e6+(n/1e3/4294967296>>0)),s.setUint32(o+4,n)}else if(isNaN(n)){if(this.onInvalidDate)return e(0),t(this.onInvalidDate());let{target:i,targetView:s,position:o}=e(3);i[o++]=212,i[o++]=255,i[o++]=255}else{let{target:i,targetView:s,position:o}=e(15);i[o++]=199,i[o++]=12,i[o++]=255,s.setUint32(o,r.getMilliseconds()*1e6),s.setBigInt64(o+4,BigInt(Math.floor(n)))}}},{pack(r,e,t){let n=Array.from(r),{target:i,position:s}=e(this.structuredClone?3:0);this.structuredClone&&(i[s++]=212,i[s++]=115,i[s++]=0),t(n)}},{pack(r,e,t){let{target:n,position:i}=e(this.structuredClone?3:0);this.structuredClone&&(n[i++]=212,n[i++]=101,n[i++]=0),t([r.name,r.message])}},{pack(r,e,t){let{target:n,position:i}=e(this.structuredClone?3:0);this.structuredClone&&(n[i++]=212,n[i++]=120,n[i++]=0),t([r.source,r.flags])}},{pack(r,e){this.structuredClone?e_(r,16,e):t_(kd?Buffer.from(r):new Uint8Array(r),e)}},{pack(r,e){let t=r.constructor;t!==n_&&this.structuredClone?e_(r,vg.indexOf(t.name),e):t_(r,e)}},{pack(r,e){let{target:t,position:n}=e(1);t[n]=193}}];function e_(r,e,t,n){let i=r.byteLength;if(i+1<256){var{target:s,position:o}=t(4+i);s[o++]=199,s[o++]=i+1}else if(i+1<65536){var{target:s,position:o}=t(5+i);s[o++]=200,s[o++]=i+1>>8,s[o++]=i+1&255}else{var{target:s,position:o,targetView:a}=t(7+i);s[o++]=201,a.setUint32(o,i+1),o+=4}s[o++]=116,s[o++]=e,s.set(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),o)}function t_(r,e){let t=r.byteLength;var n,i;if(t<256){var{target:n,position:i}=e(t+2);n[i++]=196,n[i++]=t}else if(t<65536){var{target:n,position:i}=e(t+3);n[i++]=197,n[i++]=t>>8,n[i++]=t&255}else{var{target:n,position:i,targetView:s}=e(t+5);n[i++]=198,s.setUint32(i,t),i+=4}n.set(r,i)}function AN(r,e,t,n){let i=r.length;switch(i){case 1:e[t++]=212;break;case 2:e[t++]=213;break;case 4:e[t++]=214;break;case 8:e[t++]=215;break;case 16:e[t++]=216;break;default:i<256?(e[t++]=199,e[t++]=i):i<65536?(e[t++]=200,e[t++]=i>>8,e[t++]=i&255):(e[t++]=201,e[t++]=i>>24,e[t++]=i>>16&255,e[t++]=i>>8&255,e[t++]=i&255)}return e[t++]=n,e.set(r,t),t+=i,t}function MN(r,e){let t,n=e.length*6,i=r.length-n;for(e.sort((s,o)=>s.offset>o.offset?1:-1);t=e.pop();){let s=t.offset,o=t.id;r.copyWithin(s+n,s,i),n-=6;let a=s+n;r[a++]=214,r[a++]=105,r[a++]=o>>24,r[a++]=o>>16&255,r[a++]=o>>8&255,r[a++]=o&255,i=s}return r}function Eo(r){if(r.Class){if(!r.pack&&!r.write)throw new Error("Extension has no pack or write function");if(r.pack&&!r.type)throw new Error("Extension has no type (numeric code to identify the extension)");bg.unshift(r.Class),Gd.unshift(r)}Jw(r)}var r_=new To({useRecords:!1}),TN=r_.pack,EN=r_.pack;var{NEVER:CN,ALWAYS:DN,DECIMAL_ROUND:PN,DECIMAL_FIT:IN}=Ud,i_=512,LN=1024;var s_=new To({structuredClone:!0});Eo({Class:Vt.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,Vt.prototype),r}});Eo({Class:Ht.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Ht.prototype),r}});Eo({Class:Ar.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Ar.prototype),r}});Eo({Class:qc.prototype.constructor,type:4,write(r){return r.id},read(r){return new qc(r)}});Eo({Class:Xc.prototype.constructor,type:5,write(r){return r.data},read(r){return new Xc(r)}});function ON(r){var e=0;if(r.length===0)return e;for(let t=0;t<r.length;t++){let n=r[t];e=(e<<5)-e+n,e=e&e}return e}function wg(r){if(Td(r))return r;if(Array.isArray(r))return r.map(wg);if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r).sort())e[t]=wg(r[t]);return Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else return r}var Vd;(n=>{function r(i){return s_.pack(i)}n.serialize=r;function e(i){return s_.unpack(i)}n.deserialize=e;function t(i){return ON(r(wg(i))).toString()}n.checksum=t})(Vd||(Vd={}));var Hd;(t=>{t.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function e(n){return t.all.includes(n)}t.is=e})(Hd||(Hd={}));var Wd;(t=>{function r(n){return e(n)}t.defaultData=r;function e(n){if(n==="PointLight")return{type:n,color:Rn.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:Rn.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(n==="DirectionalLight")return{type:n,color:Rn.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Wd||(Wd={}));var _g;(t=>{t.defaultData={castShadow:!0,receiveShadow:!0};function e(n,i){return n.castShadow===i.castShadow&&n.receiveShadow===i.receiveShadow}t.equals=e})(_g||(_g={}));var Sg;(t=>{t.defaultData={flatShading:!1,wireframe:!1,side:0};function e(n,i){return n.flatShading===i.flatShading&&n.side===i.side&&n.wireframe===i.wireframe}t.equals=e})(Sg||(Sg={}));var jd;(e=>e.defaultData={...Sg.defaultData,..._g.defaultData,cloner:null,booleanExclude:null})(jd||(jd={}));var Ag=(i=>(i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Center=3]="Center",i[i.Justify=4]="Justify",i))(Ag||{}),Mg=(n=>(n[n.Top=1]="Top",n[n.Center=2]="Center",n[n.Bottom=3]="Bottom",n))(Mg||{}),Tg=(n=>(n[n.None=1]="None",n[n.Upper=2]="Upper",n[n.Lower=3]="Lower",n))(Tg||{}),qd;(e=>e.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Rn.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(qd||(qd={}));var Xd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],o_=["wrapping","image"],Is;(n=>{function r(i,s){return i==="light"&&s?e(s):t(i)}n.defaultData=r;function e(i){switch(i){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:hn.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...hn.fromHex(6710886),a:1},colorB:{...hn.fromHex(6710886),a:1},colorC:{...hn.fromHex(16777215),a:1},colorD:{...hn.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Rn.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Rn.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Rn.fromHexAndA(0,1),contourColor:Rn.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Is||(Is={}));var fr;(a=>{function r(l){return!l.layers.some(c=>{if(c.data.type==="texture"&&c.data.projection!==0||c.data.type==="depth"&&!c.data.isWorldSpace||c.data.type==="noise"||c.data.type==="displace")return!0})&&!t(l)}a.isMergable=r;function e(l){let u="";return l.layers.forEach(c=>{Object.entries(c.data).forEach(([h,d])=>{u+=`${h}${d}`,Array.isArray(d)?d.forEach(f=>u+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?u+=`${f.toFixed(4)}`:u+=`${f}`}):u+=`${d}`})}),u}a.getHash=e;function t(l){let u=0;for(let c of l.layers)"alpha"in c.data&&c.data.type!=="light"&&c.data.type!=="fresnel"&&(u+=(1-u)*c.data.alpha);return u<1}a.isTransparent=t;function n(){return{layers:new Ht}}a.defaultEmptyData=n;function i(l="layer1",u="layer2"){return s("phong",l,u)}a.defaultData=i;function s(l,u="layer1",c="layer2"){let h=new Ht;return h.push({fi:0,data:Is.defaultData("light",l),id:u}),h.push({fi:1,data:Is.defaultData("color"),id:c}),{layers:h}}a.defaultTwoLayerData=s;function o(l,u="basic",c="layer1",h="layer2"){let d=Is.defaultData("texture");Object.assign(d.texture,{image:l});let f=new Ht;return f.push({fi:0,data:d,id:c}),f.push({fi:1,data:Is.defaultData("light",u),id:h}),{layers:f}}a.defaultTwoLayerTextureData=o})(fr||(fr={}));var il;(e=>{function r(){return{points:new Ht,roundness:0,shapeHoles:[],isClosed:!1}}e.defaultData=r})(il||(il={}));var Yd;(e=>{function r(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=r})(Yd||(Yd={}));var Zc;(e=>{function r(t){if(t==="RectangleGeometry")return{width:320,height:320,type:t,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(t==="VectorGeometry")return{width:1,height:1,type:t,subdivisions:12,shape:il.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(t==="BooleanGeometry")return{type:t,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}e.defaultData=r})(Zc||(Zc={}));var Kc;(i=>{i.identity={...wd.identity,hiddenMatrix:si.identity};function e(s){return{position:s.position,rotation:s.rotation,scale:s.scale,hiddenMatrix:s.hiddenMatrix}}i.fromObject=e;function t(s,o){return{position:o?.position||s.position,rotation:o?.rotation||s.rotation,scale:o?.scale||s.scale,hiddenMatrix:o?.hiddenMatrix||s.hiddenMatrix}}i.merge=t;function n(s,o){return{position:rn.isEqual(s.position,o.position)?null:o.position,rotation:rn.isEqual(s.rotation,o.rotation)?null:o.rotation,scale:rn.isEqual(s.scale,o.scale)?null:o.scale,hiddenMatrix:si.isEqual(s.hiddenMatrix,o.hiddenMatrix)?null:o.hiddenMatrix}}i.diff=n})(Kc||(Kc={}));var Xi;(e=>e.defaultData={states:new Ht,events:new Ht,visible:!0,raycastLock:!1,...Kc.identity})(Xi||(Xi={}));var a_;(e=>e.defaultData={type:"Empty",...Xi.defaultData})(a_||(a_={}));var Qd;(e=>e.defaultData={type:"Mesh",...Xi.defaultData,...jd.defaultData})(Qd||(Qd={}));var l_;(e=>e.defaultData={type:"TextFrame",...Xi.defaultData,...qd.defaultData})(l_||(l_={}));var Zd;(e=>e.defaultData={...Xi.defaultData,...Kc.identity,...Ao.defaultData})(Zd||(Zd={}));var c_;(e=>{function r(t){return{...Xi.defaultData,...Wd.defaultData(t)}}e.defaultData=r})(c_||(c_={}));var u_;(n=>(n.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:si.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ht,events:new Ht,...Ao.defaultData},n.defaultMeshObject={name:"Rectangle",...Xi.defaultData,...Qd.defaultData,geometry:Zc.defaultData("RectangleGeometry"),material:fr.defaultTwoLayerData("basic","layer1","layer2")},n.defaultBooleanObject={name:"Boolean",...Xi.defaultData,...Qd.defaultData,geometry:Zc.defaultData("BooleanGeometry"),material:fr.defaultTwoLayerData("phong","layer1","layer2")}))(u_||(u_={}));var Jc;(t=>{function r(n,i){if(i===void 0)return n;let s={...n};return"material"in s&&"material"in i&&i.material&&(s.material=cg(s.material,o=>{if(typeof o!="string")for(let[a,l]of Object.entries(i.material.layers)){let u=o.layers.data(a);u&&So(u,l)}}).data),s.materials&&i.materials&&(s.materials=cg(s.materials,o=>{for(let a=0;a<s.materials.length;a++){let l=i.materials[a];if(typeof l!="string")for(let[u,c]of Object.entries(l.layers)){let h=o[a]?.layers?.data(u);h&&So(h,c)}}}).data),s}t.patchMaterialState=r;function e(n,i){if(i===void 0)return n;let s={...n};if(Object.assign(s,Kc.merge(s,i)),Es.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let o=i;o.orthographic?.zoom!==void 0&&(s.orthographic.zoom=o.orthographic.zoom),o.perspective?.zoom!==void 0&&(s.perspective.zoom=o.perspective.zoom),o.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=o.isUpVectorFlipped),o.targetOffset!==void 0&&(s.targetOffset=o.targetOffset)}else if(n.type==="Mesh")s.geometry={...s.geometry},Object.assign(s.geometry,i.geometry),s=r(s,i);else if(Hd.is(n.type)){let o=i;o.intensity!==void 0&&(s.intensity=o.intensity),o.color!==void 0&&(typeof o.color=="string"?s.color=o.color:s.color=hn.clone(o.color))}return s}t.patch=e})(Jc||(Jc={}));var Kd;(e=>e.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Kd||(Kd={}));var RN={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},NN={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Jd={CC0:RN,Originals:NN};var sl;(l=>{let r=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],e=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function t(){let u={},c=0;for(let h of r)u[`image_${c}`]={data:h,name:`Image ${c}`,asset:!1},c++;c=0;for(let h of e)u[`matcap_${c}`]={data:h,name:`Matcap ${c}`,asset:!1},c++;return u}l.defaultImages=t;function n(){let u={};return u["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},u}l.defaultColors=n;function i(){let u={},c={...Jd.CC0,...Jd.Originals},h=0;for(let[d,f]of Object.entries(c)){let m=f.split("/").pop()??"unknown",p=f.split(".").pop(),g="";if(p==="mp3")g="audio/mpeg";else if(p==="wav")g="audio/wav";else continue;u[`audio_${h}`]={name:d,filename:m,data:f,mimeType:g,asset:!1,free:d in Jd.CC0},h++}return u}l.defaultAudios=i,l.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function o(){return{materials:new Vt,images:new Vt,colors:new Vt,audios:new Vt,penumbraSize:[.5,.5,.5]}}l.emptyData=o;function a(){return{materials:new Vt,images:$a(t(),Vt.prototype),colors:$a(n(),Vt.prototype),audios:$a(i(),Vt.prototype),penumbraSize:new Array(5).fill(.5)}}l.defaultData=a})(sl||(sl={}));function Dg(r){r.layers.forEach(e=>{if(e.type==="depth"&&e.colorA!==void 0){let t=e.colorA,n=e.colorB,i=[[t.r,t.g,t.b,t.a],[n.r,n.g,n.b,n.a]],s=[0,1];for(let a=2;a<10;a++)i.push(i[1]),s.push(1);let o={...ig(Cs(e),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,e.near),far:Math.max(0,e.far),colors:i,steps:s,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(e,o)}else if(e.type==="depth"&&e.gradientType===1&&(e.near<0||e.far<0)){let t={...Cs(e),near:Math.max(e.near,0),far:Math.max(e.far,0)};Object.assign(e,t)}})}function BN(r){Object.values(r.shared.materials).forEach(e=>Dg(e))}function FN(r){r.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(n=>{typeof n!="string"&&Dg(n)}):"material"in t&&typeof t.material!="string"&&Dg(t.material)})}function UN(r){Object.assign(r.scene.publish,{orbitControls:{...Kd.defaultData,...Cs(r.scene.publish.orbitControls)}})}function zN(r){function e(t){if(t.layers){for(let n of Object.values(t.layers))if(n){for(let[i,s]of Object.entries(n))if((Xd.includes(i)||typeof s=="boolean")&&delete n[i],i==="texture")for(let[o,a]of Object.entries(s))(o_.includes(o)||typeof a=="boolean")&&delete s[o]}}}r.scene.objects.traverse((t,n)=>{n.states.forEach(i=>{let s=i;s.material?e(s.material):s.materials&&s.materials.forEach(o=>{e(o)})})})}function GN(r){r.scene.publish.withBackground=!0}function kN(r){r.scene.publish.settings.web={compress:!0,preset:1}}function VN(r){r.scene.objects.traverse((e,t)=>{let n=t.cloner;n&&(n.radial.scale=n.radial.scale.map(i=>i+1),n.linear.scale=n.linear.scale.map(i=>i+1))})}function HN(r){r.scene.objects.traverse((e,t)=>{let n=t.geometry;n&&(n.type==="DodecahedronGeometry"||n.type==="IcosahedronGeometry")&&(n.detail=Math.round(n.detail))})}function WN(r){r.scene.objects.traverse((e,t)=>{let n=r.scene.objects.parent(e);t.type==="Mesh"&&(!n||r.scene.objects.data(n).geometry?.type!=="BooleanGeometry")&&(t.booleanExclude=null)})}function Cg(r){!r.layers||r.layers.forEach(e=>{if(e.type==="depth"&&e.colors.length===10){let t=[...e.colors];t.push(e.colors[9]);let n=[...e.steps];n.push(e.steps[9]);let i={...Cs(e),colors:t,steps:n};Object.assign(e,i)}})}function jN(r){r.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="BooleanGeometry"||t.geometry.type==="SubdivGeometry")&&(t.geometry.phongAngle=35)})}function h_(r){r.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(n=>{typeof n!="string"&&Cg(n)}):"material"in t&&typeof t.material!="string"&&Cg(t.material)}),Object.values(r.shared.materials).forEach(e=>Cg(e))}function qN(r){r.scene.environment.ambientLight.softShadows=!1,r.scene.environment.ambientLight.softShadowQuality="low",r.scene.objects.traverse((e,t)=>{(t.type==="DirectionalLight"||t.type==="SpotLight")&&(t.shadowResolution=1024,t.shadowRadius=1,t.depth=1e5)}),r.shared.penumbraSize=new Array(5).fill(.5)}function XN(r){r.shared.audios=$a(sl.defaultAudios(),Vt.prototype)}var d_=13;function f_(r){let e=r.schema??0;e!==d_&&(console.warn("updating from ",e,"to ",d_),e<1&&(FN(r),BN(r),r.schema=1),e<2&&(UN(r),r.schema=2),e<3&&(zN(r),r.schema=3),e<4&&(GN(r),r.schema=4),e<5&&(kN(r),r.schema=5),e<6&&(VN(r),r.schema=6),e<7&&(HN(r),r.schema=7),e<8&&(WN(r),r.schema=8),e<9&&(h_(r),r.schema=9),e<10&&(jN(r),r.schema=10),e<11&&(qN(r),r.schema=11),e<12&&(h_(r),r.schema=12),e<13&&(XN(r),r.schema=13))}var $d;(e=>e.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})($d||($d={}));function m_(r,e=!1){let t=r[0].index!==null,n=new Set(Object.keys(r[0].attributes)),i=new Set(Object.keys(r[0].morphAttributes)),s={},o={},a=r[0].morphTargetsRelative,l=new Pe,u=0;for(let c=0;c<r.length;++c){let h=r[c],d=0;if(t!==(h.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let f in h.attributes){if(!n.has(f))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+'. All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.'),null;s[f]===void 0&&(s[f]=[]),s[f].push(h.attributes[f]),d++}if(d!==n.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". Make sure all geometries have the same number of attributes."),null;if(a!==h.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let f in h.morphAttributes){if(!i.has(f))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". .morphAttributes must be consistent throughout all geometries."),null;o[f]===void 0&&(o[f]=[]),o[f].push(h.morphAttributes[f])}if(l.userData.mergedUserData=l.userData.mergedUserData||[],l.userData.mergedUserData.push(h.userData),e){let f;if(t)f=h.index.count;else if(h.attributes.position!==void 0)f=h.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". The geometry must have either an index or a position attribute"),null;l.addGroup(u,f,c),u+=f}}if(t){let c=0,h=[];for(let d=0;d<r.length;++d){let f=r[d].index;for(let m=0;m<f.count;++m)h.push(f.getX(m)+c);c+=r[d].attributes.position.count}l.setIndex(h)}for(let c in s){let h=p_(s[c]);if(!h)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+c+" attribute."),null;l.setAttribute(c,h)}for(let c in o){let h=o[c][0].length;if(h===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[c]=[];for(let d=0;d<h;++d){let f=[];for(let p=0;p<o[c].length;++p)f.push(o[c][p][d]);let m=p_(f);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+c+" morphAttribute."),null;l.morphAttributes[c].push(m)}}return l}function p_(r){let e,t,n,i=0;for(let a=0;a<r.length;++a){let l=r[a];if(l.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(e===void 0&&(e=l.array.constructor),e!==l.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=l.itemSize),t!==l.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(n===void 0&&(n=l.normalized),n!==l.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;i+=l.array.length}let s=new e(i),o=0;for(let a=0;a<r.length;++a)s.set(r[a].array,o),o+=r[a].array.length;return new je(s,t,n)}var Pg={type:"change"},g_={type:"changeZoom"},YN={type:"changePan"},ol={type:"start"},$c={type:"end"},Ig=new qt,QN=new N,ZN=2*Math.PI,KN=1e-8,JN=.01,y_=2,Lg=.125,v_=2,Og=1,Rg=1,Ng=.1;var ef=class extends Rt{constructor(t,n){super();this.object=t;this.domElement=n;this.enabled=!0;this.useKeyEvents=!0;this.enableDamping=!1;this.enableZoom=!0;this.enableRotate=!0;this.enablePan=!0;this.autoRotate=!1;this.rotationLimitsMode=0;this.panLimitsMode=0;this.rotationSoftLimit=2;this.panSoftLimit=2;this.hoverRotatePanMode=0;this.zoomLimitsEnabled=!1;this.preventScroll=!0;this.mouseButtons=[0,5];this.mouseButtonsPlay=[3,4,5];this.touches=[null,cr.DOLLY_ROTATE,cr.PAN];this.offset=new S;this.eye=new S;this.lastPosition=new S;this.lastQuaternion=new qt;this.current=new N;this.overShoot=new N;this.overRatio=new N;this.spherical=new Ec;this.sphericalDelta=new Ec;this.panOffset=new S;this.panLeftV=new S;this.panUpV=new S;this.panV=new S;this.rotateStart=new N;this.rotateEnd=new N;this.rotateDelta=new N;this.panStart=new N;this.panEnd=new N;this.panDelta=new N;this.dollyStart=new N;this.dollyEnd=new N;this.dollyDelta=new N;this.rotationRangeFactor=new N;this.panRangeFactor=new N;this.state=-1;this.zoomChanged=!1;this.isPointerDown=!1;this.isFirstHover=!0;this.isThetaFlipped=!1;this.prevScale=0;this.scale=1;this.gesture=!1;this.timer=-1;this.timerHover=-1;this.minDistance=0;this.maxDistance=1/0;this.minZoom=0;this.maxZoom=1/0;this.minPhi=0;this.maxPhi=Math.PI;this.minTheta=-1/0;this.maxTheta=1/0;this.minH=0;this.maxH=Math.PI;this.minV=-1/0;this.maxV=1/0;this.autoRotateClockwise=!0;this.isPanOverShoot=!1;this.isRotateOverShoot=!1;this.update=()=>{let t=this.object.position;this.offset.copy(t).sub(this.target),this.spherical.setFromVector3(this.offset),this.object.isUpVectorFlipped&&(this.spherical.phi*=-1,this.spherical.theta-=Math.PI),this.autoRotate&&this.state===-1&&this.rotateLeft((this.autoRotateClockwise===!0?1:-1)*this.getAutoRotationAngle()),this.rotationLimitsMode!==0&&this.applyLimits(this.sphericalDelta,this.rotationLimitsMode,this.rotationSoftLimit,this.maxTheta,this.minTheta,this.maxPhi,this.minPhi,this.rotationRangeFactor),this.rotationLimitsMode!==2&&(this.spherical.phi+=this.sphericalDelta.phi),(this.rotationLimitsMode!==1||this.autoRotate===!0)&&(this.spherical.theta+=this.sphericalDelta.theta),this.spherical.radius*=this.scale,this.zoomLimitsEnabled&&(this.spherical.radius=Math.max(this.minDistance,Math.min(this.maxDistance,this.spherical.radius))),this.panLimitsMode!==0&&(this.target.applyQuaternion(Ig.copy(this.object.quaternion).invert()),this.panOffset.applyQuaternion(Ig),this.applyLimits(this.panOffset,this.panLimitsMode,this.panSoftLimit,this.maxH,this.minH,this.maxV,this.minV,this.panRangeFactor),this.target.applyQuaternion(this.object.quaternion),this.panOffset.applyQuaternion(this.object.quaternion)),this.panLimitsMode===2&&(this.panOffset.y=0),this.panLimitsMode===1&&(this.panOffset.x=0),this.state===-1&&!this.gesture?(this.panOffset.multiplyScalar(1-Lg),this.target.add(this.panOffset)):(this.target.add(this.panOffset),this.panOffset.set(0,0,0)),this.offset.setFromSpherical(this.spherical),t.copy(this.target).add(this.offset);let n=this.spherical.phi%ZN;return this.eye.copy(this.offset).normalize(),this.object.up.copy(ot.DefaultUp).applyAxisAngle(this.eye,this.object.angleOffsetFromUp),n>0&&n>Math.PI||n<0&&n>-Math.PI?(this.object.up.negate(),this.object.lookAt(this.target),this.object.isUpVectorFlipped=!0):(this.object.lookAt(this.target),this.object.isUpVectorFlipped=!1),this.state===-1||this.enableDamping===!0?(this.sphericalDelta.theta*=1-Lg,this.sphericalDelta.phi*=1-Lg):this.sphericalDelta.set(0,0,0),this.scale=1,this.zoomChanged||this.lastPosition.distanceToSquared(this.object.position)>JN||8*(1-this.lastQuaternion.dot(this.object.quaternion))>KN?(this.dispatchEvent(Pg),this.lastPosition.copy(this.object.position),this.lastQuaternion.copy(this.object.quaternion),this.zoomChanged=!1,!0):(this.isPanOverShoot=!1,this.isRotateOverShoot=!1,this.sphericalDelta.set(0,0,0),this.panOffset.set(0,0,0),!1)};this.onPointerDown=t=>{this.enabled!==!1&&(this.isPointerDown=!0,ht.length===0&&(this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)),eB(t),t.pointerType==="touch"?this.onPointerDownTouch(t):this.onPointerDownMouse(t))};this.onPointerMove=t=>{this.enabled!==!1&&(t.pointerType==="touch"?this.onPointerMoveTouch(t):this.onPointerMoveMouse(t))};this.onPointerUp=t=>{b_(t),this.isPointerDown=!1,ht.length===0&&(this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp)),this.dispatchEvent($c),this.state=-1};this.onPointerCancel=t=>{b_(t)};this.onPointerDownMouse=t=>{let n;switch(this.useKeyEvents?n=this.mouseButtons[t.button]:n=this.mouseButtonsPlay[t.button],n){case 0:if(t.altKey===!0&&!t.shiftKey&&!Hc(t)){if(this.enableRotate===!1)return;this.handleMouseDownRotate(t),this.state=0}else if(this.key===" "){if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2}break;case 4:if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2;break;case 3:if(Hc(t)||t.shiftKey){if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2}else{if(this.enableRotate===!1)return;this.handleMouseDownRotate(t),this.state=0}break;case 5:if(Hc(t)||t.shiftKey){if(this.enableRotate===!1)return;this.handleMouseDownRotate(t),this.state=0}else{if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2}break;default:this.state=-1}this.state!==-1&&this.dispatchEvent(ol)};this.onPointerMoveMouse=t=>{switch(this.state){case 0:if(this.enableRotate===!1)return;this.handleMouseMoveRotate(t);break;case 1:if(this.enableZoom===!1)return;this.handleMouseMoveDolly(t);break;case 2:if(this.enablePan===!1)return;this.handleMouseMovePan(t);break}};this.onPointerDownTouch=t=>{switch(w_(t),this.touches[ht.length-1]){case cr.ROTATE:if(this.enableRotate===!1){this.state=-1;return}this.handleTouchStartRotate(),this.state=3;break;case cr.PAN:if(this.enablePan===!1){this.state=-1;return}this.handleTouchStartPan(),this.state=4;break;case cr.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this.handleTouchStartDollyPan(),this.state=5;break;case cr.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this.handleTouchStartDollyRotate(),this.state=6;break;default:this.state=-1}this.state!==-1&&this.dispatchEvent(ol)};this.onPointerMoveTouch=t=>{switch(w_(t),this.state){case 3:if(this.enableRotate===!1)return;this.handleTouchMoveRotate(t),this.update();break;case 4:if(this.enablePan===!1)return;this.handleTouchMovePan(t),this.update();break;case 5:if(this.enableZoom===!1&&this.enablePan===!1)return;this.handleTouchMoveDollyPan(t),this.update();break;case 6:if(this.enableZoom===!1&&this.enableRotate===!1)return;this.handleTouchMoveDollyRotate(t),this.update();break;default:this.state=-1}};this.dispatchEndDebounced=Uc(()=>this.dispatchEvent($c),33);this.onMouseWheel=t=>{this.enabled===!1||this.enableZoom===!1&&this.enablePan===!1||((this.domElement.clientHeight===document.body.clientHeight&&this.domElement.clientWidth===document.body.clientWidth||this.preventScroll)&&t.preventDefault(),this.dispatchEvent(ol),this.handleMouseWheel(t),this.dispatchEndDebounced())};this.onGesture=t=>{if(this.enabled!==!1)if(t.preventDefault(),t.type==="gesturechange"){if(this.enableZoom===!1)return;this.dispatchEvent(ol),t.scale>this.prevScale?this.dollyIn(this.getZoomScale()):t.scale<this.prevScale&&this.dollyOut(this.getZoomScale()),this.prevScale=t.scale,this.update()}else this.dispatchEvent($c)};this.onContextMenu=t=>{this.enabled!==!1&&t.preventDefault()};this.onTouchMove=t=>{(t.touches.length>1||this.preventScroll)&&t.preventDefault()};this.onTouchEnd=t=>{t.preventDefault()};this.onKeyDown=t=>{this.enabled!==!1&&(this.key=t.key)};this.onKeyUp=()=>{this.enabled!==!1&&(this.key=void 0,this.state!==-1&&this.onPointerUp(ht[0]))};this.onPointerHover=t=>{if(!(Kt||this.enabled===!1||this.state!==-1||this.hoverRotatePanMode===2&&this.isPanOverShoot||this.hoverRotatePanMode===1&&this.isRotateOverShoot)){if(window.clearTimeout(this.timerHover),this.isPointerDown=!0,this.isFirstHover){let n={clientX:window.innerWidth/2,clientY:window.innerHeight/2};this.hoverRotatePanMode===2?this.handleMouseDownPan(n):this.hoverRotatePanMode===1&&this.handleMouseDownRotate(n),this.isFirstHover=!1}this.hoverRotatePanMode===2?this.handleMouseMovePan(t,Ng):this.hoverRotatePanMode===1&&this.handleMouseMoveRotate(t,Ng),this.timerHover=window.setTimeout(()=>{this.isPointerDown=!1},30)}};this.object=t,this.domElement=n,this.target=this.object.getTarget(),this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.connect(),this.update()}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(Pg),this.isFirstHover=!0,this.update(),this.state=-1}resetTo(t,n,i){this.target.copy(t),this.object.position.copy(n),this.object.zoom=i,this.object.updateProjectionMatrix(),this.dispatchEvent(Pg),this.update(),this.state=-1}fromJSON(t){this.setEnableDampingSpeed(t.enableDamping),this.enablePan=t.enablePan,this.enableZoom=t.enableZoom,this.enableRotate=t.enableRotate,this.rotationLimitsMode=t.rotationLimitsMode,this.panLimitsMode=t.panLimitsMode,this.panSoftLimit=t.panSoftLimit,this.rotationSoftLimit=t.rotationSoftLimit,this.hoverRotatePanMode=t.hoverRotatePanMode,this.isFirstHover=!0,this.hoverRotatePanMode!==0&&this.domElement.addEventListener("pointermove",this.onPointerHover),Ng=(t.hoverRotatePanStrength/100)**2,this.zoomLimitsEnabled=t.zoomLimitsEnabled,this.minZoom=t.zoomLimits.min,this.maxZoom=Math.max(t.zoomLimits.min,t.zoomLimits.max),this.minDistance=1e3/t.zoomLimits.max,this.maxDistance=Math.max(this.minDistance,1e3/t.zoomLimits.min),this.autoRotate=t.autoRotate,y_=t.autoRotateSpeed,this.autoRotateClockwise=t.autoRotateClockwise;let i=this.object.getTarget().applyQuaternion(Ig.copy(this.object.quaternion).invert());this.minV=-t.panVerticalOffset.min+i.y,this.maxV=t.panVerticalOffset.max+i.y,this.minH=-t.panHorizontalOffset.min+i.x,this.maxH=t.panHorizontalOffset.max+i.x,this.panRangeFactor.set(this.maxH-this.minH,this.maxV-this.minV).divideScalar(2),this.rotationRangeFactor.setScalar(Math.PI).divideScalar(4),this.minPhi=Ls(this.spherical.phi-t.rotationVerticalOffset.min),this.maxPhi=Ls(this.spherical.phi+t.rotationVerticalOffset.max),this.minTheta=Ls(this.spherical.theta-t.rotationHorizontalOffset.min),this.maxTheta=Ls(this.spherical.theta+t.rotationHorizontalOffset.max),this.isThetaFlipped=this.minTheta>this.maxTheta,this.preventScroll=t.preventScroll,t.orbitTouches===1&&(this.touches[0]=cr.ROTATE),t.panTouches===1&&(this.touches[0]=cr.PAN),t.orbitTouches===2&&(this.touches[1]=cr.DOLLY_ROTATE),t.panTouches===2&&(this.touches[1]=cr.DOLLY_PAN),t.orbitTouches===3&&(this.touches[2]=cr.ROTATE),t.panTouches===3&&(this.touches[2]=cr.PAN)}connect(){this.domElement.addEventListener("contextmenu",this.onContextMenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointercancel",this.onPointerCancel),this.domElement.addEventListener("wheel",this.onMouseWheel),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keyup",this.onKeyUp,!1),Vc||(this.domElement.addEventListener("gesturestart",this.onGesture),this.domElement.addEventListener("gesturechange",this.onGesture),this.domElement.addEventListener("gestureend",this.onGesture)),this.domElement.addEventListener("touchmove",this.onTouchMove),this.domElement.addEventListener("touchend",this.onTouchEnd)}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("pointercancel",this.onPointerCancel),this.domElement.removeEventListener("wheel",this.onMouseWheel),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keyup",this.onKeyUp,!1),this.domElement.removeEventListener("pointermove",this.onPointerHover),Vc||(this.domElement.removeEventListener("gesturestart",this.onGesture),this.domElement.removeEventListener("gesturechange",this.onGesture),this.domElement.removeEventListener("gestureend",this.onGesture)),this.domElement.removeEventListener("touchmove",this.onTouchMove),this.domElement.removeEventListener("touchend",this.onTouchEnd),this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp)}applyLimits(t,n,i,s,o,a,l,u){this.overShoot.set(0,0);let c,h,d;t instanceof S?(c=t.x,h=t.y,this.current.set(this.target.x,this.target.y),d=!0):(c=t.theta,h=t.phi,this.current.set(Ls(this.spherical.theta),Ls(this.spherical.phi)),d=!1),i===0&&(this.current.x+=c,this.current.y+=h),(n===3||n===2)&&(!d&&this.isThetaFlipped?this.current.x>s&&this.current.x<0?this.overShoot.x=s-this.current.x:this.current.x<o&&this.current.x>0&&(this.overShoot.x=o-this.current.x):this.current.x>s?this.overShoot.x=s-this.current.x:this.current.x<o&&(this.overShoot.x=o-this.current.x),s===o&&(c=0)),(n===3||n===1)&&(this.current.y>a?this.overShoot.y=a-this.current.y:this.current.y<l&&(this.overShoot.y=l-this.current.y),a===l&&(h=0)),d||(this.overShoot.x=Ls(this.overShoot.x),this.overShoot.y=Ls(this.overShoot.y)),i!==0?(this.overRatio.copy(this.overShoot).divide(u),this.overRatio.x=Math.min(Math.abs(this.overRatio.x),1),this.overRatio.y=Math.min(Math.abs(this.overRatio.y),1),i===1&&(this.overRatio.x=x_(Math.abs(this.overRatio.x)),this.overRatio.y=x_(Math.abs(this.overRatio.y))),this.isPointerDown||i===1?i===2&&(this.overRatio.x>.9||this.overRatio.y>.9)?this.isPointerDown=!1:(c*this.overShoot.x<0&&(c*=1-this.overRatio.x),h*this.overShoot.y<0&&(h*=1-this.overRatio.y)):i===2&&(!d&&(this.overRatio.x>.002||this.overRatio.y>.002)||d&&(Math.abs(this.overShoot.x)>2||Math.abs(this.overShoot.y)>2)?(c=this.overShoot.x*.05,h=this.overShoot.y*.05,d?this.isPanOverShoot=!0:this.isRotateOverShoot=!0):d?this.isPanOverShoot=!1:this.isRotateOverShoot=!1)):(c+=this.overShoot.x,h+=this.overShoot.y),t instanceof S?(t.x=c,t.y=h):(t.theta=c,t.phi=h)}setEnableDampingSpeed(t){this.enableDamping=t,Og=t===!0?.2:1}stopDamping(){this.sphericalDelta.theta=0,this.sphericalDelta.phi=0}getAutoRotationAngle(){return 2*Math.PI/60/60*y_}getZoomScale(){return Math.pow(.95,v_)}rotateLeft(t){this.sphericalDelta.theta-=t}rotateUp(t){this.sphericalDelta.phi-=t}panLeft(t,n){this.panLeftV.setFromMatrixColumn(n,0),this.panLeftV.multiplyScalar(-t),this.panOffset.add(this.panLeftV)}panUp(t,n){this.panUpV.setFromMatrixColumn(n,1),this.panUpV.multiplyScalar(t),this.panOffset.add(this.panUpV)}pan(t,n){let i=this.domElement;if(i&&this.object.isPerspectiveCamera){let s=this.object.position;this.panV.copy(s).sub(this.target);let o=this.panV.length();o*=Math.tan(this.object.fov/2*Math.PI/180),this.panLeft(2*t*o/i.clientHeight,this.object.matrix),this.panUp(2*n*o/i.clientHeight,this.object.matrix)}else i&&this.object.isOrthographicCamera&&(this.panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this.panUp(n*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix));this.dispatchEvent(YN)}dollyOut(t){this.object.isPerspectiveCamera?this.scale/=t:this.object.isOrthographicCamera&&(this.object.zoom*=t,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0),this.dispatchEvent(g_)}dollyIn(t){this.object.isPerspectiveCamera?this.scale*=t:this.object.isOrthographicCamera&&(this.object.zoom/=t,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0),this.dispatchEvent(g_)}zoomOut(t=this.getZoomScale()){this.dispatchEvent(ol),this.dollyOut(t),this.dispatchEvent($c)}zoomIn(t=this.getZoomScale()){this.dispatchEvent(ol),this.dollyIn(t),this.dispatchEvent($c)}handleMouseDownRotate(t){this.rotateStart.set(t.clientX,t.clientY)}handleMouseDownDolly(t){this.dollyStart.set(t.clientX,t.clientY)}handleMouseDownPan(t){this.panStart.set(t.clientX,t.clientY)}handleMouseMoveRotate(t,n=1){this.rotateEnd.set(t.clientX,t.clientY),this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(Og*n).rotateAround(QN,-this.object.angleOffsetFromUp);let i=this.domElement;this.rotateLeft(2*Math.PI*this.rotateDelta.x/i.clientHeight),this.rotateUp(2*Math.PI*this.rotateDelta.y/i.clientHeight),this.rotateStart.copy(this.rotateEnd),this.update()}handleMouseMoveDolly(t){this.dollyEnd.set(t.clientX,t.clientY),this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart),this.dollyDelta.y>0?this.dollyOut(this.getZoomScale()):this.dollyDelta.y<0&&this.dollyIn(this.getZoomScale()),this.dollyStart.copy(this.dollyEnd),this.update()}handleMouseMovePan(t,n=1){this.panEnd.set(t.clientX,t.clientY),this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(Rg*n),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd),this.update()}handleMouseWheel(t){if(Iw===!1&&Hc(t)===!1&&$N(t)===!0){if(this.enablePan===!1)return;this.gesture?(this.panDelta.set(-t.deltaX,-t.deltaY).multiplyScalar(Rg),this.panDelta.x=Math.min(Math.abs(this.panDelta.x),100)*(this.panDelta.x<0?-1:1),this.panDelta.y=Math.min(Math.abs(this.panDelta.y),100)*(this.panDelta.y<0?-1:1),t.altKey?this.pan(0,this.panDelta.y):t.shiftKey?this.pan(this.panDelta.x,0):this.pan(this.panDelta.x,this.panDelta.y),this.update()):(this.gesture=!0,this.isPointerDown=!0),window.clearTimeout(this.timer),this.timer=window.setTimeout(()=>{this.gesture=!1,this.isPointerDown=!1},30)}else{if(this.enableZoom===!1)return;t.deltaY===0?t.deltaX<0?this.dollyIn(this.getZoomScale()):t.deltaX>0&&this.dollyOut(this.getZoomScale()):t.deltaY<0?this.dollyIn(this.getZoomScale()):t.deltaY>0&&this.dollyOut(this.getZoomScale()),this.update(),this.gesture=!1,this.isPointerDown=!1}}handleTouchStartRotate(){if(ht.length===2){let t=.5*(ht[0].pageX+ht[1].pageX),n=.5*(ht[0].pageY+ht[1].pageY);this.rotateStart.set(t,n)}else this.rotateStart.set(ht[0].pageX,ht[0].pageY)}handleTouchStartPan(){if(ht.length===2){let t=.5*(ht[0].pageX+ht[1].pageX),n=.5*(ht[0].pageY+ht[1].pageY);this.panStart.set(t,n)}else this.panStart.set(ht[0].pageX,ht[0].pageY)}handleTouchStartDolly(){let t=ht[0].pageX-ht[1].pageX,n=ht[0].pageY-ht[1].pageY,i=Math.sqrt(t*t+n*n);this.dollyStart.set(0,i)}handleTouchStartDollyPan(){this.enableZoom&&this.handleTouchStartDolly(),this.enablePan&&this.handleTouchStartPan()}handleTouchStartDollyRotate(){this.enableZoom&&this.handleTouchStartDolly(),this.enableRotate&&this.handleTouchStartRotate()}handleTouchMoveRotate(t){if(ht.length===2){let i=Bg(t),s=.5*(t.pageX+i.x),o=.5*(t.pageY+i.y);this.rotateEnd.set(s,o)}else{if(t.pointerId!==ht[0].pointerId)return;this.rotateEnd.set(t.pageX,t.pageY)}this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(Og);let n=this.domElement;n&&(this.rotateLeft(2*Math.PI*this.rotateDelta.x/n.clientHeight),this.rotateUp(2*Math.PI*this.rotateDelta.y/n.clientHeight)),this.rotateStart.copy(this.rotateEnd)}handleTouchMovePan(t){if(ht.length===2){let n=Bg(t),i=.5*(t.pageX+n.x),s=.5*(t.pageY+n.y);this.panEnd.set(i,s)}else{if(t.pointerId!==ht[0].pointerId)return;this.panEnd.set(t.pageX,t.pageY)}this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(Rg),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}handleTouchMoveDolly(t){let n=Bg(t),i=t.pageX-n.x,s=t.pageY-n.y,o=Math.sqrt(i*i+s*s);this.dollyEnd.set(0,o),this.dollyDelta.set(0,Math.pow(this.dollyEnd.y/this.dollyStart.y,v_)),this.dollyOut(this.dollyDelta.y),this.dollyStart.copy(this.dollyEnd)}handleTouchMoveDollyPan(t){this.enableZoom&&this.handleTouchMoveDolly(t),this.enablePan&&this.handleTouchMovePan(t)}handleTouchMoveDollyRotate(t){this.enableZoom&&this.handleTouchMoveDolly(t),this.enableRotate&&this.handleTouchMoveRotate(t)}};function Ls(r){let e=Math.PI*2;for(;r<=-Math.PI;)r+=e;for(;r>Math.PI;)r-=e;return r}function x_(r){return 1-Math.pow(1-r,4)}function $N(r){return r.wheelDeltaY===0||r.deltaY===0?kc&&r.shiftKey&&Math.abs(r.wheelDeltaX)>=120?!1:r.wheelDeltaX?r.wheelDeltaX===-3*r.deltaX:r.deltaMode===0:r.wheelDeltaY?r.wheelDeltaY===-3*r.deltaY:r.deltaMode===0}var ht=[],tf={};function eB(r){ht.push(r)}function b_(r){delete tf[r.pointerId];for(let e=0;e<ht.length;e++)if(ht[e].pointerId===r.pointerId){ht.splice(e,1);return}}function w_(r){let e=tf[r.pointerId];e===void 0&&(e=new N,tf[r.pointerId]=e),e.set(r.pageX,r.pageY)}function Bg(r){let e=r.pointerId===ht[0].pointerId?ht[1]:ht[0];return tf[e.pointerId]}var Os=class extends Sa{constructor(){super(),this.layers.enable(3),this.layers.enable(8)}setFromCamera(e,t){t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):t.isPerspectiveCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):console.error("Raycaster: Unsupported camera type.")}intersectVisibleObjects(e,t=!0,n=[]){return e.forEach(i=>{i.visible&&this.intersectObject(i,t,n)}),n}createRaycastLineHelper(){let e=new xr({color:65280,linewidth:10}),t=new S(this.ray.origin.x,this.ray.origin.y,this.ray.origin.z),n=new S(this.ray.direction.x,this.ray.direction.y,this.ray.direction.z),i=this.camera.far-this.camera.near,s=new S().addVectors(t,n.multiplyScalar(i)),o=new Pe;return o.setFromPoints([t,s]),new uo(o,e)}};var Cn=class extends Re{constructor(t,n,i,s){super(t,n,i);this.isColorA=!0;this.a=s}setRGBA(t,n,i,s){super.setRGB(t,n,i),this.a=s}copy(t){return super.copy(t),this.a="a"in t?t.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(t){this.r=t}set y(t){this.g=t}set z(t){this.b=t}set w(t){this.a=t}};var S_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},r.parameters),n=t.width/2,i=t.radiusTop??n,s=t.radiusBottom??n;return i===s?(i=n,s=n):i>s?(i=n,s=s*n/i):(i=i*n/s,s=n),{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width),radiusTop:i,radiusBottom:s})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:h,cornerSegments:d,hollow:f}=r.parameters,m;return h||f?m=new eu(u,c,n,i,s,o,a,l*Math.PI/180,h,h,d,f):m=new fo(u,c,n,i,s,o,a,l*Math.PI/180),m.scale(1,1,t/e),Object.assign(m,{userData:{...r,type:"CylinderGeometry"}})}};function Rs(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function __(r){return new N(r.y,-r.x)}var eu=class extends Pe{constructor(e,t,n,i,s,o,a,l,u,c,h,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",e=e!==void 0?e:1,t=t!==void 0?t:1,n=n||1,i=Math.floor(i)||8,s=Math.floor(s)||1,o=o!==void 0?o:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,o&&(u=0,c=0);let m=[],p=[],g=[],y=[],x=0,w=n/2,b=new S,_=new S;f&&e==0&&(e=u),f&&t==0&&(t=c);let A=new N(e,w),M=new N(t,-w),v=null,T=null,E=null,C=null,L=A.clone().sub(M),R=0,O=0,W=0;d>0&&(R=Math.min(e,t)*(1-d),O=e-R,W=t-R);let j=A.clone();j.x-=R;let Z=Math.PI-L.angle(),Y=L.angle(),z=Math.tan(Y/2),F=Math.tan(Z/2),G=z+F,B=d?G:F,k=d?G:z;if(u=Math.min(u,(e-O)/B,L.length()/G),c=Math.min(c,(t-W)/k,L.length()/G),u>0){let te=u/z;v=A.clone().sub(new N(te,u)),d&&(E=v.clone(),E.x-=R-G*u),A.sub(L.clone().setLength(te))}if(c>0){let te=c/F;T=M.clone().sub(new N(te,-c)),M.add(L.clone().setLength(te)),d&&(C=T.clone(),C.x-=R-G*c,j.sub(L.clone().setLength(te)))}L=A.clone().sub(M);let H=L.length()<.5,X=[];for(let te=0;te<=i;te++){let V=[],le=te/i,ce=le*l+a,oe=new N(Math.sin(ce),Math.cos(ce));C&&T?(q(V,le,oe,Z,c,C,-1,!0),q(V,le,oe,Y,c,T,-1,!1)):T?(ae(V,oe,T.x,0,-1),q(V,le,oe,Y,c,T,-1,!1)):o||ae(V,oe,t,W,-1);let de=__(L).normalize();if(Rs(de,oe,b),!H)for(let ge=0;ge<=s;ge++){let fe=ge/s,Te=L.clone().multiplyScalar(fe).add(M);Rs(Te,oe,_),p.push(_.x,_.y,_.z),g.push(b.x,b.y,b.z),y.push(le,.5+_.y/n),V.push(x++)}if(E&&v?(q(V,le,oe,Z,u,v,1,!1),q(V,le,oe,Y,u,E,1,!0)):v?(q(V,le,oe,Z,u,v,1,!1),ae(V,oe,v.x,0,1)):o||ae(V,oe,e,O,1),d&&!H){let ge=__(L).multiplyScalar(-1).normalize();Rs(ge,oe,b);for(let fe=0;fe<=s;fe++){let Te=fe/s,Ce=L.clone().multiplyScalar(-Te).add(j);Rs(Ce,oe,_),p.push(_.x,_.y,_.z),g.push(b.x,b.y,b.z),y.push(le,.5+_.y/n),V.push(x++)}}d&&!o&&V.push(V[0]),X.push(V)}for(let te=0;te<X.length-1;te++)for(let V=0;V<X[0].length-1;V++){if(o&&d&&V==s)continue;let le=X[te][V],ce=X[te+1][V],oe=X[te+1][V+1],de=X[te][V+1],ge=p[oe*3+0],fe=p[oe*3+2];m.push(le,ce,de),(ge!=0||fe!=0)&&m.push(ce,oe,de)}l<Math.PI*2&&($(-1,X[0],a),$(1,X[X.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new _e(p,3)),this.setAttribute("normal",new _e(g,3)),this.setAttribute("uv",new _e(y,2));function q(te,V,le,ce,oe,de,ge,fe){for(let Te=0;Te<h+1;Te++){let Ce=Te/h,ye=ge<0?Ce:1-Ce;fe&&(ye-=1),ye*=ce;let Ne=new N(Math.sin(ye),Math.cos(ye)*ge),dt=Ne.clone().multiplyScalar(oe).add(de);Rs(dt,le,_),p.push(_.x,_.y,_.z),Rs(Ne,le,b),g.push(b.x,b.y,b.z),y.push(V,.5+_.y/n),te.push(x++)}}function ae(te,V,le,ce,oe){let de=new S,ge=new N,fe=[le,ce];oe<0&&fe.reverse();for(let Te of fe)ge.set(Te,w*oe),Rs(ge,V,de),p.push(de.x,de.y,de.z),g.push(0,oe,0),y.push(.5,.5),te.push(x++)}function $(te,V,le){let ce=new N(Math.sin(le),Math.cos(le)),oe=new N(-Math.cos(le),Math.sin(le)),de=new S,ge=te<0?(Ce,ye,Ne)=>m.push(Ce,ye,Ne):(Ce,ye,Ne)=>m.push(Ce,Ne,ye),fe=new N((e+t+O+W)/4,0);Rs(fe,ce,de),p.push(de.x,de.y,de.z),g.push(oe.x,0,oe.y),y.push(.5,.5);let Te=x++;for(let Ce of V){let ye=p.slice(Ce*3,Ce*3+3);p.push(...ye),g.push(oe.x,0,oe.y);let Ne=y.slice(Ce*2,Ce*2+2);y.push(...Ne),x++}for(let Ce=Te+1;Ce<x-1;Ce++)ge(Te,Ce,Ce+1);ge(Te,x-1,Te+1)}}};var A_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:h}=r.parameters,d;return u>0||c>0||l<360?d=new eu(0,e/2,n,i,s,o,a,l*Math.PI/180,u,c,h,0,!0):d=new pa(e/2,n,i,s,o),d.scale(1,1,t/e),Object.assign(d,{userData:{...r,type:"ConeGeometry"}})}};var M_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:o,cornerRadius:a,cornerSegments:l}=r.parameters,u;return a==0?u=new Qn(e,t,n,i,s,o):u=new zg(e,t,n,i,s,o,a,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},Ug=Math.PI/2,zg=class extends Pe{constructor(e=1,t=1,n=1,i=1,s=1,o=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let u=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o),l=Math.floor(l),a=Math.min(a,e/2,t/2,n/2);let c=[],h=[],d=[],f=[],m=0,p=0;g("z","y","x",-1,-1,n,t,e,o,s,0),g("z","y","x",1,-1,n,t,-e,o,s,1),g("x","z","y",1,1,e,n,t,i,o,2),g("x","z","y",1,-1,e,n,-t,i,o,3),g("x","y","z",1,-1,e,t,n,i,s,4),g("x","y","z",-1,-1,e,t,-n,i,s,5),a>0&&(y("z","y","x",-1,-1,1,n,t,e,o,0),y("z","y","x",1,-1,-1,n,t,e,o,1),y("z","y","x",-1,1,-1,n,t,e,o,1),y("z","y","x",1,1,1,n,t,e,o,0),y("x","y","z",-1,-1,-1,e,t,n,i,0),y("x","y","z",1,-1,1,e,t,n,i,1),y("x","y","z",-1,1,1,e,t,n,i,0),y("x","y","z",1,1,-1,e,t,n,i,1),y("y","x","z",-1,-1,1,t,e,n,s,0),y("y","x","z",1,-1,-1,t,e,n,s,1),y("y","x","z",1,1,1,t,e,n,s,1),y("y","x","z",-1,1,-1,t,e,n,s,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new _e(h,3)),this.setAttribute("normal",new _e(d,3)),this.setAttribute("uv",new _e(f,2));function g(w,b,_,A,M,v,T,E,C,L,R){let O=(v-2*a)/C,W=(T-2*a)/L,j=v/2-a,Z=T/2-a,Y=E/2,z=C+1,F=L+1,G=0,B=0,k=new S;for(let H=0;H<F;H++){let X=H*W-Z;for(let q=0;q<z;q++){let ae=q*O-j;k[w]=ae*A,k[b]=X*M,k[_]=Y,h.push(k.x,k.y,k.z),k[w]=0,k[b]=0,k[_]=E>0?1:-1,d.push(k.x,k.y,k.z),f.push(q/C),f.push(1-H/L),G+=1}}for(let H=0;H<L;H++)for(let X=0;X<C;X++){let q=m+X+z*H,ae=m+X+z*(H+1),$=m+(X+1)+z*(H+1),te=m+(X+1)+z*H;c.push(q,ae,te),c.push(ae,$,te),B+=6}u.addGroup(p,B,R),p+=B,m+=G}function y(w,b,_,A,M,v,T,E,C,L,R){let O=(T-2*a)/L,W=T/2-a,j=E/2-a,Z=C/2,Y=L+1,z=0,F=0,G=new S,B=new S;for(let k=0;k<l+1;k++){let H=k/l*Ug,X=Math.sin(H)*a,q=(1-Math.cos(H))*a,ae=Math.sin(H),$=Math.cos(H);G[b]=(j+X)*M,G[_]=(Z-q)*v,B[w]=0,B[b]=ae*Math.sign(G[b]),B[_]=$*Math.sign(G[_]);for(let te=0;te<Y;te++){let V=te*O-W;G[w]=V*A,h.push(G.x,G.y,G.z),d.push(B.x,B.y,B.z),f.push(te/L),f.push(0),z+=1}}for(let k=0;k<l;k++)for(let H=0;H<L;H++){let X=m+H+Y*k,q=m+H+Y*(k+1),ae=m+(H+1)+Y*(k+1),$=m+(H+1)+Y*k;c.push(X,q,$),c.push(q,ae,$),F+=6}u.addGroup(p,F,R),p+=F,m+=z}function x(w,b,_){let A=new S,M=new S(e/2,t/2,n/2);M.subScalar(a);let v=[],T=w*b*_>0?(C,L,R)=>c.push(C,L,R):(C,L,R)=>c.push(C,R,L);for(let C=0;C<=l;C++){let L=[],R=Ug*(1-C/l),O=Math.cos(R),W=Math.sin(R),j=0;for(let Z=0;Z<=C;Z++){let Y=Math.cos(j),z=Math.sin(j);A.x=O*Y,A.y=W,A.z=O*z;let F=M.clone().addScaledVector(A,a);h.push(w*F.x,b*F.y,_*F.z),d.push(w*A.x,b*A.y,_*A.z),f.push(0,0),L.push(m++),j+=Ug/C}v.push(L)}let E=v.length-1;for(let C=0;C<E;C++){let L=v[C],R=v[C+1],O=L.length-1;T(L[0],R[1],R[0]);for(let W=1;W<=O;W++)T(L[W-1],L[W],R[W]),T(L[W],R[W+1],R[W])}}}};var Ns=class extends Pe{constructor(e=[],t=[],n="",i=1,s=.2,o=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],u=[];c(),h(),this.setAttribute("position",new _e(a,3)),this.setAttribute("normal",new _e(u,3)),this.setAttribute("uv",new _e(l,2));return;function c(){s=Math.min(1-1e-5,s),s==0&&(o=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[n],m=new S,p=m.clone(),g=new or,y=s*i,x=i-y,w=o+1,b=new S,_=(z,F)=>b.subVectors(z,F).normalize(),A=(z,F)=>Array(z).fill(void 0).map(F),M=A(e.length/3,(z,F)=>new S().fromArray(e,F*3).setLength(i)),v=[],T=1e6;for(let z=0;z<M.length;z++){let F=M[z],G=[],B,k,H,X=1e10,q=-1;for(;(q=t.indexOf(z,q+1))!=-1;){let V=q-q%3;B=t[V+(q+1)%3],k=t[V+(q+2)%3],H=F.distanceToSquared(M[B]),X=Math.min(X,H),G.push([B,k,H])}X+=1e-6;let ae=[],$=0,te=G.length;for(let V=0;V<te;V++){[B,k,H]=G[$];let le=v[B]?.includes(z)==!0;H<=X&&ae.push(B+ +le*T),$=G.findIndex(ce=>ce[0]==k)}v.push(ae)}let E=[];{let z=0,F=0,G,B,k=f==3;for(let H=0;H<=o;H++){G=H*(H+1)/2,B=(H+1)*(H+2)/2;for(let X=0;X<o-H;X++)[z,F]=[G+X+H+2,B+X+H+3],E.push(G,B,...k?[F,G]:[z,B],F,z),[G,B]=[z,F];E.push(G,B,G+o+2)}}let C=m.clone(),L=m.clone(),R=m.clone(),O=m.clone(),W=m.clone(),j=[],Z=A(M.length,()=>A(f,()=>m.clone()));for(let z=0;z<M.length;z++){m.copy(M[z]).normalize(),C.copy(m).multiplyScalar(x);let F=v[z];for(let ae=0;ae<F.length;ae++){let $=F[ae],te=F[(ae+1)%f];g.setFromPointsAndIndices(M,z,$%T,te%T),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(C,Z[z][ae])}let G=[],B=[],k=[],H=new S;o==0&&[...Z[z]].reduce((ae,$)=>ae.add($),H).multiplyScalar(1/f);for(let ae=0;ae<f;ae++){let $=[],te=(ae-1+f)%f,V=Z[z][te],le=Z[z][ae];m.copy(V).sub(C),p.copy(le).sub(C);let ce=C.angleTo(m),oe=m.angleTo(p),de=Math.cos(ce)*y;o==0?L.copy(H):L.copy(C).setLength(x+de),B.push(de);let ge=[L,V,le];for(let fe=0;fe<2;fe++){let Te=ge[fe],Ce=ge[fe+1];O.subVectors(Te,C),W.subVectors(Ce,C),R.crossVectors(O,W).normalize();for(let ye=0;ye<w;ye++){let Ne=[ce,oe][fe]*ye/w;m.copy(O).applyAxisAngle(R,Ne).add(C),G.push(m.clone()),fe&&(_(m,C),$.push([ye==0?Te:m.clone(),b.clone()]))}fe&&(_(Ce,C),$.push([Ce,b.clone()]))}k.push($)}j.push(k);let X=2*w,q=2;for(let ae=0;ae<f;ae++){let $=X*ae,te=X*((ae+1)%f),V=[G[$]];for(let ce=1;ce<w;ce++){O=G[$+ce],W=G[te+ce],V.push(O);for(let oe=1,de=ce-q+1;oe<=de;oe++)m.lerpVectors(O,W,oe/(de+1)),m.sub(C).setLength(B[ae]).add(C),V.push(m.clone());V.push(W)}for(let ce=0;ce<w;ce++)V.push(G[ce+w+$]);V.push(G[te+w]);let le=E.map(ce=>V[ce]);a.push(...le.map(ce=>[ce.x,ce.y,ce.z]).flat()),u.push(...le.map(ce=>(_(ce,C),[b.x,b.y,b.z])).flat())}}let Y=[];for(let z=0;z<v.length;z++)for(let F=0;F<f;F++){let G=v[z][F];if(G<T){let B=v[G].findIndex(X=>X%T==z),k=j[z][F],H=j[G][B];for(let X=0;X<w;X++){let q=k[X],ae=H[w-X],$=k[X+1],te=H[w-(X+1)];[q,ae,$,$,ae,te].forEach(V=>{a.push(V[0].x,V[0].y,V[0].z),u.push(V[1].x,V[1].y,V[1].z)})}Y.push(k[0][0],H[w][0],k[w][0],H[0][0])}}for(;Y.length;){let z,F,G,B;[z,F]=Y.splice(0,2);let k=[z];for(;z!=F;)k.push(F),G=Y.indexOf(F),B=G%2,F=Y.splice(G-B,2)[1-B];b.subVectors(k[0],k[1]).cross(m.subVectors(k[0],k[2])).normalize();let H=b.dot(k[0])<0;H&&b.negate();for(let X=1;X<=k.length-2;X++)[k[X+ +H],k[X+1-+H],k[0]].forEach(q=>{a.push(q.x,q.y,q.z),u.push(b.x,b.y,b.z)})}}function h(){let d=new S;for(let M=0;M<a.length;M+=3){d.x=a[M+0],d.y=a[M+1],d.z=a[M+2];let v=_(d)/2/Math.PI+.5,T=A(d)/Math.PI+.5;l.push(v,1-T)}let f=new S,m=new S,p=new S,g=new S,y=new N,x=new N,w=new N,b=(M,v,T,E)=>{E<0&&M.x===1&&(l[v]=M.x-1),T.x===0&&T.z===0&&(l[v]=E/2/Math.PI+.5)};for(let M=0,v=0;M<a.length;M+=9,v+=6){f.set(a[M+0],a[M+1],a[M+2]),m.set(a[M+3],a[M+4],a[M+5]),p.set(a[M+6],a[M+7],a[M+8]),y.set(l[v+0],l[v+1]),x.set(l[v+2],l[v+3]),w.set(l[v+4],l[v+5]),g.copy(f).add(m).add(p).divideScalar(3);let T=_(g);b(y,v+0,f,T),b(x,v+2,m,T),b(w,v+4,p,T)}for(let M=0;M<l.length;M+=6){let v=l[M+0],T=l[M+2],E=l[M+4],C=Math.max(v,T,E),L=Math.min(v,T,E);C>.9&&L<.1&&(v<.2&&(l[M+0]+=1),T<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function _(M){return Math.atan2(M.z,-M.x)}function A(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(e){return new Ns(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}};var T_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new tu(e*.5,s,o):new ga(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"DodecahedronGeometry"}})}},tu=class extends Ns{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=1/i,o=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-i,0,-s,i,0,s,-i,0,s,i,-s,-i,0,-s,i,0,s,-i,0,s,i,0,-i,0,-s,i,0,-s,-i,0,s,i,0,s],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(o,a,l,e,t,n),this.type=l}static fromJSON(e){return new tu(e.radius,e.corner,e.cornerSides)}};var nu=1e-12,ll=class{constructor(e){this.position=new N;this.startPosition=new N;this.uuid=Je.generateUUID();this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new ll(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},cl=class extends ll{constructor(t){super(t.position);this.parent=t}copy(t){return super.copy(t),this}clone(){return new cl(this.parent).copy(this)}},Vr=class extends ll{constructor(t,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=t,this.controls.push(new cl(this),new cl(this))}static create(t,n){let i=new Vr(t,new N(...n.position));return i.controls[0].position.set(...n.controlPrevious.position),i.controls[1].position.set(...n.controlNext.position),i.roundness=n.roundness,i.areControlsDirectionsMirrored=n.areControlsDirectionsMirrored,i}getOppositeControl(t){let n=this.controls.indexOf(t);return n===0?this.controls[1]:n===1?this.controls[0]:null}applyOffsetToControls(t,n=1){for(let i=0,s=this.controls.length;i<s;i++){let o=this.controls[i];this.position.distanceTo(o.position)<=n?o.position.copy(this.position):o.applyOffset(t)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(t){return super.copy(t),this.controls[0].copy(t.controls[0]),this.controls[1].copy(t.controls[1]),this.roundness=t.roundness,this.uuid=t.uuid,this}clone(){return new Vr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let t=this.curveBefore?.getTangentAt(1),n=this.curveAfter?.getTangentAt(0);return[t,n]}computeNormals(t=new N,n=new N){let[i,s]=this.computeTangents();return i&&s&&(E_(i,t),E_(s,n)),[t,n]}computeTangent(t=new N){let[n,i]=this.computeTangents();return n&&i&&t.copy(n).add(i).normalize(),t}computeNormal(t=new N){let[n,i]=this.computeNormals();return t.copy(n).add(i).normalize(),t}};function E_(r,e=new N){let t=r.length();return e.set(-r.y/t,r.x/t)}var kg=r=>r,ul=new N,nf=new N,tB=new N,nB=new N,rB=new N,iB=new N,D_=new S,P_=new S;function I_(r){let e=new N;e.addVectors(r.v0,ul.subVectors(r.v1,r.v0).multiplyScalar(2/3));let t=new N;return t.addVectors(r.v2,nf.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new Zn(r.v0,e,t,r.v2)}function ru(r,e,t=Number.EPSILON){return Math.abs(r-e)<t}function sB(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function oB(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function Vg(r,e,t){let n=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),i=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),s=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2));return Math.acos((i*i+n*n-s*s)/(2*i*n))}function L_(r,e,t){return C_(r,e)&&C_(e,t)&&Gg(r.position,e.position,t.position)}function Gg(r,e,t){return ul.copy(e).sub(r).cross(nf.copy(t).sub(r))===0}function O_(r,e,t,n,i){let s=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),o=(r.y+e.y)/2,a=(r.x+e.x)/2,l=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(r.y-e.y)/s,u=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(e.x-r.x)/s;return n.set(a+l,o+u),i.set(a-l,o-u),[n,i]}function R_(r,e,t){let n=r.distanceTo(t),i=e.distanceTo(t);return n<i?e:r}function N_(r,e,t,n,i,s){let o=e.x-r.x,a=e.y-r.y,l=t.x-r.x,u=t.y-r.y,c=Math.sqrt((o+l)*(o+l)+(a+u)*(a+u)),h;return Vg(e,r,t)>Math.PI&&(c*=-1),ru(u,a)?h=(a+u)*(n/c-.5)*8/3/(o-l):h=(o+l)*(n/c-.5)*8/3/(u-a),i.set(e.x-h*a,e.y+h*o),s.set(t.x+h*u,t.y-h*l),[i,s]}function Hg(r,e){return r.position.equals(r.controls[1].position)&&e.position.equals(e.controls[0].position)}function C_(r,e){return Gg(r.position,r.controls[1].position,e.position)&&Gg(r.position,e.controls[0].position,e.position)}function B_(r,e,t,n,i=.5){let s=ul.subVectors(e,r).multiplyScalar(i).add(r),o=nf.subVectors(t,e).multiplyScalar(i).add(e),a=tB.subVectors(n,t).multiplyScalar(i).add(t),l=s,u=nB.subVectors(o,s).multiplyScalar(i).add(s),c=rB.subVectors(a,o).multiplyScalar(i).add(o),h=a,d=iB.subVectors(c,u).multiplyScalar(i).add(u);return[r.x,r.y,l.x,l.y,u.x,u.y,d.x,d.y,c.x,c.y,h.x,h.y,n.x,n.y]}function F_(r,e,t=12,n=!0){let i=P_.set(0,0,0),s,o=0,a=[];for(let l=0;l<e.length;l++){let u=kg(e[l]),c=ul,h=Bs(u,t);a.push(h);for(let d=0;d<=h;d++)if(u instanceof Zn||u instanceof Fr||u instanceof Kn){if(u.getPoint(d/h,c),i.set(c.x,c.y,0),s!==void 0&&oB(s,i))continue;s===void 0&&(s=D_),s.copy(i),r.setXYZ(o,i.x,i.y,i.z),o++}}return n&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),r}function U_(r,e,t,n=12,i=!0){let s=P_.set(0,0,0),o=0,a=[];for(let l=0;l<e.length;l++){if(t[l]===!1)continue;let u,c=kg(e[l]),h=ul,d=Bs(c,n);a.push(d);for(let f=0;f<=d;f++)if(c instanceof Zn||c instanceof Fr||c instanceof Kn){if(c.getPoint(f/d,h),s.set(h.x,h.y,0),u?.equals(s))continue;u===void 0?u=D_:(r.setXYZ(o,u.x,u.y,u.z),o++,r.setXYZ(o,s.x,s.y,s.z),o++),u.copy(s)}}return i&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),a}function Wg(r,e=12,t=!1){let n=[];for(let i=0,s=r.length;i<s;i++){let o=r[i],a=0;if(t&&o.roundedCurveCorner!==void 0){let l=Bs(o.roundedCurveCorner,e)*.5;i>0&&(n[i-1]+=l),a+=l}o.curveAfter!==void 0&&(a+=Bs(o.curveAfter,e)),n.push(a)}return r.length>0&&t&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=Bs(r[0].roundedCurveCorner,e)*.5),n}function Bs(r,e=12){return r&&r instanceof ho?e*2:r&&(r instanceof Kn||r instanceof bc)?1:r&&r instanceof da?e*r.points.length:e}function z_(r,e,t=12,n=!0){let i,s=0;for(let o=0;o<e.length;o++){let a=kg(e[o]),l=Bs(a,t),u=ul;for(let c=0;c<=l;c++)if(a instanceof Zn||a instanceof Fr||a instanceof Kn){if(a.getPoint(c/l,u),i!==void 0&&sB(i,u,nu))continue;i===void 0&&(i=nf),i.copy(u),r.push(u.x,u.y),s++}}return ru(r[0],r[r.length-2],nu)&&ru(r[1],r[r.length-1],nu)&&(r.pop(),r.pop()),n&&s>1&&!(ru(r[s-1],r[1],nu)&&ru(r[s-2],r[0],nu))&&(r.push(r[0],r[1]),s++),r}var jg=new N,aB=new N,lB=new N,cB=new N,uB=new N,hB=new N,vt=class extends Nr{constructor(t=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Rt;this.plane=new Gn(new S(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Je.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=t,this._height=n}static createFromState(t,n,i){let s=new vt;return s.isClosed=t.isClosed,s.points=t.points.map(o=>Vr.create(o.id,o.data)),typeof t.roundness=="number"&&(s.roundness=t.roundness),s.shapeHoles=t.shapeHoles.map(o=>vt.createFromState(o)),n!==void 0&&i!==void 0&&s.applySize(n,i),s.update(),s}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(t){if(this._roundness!==t){this._roundness=t;for(let n=0,i=this.points.length;n<i;n++)this.points[n].roundness=t;this.needsUpdate=!0}}getPointsIndexesByIds(t){return t.map(n=>this.getPointIndexById(n)).filter(n=>n>=0)}getPointIndexById(t){let n=this.points.length,i=this.points.findIndex(s=>s.uuid===t);if(i<0){let s=n;for(let o=0,a=this.shapeHoles.length;o<a;o++){let l=this.shapeHoles[o],u=l.points.length-1,c=l.getPointIndexById(t);if(c<0)s+=u;else return c+s}}return i}getLineIndexById(t){return this.getPointIndexById(t)}getBezierPoint(t){if(t<=this.points.length-1)return this.points[t];if(this.shapeHoles.length>0)for(let n=0,i=this.shapeHoles.length;n<i;n++){let s=this.shapeHoles[n],o=t-this.points.length;if(o<=s.points.length-1)return s.points[o]}throw new Error("This shape does not have a point for this index: "+t)}getBezierPointIndex(t){let n=this.points.indexOf(t);if(n>=0)return n;if(n=this.points.length,this.shapeHoles.length>0)for(let i=0,s=this.shapeHoles.length;i<s;i++){let o=this.shapeHoles[i],a=o.points.indexOf(t);if(a>=0)return n+a;n+=o.points.length}return-1}getAllPoints(){let t=[].concat(...this.shapeHoles.map(n=>n.points));return[...this.points,...t]}applySize(t,n){t===0&&(t=.001),n===0&&(n=.001),this._width=t,this._height=n}applyScale(t,n){let i=jg.set(t,n);for(let s=0,o=this.points.length;s<o;s++){let a=this.points[s];a.position.multiply(i),a.controls[0].position.multiply(i),a.controls[1].position.multiply(i)}for(let s=0,o=this.shapeHoles.length;s<o;s++)this.shapeHoles[s].applyScale(t,n);this._update(!1)}createPoint(t,n=0,i=Je.generateUUID()){let s;t instanceof N?s=t:s=new N(t,n);let o=new Vr(i,s);return o.roundness=this.roundness,o}addPoint(t){this.points.push(t),this.needsUpdate=!0}addPointAt(t,n){this.points.splice(n,0,t),this.needsUpdate=!0}getPointByUuid(t){for(let n=0,i=this.points.length;n<i;n++){let s=this.points[n];if(s.uuid===t)return s}for(let n=0,i=this.shapeHoles.length;n<i;n++){let o=this.shapeHoles[n].getPointByUuid(t);if(o)return o}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(t){let n=this.points.indexOf(t);n>=0&&this.points.splice(n,1),this.needsUpdate=!0}removePointById(t){let n=this.points.find(i=>i.uuid===t);n&&this.removePoint(n)}update(t=!0){for(let n=0,i=this.shapeHoles.length;n<i;n++)this.shapeHoles[n].update(!1);this._update(t)}extractShapePointsToBuffer(t,n=12,i=!1){this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n);let s=i?this.roundedCurveDivisions:this.curveDivisions;return F_(t,i?this.roundedCurves:this.curves,n,this.autoClose),s.reduce((o,a)=>o+a,0)+1}computeCurveDivisions(t=12){return this.curveDivisions=Wg(this.points,t,!1),this.roundedCurveDivisions=Wg(this.points,t,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(t,n,i=12){return U_(t,this.curves,n,i,this.autoClose).reduce((o,a)=>o+a,0)*2}extractShapePointsToFlatArray(t,n=12){return this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n),z_(t,this.roundedCurves,n,this.autoClose)}getCurveIndexFromVertexId(t,n=!1){let i=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let s=n?this.roundedCurveDivisions:this.curveDivisions,o=0;n&&this.points[0].roundedCurveCorner!==void 0&&(o=Bs(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=t-o;a<0&&(a+=s.reduce((l,u)=>l+u,0));for(let l=0,u=s.length;l<u;l++){let c=s[l];if(a<i+c)return[l,(a-i+1)/c];i+=c}return[0,1]}getCurveT(t,n,i){let s=this.points[t],o=this.points[t>=this.points.length-1?0:t+1],a=this.curveDivisions,l=a[t];if(Hg(s,o)){let h=s.position.distanceTo(o.position);return s.position.distanceTo(jg.set(i.x,i.y))/h}let u=0;for(let h=0;h<t;h++)u+=a[h];return(n-u)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(t,n){Hg(n,t)?this.lineTo(t.position.x,t.position.y):this.bezierCurveTo(n.controls[1].position.x,n.controls[1].position.y,t.controls[0].position.x,t.controls[0].position.y,t.position.x,t.position.y);let i=this.curves[this.curves.length-1];t.curveBefore=i,n.curveAfter=i;let s=i.clone();t.roundedCurveBefore=s,n.roundedCurveAfter=s,t.roundedCurveCorner=void 0,this.roundedCurves.push(s)}_update(t=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let o=this.points[i];if(i===0)this.moveTo(o.position.x,o.position.y);else{let a=this.points[i-1];this._applyCurveForPoint(o,a)}}let n=this.getLastPoint();if(n?.curveAfter&&(n.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,o=this.points.length;s<o;s++){let a=this.points[s],l=this.points[s-1]??this.points[this.points.length-1],u=this.points[s+1]??this.points[0],c=a.roundness,h=l&&u&&L_(l,a,u);if(!a.controlsMoved()&&c>0&&!h){let d=a.curveBefore,f=a.curveAfter;if(d===void 0||f===void 0)continue;let m=a.roundedCurveBefore,p=a.roundedCurveAfter,g=d.getLength(),y=f.getLength(),x=Math.min(c,g*.499),w=Math.min(c,y*.499),b=Math.min(x,w),_=1-b/g,A=b/y,M=d.getPointAt(_,jg),v=f.getPointAt(A,aB);this._subSplitCurve(d,m,_,M,void 0),this._subSplitCurve(f,p,A,void 0,v);let T;if(this.useCubicForRoundedCorners){let E=Vg(M,a.position,v)/2,C=Math.tan(E)*M.distanceTo(a.position),[L,R]=O_(M,v,C,lB,cB),O=R_(L,R,a.position),[W,j]=N_(O,M,v,C,uB,hB);T=new Zn(M.clone(),W.clone(),j.clone(),v.clone())}else T=new Fr(M.clone(),a.position.clone(),v.clone());a.roundedCurveCorner=T,this.roundedCurves.splice(s+i,0,T),i++}}}t&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(t,n,i,s,o){if(t instanceof Kn)s!==void 0&&n.v2.copy(s),o!==void 0&&n.v1.copy(o);else{let a=t,l=n,u=a.getUtoTmapping(i,0),c=B_(a.v0,a.v1,a.v2,a.v3,u);return s!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),o!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return n}clone(){let t=new vt(this._width,this._height);return t.points=this.points.map(n=>n.clone()),t.isClosed=this.isClosed,t.roundness=this.roundness,t.isMesh2D=this.isMesh2D,t.shapeHoles=this.shapeHoles.map(n=>n.clone()),t}toJSON(){return{points:this.points.reduce((t,n)=>t.concat(n.toJSON()),[]),shapeHoles:this.shapeHoles.map(t=>t.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(t){this.points=[],this.pointIDs=0;let n=t.points.length/7;for(let i=0;i<n;i++){let s=i*7,o=t.points[s+0],a=t.points[s+1],l=t.points[s+2],u=t.points[s+3],c=t.points[s+4],h=t.points[s+5],d=t.points[s+6],f=new Vr(Je.generateUUID(),new N(o,a));f.controls[0].position.set(l,u),f.controls[1].position.set(c,h),f.roundness=d,this.points.push(f)}return this.shapeHoles=t.shapeHoles?.length?t.shapeHoles.map(i=>{let s=new vt;return s.fromJSON(i),s}):[],this.isClosed=t.isClosed,this._roundness=t.roundness,this._update(),this}fromShape(t){let n=(s,o)=>{o instanceof Zn&&o.v3.equals(s.position)&&s.controls[0].position.copy(o.v2)},i=s=>{let o=[],a,l;for(a=0,l=s.length;a<l;a++)s[a]instanceof Fr&&(s[a]=I_(s[a]));for(a=0,l=s.length;a<l;a++){let h=s[a],d=a>0?s[a-1]:null,f;h instanceof Zn?(f=this.createPoint(h.v0),f.controls[1].position.copy(h.v1)):h instanceof Kn&&(f=this.createPoint(h.v1)),f!==void 0&&(d!==null&&n(f,d),o.push(f))}let u=s[s.length-1],c=!1;return u instanceof Zn?u.v3.equals(o[0].position)&&(o[0].controls[0].position.copy(u.v2),c=!0):u instanceof Kn&&u.v2.equals(o[0].position)&&(c=!0),this.isClosed=c,o};return this.points=i(t.curves),t instanceof Nr&&(this.shapeHoles=t.holes.map(s=>{let o=new vt;return o.fromShape(s),o})),this.update(),this}};var Xg=Math.PI*2;function qg({x:r,y:e},t,n,i,s){return{x:r*t+i,y:e*n+s}}function dB(r,e){let t=e===1.5707963267948966?.551915024494:e===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(e/4),n=Math.cos(r),i=Math.sin(r),s=Math.cos(r+e),o=Math.sin(r+e);return[{x:n-i*t,y:i+n*t},{x:s+o*t,y:o-s*t},{x:s,y:o}]}function G_(r,e,t,n){let i=r*n-e*t<0?-1:1,s=Math.min(1,Math.max(-1,r*t+e*n));return i*Math.acos(s)}function fB(r,e,t,n,i,s,o,a,l,u){let c=Math.pow(i,2),h=Math.pow(s,2),d=Math.pow(o,2),f=Math.pow(a,2),m=c*h-c*f-h*d;m<0&&(m=0),m/=c*f+h*d,m=Math.sqrt(m)*(l===u?-1:1);let p=m*i/s*a,g=m*-s/i*o,y=p+(r+t)/2,x=g+(e+n)/2,w=(o-p)/i,b=(a-g)/s,_=(-o-p)/i,A=(-a-g)/s,M=G_(1,0,w,b),v=G_(w,b,_,A);return!u&&v>0&&(v-=Xg),u&&v<0&&(v+=Xg),{centerx:y,centery:x,ang1:M,ang2:v}}function k_({px:r,py:e,cx:t,cy:n,rx:i,ry:s,largeArcFlag:o,sweepFlag:a}){let l=[];if(i===0||s===0)return[];let u=(r-t)/2,c=(e-n)/2;if(u===0&&c===0)return[];i=Math.abs(i),s=Math.abs(s);let h=Math.pow(u,2)/Math.pow(i,2)+Math.pow(c,2)/Math.pow(s,2);h>1&&(i*=Math.sqrt(h),s*=Math.sqrt(h));let d=fB(r,e,t,n,i,s,u,c,o,a),{ang1:f,ang2:m}=d,{centerx:p,centery:g}=d,y=Math.abs(m)/(Xg/4);Math.abs(1-y)<1e-7&&(y=1);let x=Math.max(Math.ceil(y),1);m/=x;for(let w=0;w<x;w++)l.push(dB(f,m)),f+=m;return l.map(w=>{let{x:b,y:_}=qg(w[0],i,s,p,g),{x:A,y:M}=qg(w[1],i,s,p,g),{x:v,y:T}=qg(w[2],i,s,p,g);return{x1:b,y1:_,x2:A,y2:M,x:v,y:T}})}var Bt;(function(r){r[r.ODD=0]="ODD",r[r.NONZERO=1]="NONZERO",r[r.POSITIVE=2]="POSITIVE",r[r.NEGATIVE=3]="NEGATIVE",r[r.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Bt||(Bt={}));var dn;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(dn||(dn={}));function Ge(r,e){if(!r)throw e||"Assertion Failed!"}var Ue=function(){function r(){}return r.vertEq=function(e,t){return e.s===t.s&&e.t===t.t},r.vertLeq=function(e,t){return e.s<t.s||e.s===t.s&&e.t<=t.t},r.transLeq=function(e,t){return e.t<t.t||e.t===t.t&&e.s<=t.s},r.edgeGoesLeft=function(e){return r.vertLeq(e.Dst,e.Org)},r.edgeGoesRight=function(e){return r.vertLeq(e.Org,e.Dst)},r.vertL1dist=function(e,t){return Math.abs(e.s-t.s)+Math.abs(e.t-t.t)},r.edgeEval=function(e,t,n){Ge(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?i<s?t.t-e.t+(e.t-n.t)*(i/(i+s)):t.t-n.t+(n.t-e.t)*(s/(i+s)):0},r.edgeSign=function(e,t,n){Ge(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?(t.t-n.t)*i+(t.t-e.t)*s:0},r.transEval=function(e,t,n){Ge(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?i<s?t.s-e.s+(e.s-n.s)*(i/(i+s)):t.s-n.s+(n.s-e.s)*(s/(i+s)):0},r.transSign=function(e,t,n){Ge(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?(t.s-n.s)*i+(t.s-e.s)*s:0},r.vertCCW=function(e,t,n){return e.s*(t.t-n.t)+t.s*(n.t-e.t)+n.s*(e.t-t.t)>=0},r.interpolate=function(e,t,n,i){return e=e<0?0:e,n=n<0?0:n,e<=n?n===0?(t+i)/2:t+(i-t)*(e/(e+n)):i+(t-i)*(n/(e+n))},r.intersect=function(e,t,n,i,s){var o,a,l;r.vertLeq(e,t)||(l=e,e=t,t=l),r.vertLeq(n,i)||(l=n,n=i,i=l),r.vertLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.vertLeq(n,t)?r.vertLeq(t,i)?(o=r.edgeEval(e,n,t),a=r.edgeEval(n,t,i),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,t.s)):(o=r.edgeSign(e,n,t),a=-r.edgeSign(e,i,t),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,i.s)):s.s=(n.s+t.s)/2,r.transLeq(e,t)||(l=e,e=t,t=l),r.transLeq(n,i)||(l=n,n=i,i=l),r.transLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.transLeq(n,t)?r.transLeq(t,i)?(o=r.transEval(e,n,t),a=r.transEval(n,t,i),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,t.t)):(o=r.transSign(e,n,t),a=-r.transSign(e,i,t),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,i.t)):s.t=(n.t+t.t)/2},r}(),iu=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return r}(),rf=function(){function r(e){this.side=e,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(r.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(e){this.Sym.Lface=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(e){this.Sym.Org=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(e){this.Sym.Lnext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(e){this.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(e){this.Lnext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(e){this.Sym.Onext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(e){this.Sym.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(e){this.Sym.Lnext.Sym=e},enumerable:!0,configurable:!0}),r}(),hl=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return r}(),V_=function(){function r(){var e=new hl,t=new iu,n=new rf(0),i=new rf(1);e.next=e.prev=e,e.anEdge=null,t.next=t.prev=t,n.next=n,n.Sym=i,i.next=i,i.Sym=n,this.vHead=e,this.fHead=t,this.eHead=n,this.eHeadSym=i}return r.prototype.makeEdge_=function(e){var t=new rf(0),n=new rf(1);e.Sym.side<e.side&&(e=e.Sym);var i=e.Sym.next;return n.next=i,i.Sym.next=t,t.next=e,e.Sym.next=n,t.Sym=n,t.Onext=t,t.Lnext=n,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,n.Sym=t,n.Onext=n,n.Lnext=t,n.Org=null,n.Lface=null,n.winding=0,n.activeRegion=null,t},r.prototype.splice_=function(e,t){var n=e.Onext,i=t.Onext;n.Sym.Lnext=t,i.Sym.Lnext=e,e.Onext=i,t.Onext=n},r.prototype.makeVertex_=function(e,t,n){var i=e;Ge(i,"Vertex can't be null!");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t;var o=t;do o.Org=i,o=o.Onext;while(o!==t)},r.prototype.makeFace_=function(e,t,n){var i=e;Ge(i,"Face can't be null");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t,i.trail=null,i.marked=!1,i.inside=n.inside;var o=t;do o.Lface=i,o=o.Lnext;while(o!==t)},r.prototype.killEdge_=function(e){e.Sym.side<e.side&&(e=e.Sym);var t=e.next,n=e.Sym.next;t.Sym.next=n,n.Sym.next=t},r.prototype.killVertex_=function(e,t){var n=e.anEdge,i=n;do i.Org=t,i=i.Onext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.killFace_=function(e,t){var n=e.anEdge,i=n;do i.Lface=t,i=i.Lnext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.makeEdge=function(){var e=new hl,t=new hl,n=new iu,i=this.makeEdge_(this.eHead);return this.makeVertex_(e,i,this.vHead),this.makeVertex_(t,i.Sym,this.vHead),this.makeFace_(n,i,this.fHead),i},r.prototype.splice=function(e,t){var n=!1,i=!1;if(e!==t){if(t.Org!==e.Org&&(i=!0,this.killVertex_(t.Org,e.Org)),t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(t,e),!i){var s=new hl;this.makeVertex_(s,t,e.Org),e.Org.anEdge=e}if(!n){var o=new iu;this.makeFace_(o,t,e.Lface),e.Lface.anEdge=e}}},r.prototype.delete=function(e){var t=e.Sym,n=!1;if(e.Lface!==e.Rface&&(n=!0,this.killFace_(e.Lface,e.Rface)),e.Onext===e)this.killVertex_(e.Org,null);else if(e.Rface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev),!n){var i=new iu;this.makeFace_(i,e,e.Lface)}t.Onext===t?(this.killVertex_(t.Org,null),this.killFace_(t.Lface,null)):(e.Lface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),this.killEdge_(e)},r.prototype.addEdgeVertex=function(e){var t=this.makeEdge_(e),n=t.Sym;this.splice_(t,e.Lnext),t.Org=e.Dst;var i=new hl;return this.makeVertex_(i,n,t.Org),t.Lface=n.Lface=e.Lface,t},r.prototype.splitEdge=function(e){var t=this.addEdgeVertex(e),n=t.Sym;return this.splice_(e.Sym,e.Sym.Oprev),this.splice_(e.Sym,n),e.Dst=n.Org,n.Dst.anEdge=n.Sym,n.Rface=e.Rface,n.winding=e.winding,n.Sym.winding=e.Sym.winding,n.idx=e.idx,n.Sym.idx=e.Sym.idx,n},r.prototype.connect=function(e,t){var n=!1,i=this.makeEdge_(e),s=i.Sym;if(t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(i,e.Lnext),this.splice_(s,t),i.Org=e.Dst,s.Org=t.Org,i.Lface=s.Lface=e.Lface,e.Lface.anEdge=s,!n){var o=new iu;this.makeFace_(o,i,e.Lface)}return i},r.prototype.zapFace=function(e){var t=e.anEdge,n,i,s,o,a;i=t.Lnext;do n=i,i=n.Lnext,n.Lface=null,n.Rface===null&&(n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),s=n.Sym,s.Onext===s?this.killVertex_(s.Org,null):(s.Org.anEdge=s.Onext,this.splice_(s,s.Oprev)),this.killEdge_(n));while(n!=t);o=e.prev,a=e.next,a.prev=o,o.next=a},r.prototype.countFaceVerts_=function(e){var t=e.anEdge,n=0;do n++,t=t.Lnext;while(t!==e.anEdge);return n},r.prototype.mergeConvexFaces=function(e){var t,n,i,s,o,a,l;for(t=this.fHead.next;t!==this.fHead;t=t.next)if(!!t.inside)for(n=t.anEdge,o=n.Org;i=n.Lnext,s=n.Sym,s&&s.Lface&&s.Lface.inside&&(a=this.countFaceVerts_(t),l=this.countFaceVerts_(s.Lface),a+l-2<=e&&Ue.vertCCW(n.Lprev.Org,n.Org,s.Lnext.Lnext.Org)&&Ue.vertCCW(s.Lprev.Org,s.Org,n.Lnext.Lnext.Org)&&(i=s.Lnext,this.delete(s),n=null,s=null)),!(n&&n.Lnext.Org===o);)n=i;return!0},r.prototype.check=function(){var e=this.fHead,t=this.vHead,n=this.eHead,i,s,o,a,l,u;for(s=e,s=e;(i=s.next)!==e;s=i){Ge(i.prev===s),l=i.anEdge;do Ge(l.Sym!==l),Ge(l.Sym.Sym===l),Ge(l.Lnext.Onext.Sym===l),Ge(l.Onext.Sym.Lnext===l),Ge(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(Ge(i.prev===s&&i.anEdge===null),a=t,a=t;(o=a.next)!==t;a=o){Ge(o.prev===a),l=o.anEdge;do Ge(l.Sym!==l),Ge(l.Sym.Sym===l),Ge(l.Lnext.Onext.Sym===l),Ge(l.Onext.Sym.Lnext===l),Ge(l.Org===o),l=l.Onext;while(l!==o.anEdge)}for(Ge(o.prev===a&&o.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)Ge(l.Sym.next===u.Sym),Ge(l.Sym!==l),Ge(l.Sym.Sym===l),Ge(l.Org!==null),Ge(l.Dst!==null),Ge(l.Lnext.Onext.Sym===l),Ge(l.Onext.Sym.Lnext===l);Ge(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},r}(),H_=function(){function r(){this.handle=null}return r}(),W_=function(){function r(){this.key=null,this.node=0}return r}(),pB=function(){function r(e,t){this.leq=t,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=e,this.nodes=[],this.handles=[];for(var n=0;n<e+1;n++)this.nodes[n]=new H_,this.handles[n]=new W_;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return r.prototype.floatDown_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e<<1,o<this.size&&this.leq(n[t[o+1].handle].key,n[t[o].handle].key)&&++o,Ge(o<=this.max),s=t[o].handle,o>this.size||this.leq(n[i].key,n[s].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.floatUp_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e>>1,s=t[o].handle,o===0||this.leq(n[s].key,n[i].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.init=function(){for(var e=this.size;e>=1;--e)this.floatDown_(e);this.initialized=!0},r.prototype.min=function(){return this.handles[this.nodes[1].handle].key},r.prototype.insert=function(e){var t,n;if(t=++this.size,t*2>this.max){this.max*=2;var i,s;for(s=this.nodes.length,this.nodes.length=this.max+1,i=s;i<this.nodes.length;i++)this.nodes[i]=new H_;for(s=this.handles.length,this.handles.length=this.max+1,i=s;i<this.handles.length;i++)this.handles[i]=new W_}return this.freeList===0?n=t:(n=this.freeList,this.freeList=this.handles[n].node),this.nodes[t].handle=n,this.handles[n].node=t,this.handles[n].key=e,this.initialized&&this.floatUp_(t),n},r.prototype.extractMin=function(){var e=this.nodes,t=this.handles,n=e[1].handle,i=t[n].key;return this.size>0&&(e[1].handle=e[this.size].handle,t[e[1].handle].node=1,t[n].key=null,t[n].node=this.freeList,this.freeList=n,--this.size,this.size>0&&this.floatDown_(1)),i},r.prototype.delete=function(e){var t=this.nodes,n=this.handles,i;Ge(e>=1&&e<=this.max&&n[e].key!==null),i=n[e].node,t[i].handle=t[this.size].handle,n[t[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(n[t[i>>1].handle].key,n[t[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),n[e].key=null,n[e].node=this.freeList,this.freeList=e},r}(),Yg=function(){function r(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return r}(),j_=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),mB=function(){function r(e,t){this.frame=e,this.leq=t,this.head=new j_,this.head.next=this.head,this.head.prev=this.head}return r.prototype.min=function(){return this.head.next},r.prototype.max=function(){return this.head.prev},r.prototype.insert=function(e){return this.insertBefore(this.head,e)},r.prototype.search=function(e){var t=this.head;do t=t.next;while(t.key!==null&&!this.leq(this.frame,e,t.key));return t},r.prototype.insertBefore=function(e,t){do e=e.prev;while(e.key!==null&&!this.leq(this.frame,e.key,t));var n=new j_;return n.key=t,n.next=e.next,e.next.prev=n,n.prev=e,e.next=n,n},r.prototype.delete=function(e){e.next.prev=e.prev,e.prev.next=e.next},r}(),gB=function(){function r(){}return r.regionBelow=function(e){return e.nodeUp.prev.key},r.regionAbove=function(e){return e.nodeUp.next.key},r.debugEvent=function(e){},r.addWinding=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.edgeLeq=function(e,t,n){var i=e.event,s=t.eUp,o=n.eUp;if(s.Dst===i)return o.Dst===i?Ue.vertLeq(s.Org,o.Org)?Ue.edgeSign(o.Dst,s.Org,o.Org)<=0:Ue.edgeSign(s.Dst,o.Org,s.Org)>=0:Ue.edgeSign(o.Dst,i,o.Org)<=0;if(o.Dst===i)return Ue.edgeSign(s.Dst,i,s.Org)>=0;var a=Ue.edgeEval(s.Dst,i,s.Org),l=Ue.edgeEval(o.Dst,i,o.Org);return a>=l},r.deleteRegion=function(e,t){t.fixUpperEdge&&Ge(t.eUp.winding===0),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},r.fixUpperEdge=function(e,t,n){Ge(t.fixUpperEdge),e.mesh.delete(t.eUp),t.fixUpperEdge=!1,t.eUp=n,n.activeRegion=t},r.topLeftRegion=function(e,t){var n=t.eUp.Org,i;do t=r.regionAbove(t);while(t.eUp.Org===n);if(t.fixUpperEdge){if(i=e.mesh.connect(r.regionBelow(t).eUp.Sym,t.eUp.Lnext),i===null)return null;r.fixUpperEdge(e,t,i),t=r.regionAbove(t)}return t},r.topRightRegion=function(e){var t=e.eUp.Dst;do e=r.regionAbove(e);while(e.eUp.Dst===t);return e},r.addRegionBelow=function(e,t,n){var i=new Yg;return i.eUp=n,i.nodeUp=e.dict.insertBefore(t.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,n.activeRegion=i,i},r.isWindingInside=function(e,t){switch(e.windingRule){case Bt.ODD:return(t&1)!==0;case Bt.NONZERO:return t!==0;case Bt.POSITIVE:return t>0;case Bt.NEGATIVE:return t<0;case Bt.ABS_GEQ_TWO:return t>=2||t<=-2}throw new Error("Invalid winding rulle")},r.computeWinding=function(e,t){t.windingNumber=r.regionAbove(t).windingNumber+t.eUp.winding,t.inside=r.isWindingInside(e,t.windingNumber)},r.finishRegion=function(e,t){var n=t.eUp,i=n.Lface;i.inside=t.inside,i.anEdge=n,r.deleteRegion(e,t)},r.finishLeftRegions=function(e,t,n){for(var i,s=null,o=t,a=t.eUp;o!==n;){if(o.fixUpperEdge=!1,s=r.regionBelow(o),i=s.eUp,i.Org!=a.Org){if(!s.fixUpperEdge){r.finishRegion(e,o);break}i=e.mesh.connect(a.Lprev,i.Sym),r.fixUpperEdge(e,s,i)}a.Onext!==i&&(e.mesh.splice(i.Oprev,i),e.mesh.splice(a,i)),r.finishRegion(e,o),a=s.eUp,o=s}return a},r.addRightEdges=function(e,t,n,i,s,o){var a,l,u,c,h=!0;u=n;do Ge(Ue.vertLeq(u.Org,u.Dst)),r.addRegionBelow(e,t,u.Sym),u=u.Onext;while(u!==i);for(s===null&&(s=r.regionBelow(t).eUp.Rprev),l=t,c=s;a=r.regionBelow(l),u=a.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(e.mesh.splice(u.Oprev,u),e.mesh.splice(c.Oprev,u)),a.windingNumber=l.windingNumber-u.winding,a.inside=r.isWindingInside(e,a.windingNumber),l.dirty=!0,!h&&r.checkForRightSplice(e,l)&&(r.addWinding(u,c),r.deleteRegion(e,l),e.mesh.delete(c)),h=!1,l=a,c=u;l.dirty=!0,Ge(l.windingNumber-u.winding===a.windingNumber),o&&r.walkDirtyRegions(e,l)},r.spliceMergeVertices=function(e,t,n){e.mesh.splice(t,n)},r.vertexWeights=function(e,t,n){var i=Ue.vertL1dist(t,e),s=Ue.vertL1dist(n,e),o=.5*s/(i+s),a=.5*i/(i+s);e.coords[0]+=o*t.coords[0]+a*n.coords[0],e.coords[1]+=o*t.coords[1]+a*n.coords[1],e.coords[2]+=o*t.coords[2]+a*n.coords[2]},r.getIntersectData=function(e,t,n,i,s,o){t.coords[0]=t.coords[1]=t.coords[2]=0,t.idx=-1,r.vertexWeights(t,n,i),r.vertexWeights(t,s,o)},r.checkForRightSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp;if(Ue.vertLeq(i.Org,s.Org)){if(Ue.edgeSign(s.Dst,i.Org,s.Org)>0)return!1;Ue.vertEq(i.Org,s.Org)?i.Org!==s.Org&&(e.pq.delete(i.Org.pqHandle),r.spliceMergeVertices(e,s.Oprev,i)):(e.mesh.splitEdge(s.Sym),e.mesh.splice(i,s.Oprev),t.dirty=n.dirty=!0)}else{if(Ue.edgeSign(i.Dst,s.Org,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Oprev,i)}return!0},r.checkForLeftSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o;if(Ge(!Ue.vertEq(i.Dst,s.Dst)),Ue.vertLeq(i.Dst,s.Dst)){if(Ue.edgeSign(i.Dst,s.Dst,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,o=e.mesh.splitEdge(i),e.mesh.splice(s.Sym,o),o.Lface.inside=t.inside}else{if(Ue.edgeSign(s.Dst,i.Dst,s.Org)>0)return!1;t.dirty=n.dirty=!0,o=e.mesh.splitEdge(s),e.mesh.splice(i.Lnext,s.Sym),o.Rface.inside=t.inside}return!0},r.checkForIntersect=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o=i.Org,a=s.Org,l=i.Dst,u=s.Dst,c,h,d=new hl,f,m;if(Ge(!Ue.vertEq(u,l)),Ge(Ue.edgeSign(l,e.event,o)<=0),Ge(Ue.edgeSign(u,e.event,a)>=0),Ge(o!==e.event&&a!==e.event),Ge(!t.fixUpperEdge&&!n.fixUpperEdge),o===a||(c=Math.min(o.t,l.t),h=Math.max(a.t,u.t),c>h))return!1;if(Ue.vertLeq(o,a)){if(Ue.edgeSign(u,o,a)>0)return!1}else if(Ue.edgeSign(l,a,o)<0)return!1;return r.debugEvent(e),Ue.intersect(l,o,u,a,d),Ge(Math.min(o.t,l.t)<=d.t),Ge(d.t<=Math.max(a.t,u.t)),Ge(Math.min(u.s,l.s)<=d.s),Ge(d.s<=Math.max(a.s,o.s)),Ue.vertLeq(d,e.event)&&(d.s=e.event.s,d.t=e.event.t),f=Ue.vertLeq(o,a)?o:a,Ue.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),Ue.vertEq(d,o)||Ue.vertEq(d,a)?(r.checkForRightSplice(e,t),!1):!Ue.vertEq(l,e.event)&&Ue.edgeSign(l,e.event,d)>=0||!Ue.vertEq(u,e.event)&&Ue.edgeSign(u,e.event,d)<=0?u===e.event?(e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Sym,i),t=r.topLeftRegion(e,t),i=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),n),r.addRightEdges(e,t,i.Oprev,i,i,!0),!0):l===e.event?(e.mesh.splitEdge(s.Sym),e.mesh.splice(i.Lnext,s.Oprev),n=t,t=r.topRightRegion(t),m=r.regionBelow(t).eUp.Rprev,n.eUp=s.Oprev,s=r.finishLeftRegions(e,n,null),r.addRightEdges(e,t,s.Onext,i.Rprev,m,!0),!0):(Ue.edgeSign(l,e.event,d)>=0&&(r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),i.Org.s=e.event.s,i.Org.t=e.event.t),Ue.edgeSign(u,e.event,d)<=0&&(t.dirty=n.dirty=!0,e.mesh.splitEdge(s.Sym),s.Org.s=e.event.s,s.Org.t=e.event.t),!1):(e.mesh.splitEdge(i.Sym),e.mesh.splitEdge(s.Sym),e.mesh.splice(s.Oprev,i),i.Org.s=d.s,i.Org.t=d.t,i.Org.pqHandle=e.pq.insert(i.Org),r.getIntersectData(e,i.Org,o,l,a,u),r.regionAbove(t).dirty=t.dirty=n.dirty=!0,!1)},r.walkDirtyRegions=function(e,t){for(var n=r.regionBelow(t),i,s;;){for(;n.dirty;)t=n,n=r.regionBelow(n);if(!t.dirty&&(n=t,t=r.regionAbove(t),t===null||!t.dirty))return;if(t.dirty=!1,i=t.eUp,s=n.eUp,i.Dst!==s.Dst&&r.checkForLeftSplice(e,t)&&(n.fixUpperEdge?(r.deleteRegion(e,n),e.mesh.delete(s),n=r.regionBelow(t),s=n.eUp):t.fixUpperEdge&&(r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n),i=t.eUp)),i.Org!==s.Org)if(i.Dst!==s.Dst&&!t.fixUpperEdge&&!n.fixUpperEdge&&(i.Dst===e.event||s.Dst===e.event)){if(r.checkForIntersect(e,t))return}else r.checkForRightSplice(e,t);i.Org===s.Org&&i.Dst===s.Dst&&(r.addWinding(s,i),r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n))}},r.connectRightVertex=function(e,t,n){var i,s=n.Onext,o=r.regionBelow(t),a=t.eUp,l=o.eUp,u=!1;if(a.Dst!==l.Dst&&r.checkForIntersect(e,t),Ue.vertEq(a.Org,e.event)&&(e.mesh.splice(s.Oprev,a),t=r.topLeftRegion(e,t),s=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),o),u=!0),Ue.vertEq(l.Org,e.event)&&(e.mesh.splice(n,l.Oprev),n=r.finishLeftRegions(e,o,null),u=!0),u){r.addRightEdges(e,t,n.Onext,s,s,!0);return}Ue.vertLeq(l.Org,a.Org)?i=l.Oprev:i=a,i=e.mesh.connect(n.Lprev,i),r.addRightEdges(e,t,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,r.walkDirtyRegions(e,t)},r.connectLeftDegenerate=function(e,t,n){var i,s,o,a,l;if(i=t.eUp,Ue.vertEq(i.Org,n)){Ge(!1),r.spliceMergeVertices(e,i,n.anEdge);return}if(!Ue.vertEq(i.Dst,n)){e.mesh.splitEdge(i.Sym),t.fixUpperEdge&&(e.mesh.delete(i.Onext),t.fixUpperEdge=!1),e.mesh.splice(n.anEdge,i),r.sweepEvent(e,n);return}Ge(!1),t=r.topRightRegion(t),l=r.regionBelow(t),o=l.eUp.Sym,s=a=o.Onext,l.fixUpperEdge&&(Ge(s!==o),r.deleteRegion(e,l),e.mesh.delete(o),o=s.Oprev),e.mesh.splice(n.anEdge,o),Ue.edgeGoesLeft(s)||(s=null),r.addRightEdges(e,t,o.Onext,a,s,!0)},r.connectLeftVertex=function(e,t){var n,i,s,o,a,l,u=new Yg;if(u.eUp=t.anEdge.Sym,n=e.dict.search(u).key,i=r.regionBelow(n),!!i){if(o=n.eUp,a=i.eUp,Ue.edgeSign(o.Dst,t,o.Org)===0){r.connectLeftDegenerate(e,n,t);return}if(s=Ue.vertLeq(a.Dst,o.Dst)?n:i,n.inside||s.fixUpperEdge){if(s===n)l=e.mesh.connect(t.anEdge.Sym,o.Lnext);else{var c=e.mesh.connect(a.Dnext,t.anEdge);l=c.Sym}s.fixUpperEdge?r.fixUpperEdge(e,s,l):r.computeWinding(e,r.addRegionBelow(e,n,l)),r.sweepEvent(e,t)}else r.addRightEdges(e,n,t.anEdge,t.anEdge,null,!0)}},r.sweepEvent=function(e,t){e.event=t,r.debugEvent(e);for(var n=t.anEdge;n.activeRegion===null;)if(n=n.Onext,n===t.anEdge){r.connectLeftVertex(e,t);return}var i=r.topLeftRegion(e,n.activeRegion);Ge(i!==null);var s=r.regionBelow(i),o=s.eUp,a=r.finishLeftRegions(e,s,null);a.Onext===o?r.connectRightVertex(e,i,a):r.addRightEdges(e,i,a.Onext,o,o,!0)},r.addSentinel=function(e,t,n,i){var s=new Yg,o=e.mesh.makeEdge();o.Org.s=n,o.Org.t=i,o.Dst.s=t,o.Dst.t=i,e.event=o.Dst,s.eUp=o,s.windingNumber=0,s.inside=!1,s.fixUpperEdge=!1,s.sentinel=!0,s.dirty=!1,s.nodeUp=e.dict.insert(s)},r.initEdgeDict=function(e){e.dict=new mB(e,r.edgeLeq);var t=e.bmax[0]-e.bmin[0],n=e.bmax[1]-e.bmin[1],i=e.bmin[0]-t,s=e.bmax[0]+t,o=e.bmin[1]-n,a=e.bmax[1]+n;r.addSentinel(e,i,s,o),r.addSentinel(e,i,s,a)},r.doneEdgeDict=function(e){for(var t,n=0;(t=e.dict.min().key)!==null;)t.sentinel||(Ge(t.fixUpperEdge),Ge(++n===1)),Ge(t.windingNumber===0),r.deleteRegion(e,t)},r.removeDegenerateEdges=function(e){var t,n,i,s=e.mesh.eHead;for(t=s.next;t!==s;t=n)n=t.next,i=t.Lnext,Ue.vertEq(t.Org,t.Dst)&&t.Lnext.Lnext!==t&&(r.spliceMergeVertices(e,i,t),e.mesh.delete(t),t=i,i=t.Lnext),i.Lnext===t&&(i!==t&&((i===n||i===n.Sym)&&(n=n.next),e.mesh.delete(i)),(t===n||t===n.Sym)&&(n=n.next),e.mesh.delete(t))},r.initPriorityQ=function(e){var t,n,i,s=0;for(i=e.mesh.vHead,n=i.next;n!==i;n=n.next)s++;for(s+=8,t=e.pq=new pB(s,Ue.vertLeq),i=e.mesh.vHead,n=i.next;n!==i;n=n.next)n.pqHandle=t.insert(n);return n!==i?!1:(t.init(),!0)},r.donePriorityQ=function(e){e.pq=null},r.removeDegenerateFaces=function(e,t){var n,i,s;for(n=t.fHead.next;n!==t.fHead;n=i)i=n.next,s=n.anEdge,Ge(s.Lnext!==s),s.Lnext.Lnext===s&&(r.addWinding(s.Onext,s),e.mesh.delete(s));return!0},r.computeInterior=function(e,t){t===void 0&&(t=!0);var n,i;if(r.removeDegenerateEdges(e),!r.initPriorityQ(e))return!1;for(r.initEdgeDict(e);(n=e.pq.extractMin())!==null;){for(;i=e.pq.min(),!(i===null||!Ue.vertEq(i,n));)i=e.pq.extractMin(),r.spliceMergeVertices(e,n.anEdge,i.anEdge);r.sweepEvent(e,n)}return e.event=e.dict.min().key.eUp.Org,r.debugEvent(e),r.doneEdgeDict(e),r.donePriorityQ(e),r.removeDegenerateFaces(e,e.mesh)?(t&&e.mesh.check(),!0):!1},r}(),yB=function(){function r(){this.mesh=new V_,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Bt.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return r.prototype.dot_=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},r.prototype.normalize_=function(e){var t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2];if(!t)throw"Zero-size vector!";t=Math.sqrt(t),e[0]/=t,e[1]/=t,e[2]/=t},r.prototype.longAxis_=function(e){var t=0;return Math.abs(e[1])>Math.abs(e[0])&&(t=1),Math.abs(e[2])>Math.abs(e[t])&&(t=2),t},r.prototype.computeNormal_=function(e){var t,n,i,s,o,a,l=[0,0,0],u=[0,0,0],c=[0,0,0],h=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],p=this.mesh.vHead;t=p.next;for(var g=0;g<3;++g)s=t.coords[g],u[g]=s,m[g]=t,l[g]=s,f[g]=t;for(t=p.next;t!==p;t=t.next)for(var y=0;y<3;++y)s=t.coords[y],s<u[y]&&(u[y]=s,m[y]=t),s>l[y]&&(l[y]=s,f[y]=t);var x=0;if(l[1]-u[1]>l[0]-u[0]&&(x=1),l[2]-u[2]>l[x]-u[x]&&(x=2),u[x]>=l[x]){e[0]=0,e[1]=0,e[2]=1;return}for(a=0,n=m[x],i=f[x],c[0]=n.coords[0]-i.coords[0],c[1]=n.coords[1]-i.coords[1],c[2]=n.coords[2]-i.coords[2],t=p.next;t!==p;t=t.next)h[0]=t.coords[0]-i.coords[0],h[1]=t.coords[1]-i.coords[1],h[2]=t.coords[2]-i.coords[2],d[0]=c[1]*h[2]-c[2]*h[1],d[1]=c[2]*h[0]-c[0]*h[2],d[2]=c[0]*h[1]-c[1]*h[0],o=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],o>a&&(a=o,e[0]=d[0],e[1]=d[1],e[2]=d[2]);a<=0&&(e[0]=e[1]=e[2]=0,e[this.longAxis_(c)]=1)},r.prototype.checkOrientation_=function(){for(var e=this.mesh.fHead,t,n=this.mesh.vHead,i,s=0,o=e.next;o!==e;o=o.next)if(i=o.anEdge,!(i.winding<=0))do s+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==o.anEdge);if(s<0){for(t=n.next;t!==n;t=t.next)t.t=-t.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},r.prototype.projectPolygon_=function(){var e=this.mesh.vHead,t=[0,0,0],n,i,s=!1;t[0]=this.normal[0],t[1]=this.normal[1],t[2]=this.normal[2],!t[0]&&!t[1]&&!t[2]&&(this.computeNormal_(t),s=!0),n=this.sUnit,i=this.tUnit;var o=this.longAxis_(t);n[o]=0,n[(o+1)%3]=1,n[(o+2)%3]=0,i[o]=0,i[(o+1)%3]=0,i[(o+2)%3]=t[o]>0?1:-1;for(var a=e.next;a!==e;a=a.next)a.s=this.dot_(a.coords,n),a.t=this.dot_(a.coords,i);s&&this.checkOrientation_();for(var l=!0,u=e.next;u!==e;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},r.prototype.addWinding_=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.prototype.tessellateMonoRegion_=function(e,t){var n,i;if(n=t.anEdge,!(n.Lnext!==n&&n.Lnext.Lnext!==n))throw"Mono region invalid";for(;Ue.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;Ue.vertLeq(n.Org,n.Dst);n=n.Lnext);i=n.Lprev;for(var s=void 0;n.Lnext!==i;)if(Ue.vertLeq(n.Dst,i.Org)){for(;i.Lnext!==n&&(Ue.edgeGoesLeft(i.Lnext)||Ue.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)s=e.connect(i.Lnext,i),i=s.Sym;i=i.Lprev}else{for(;i.Lnext!==n&&(Ue.edgeGoesRight(n.Lprev)||Ue.edgeSign(n.Dst,n.Org,n.Lprev.Org)>=0);)s=e.connect(n,n.Lprev),n=s.Sym;n=n.Lnext}if(i.Lnext===n)throw"Mono region invalid";for(;i.Lnext.Lnext!==n;)s=e.connect(i.Lnext,i),i=s.Sym;return!0},r.prototype.tessellateInterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)if(t=n.next,n.inside&&!this.tessellateMonoRegion_(e,n))return!1;return!0},r.prototype.discardExterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)t=n.next,n.inside||e.zapFace(n)},r.prototype.setWindingNumber_=function(e,t,n){for(var i,s=e.eHead.next;s!==e.eHead;s=i)i=s.next,s.Rface.inside!==s.Lface.inside?s.winding=s.Lface.inside?t:-t:n?e.delete(s):s.winding=0},r.prototype.getNeighbourFace_=function(e){return!e.Rface||!e.Rface.inside?-1:e.Rface.n},r.prototype.outputPolymesh_=function(e,t,n,i){var s,o=0,a=0,l;n>3&&e.mergeConvexFaces(n);for(var u=e.vHead.next;u!==e.vHead;u=u.next)u.n=-1;for(var c=e.fHead.next;c!==e.fHead;c=c.next)if(c.n=-1,!!c.inside){s=c.anEdge,l=0;do{var u=s.Org;u.n===-1&&(u.n=a,a++),l++,s=s.Lnext}while(s!==c.anEdge);if(l>n)throw"Face vertex greater that support polygon";c.n=o,++o}this.elementCount=o,t===dn.CONNECTED_POLYGONS&&(o*=2),this.elements=[],this.elements.length=o*n,this.vertexCount=a,this.vertices=[],this.vertices.length=a*i,this.vertexIndices=[],this.vertexIndices.length=a;for(var u=e.vHead.next;u!==e.vHead;u=u.next)if(u.n!==-1){var h=u.n*i;this.vertices[h+0]=u.coords[0],this.vertices[h+1]=u.coords[1],i>2&&(this.vertices[h+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var d=0,c=e.fHead.next;c!==e.fHead;c=c.next)if(!!c.inside){s=c.anEdge,l=0;do{var u=s.Org;this.elements[d++]=u.n,l++,s=s.Lnext}while(s!==c.anEdge);for(var f=l;f<n;++f)this.elements[d++]=-1;if(t===dn.CONNECTED_POLYGONS){s=c.anEdge;do this.elements[d++]=this.getNeighbourFace_(s),s=s.Lnext;while(s!==c.anEdge);for(var m=l;m<n;++m)this.elements[d++]=-1}}},r.prototype.outputContours_=function(e,t){var n,i,s=0,o=0;this.vertexCount=0,this.elementCount=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){i=n=a.anEdge;do this.vertexCount++,n=n.Lnext;while(n!==i);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*t,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;s=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){o=0,i=n=a.anEdge;do this.vertices[l++]=n.Org.coords[0],this.vertices[l++]=n.Org.coords[1],t>2&&(this.vertices[l++]=n.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(n):n.Org.idx,o++,n=n.Lnext;while(n!==i);this.elements[c++]=s,this.elements[c++]=o,s+=o}},r.prototype.addContour=function(e,t){this.mesh===null&&(this.mesh=new V_),e<2&&(e=2),e>3&&(e=3);for(var n=null,i=0;i<t.length;i+=e)n===null?(n=this.mesh.makeEdge(),this.mesh.splice(n,n.Sym)):(this.mesh.splitEdge(n),n=n.Lnext),n.Org.coords[0]=t[i+0],n.Org.coords[1]=t[i+1],e>2?n.Org.coords[2]=t[i+2]:n.Org.coords[2]=0,n.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(n),n.winding=1,n.Sym.winding=-1},r.prototype.tesselate=function(e,t,n,i,s,o){if(e===void 0&&(e=Bt.ODD),t===void 0&&(t=dn.POLYGONS),o===void 0&&(o=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,s&&(this.normal[0]=s[0],this.normal[1]=s[1],this.normal[2]=s[2]),this.windingRule=e,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),gB.computeInterior(this,o);var a=this.mesh;return t===dn.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),o&&a.check(),t===dn.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,t,n,i),!0},r}();function Co(r){var e=r.windingRule,t=e===void 0?Bt.ODD:e,n=r.elementType,i=n===void 0?dn.POLYGONS:n,s=r.polySize,o=s===void 0?3:s,a=r.vertexSize,l=a===void 0?2:a,u=r.normal,c=u===void 0?[0,0,1]:u,h=r.contours,d=h===void 0?[]:h,f=r.strict,m=f===void 0?!0:f,p=r.debug,g=p===void 0?!1:p;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var y=new yB;r.edgeCreateCallback&&(y.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(y.vertexIdCallback=r.vertexIdCallback);for(var x=0;x<d.length;x++)y.addContour(l||2,d[x]);return y.tesselate(t,i,o,l,c,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:g?y.mesh:void 0}}}var eX=Bt.ODD,tX=Bt.NONZERO,nX=Bt.POSITIVE,rX=Bt.NEGATIVE,iX=Bt.ABS_GEQ_TWO,sX=dn.POLYGONS,oX=dn.CONNECTED_POLYGONS,aX=dn.BOUNDARY_CONTOURS;var dl=class extends Pe{constructor(t,n=12,i={}){super();this.type="ShapeGeometry";this.windingRule=Bt.ODD;this.elementType=dn.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=t,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:Bt.ODD,elementType:dn.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let s=this._shape.extractShapePointsToFlatArray([],this._curveSegments),o=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,u=!0,c,h;for(let m=0,p=s.length/2;m<p;m++){let g=m*2,y=s[g+0],x=s[g+1];if(c!==void 0&&y!==c&&(l=!1),h!==void 0&&x!==h&&(u=!1),c=y,h=x,!l&&!u)break}!l&&!u&&(a=Co({contours:[s,...o],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new je(new Float32Array(d*3),3),this._normalAttribute=new je(new Float32Array(d*3),3),this._uvAttribute=new je(new Float32Array(d*2),2),this._indexAttribute=new je(new Uint32Array(f*3),1),a){let m=1/0,p=-1/0,g=1/0,y=-1/0;for(let b=0,_=d;b<_;b++){let A=b*2,M=a.vertices[A+0],v=a.vertices[A+1];M<m&&(m=M),M>p&&(p=M),v<g&&(g=v),v>y&&(y=v)}let x=p-m,w=y-g;for(let b=0,_=d;b<_;b++){let A=b*2,M=a.vertices[A+0],v=a.vertices[A+1],T=(M-m)/x,E=(v-g)/w;this._positionAttribute.setXYZ(b,M,v,0),this._normalAttribute.setXYZ(b,0,0,1),this._uvAttribute.setXY(b,T,E)}for(let b=0,_=f;b<_;b++){let A=b*3,M=a.elements[A+0],v=a.elements[A+1],T=a.elements[A+2];this._indexAttribute.setX(A+0,M),this._indexAttribute.setX(A+1,v),this._indexAttribute.setX(A+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let t=new dl(this._shape,this._curveSegments);return t.userData=Fc(this.userData),t}};var sf=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let n=e*sf.eSize;this.buffer=new ArrayBuffer(n);let i=Float32Array.BYTES_PER_ELEMENT,s=0;this.positions=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.normals=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.uvs=new Float32Array(this.buffer,s*i,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let n=e*sf.eSize,i=new ArrayBuffer(n),s=Float32Array.BYTES_PER_ELEMENT,o=0,a=new Float32Array(i,o*s,3*e);o+=3*e;let l=new Float32Array(i,o*s,3*e);o+=3*e;let u=new Float32Array(i,o*s,2*e);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=i,this.positions=a,this.normals=l,this.uvs=u,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let i=this.capacity;for(;t>i;)i*=2;this.realloc(i)}let n=this.size;return this.size=t,n}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},su=sf;su.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Qg=(r,e)=>([t,n])=>(n<t&&(n+=e),(r>=t?r:r+e)<=n),fl=class extends Pe{constructor(t,n,i=0,s=12,o=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=t,this._depth=n,this._bevel=i,this._curveSegments=s,this._bevelSegmentsInput=o,i<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(i,n/2-1e-12),this._bevelSegments=Math.floor(o));let a=this._shape.extractShapePointsToFlatArray([],s),l=this._shape.shapeHoles.map(M=>{let v=M.extractShapePointsToFlatArray([],s),T=[];for(let E=v.length-1;E>=1;E-=2){let C=v[E-1],L=v[E-0];T.push(C,L)}return T}),u=Co({windingRule:Bt.ODD,elementType:dn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),c=Co({windingRule:Bt.ODD,elementType:dn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!u)throw new Error("error generating geometry");let h=u.elementCount;if(c){u.elementCount+=c.elementCount;for(let M=0;M<c.elements.length;M++){let v=c.elements[M],T=M%2===0?u.vertexCount:0;u.elements.push(v+T)}for(let M=0;M<c.vertexIndices.length;M++){let v=c.vertexIndices[M],T=u.vertexCount;u.vertexIndices.push(v+T)}for(let M=0;M<c.vertices.length;M++){let v=c.vertices[M];u.vertices.push(v)}}let d=1/0,f=-1/0,m=1/0,p=-1/0;for(let M=0,v=u.vertexCount;M<v;M++){let T=M*2,E=u.vertices[T+0],C=u.vertices[T+1];E<d&&(d=E),E>f&&(f=E),C<m&&(m=C),C>p&&(p=C)}this._minX=d,this._minY=m,this._width=f-d,this._height=p-m;let g=u.vertexCount*2*(2+this._bevelSegments);this._buffer=new su(g);let y=[],x=[];for(let M=u.elementCount-1;M>=0;M--){let v=M>=h,T=M*2,E=u.elements[T+0],C=u.elements[T+1],L=E+C,R={start:E,count:C,normals:[],continuous:[],concave:[]},O=E,W=L-1,j=E+1,Z=this._shape.roundedCurves.length;do{let G=O-E,B=u.vertices[W*2+0],k=u.vertices[W*2+1],H=u.vertices[O*2+0],X=u.vertices[O*2+1],q=u.vertices[j*2+0],ae=u.vertices[j*2+1],$=H-B,te=X-k,V=Math.sqrt($*$+te*te);$/=V,te/=V;let le=H-q,ce=X-ae,oe=Math.sqrt(le*le+ce*ce);le/=oe,ce/=oe,R.normals[G*2+0]=-ce,R.normals[G*2+1]=le,R.concave[G]=$*ce-te*le>0;let de=u.vertexIndices[O];if(Array.isArray(de))R.continuous[G]=!1;else{let[ge,fe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(fe>0&&fe<1)R.continuous[G]=!0;else{let Te=fe===1?ge+1:ge-1;Te=(Te+Z)%Z;let Ce=fe===1?0:1,ye=this._shape.roundedCurves[ge].getTangent(fe),Ne=this._shape.roundedCurves[Te].getTangent(Ce);R.continuous[G]=ye.dot(Ne)>.95}}v&&(R.normals[G*2+0]*=-1,R.normals[G*2+1]*=-1),[W,O,j]=[O,j,j+1],j>=L&&(j-=C)}while(j!==E+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:u.vertices.slice(E*2,L*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((G,B)=>[B,B]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:u.vertices.slice(E*2,L*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,k=(1-Math.cos(B))*this._bevelSize,H=[],X=[],q=[],ae=[],$=0;for(let V=0;V<C;V++){let le=V*2,ce=(V-1+C)%C*2,oe=u.vertices[R.start*2+le+0],de=u.vertices[R.start*2+le+1],ge=-R.normals[ce+0]*k,fe=-R.normals[ce+1]*k,Te=-R.normals[le+0]*k,Ce=-R.normals[le+1]*k;if(R.concave[V]||!R.concave[V]&&v){let ye=Math.atan2(fe,ge),Ne=Math.atan2(Ce,Te);Ne>ye&&(Ne-=Math.PI*2);let dt=Ne-ye;if(R.continuous[V]||v){let P=ye+dt/2,D=Math.cos(P)*k,K=Math.sin(P)*k;H[2*$+0]=oe+D*(v?-1:1),H[2*$+1]=de+K*(v?-1:1),ae[$]=V,$++}else{let P=Math.max(1,Math.floor(s/4*Math.abs(dt)/Math.PI));for(let D=0;D<=P;D++){let K=ye+dt*(D/P),he=Math.cos(K)*k,pe=Math.sin(K)*k;H[2*$+0]=oe+he,H[2*$+1]=de+pe,ae[$]=V,$++}}}else H[2*$+0]=oe+ge,H[2*$+1]=de+fe,ae[$]=V,X[V]=$,$++,H[2*$+0]=oe,H[2*$+1]=de,ae[$]=V,$++,H[2*$+0]=oe+Te,H[2*$+1]=de+Ce,ae[$]=V,q[V]=$,$++}let te=Co({windingRule:Bt.POSITIVE,elementType:dn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[H],edgeCreateCallback:V=>{let ce=V.Org.idx,oe=ae[ce],de=ae[(ce+1)%ae.length];V.idx=[oe,de],V.Sym.idx=[de,oe]},vertexIdCallback:V=>{let le=V.Lprev.idx;return[le?le[1]:0,V.idx[0]]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!te.vertexCount)break;for(let V=0;V<te.vertexIndices.length;V++){let[le,ce]=te.vertexIndices[V];if(le===ce)continue;let oe=ce;ce<le&&(oe+=C);for(let de=le;de<oe;de++){let ge=de%C,fe=(de+1)%C;if(!R.continuous[ge]||!R.continuous[fe]){te.vertexIndices[V]=[le,ge],te.vertexIndices.splice(V+1,0,[fe,ce]),te.vertices.splice((V+1)*2,0,te.vertices[V*2],te.vertices[V*2+1]);break}}}Y.push({bevelI:G,angle:B,size:k,boundary:te,reverseMap:ae,insetPoints:H})}let z=(G,B,k)=>{let H=0,X=G.boundary.vertexIndices.length;for(;H<X&&k(G.boundary.vertexIndices[B]);)B=(B+1)%X,H++;return H},F=y.length;for(let G=1;G<Y.length;G++){let B=Y[G-1],k=Y[G],H=B.boundary.vertexIndices.length,X=k.boundary.vertexIndices.length;if(!H||!X)break;let q=R.concave.length,ae=0,$=Qg(ae,C);for(;!B.boundary.vertexIndices.filter($).length||!k.boundary.vertexIndices.filter($).length;)ae++,$=Qg(ae,C);let te=B.boundary.vertexIndices.findIndex($),V=k.boundary.vertexIndices.findIndex($);do te=(te+1)%H;while($(B.boundary.vertexIndices[te]));do V=(V+1)%X;while($(k.boundary.vertexIndices[V]));ae=(ae+1)%C;let le=ae,ce=this.buildBevelVert(R,B,(te-1+H)%H),oe=this.buildBevelVert(R,k,(V-1+X)%X),de=ce,ge=oe,fe,Te,Ce=!1;do{$=Qg(ae,C);let ye=z(B,te,$),Ne=z(k,V,$),dt=Ce;if(Ce=!1,ye&&!Ne){for(let P=0;P<ye;P++)fe=this.buildBevelVert(R,B,(te+P)%H,P/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe;Ce=!0}else if(!ye&&Ne)for(let P=0;P<Ne;P++)Te=this.buildBevelVert(R,k,(V+P)%X,P/(Ne-1)),y.push(ge.topN,de.topP,Te.topP),y.push(de.bottomP,ge.bottomN,Te.bottomP),ge=Te;else if(ye&&Ne)if(fe=this.buildBevelVert(R,B,te,0),Te=this.buildBevelVert(R,k,V,0),dt?(y.push(de.topN,Te.topP,ge.topN),y.push(de.topN,fe.topP,Te.topP),y.push(Te.bottomP,de.bottomN,ge.bottomN),y.push(Te.bottomP,fe.bottomP,de.bottomN)):(y.push(ge.topN,de.topN,fe.topP),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Te.bottomP)),de=fe,ge=Te,ye===Ne)for(let P=1;P<ye;P++)fe=this.buildBevelVert(R,B,(te+P)%H,P/(ye-1)),Te=this.buildBevelVert(R,k,(V+P)%X,P/(Ne-1)),y.push(de.topN,fe.topP,ge.topN),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Te.bottomP),de=fe,ge=Te;else if(ye>Ne){let P=ye/Ne,D=0;for(let K=1;K<ye;K++)fe=this.buildBevelVert(R,B,(te+K)%H,K/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe,K>(D+1)*P&&(D++,Te=this.buildBevelVert(R,k,(V+D)%X,D/(Ne-1)),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,ge.bottomN,Te.bottomP),ge=Te)}else{let P=Ne/ye,D=0;for(let K=1;K<Ne;K++)Te=this.buildBevelVert(R,k,(V+K)%X,K/(Ne-1)),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,ge.bottomN,Te.bottomP),ge=Te,K>(D+1)*P&&(D++,fe=this.buildBevelVert(R,B,(te+D)%H,D/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe)}te=(te+ye)%H,V=(V+Ne)%X,ae=(ae+1)%q}while(ae!==le)}{let G=Y[0];for(let B=0,k=G.boundary.vertexCount;B<k;B++){let H=this.buildBevelVert(R,G,B),X=this.buildBevelVert(R,G,(B+1)%k);y.push(X.topP,H.topN,H.bottomN),y.push(X.topP,H.bottomN,X.bottomP)}}if(v){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let k=y[B-2],H=y[B-1],X=y[B-0];G.push(X,H,k)}y.splice(F,y.length-F,...G)}if(v){let G=[];for(let B=Y[Y.length-1].boundary.vertices.length-1;B>=1;B-=2){let k=Y[Y.length-1].boundary.vertices[B-1],H=Y[Y.length-1].boundary.vertices[B-0];G.push(k,H)}x.push(G)}if(!v){let G=Y[Y.length-1],B=Co({windingRule:Y.length>1?Bt.POSITIVE:Bt.ODD,elementType:dn.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...x]});if(!B)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let k=0;k<B.elementCount*3;k+=3){let H=this.buildSurfaceVert(B,B.elements[k+0]),X=this.buildSurfaceVert(B,B.elements[k+1]),q=this.buildSurfaceVert(B,B.elements[k+2]);y.push(H.top,X.top,q.top),y.push(q.bottom,X.bottom,H.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new je(Uint32Array.from(y),1),b=new je(this._buffer.positions,3),_=new je(this._buffer.normals,3),A=new je(this._buffer.uvs,2);b.needsUpdate=!0,_.needsUpdate=!0,A.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",_),this.setAttribute("uv",A),this.setIndex(w)}buildSurfaceVert(t,n){let i=n.toString();if(i in this.vertexCache)return this.vertexCache[i];let s=t.vertices[n*2+0],o=t.vertices[n*2+1],a=(s-this._minX)/this._width,l=(o-this._minY)/this._height,u=this._buffer.get(2),c=u*3,h=u*2,d={top:u+0,bottom:u+1};return this._buffer.positions[c+0]=s,this._buffer.positions[c+1]=o,this._buffer.positions[c+2]=this._depth,this._buffer.normals[c+0]=0,this._buffer.normals[c+1]=0,this._buffer.normals[c+2]=1,this._buffer.uvs[h+0]=a,this._buffer.uvs[h+1]=l,this._buffer.positions[c+3]=s,this._buffer.positions[c+4]=o,this._buffer.positions[c+5]=0,this._buffer.normals[c+3]=0,this._buffer.normals[c+4]=0,this._buffer.normals[c+5]=-1,this._buffer.uvs[h+2]=a,this._buffer.uvs[h+3]=l,this.vertexCache[i]=d,d}buildBevelVert(t,n,i,s=1){let o=`${n.bevelI}:${i}`;if(o in this.vertexCache)return this.vertexCache[o];let[a,l]=n.boundary.vertexIndices[i],u,c,h,d;a!==l?(c=a,u=l,d=!1,h=t.continuous[c]&&t.continuous[u]):(u=a,c=(u-1+t.count)%t.count,d=t.concave[u]&&n.bevelI>0,h=t.continuous[u]||d);let f=Math.cos(n.angle),m=Math.sin(n.angle),p=i*2,g=u*2,y=c*2,x=n.boundary.vertices[p+0],w=n.boundary.vertices[p+1],b=(1-m)*this._bevelSize,_=(x-this._minX)/this._width,A=(w-this._minY)/this._height,M=t.normals[g+0],v=t.normals[g+1],T=t.normals[y+0],E=t.normals[y+1];if(d){let W=T-M,j=E-v;M=M+W*(1-s),v=v+j*(1-s);let Z=Math.sqrt(M*M+v*v);M/=Z,v/=Z}let C=this._buffer.get(h?2:4),L=C*3,R=C*2,O={i,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[L+0]=x,this._buffer.positions[L+1]=w,this._buffer.positions[L+2]=this._depth-b,this._buffer.normals[L+0]=M*f,this._buffer.normals[L+1]=v*f,this._buffer.normals[L+2]=m,this._buffer.uvs[R+0]=_,this._buffer.uvs[R+1]=A,this._buffer.positions[L+3]=x,this._buffer.positions[L+4]=w,this._buffer.positions[L+5]=b,this._buffer.normals[L+3]=M*f,this._buffer.normals[L+4]=v*f,this._buffer.normals[L+5]=-m,this._buffer.uvs[R+2]=A,this._buffer.uvs[R+3]=_,h||(C+=2,L+=6,R+=4,O.topP=C+0,O.bottomP=C+1,this._buffer.positions[L+0]=x,this._buffer.positions[L+1]=w,this._buffer.positions[L+2]=this._depth-b,this._buffer.normals[L+0]=T*f,this._buffer.normals[L+1]=E*f,this._buffer.normals[L+2]=m,this._buffer.uvs[R+0]=_,this._buffer.uvs[R+1]=A,this._buffer.positions[L+3]=x,this._buffer.positions[L+4]=w,this._buffer.positions[L+5]=b,this._buffer.normals[L+3]=T*f,this._buffer.normals[L+4]=E*f,this._buffer.normals[L+5]=-m,this._buffer.uvs[R+2]=A,this._buffer.uvs[R+3]=_),this.vertexCache[o]=O,O}clone(){let t=new fl(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return t.userData=Fc(this.userData),t}};var qn=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters),n=Math.abs(t.width),i=Math.abs(t.height??t.width),s=Math.abs(t.depth??0),o=r.shape??e?.shape,a=o?.roundness??t.roundness;o!==void 0&&(o instanceof vt?(o.width!==n||o.height!==i)&&o.applySize(n,i):o=new vt(n,i).fromJSON(o),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&o.update(!1));let l=o??new vt(n,i);return{parameters:Object.assign(t,{width:n,height:i,depth:s,roundness:a}),shape:l}}static build(r){let{depth:e,extrudeBevelSize:t,extrudeBevelSegments:n,subdivisions:i,roundness:s}=r.parameters;r.shape.roundness=s;let o;return e<=0?o=new dl(r.shape,i):o=new fl(r.shape,e,t,i,n),Object.assign(o,{userData:{...r,type:"VectorGeometry"}})}};var X_=Math.PI*2,Y_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t,spikes:n,angle:i,innerRadius:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}=r.parameters,u=r.shape,c=e*.5,h=t*.5,d=vB(u,c,h,i*Math.PI/180,n,s);u.isClosed=!0,u.update();let f=qn.create({shape:u,parameters:{subdivisions:d,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(f,{userData:{...r,type:"EllipseGeometry"}})}};function vB(r,e,t,n,i,s){if(n>=X_)return i>30||i%4===0?(bB(r,e,t,s),Math.round(i/4)):q_(r,n,i,e,t,s);let o={x:0,y:t},a=n+Math.PI*.5,l={x:Math.cos(a)*e,y:Math.sin(a)*t},u=k_({px:o.x,py:o.y,cx:l.x,cy:l.y,rx:e,ry:t,largeArcFlag:n>Math.PI,sweepFlag:!0});return i>30||i%u.length===0?xB(r,o.x,o.y,u,i,e,t,s):q_(r,n,i,e,t,s)}function xB(r,e,t,n,i,s,o,a){let l=Math.round(i/n.length);r.addPoint(pl(e,t));for(let u=0,c=n.length;u<c;u++){let h=n[u],d=r.points[u],f=pl(h.x,h.y);d.controls[1].position.set(h.x1,h.y1),f.controls[0].position.set(h.x2,h.y2),r.addPoint(f)}return a>0?Q_(r,s,o,a):r.addPoint(pl(0,0)),l}function q_(r,e,t,n,i,s){let o=-e/t;for(let a=0;a<=t;a++){let l=o*a,u=Math.sin(l)*n,c=Math.cos(l)*i;r.addPoint(pl(u,c))}return e<X_?s>0?Q_(r,n,i,s):r.addPoint(pl(0,0)):(r.removePoint(r.points[r.points.length-1]),s>0&&Z_(r,n,i,s)),1}function bB(r,e,t,n=0,i=0,s=0){let o=.5522847498,a=e*o,l=t*o;r.addPoint(of(i-e,s,i-e,s-l,i-e,s+l)),r.addPoint(of(i,s+t,i-a,s+t,i+a,s+t)),r.addPoint(of(i+e,s,i+e,s+l,i+e,s-l)),r.addPoint(of(i,s-t,i+a,s-t,i-a,s-t)),n>0&&Z_(r,e,t,n)}function pl(r,e){return new Vr(Je.generateUUID(),new N(r,e))}function of(r,e,t,n,i,s){let o=pl(r,e);return o.controls[0].position.set(t,n),o.controls[1].position.set(i,s),o}function Q_(r,e,t,n){K_(r,e,t,n).forEach(s=>r.addPoint(s))}function Z_(r,e,t,n){let i=K_(r,e,t,n),s=new vt;i.forEach(o=>s.addPoint(o)),s.isClosed=!0,r.shapeHoles.push(s)}function K_(r,e,t,n){let i=n*e/100,s=i*(Math.abs(t)/Math.abs(e)),o=new N(i/e,s/t),a=r.points.map(l=>{let u=l.clone();return u.uuid=Je.generateUUID(),u}).reverse();return a.forEach(l=>{l.position.multiply(o);let u=l.controls[0].position.clone().multiply(o),c=l.controls[1].position.clone().multiply(o);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),a}var J_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},r.parameters),n=Math.abs(t.width),i=Math.abs(t.height??n),s=Math.abs(t.depth??n),o=Math.abs(Math.min(n,s))/2;return{parameters:Object.assign(t,{width:n,height:i,depth:s,radius:o,segments:Math.round(t.segments),pathSegments:Math.round(t.pathSegments),cornerSegments:Math.round(t.cornerSegments)})}}static build(r){let{width:e,height:t,depth:n,radius:i,revolutions:s,segments:o,pathRadius:a,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:h}=r.parameters,d=new ou(!1,e,t,n,i,s,o,a,l,u,c,h);return Object.assign(d,{userData:{...r,type:"HelixGeometry"}})}},ou=class extends Pe{constructor(e=!0,t=1,n=1,i=1,s=1,o=1,a=1,l=1,u=1,c=1,h=1,d=1){super();let f=e&&o===1;f&&(d=0),h>100&&(h=100);let m=()=>new S,p=new S,g=m(),y=m(),x=m(),w,b,_,A,M,v,T,E,C=m(),L=m(),R=m(),O=m(),W=m(),j=m(),Z=m(),Y=m(),z=n-2*l+.001,F=z/o,G=Math.ceil(a*o),B=G+1,k=z/G,H=-z/2,X=c+1,q=2*Math.PI/c,ae=Math.PI/2/d,$=.01,te=Math.min((1-h/100)*l,l-$),V=l-te,le=0,ce=2,oe=d*ce+ce,de=X*oe/ce,ge=de+X*B,fe=X*(B+oe),[Te,Ce,ye]=[3,3,2].map(ve=>Array(fe*ve).fill(0)),Ne=[],dt=s-l;function P(ve,U){let xe=Math.PI/2;v=U*k,E=2*Math.PI*(v%F)/F+xe,v+=H,T=Math.sin(E)*dt,M=Math.cos(E)*dt,e?ve.set(M,T,v):ve.set(M,v,T)}P(p,-1e-10),P(g,0),C.copy(p),P(p,1);let D=p.distanceTo(g),K=V+te,he=D*G+2*K,pe=te,Ee=he-K;for(let ve=0;ve<=G;ve++){P(y,ve),Y.subVectors(y,C).normalize(),C.copy(y),j.copy(y).setComponent(+e+1,0).normalize(),Z.crossVectors(Y,j).normalize();let U=ve===0,xe=ve===G,Se=U?3*Math.PI/2:ae,Xe=U?pe:Ee,Le=U?X:ge,Ye=U?0:fe-X,be=Y.clone().multiplyScalar(U?-V:V).add(y),Qe=Y.clone().multiplyScalar(U?-1:1).normalize();for(let tt=0;tt<X;tt++){let ft=tt*q;if(L.addVectors(p.copy(j).multiplyScalar(l*Math.cos(ft)),g.copy(Z).multiplyScalar(l*Math.sin(ft))),R.copy(L).normalize(),U||xe){f||(le=Ye+tt,[0,1,2].forEach(wt=>{Te[le*3+wt]=be.getComponent(wt),Ce[le*3+wt]=Qe.getComponent(wt)}),ye[le*2]=+xe,ye[le*2+1]=tt/c),g.copy(R).multiplyScalar(te),x.addVectors(y,g);for(let wt=0;wt<d;wt++){let Yn=wt*ae+Se;O.addVectors(p.copy(Y).multiplyScalar(V*Math.sin(Yn)),g.copy(R).multiplyScalar(V*Math.cos(Yn))),W.copy(O).normalize(),g.addVectors(x,O),O.normalize(),le=Le+wt*X+tt,[0,1,2].forEach(zo=>{Te[le*3+zo]=g.getComponent(zo),Ce[le*3+zo]=W.getComponent(zo)});let Hu=+U+Math.sin(Yn);ye[le*2]=(Xe+V*Hu)/he,ye[le*2+1]=tt/c}}g.addVectors(y,L),le=de+ve*X+tt,[0,1,2].forEach(wt=>{Te[le*3+wt]=g.getComponent(wt),Ce[le*3+wt]=R.getComponent(wt)}),ye[le*2]=(K+ve*D)/he,ye[le*2+1]=tt/c}}let Fe=B+2*d+ce,re=1,[Be,Ie]=f?[re,re+B-1]:[0,Fe-1];for(let ve=Be;ve<=Ie-1;ve++){let U=f&&ve===Ie-1;for(let xe=0;xe<X-1;xe++)w=ve*X+xe,b=w+1,_=(U?xe:w)+X,A=(U?xe+1:b)+X,ve===0?Ne.push(b,A,_):ve===Fe-2?Ne.push(w,b,_):Ne.push(w,b,_,b,A,_)}this.setIndex(Ne),this.setAttribute("position",new _e(Te,3)),this.setAttribute("normal",new _e(Ce,3)),this.setAttribute("uv",new _e(ye,2))}};var $_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new au(e*.5,s,o):new ya(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"IcosahedronGeometry"}})}},au=class extends Ns{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],o=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(s,o,a,e,t,n),this.type=a}static fromJSON(e){return new au(e.radius,e.corner,e.cornerSides)}};var eS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){(r.parameters?.points??[]).forEach(n=>{Array.isArray(n)&&(n.x=n[0],n.y=n[1])});let t=Object.assign({},e?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{points:e,segments:t,verticalSegments:n}=r.parameters,i=new Nr;i.moveTo(e[0].x,e[0].y),i.bezierCurveTo(e[1].x,e[1].y,e[2].x,e[2].y,e[3].x,e[3].y);let s=new fa(i.extractPoints(n).shape,t);return s.rotateZ(Math.PI),Object.assign(s,{userData:{...r,type:"LatheGeometry"}})}};var hi=new Oe,Zg=new ot,af=new S,Fs=class extends Rt{constructor(){super(),this.uuid=Je.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(e){let t=new Gt().getNormalMatrix(e);for(let n=0,i=this.vertices.length;n<i;n++)this.vertices[n].applyMatrix4(e);for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];s.normal.applyMatrix3(t).normalize();for(let o=0,a=s.vertexNormals.length;o<a;o++)s.vertexNormals[o].applyMatrix3(t).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return hi.makeRotationX(e),this.applyMatrix4(hi),this}rotateY(e){return hi.makeRotationY(e),this.applyMatrix4(hi),this}rotateZ(e){return hi.makeRotationZ(e),this.applyMatrix4(hi),this}translate(e,t,n){return hi.makeTranslation(e,t,n),this.applyMatrix4(hi),this}scale(e,t,n){return hi.makeScale(e,t,n),this.applyMatrix4(hi),this}lookAt(e){return Zg.lookAt(e),Zg.updateMatrix(),this.applyMatrix4(Zg.matrix),this}fromBufferGeometry(e){let t=this,n=e.index!==null?e.index:void 0,i=e.attributes;if(i.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let s=i.position,o=i.normal,a=i.color,l=i.uv,u=i.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<s.count;d++)t.vertices.push(new S().fromBufferAttribute(s,d)),a!==void 0&&t.colors.push(new Re().fromBufferAttribute(a,d));function c(d,f,m,p){let g=a===void 0?[]:[t.colors[d].clone(),t.colors[f].clone(),t.colors[m].clone()],y=o===void 0?[]:[new S().fromBufferAttribute(o,d),new S().fromBufferAttribute(o,f),new S().fromBufferAttribute(o,m)],x=new ml(d,f,m,y,g,p);t.faces.push(x),l!==void 0&&t.faceVertexUvs[0].push([new N().fromBufferAttribute(l,d),new N().fromBufferAttribute(l,f),new N().fromBufferAttribute(l,m)]),u!==void 0&&t.faceVertexUvs[1].push([new N().fromBufferAttribute(u,d),new N().fromBufferAttribute(u,f),new N().fromBufferAttribute(u,m)])}let h=e.groups;if(h.length>0)for(let d=0;d<h.length;d++){let f=h[d],m=f.start,p=f.count;for(let g=m,y=m+p;g<y;g+=3)n!==void 0?c(n.getX(g),n.getX(g+1),n.getX(g+2),f.materialIndex):c(g,g+1,g+2,f.materialIndex)}else if(n!==void 0)for(let d=0;d<n.count;d+=3)c(n.getX(d),n.getX(d+1),n.getX(d+2));else for(let d=0;d<s.count;d+=3)c(d,d+1,d+2);return this.computeFaceNormals(),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(af).negate(),this.translate(af.x,af.y,af.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,n=t===0?1:1/t,i=new Oe;return i.set(n,0,0,-n*e.x,0,n,0,-n*e.y,0,0,n,-n*e.z,0,0,0,1),this.applyMatrix4(i),this}computeFaceNormals(){let e=new S,t=new S;for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=this.vertices[s.a],a=this.vertices[s.b],l=this.vertices[s.c];e.subVectors(l,a),t.subVectors(o,a),e.cross(t),e.normalize(),s.normal.copy(e)}}computeVertexNormals(e=!0){let t=new Array(this.vertices.length);for(let n=0,i=this.vertices.length;n<i;n++)t[n]=new S;if(e){let n=new S,i=new S;for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=this.vertices[a.a],u=this.vertices[a.b],c=this.vertices[a.c];n.subVectors(c,u),i.subVectors(l,u),n.cross(i),t[a.a].add(n),t[a.b].add(n),t[a.c].add(n)}}else{this.computeFaceNormals();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];t[s.a].add(s.normal),t[s.b].add(s.normal),t[s.c].add(s.normal)}}for(let n=0,i=this.vertices.length;n<i;n++)t[n].normalize();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=s.vertexNormals;o.length===3?(o[0].copy(t[s.a]),o[1].copy(t[s.b]),o[2].copy(t[s.c])):(o[0]=t[s.a].clone(),o[1]=t[s.b].clone(),o[2]=t[s.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let n=this.faces[e],i=n.vertexNormals;i.length===3?(i[0].copy(n.normal),i[1].copy(n.normal),i[2].copy(n.normal)):(i[0]=n.normal.clone(),i[1]=n.normal.clone(),i[2]=n.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.__originalFaceNormal?i.__originalFaceNormal.copy(i.normal):i.__originalFaceNormal=i.normal.clone(),i.__originalVertexNormals||(i.__originalVertexNormals=[]);for(let s=0,o=i.vertexNormals.length;s<o;s++)i.__originalVertexNormals[s]?i.__originalVertexNormals[s].copy(i.vertexNormals[s]):i.__originalVertexNormals[s]=i.vertexNormals[s].clone()}let e=new Fs;e.faces=this.faces;for(let t=0,n=this.morphTargets.length;t<n;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let s=this.morphNormals[t].faceNormals,o=this.morphNormals[t].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let u=new S,c={a:new S,b:new S,c:new S};s.push(u),o.push(c)}}let i=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=i.faceNormals[s],u=i.vertexNormals[s];l.copy(a.normal),u.a.copy(a.vertexNormals[0]),u.b.copy(a.vertexNormals[1]),u.c.copy(a.vertexNormals[2])}}for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.normal=i.__originalFaceNormal,i.vertexNormals=i.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new _n),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ln),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,n=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let i,s=this.vertices.length,o=this.vertices,a=e.vertices,l=this.faces,u=e.faces,c=this.colors,h=e.colors;t!==void 0&&(i=new Gt().getNormalMatrix(t));for(let d=0,f=a.length;d<f;d++){let p=a[d].clone();t!==void 0&&p.applyMatrix4(t),o.push(p)}for(let d=0,f=h.length;d<f;d++)c.push(h[d].clone());for(let d=0,f=u.length;d<f;d++){let m=u[d],p,g,y=m.vertexNormals,x=m.vertexColors,w=new ml(m.a+s,m.b+s,m.c+s);w.normal.copy(m.normal),i!==void 0&&w.normal.applyMatrix3(i).normalize();for(let b=0,_=y.length;b<_;b++)p=y[b].clone(),i!==void 0&&p.applyMatrix3(i).normalize(),w.vertexNormals.push(p);w.color.copy(m.color);for(let b=0,_=x.length;b<_;b++)g=x[b],w.vertexColors.push(g.clone());w.materialIndex=m.materialIndex+n,l.push(w)}for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let m=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let p=0,g=m.length;p<g;p++){let y=m[p],x=[];for(let w=0,b=y.length;w<b;w++)x.push(y[w].clone());this.faceVertexUvs[d].push(x)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},n=[],i=[],s=Math.pow(10,e);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],h=Math.round(c.x*s)+"_"+Math.round(c.y*s)+"_"+Math.round(c.z*s);t[h]===void 0?(t[h]=l,n.push(this.vertices[l]),i[l]=n.length-1):i[l]=i[t[h]]}let o=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=i[c.a],c.b=i[c.b],c.c=i[c.c];let h=[c.a,c.b,c.c];for(let d=0;d<3;d++)if(h[d]===h[(d+1)%3]){o.push(l);break}}for(let l=o.length-1;l>=0;l--){let u=o[l];this.faces.splice(u,1);for(let c=0,h=this.faceVertexUvs.length;c<h;c++)this.faceVertexUvs[c].splice(u,1)}let a=this.vertices.length-n.length;return this.vertices=n,a}setFromPoints(e){this.vertices=[];for(let t=0,n=e.length;t<n;t++){let i=e[t];this.vertices.push(new S(i.x,i.y,i.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let l=0;l<t;l++)e[l]._id=l;function n(l,u){return l.materialIndex-u.materialIndex}e.sort(n);let i=this.faceVertexUvs[0],s=this.faceVertexUvs[1],o,a;i&&i.length===t&&(o=[]),s&&s.length===t&&(a=[]);for(let l=0;l<t;l++){let u=e[l]._id;o&&o.push(i[u]),a&&a.push(s[u])}o&&(this.faceVertexUvs[0]=o),a&&(this.faceVertexUvs[1]=a)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let p in m)m[p]!==void 0&&(e[p]=m[p]);return e}let t=[];for(let m=0;m<this.vertices.length;m++){let p=this.vertices[m];t.push(p.x,p.y,p.z)}let n=[],i=[],s={},o=[],a={},l=[],u={};for(let m=0;m<this.faces.length;m++){let p=this.faces[m],g=!0,y=!1,x=this.faceVertexUvs[0][m]!==void 0,w=p.normal.length()>0,b=p.vertexNormals.length>0,_=p.color.r!==1||p.color.g!==1||p.color.b!==1,A=p.vertexColors.length>0,M=0;if(M=c(M,0,0),M=c(M,1,g),M=c(M,2,y),M=c(M,3,x),M=c(M,4,w),M=c(M,5,b),M=c(M,6,_),M=c(M,7,A),n.push(M),n.push(p.a,p.b,p.c),n.push(p.materialIndex),x){let v=this.faceVertexUvs[0][m];n.push(f(v[0]),f(v[1]),f(v[2]))}if(w&&n.push(h(p.normal)),b){let v=p.vertexNormals;n.push(h(v[0]),h(v[1]),h(v[2]))}if(_&&n.push(d(p.color)),A){let v=p.vertexColors;n.push(d(v[0]),d(v[1]),d(v[2]))}}function c(m,p,g){return g?m|1<<p:m&~(1<<p)}function h(m){let p=m.x.toString()+m.y.toString()+m.z.toString();return s[p]!==void 0||(s[p]=i.length/3,i.push(m.x,m.y,m.z)),s[p]}function d(m){let p=m.r.toString()+m.g.toString()+m.b.toString();return a[p]!==void 0||(a[p]=o.length,o.push(m.getHex())),a[p]}function f(m){let p=m.x.toString()+m.y.toString();return u[p]!==void 0||(u[p]=l.length/2,l.push(m.x,m.y)),u[p]}return e.data={},e.data.vertices=t,e.data.normals=i,o.length>0&&(e.data.colors=o),l.length>0&&(e.data.uvs=[l]),e.data.faces=n,e}clone(){return new Fs().copy(this)}copy(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;let t=e.vertices;for(let d=0,f=t.length;d<f;d++)this.vertices.push(t[d].clone());let n=e.colors;for(let d=0,f=n.length;d<f;d++)this.colors.push(n[d].clone());let i=e.faces;for(let d=0,f=i.length;d<f;d++)this.faces.push(i[d].clone());for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let m=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let p=0,g=m.length;p<g;p++){let y=m[p],x=[];for(let w=0,b=y.length;w<b;w++){let _=y[w];x.push(_.clone())}this.faceVertexUvs[d].push(x)}}let s=e.morphTargets;for(let d=0,f=s.length;d<f;d++){let m={};if(m.name=s[d].name,s[d].vertices!==void 0){m.vertices=[];for(let p=0,g=s[d].vertices.length;p<g;p++)m.vertices.push(s[d].vertices[p].clone())}if(s[d].normals!==void 0){m.normals=[];for(let p=0,g=s[d].normals.length;p<g;p++)m.normals.push(s[d].normals[p].clone())}this.morphTargets.push(m)}let o=e.morphNormals;for(let d=0,f=o.length;d<f;d++){let m={};if(o[d].vertexNormals!==void 0){m.vertexNormals=[];for(let p=0,g=o[d].vertexNormals.length;p<g;p++){let y=o[d].vertexNormals[p],x={};x.a=y.a.clone(),x.b=y.b.clone(),x.c=y.c.clone(),m.vertexNormals.push(x)}}if(o[d].faceNormals!==void 0){m.faceNormals=[];for(let p=0,g=o[d].faceNormals.length;p<g;p++)m.faceNormals.push(o[d].faceNormals[p].clone())}this.morphNormals.push(m)}let a=e.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[d].clone());let l=e.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let u=e.lineDistances;for(let d=0,f=u.length;d<f;d++)this.lineDistances.push(u[d]);let c=e.boundingBox;c!==null&&(this.boundingBox=c.clone());let h=e.boundingSphere;return h!==null&&(this.boundingSphere=h.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new Kg().fromGeometry(this),t=new Pe,n=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new je(n,3).copyVector3sArray(e.vertices)),e.normals.length>0){let i=new Float32Array(e.normals.length*3);t.setAttribute("normal",new je(i,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let i=new Float32Array(e.colors.length*3);t.setAttribute("color",new je(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let i=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new je(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new je(i,2).copyVector2sArray(e.uvs2))}t.groups=e.groups;for(let i in e.morphTargets){let s=[],o=e.morphTargets[i];for(let a=0,l=o.length;a<l;a++){let u=o[a],c=new _e(u.data.length*3,3);c.name=u.name,s.push(c.copyVector3sArray(u.data))}t.morphAttributes[i]=s}if(e.skinIndices.length>0){let i=new _e(e.skinIndices.length*4,4);t.setAttribute("skinIndex",i.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let i=new _e(e.skinWeights.length*4,4);t.setAttribute("skinWeight",i.copyVector4sArray(e.skinWeights))}return e.boundingSphere!==null&&(t.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new Pe,n=e.geometry;if(e.isPoints||e.isLine){let i=new _e(n.vertices.length*3,3),s=new _e(n.colors.length*3,3);if(t.setAttribute("position",i.copyVector3sArray(n.vertices)),t.setAttribute("color",s.copyColorsArray(n.colors)),n.lineDistances&&n.lineDistances.length===n.vertices.length){let o=new _e(n.lineDistances.length,1);t.setAttribute("lineDistance",o.copyArray(n.lineDistances))}n.boundingSphere!==null&&(t.boundingSphere=n.boundingSphere.clone()),n.boundingBox!==null&&(t.boundingBox=n.boundingBox.clone())}else e.isMesh&&(t=n.toBufferGeometry());return t}};Fs.prototype.isGeometry=!0;var Kg=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(e){let t=[],n,i,s,o=e.faces;for(i=0;i<o.length;i++){let a=o[i];a.materialIndex!==s&&(s=a.materialIndex,n!==void 0&&(n.count=i*3-n.start,t.push(n)),n={start:i*3,materialIndex:s})}n!==void 0&&(n.count=i*3-n.start,t.push(n)),this.groups=t}fromGeometry(e){let t=e.faces,n=e.vertices,i=e.faceVertexUvs,s=i[0]&&i[0].length>0,o=i[1]&&i[1].length>0,a=e.morphTargets,l=a.length,u;if(l>0){u=[];for(let y=0;y<l;y++)u[y]={name:a[y].name,data:[]};this.morphTargets.position=u}let c=e.morphNormals,h=c.length,d;if(h>0){d=[];for(let y=0;y<h;y++)d[y]={name:c[y].name,data:[]};this.morphTargets.normal=d}let f=e.skinIndices,m=e.skinWeights,p=f.length===n.length,g=m.length===n.length;n.length>0&&t.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<t.length;y++){let x=t[y];this.vertices.push(n[x.a],n[x.b],n[x.c]);let w=x.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let _=x.normal;this.normals.push(_,_,_)}let b=x.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let _=x.color;this.colors.push(_,_,_)}if(s===!0){let _=i[0][y];_!==void 0?this.uvs.push(_[0],_[1],_[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new N,new N,new N))}if(o===!0){let _=i[1][y];_!==void 0?this.uvs2.push(_[0],_[1],_[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new N,new N,new N))}for(let _=0;_<l;_++){let A=a[_].vertices;u[_].data.push(A[x.a],A[x.b],A[x.c])}for(let _=0;_<h;_++){let A=c[_].vertexNormals[y];d[_].data.push(A.a,A.b,A.c)}p&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),g&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),this}},ml=class{constructor(e,t,n,i,s,o=0){this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new S,this.vertexNormals=Array.isArray(i)?i:[],this.color=s&&s.isColor?s:new Re,this.vertexColors=Array.isArray(s)?s:[],this.materialIndex=o}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,n=e.vertexNormals.length;t<n;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,n=e.vertexColors.length;t<n;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}};var wB=["a","b","c"];function _B(r,e){switch(e){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function Jg(r,e,t){let n=Math.min(r,e),i=Math.max(r,e),s=n+"_"+i;return t.get(s)}function $g(r,e,t,n,i,s){let o=Math.min(r,e),a=Math.max(r,e),l=o+"_"+a,u;if(n.has(l))u=n.get(l);else{let c=t[o],h=t[a];u={a:c,b:h,newEdge:null,faces:[]},n.set(l,u)}u.faces.push(i),s[r].edges.push(u),s[e].edges.push(u)}function SB(r,e,t,n){let i,s,o;for(i=0,s=r.length;i<s;i++)t[i]={edges:[]};for(i=0,s=e.length;i<s;i++)o=e[i],$g(o.a,o.b,r,n,o,t),$g(o.b,o.c,r,n,o,t),$g(o.c,o.a,r,n,o,t)}function lf(r,e,t,n,i){r.push(new ml(e,t,n,void 0,void 0,i))}function gl(r,e){return Math.abs(e-r)/2+Math.min(r,e)}function cf(r,e,t,n){r.push([e.clone(),t.clone(),n.clone()])}var uf=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof Pe?e=new Fs().fromBufferGeometry(e):e=e.clone(),e.mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new S,n,i,s,o,a,l=e.vertices,u=e.faces,c=e.faceVertexUvs[0],h=c!==void 0&&c.length>0,d=[],f=new Map;SB(l,u,d,f);let m=[],p,g,y,x,w,b,_;for(let $ of Array.from(f.keys())){for(g=f.get($),y=new S,w=3/8,b=1/8,_=g.faces.length,_!=2&&(w=.5,b=0,_!=1),y.addVectors(g.a,g.b).multiplyScalar(w),t.set(0,0,0),o=0;o<_;o++){for(x=g.faces[o],a=0;a<3&&(p=l[_B(x,wB[a])],!(p!==g.a&&p!==g.b));a++);p&&t.add(p)}t.multiplyScalar(b),y.add(t),g.newEdge=m.length,m.push(y)}let A,M,v,T,E,C,L,R=[];for(i=0,s=l.length;i<s;i++){for(C=l[i],E=d[i].edges,n=E.length,n==3?A=3/16:n>3&&(A=3/(8*n)),M=1-n*Number(A),v=A,n<=2&&(n==2?(M=3/4,v=1/8):n==1||n==0),L=C.clone().multiplyScalar(M),t.set(0,0,0),o=0;o<n;o++)T=E[o],p=T.a!==C?T.a:T.b,t.add(p);t.multiplyScalar(Number(v)),L.add(t),R.push(L)}let O=R.concat(m),W=R.length,j,Z,Y,z=[],F=[],G,B,k,H,X=new N,q=new N,ae=new N;for(i=0,s=u.length;i<s;i++)x=u[i],j=Number(Jg(x.a,x.b,f).newEdge)+W,Z=Number(Jg(x.b,x.c,f).newEdge)+W,Y=Number(Jg(x.c,x.a,f).newEdge)+W,lf(z,j,Z,Y,x.materialIndex),lf(z,x.a,j,Y,x.materialIndex),lf(z,x.b,Z,j,x.materialIndex),lf(z,x.c,Y,Z,x.materialIndex),h&&(G=c[i],B=G[0],k=G[1],H=G[2],X.set(gl(B.x,k.x),gl(B.y,k.y)),q.set(gl(k.x,H.x),gl(k.y,H.y)),ae.set(gl(B.x,H.x),gl(B.y,H.y)),cf(F,X,q,ae),cf(F,B,X,ae),cf(F,k,q,X),cf(F,H,ae,q));e.vertices=O,e.faces=z,h&&(e.faceVertexUvs[0]=F)}};var fn=new S,tS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=r.geometry??e?.geometry??new Pe().copy(new Qn(100,100,100)),n;e===void 0?(t.computeBoundingBox(),t.boundingBox.getSize(fn),n={width:fn.x,height:fn.y,depth:fn.z,subdivisions:0}):n=e.parameters;let i={...n,...r.parameters};return{parameters:{width:Math.abs(i.width),height:Math.abs(i.height),depth:Math.abs(i.depth),subdivisions:Math.abs(i.subdivisions)},geometry:t}}static build(r){let{width:e,height:t,depth:n,subdivisions:i}=r.parameters,s=r.geometry??new Pe().copy(new Qn(100,100,100)),o=s.userData.parameters;o===void 0?(s.computeBoundingBox(),s.boundingBox.getSize(fn)):fn.set(o.width,o.height,o.depth),(e!==fn.x||t!==fn.y||n!==fn.z)&&s.scale(fn.x===0?1:e/fn.x,fn.y===0?1:t/fn.y,fn.z===0?1:n/fn.z);let a=s.originalGeometry;return i>0?(a===void 0||o?.subdivisions!==i)&&(a===void 0&&(a=s),s=new uf(i).modify(a).toBufferGeometry()):(a!==void 0&&(s=a),a=void 0,s.getAttribute("normal")===void 0&&s.computeVertexNormals()),a!==void 0&&Object.assign(s,{originalGeometry:a}),delete r.geometry,Object.assign(s,{userData:{...r,type:"NonParametricGeometry"}})}static loadFromUrl(r,e,t){new _a(t).load(r,i=>{let s=this.normalizeInputs({geometry:i});i.boundingBox.getSize(fn);let o=100/fn.x;Object.assign(s.parameters,{width:100,height:fn.y*o,depth:fn.z*o}),e(this.build(s))})}};var nS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t,spikes:n,cornerRadius:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}=r.parameters,l=r.shape,u=e*.5,c=t*.5,h=0,d=0,f=2*Math.PI/n;for(let p=0;p<n;p++){let g=f*p,y=h+Math.sin(g)*u,x=d+Math.cos(g)*c;l.addPoint(l.createPoint(y,x))}l.isClosed=!0;for(let p=0,g=l.points.length;p<g;p++)l.points[p].roundness=i;l.roundness=i,l.update();let m=qn.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...r,type:"PolygonGeometry"}})}};var rS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,heightSegments:s,openEnded:o,cornerRadius:a,cornerSegments:l}=r.parameters,u=new t0(e*.5,t,i,s,o,a,l);return u.scale(1,1,n/e),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function lu(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function e0(r,e,t,n,i,s){let o=e.clone().sub(r),a=t.clone().sub(r),l=o.angleTo(a);if(o.normalize(),a.normalize(),n===i){let u=o.add(a).normalize();s.copy(r).addScaledVector(u,n/Math.sin(l/2))}else{let u=o.angleTo(a);s.copy(r),s.addScaledVector(o,i/Math.sin(u)),s.addScaledVector(a,n/Math.sin(u))}}function AB(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.projectOnVector(i),n.add(e)}var t0=class extends Pe{constructor(e=.5,t=1,n=4,i=1,s=!1,o=0,a=4){super(),n=Math.floor(Math.max(3,n)),i=Math.floor(i),a=Math.floor(a);let l=[],u=[],c=[],h=[],d=0,f=t/2,m=Math.PI/n,p=e*Math.cos(Math.PI/n),g=2*Math.PI/n,y=(n-2)*Math.PI/n,x=Math.PI-y,w=new S(0,-f,0),b=new S(0,f,0),_=new N(e,-f),A=new N(p,-f),M=new N(0,b.y).sub(A),v=new N(0,b.y).sub(_),T=new N(M.y,-M.x).normalize(),E=new N(v.y,-v.x).normalize(),L=e*Math.cos(Math.PI/n)*Math.tan((Math.PI-M.angle())/2)-1e-8;o=Math.min(o,L);let R;{let F=new S(T.x,T.y,0),G=new S(Math.cos(g)*F.x,F.y,Math.sin(g)*F.x);R=F.angleTo(G)}let O=o/Math.tan((Math.PI-M.angle())/2),W=o/Math.tan((Math.PI-R)/2),j=new S;if(!s){u.push(w.x,w.y,w.z),c.push(0,-1,0),h.push(0,0);let F=d++,G=[],B=_.clone(),k=O/Math.cos(Math.PI/n);B.x-=k;for(let H=0;H<n;H++){let X=H/n*Math.PI*2+m,q=new N(Math.sin(X),Math.cos(X));lu(B,q,j),u.push(j.x,j.y,j.z),c.push(0,-1,0),h.push(0,0),G.push(d++)}for(let H=0;H<G.length;H++)l.push(G[H],F,G[(H+1)%G.length])}let Z=[];{let F=new S,G=new S,B=new S,k=new S,H=new S,X=new S;for(let q=0;q<n;q++){let ae=q/n*Math.PI*2+m,$=(q+.5)/n*Math.PI*2+m,te=(q+1)/n*Math.PI*2+m,V=new N(Math.sin(ae),Math.cos(ae)),le=new N(Math.sin($),Math.cos($)),ce=new N(Math.sin(te),Math.cos(te));lu(_,V,G),lu(_,ce,B),lu(T,le,F),e0(b,G,B,W,W,k),u.push(k.x,k.y,k.z),e0(G,b,B,W,O,H),u.push(H.x,H.y,H.z),e0(B,G,b,O,W,X),u.push(X.x,X.y,X.z),c.push(F.x,F.y,F.z),c.push(F.x,F.y,F.z),c.push(F.x,F.y,F.z),h.push(0,0),h.push(0,0),h.push(0,0);let oe=d++,de=d++,ge=d++;if(l.push(oe,de,ge),o>0){{let Ce=G.clone().add(B).multiplyScalar(.5),ye=b.clone().sub(Ce).normalize(),dt=w.clone().sub(Ce).normalize().add(ye).normalize().multiplyScalar(-1),P=X.clone().sub(H);Y(Ce,P,dt,M.angle())}let fe,Te;{let Ce=new S;lu(E,ce,Ce);let ye=X.clone().add(k).multiplyScalar(.5);ye=AB(ye,B,b);let Ne=X.clone().sub(k);[fe,Te]=Y(ye,Ne,Ce,R,k.y)}{let Ce=fe,ye=Ce.clone().setY(0).normalize(),Ne=new S(0,-1,0),dt=ye.clone().cross(Ne);z(Ce,ye,Ne,dt)}Z.concat(Te);{let Ce=M.angle(),ye=Math.PI-Ce,Ne=b.clone();Ne.y-=o/Math.sin(Ce-Math.PI/2);let dt=new S,P=[];for(let K=0;K<a;K++){let he=[],pe=Math.PI/2-ye*K/a,Ee=Math.cos(pe),Fe=Math.sin(pe),re=$;for(let Be=0;Be<=K;Be++){let Ie=Math.cos(re),ve=Math.sin(re);F.x=Ee*ve,F.y=Fe,F.z=Ee*Ie,dt.copy(Ne).addScaledVector(F,o),u.push(dt.x,dt.y,dt.z),c.push(F.x,F.y,F.z),h.push(0,0),he.push(d++),re+=Math.PI*2/K/n}P.push(he)}Te.reverse(),P.push(Te);let D=P.length-1;for(let K=0;K<D;K++){let he=P[K],pe=P[K+1],Ee=he.length-1;l.push(pe[1],he[0],pe[0]);for(let Fe=1;Fe<=Ee;Fe++)l.push(he[Fe],he[Fe-1],pe[Fe]),l.push(pe[Fe+1],he[Fe],pe[Fe])}}}}}this.setIndex(l),this.setAttribute("position",new _e(u,3)),this.setAttribute("normal",new _e(c,3)),this.setAttribute("uv",new _e(h,2));function Y(F,G,B,k,H){let X=-k/2,q=(Math.PI-k)/2,ae=G.clone().normalize().cross(B);F.addScaledVector(B,-o/Math.sin(q));let $=new S,te=new S,V=1,le=d,ce=[];for(let oe=0;oe<=a;oe++){let de=X+oe/a*k;te.set(0,0,0),te.addScaledVector(ae,Math.sin(de)),te.addScaledVector(B,Math.cos(de));for(let ge=0;ge<=V;ge++){let fe=ge/V-.5;if($.copy(F),$.addScaledVector(G,fe),$.addScaledVector(te,o),H!=null){let Te=Math.max(0,$.y-H);$.addScaledVector(G,-Te/G.y)}u.push($.x,$.y,$.z),c.push(te.x,te.y,te.z),h.push(0,0),ge===0&&ce.push(d),d++}}for(let oe=0;oe<a;oe++)for(let de=0;de<V;de++){let ge=le+de+(V+1)*oe,fe=ge+(V+1),Te=fe+1,Ce=ge+1;l.push(ge,fe,Ce),l.push(fe,Te,Ce)}return[F.clone().addScaledVector(G,.5),ce]}function z(F,G,B,k){let H=Math.PI/2,X=v.angle()-H,q=[],ae=new S,$=new S;for(let V=0;V<=a;V++){let le=[],ce=V/a;for(let oe=0;oe<=V;oe++){let ge=((V?oe/V:0)-.5)*x,fe=Math.cos(ge),Te=Math.sin(ge),Ce=Math.atan(Math.tan(X)*fe),ye=(H+Ce)*ce,Ne=Math.cos(ye),dt=Math.sin(ye);ae.set(0,0,0),ae.addScaledVector(G,dt*fe),ae.addScaledVector(B,Ne),ae.addScaledVector(k,dt*Te),$.copy(F).addScaledVector(ae,o),u.push($.x,$.y,$.z),c.push(ae.x,ae.y,ae.z),h.push(0,0),le.push(d++)}q.push(le)}let te=q.length-1;for(let V=0;V<te;V++){let le=q[V],ce=q[V+1],oe=le.length-1;l.push(le[0],ce[1],ce[0]);for(let de=1;de<=oe;de++)l.push(le[de-1],le[de],ce[de]),l.push(le[de],ce[de+1],ce[de])}}}};var iS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters),n=Object.assign(e?.ui??{enabledIndieCorners:!1},r.ui);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)}),ui:n}}static build(r){let e=r.shape,{width:t,height:n,cornerRadius:i,cornerType:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}=r.parameters,u={x:t*.5,y:n*.5},c={x:-u.x,y:-u.y},h={x:u.x,y:u.y};function d(b,_,A){return _>t&&A>n?Math.min(b*t/_,b*n/A):_>t?b*t/_:A>n?b*n/A:b}let f=[];f[0]=i[0]===0?0:d(i[0],i[0]+i[3],i[0]+i[1]),f[1]=i[1]===0?0:d(i[1],i[1]+i[2],i[1]+i[0]),f[2]=i[2]===0?0:d(i[2],i[2]+i[1],i[2]+i[3]),f[3]=i[3]===0?0:d(i[3],i[3]+i[0],i[3]+i[2]);let m=c.x,p=h.x,g=h.y,y=c.y;e.addPoint(e.createPoint(m,g)),e.addPoint(e.createPoint(p,g)),e.addPoint(e.createPoint(p,y)),e.addPoint(e.createPoint(m,y)),e.isClosed=!0;let x=!0;for(let b=0,_=e.points.length;b<_;b++)e.points[b].roundness=f[b],b>0&&f[b]!==f[b-1]&&(x=!1);x&&(e.roundness=f[0]),e.useCubicForRoundedCorners=s!==1,e.update();let w=qn.create({shape:e,parameters:{depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...r,type:"RectangleGeometry"}})}};var sS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e=100,height:t=e,depth:n=e,widthSegments:i=64,heightSegments:s=64,phiStart:o,phiLength:a,thetaStart:l,thetaLength:u}=r.parameters,c=new po(.5*e,i,s,o,a,l,u);return c.scale(1,t/e,n/e),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};var oS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:0})}}static build(r){let{width:e=100,height:t=e,widthSegments:n=8,heightSegments:i=8}=r.parameters,s=new Gi(e,t,n,i);return s.scale(1,1,1),Object.assign(s,{userData:{...r,type:"PlaneGeometry"}})}};var aS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,angle:i,cornerRadius:s,cornerSegments:o}=r.parameters,a=new n0(e,t,n,i,s,o);return Object.assign(a,{userData:{...r,type:"BackdropGeometry"}})}},n0=class extends Pe{constructor(e=1,t=1,n=1,i=90,s=10,o=24){super(),this.type="BackdropGeometry";let a=[],l=[],u=[],c=.001;s==0&&(o=1),o=Math.max(1,Math.floor(o)),s=Math.min(s,100),i=Math.min(180-c,i),i*=Math.PI/180;let h=[],d=Math.PI/2,f=($=0,te=0,V=0)=>new S($,te,V),m=f(),p=f(),[g,y,x]=[t/2,e/2,n/2],w=-y,b=+y,[_,A,M]=[f(w,-g,+x),f(w,-g,-x),f(w,+g,-x)],v=($,te=!1)=>Math.sin($-Math.PI/(1+ +te)),T=($,te=!1)=>Math.cos($-Math.PI/(1+ +te));M.y=Math.sin(i)*t-g;let E=Math.cos(i)*t-x,C=_.z-c;i<=d?(M.z=Math.min(E,C),M.z==C&&(M.y-=(E-C)/Math.tan(d-i))):A.z=Math.min(A.z-E-x,_.z-c),m.subVectors(_,A),p.subVectors(M,A);let L=Math.min(m.length(),p.length())*s/100,R=L*Math.tan(i/2),O=L/Math.cos(i/2),W=m.clone().normalize().add(p.normalize()).setLength(O).add(A);m.set(0,v(i,!0),T(i,!0)),h.push([M,m.clone()]);let j=(Math.PI-i)/o;for(let $=0;$<=o;$++){let te=d+i+$*j;m.set(0,Math.sin(te)*R,Math.cos(te)*R),m.add(W),p.set(0,v(te),T(te)),h.push([m.clone(),p.clone()])}h.push([_,f(0,1,0)]);let Z=Math.sin(j/2)*R*2,Y=h.length-1,z=h[0][0].distanceTo(h[1][0]),F=h[Y-1][0].distanceTo(h[Y][0]),G=z+Z*o+F;h[0].push(1);for(let $=0;$<=o;$++)h[$+1].push(1-(z+$*Z)/G);h[Y].push(0);let[B,k,H]=h[0],X,q,ae;for(let $=1;$<h.length;$++)[X,q,ae]=h[$],a.push(w,B.y,B.z,w,X.y,X.z,b,B.y,B.z,b,B.y,B.z,w,X.y,X.z,b,X.y,X.z),l.push(0,k.y,k.z,0,q.y,q.z,0,k.y,k.z,0,k.y,k.z,0,q.y,q.z,0,q.y,q.z),u.push(0,H,0,ae,1,H,1,H,0,ae,1,ae),[B,k,H]=[X,q,ae];this.setAttribute("position",new _e(a,3)),this.setAttribute("normal",new _e(l,3)),this.setAttribute("uv",new _e(u,2))}};var lS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t,innerRadiusPercent:n,spikes:i,cornerRadius:s,angle:o,depth:a,extrudeBevelSize:l,extrudeBevelSegments:u}=r.parameters,c=r.shape,h=e*.5,d=t*.5,f=0,m=0,p=o*Math.PI/360/i,g=Math.PI/2*3*-1,y=h*n/100,x=d*n/100;if(i===3&&n===50){p=2*Math.PI/i;for(let b=0;b<i;b++){let _=p*b,A=f+Math.sin(_)*h,M=m+Math.cos(_)*d;c.addPoint(c.createPoint(A,M))}}else for(let b=0;b<i;b++){let _=f+Math.cos(g)*h,A=m+Math.sin(g)*d;c.addPoint(c.createPoint(_,A)),g+=p,_=f+Math.cos(g)*y,A=m+Math.sin(g)*x,b<=i,c.addPoint(c.createPoint(_,A)),g+=p}c.isClosed=!0;for(let b=0,_=c.points.length;b<_;b++)c.points[b].roundness=s;c.roundness=s,c.update();let w=qn.create({shape:c,parameters:{roundness:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...r,type:"StarGeometry"}})}};var hf=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t}=r.parameters,n=new Gi(e,t);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var cS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},r.parameters),n=Math.abs(t.width),i=Math.abs(t.height??t.width),s=Math.abs(t.depth??t.width*.25);return{parameters:Object.assign(t,{width:n,height:i,depth:s})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,tubularSegments:s,arc:o,cornerRadius:a,cornerSegments:l}=r.parameters,u=MB(e,t,n,e*.5,o,s,0,0,i,a,l);return u.scale(1,t/e,1),Object.assign(u,{userData:{...r,type:"TorusGeometry"}})}};function MB(r,e,t,n,i,s,o,a,l,u,c){return[e,t]=[t,e],o=e/2,i/=2*Math.PI,i==1&&(u=0),new ou(!0,r,e,t,n,i,s,o,a,l,u,c)}var uS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width),tube:t.tube??t.width*.125})}}static build(r){let{width:e,tube:t,tubularSegments:n,radialSegments:i,p:s,q:o}=r.parameters,a=e*.5;a!==t&&(a-=t);let l=new xa(a,t,n,i,s,o);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var hS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width*(t.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e=100,height:t,cornerRadius:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o,isRect:a}=r.parameters,l=r.shape,u=e*.5,c=t*.5;a?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let d=0,f=l.points.length;d<f;d++)l.points[d].roundness=n;l.roundness=n,l.update();let h=qn.create({shape:l,parameters:{roundness:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o}});return Object.assign(h,{userData:{...r,type:"TriangleGeometry"}})}};var TB,df=new Promise(r=>{TB=r});function sn(r,e){return e.color(r)}var Us=r=>"isEntity"in r,Ft=r=>"isAbstractMesh"in r,xt=r=>r!==null&&r.isBooleanMesh,dS=r=>r.objectType==="CombinedCamera",fS=r=>Us(r)&&(r.objectType==="LightDirectional"||r.objectType==="LightSpot"||r.objectType==="LightPoint");var r0=r=>r.objectType==="EmptyObject",ff=r=>"objectHelper"in r;function i0(r,e){let t=!1;e.position&&(r.position.fromArray(e.position),t=!0),e.rotation&&(r.rotation.fromArray(e.rotation),t=!0),e.scale&&(t=!0,r.scale.fromArray(e.scale)),e.hiddenMatrix!==void 0&&"hiddenMatrix"in r&&(t=!0,r.hiddenMatrix.fromArray(e.hiddenMatrix??si.identity)),t&&(r.updateMatrix(),xt(r.parent)&&Ft(r)&&r.invalidateDownstreamBooleanData(!0).recomputeBoolean()),e.position&&e.rotation&&e.scale&&e.hiddenMatrix!==void 0&&r.updateWorldMatrix(!1,!0),r.objectType==="CombinedCamera"&&(e.isUpVectorFlipped!==void 0&&(r.isUpVectorFlipped=e.isUpVectorFlipped),r.updateUp())}function EB(r,e){i0(r,e),e.name!==void 0&&(r.name=e.name),e.visible!==void 0&&(r.visible=e.visible)}function pS(r,e,t){EB(r,e),e.color!==void 0&&(r.color=sn(e.color,t)),e.intensity!==void 0&&(r.intensity=e.intensity),e.shadows!==void 0&&!(r instanceof vo)&&(r.castShadow=e.shadows),r.shadow&&!(r instanceof vo)&&e.depth!==void 0&&(r.shadow.camera.far=e.depth,r.shadow.needsUpdate=!0)}function mS(r,e){r.shadow.camera.right=e/2,r.shadow.camera.left=-e/2,r.shadow.camera.top=e/2,r.shadow.camera.bottom=-e/2,r.shadow.needsUpdate=!0}var pf=r=>class extends r{hasEntityChild(){return this.children.some(t=>Us(t))}isDescendantOf(t){t instanceof ot&&(t=t.uuid);let n=this;for(;n.parent;){if(n.parent.uuid===t)return!0;n=n.parent}return!1}attach(t,n){this.updateWorldMatrix(!0,!1);let i=new Oe().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),Us(t)?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),n!==void 0&&(this.children.pop(),this.children.splice(n,0,t)),this}copy(t,n=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),n===!0)for(let i=0;i<t.children.length;i++){let s=t.children[i];this.add(s.clone())}return this}};var yl=new _n,di=new S,fi=new S,vl=new Oe,yS=[new S(-1,1,1),new S(-1,-1,1),new S(1,-1,1),new S(1,1,1),new S(-1,1,-1),new S(-1,-1,-1),new S(1,-1,-1),new S(1,1,-1)],CB=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],DB=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function PB(r,e,t=0,n=e.count){let i=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,u=-1/0;for(let c=t;c<n;c++){let h=e.getX(c),d=e.getY(c),f=e.getZ(c);h<i&&(i=h),d<s&&(s=d),f<o&&(o=f),h>a&&(a=h),d>l&&(l=d),f>u&&(u=f)}return r.min.set(i,s,o),r.max.set(a,l,u),r}var gS=(r,e,t)=>{if(Ft(r)){let n=r.geometry.userData.parameters,i=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?di.copy(r.originalGeometry.boundingSphere.center):i!==void 0&&(PB(yl,i,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:i.count),yl.getCenter(di)),r.forceComputeSize?yl.getSize(fi).multiplyScalar(.5):fi.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(ff(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");yl.setFromArray(n.array),yl.getCenter(di),yl.getSize(fi).multiplyScalar(.5)}else di.setScalar(0),fi.setScalar(0);vl.copy(e).multiply(r.matrixWorld),fi.x===0&&fi.y===0&&fi.z===0?t.push(new S(di.x,di.y,di.z).applyMatrix4(vl)):yS.forEach(n=>{t.push(n.clone().multiply(fi).add(di).applyMatrix4(vl))})},cu=class extends _n{constructor(){super(...arguments);this.matrix=new Oe;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(t){return super.copy(t),this.matrix.copy(t.matrix),this.vertices=t.vertices.map(n=>n.clone()),this.faces=t.faces.map(n=>n.clone()),this.edges=t.edges.map(n=>n.clone()),this.centerEdges=t.centerEdges.map(n=>n.clone()),this}setFromObjectSize(t,n=!1){t.updateWorldMatrix(!1,n),this.makeEmpty(),this.matrix.copy(t.matrixWorld);let i=new Oe().copy(t.matrixWorld).invert();return this.expandByObjectSize(t,i,n)}expandByObjectSize(t,n,i=!1){let s=[];return i===!0?t.traverseEntity(o=>{o.visible&&gS(o,n,s)}):gS(t,n,s),this.setFromPoints(s)}getCenter(t){return t=super.getCenter(t),t.applyMatrix4(this.matrix),t}getPositionToCenter(t){return t=super.getCenter(t),t.applyMatrix4(vl.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(fi).multiplyScalar(.5),this.getCenter(di),vl.copy(this.matrix).setPosition(di),this.vertices=yS.map(t=>t.clone().multiply(fi).applyMatrix4(vl))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=CB.map(([t,n])=>new Nh(this.vertices[t],this.vertices[n])),this.centerEdges=this.edges.map(t=>t.getCenter(new S))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=DB.map(([t,n])=>this.vertices[t].clone().add(this.vertices[n]).multiplyScalar(.5))}};var pi=r=>"isEntity"in r,vS=r=>"isAbstractMesh"in r,Tr=r=>class extends pf(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Oe;this._singleBBox=new cu;this._recursiveBBox=new cu;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(n=>{pi(n)&&(n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(n=>{n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0})}traverseEntity(n){n(this);for(let i of this.children)pi(i)&&i.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let i of this.children)pi(i)&&i.visible&&i.traverseVisibleEntity(n)}updateMatrixWorld(n){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||n)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,n=!0);for(let i of this.children)i.updateMatrixWorld(n)}updateWorldMatrix(n,i){let s=this.parent;if(n&&s!==null&&s.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),i)for(let o of this.children)o.updateWorldMatrix(!1,!0)}clone(n){return new this.constructor().copy(this,n)}copy(n,i=!0){if(super.copy(n,!1),this.raycastLock=n.raycastLock,this.scaleLock=n.scaleLock,this.hiddenMatrix.copy(n.hiddenMatrix),i===!0)for(let s of n.children)pi(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let n=new Oe,i=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(i);for(let s of this.children)pi(s)&&s.hiddenMatrix.premultiply(n)}toObjectTransformState(n=[]){this.updateWorldMatrix(!0,!1);let i={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ja(i,n)}fromObjectTransformState(n){return n.position&&this.position.fromArray(n.position),n.rotation&&this.rotation.fromArray(n.rotation),n.scale&&this.scale.fromArray(n.scale),n.hiddenMatrix&&this.hiddenMatrix.fromArray(n.hiddenMatrix),this.updateMatrix(),this}toState(n=[]){let i={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(n)};return Ja(i,n)}fromState(n,i){return n.name&&(this.name=n.name),n.raycastLock!==void 0&&(this.raycastLock=n.raycastLock),n.type!=="OrthographicCamera"&&n.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),n.visible!==void 0&&(this.visible=n.visible),this.fromObjectTransformState(n),this}};var s0=class extends ot{},mf=class extends s0{constructor(t){super();this.object=t;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(t){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(t){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(t){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var uu=class extends ot{constructor(t,n={}){super();this.object=t;let i=t.recursiveBBox.getSize(new S),s=.1;this.parameters=Ad.defaultData(i.toArray(),s),So(this.parameters,n),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(t){this.parameters.hideBase=t}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(t=>t.updateMatrix())}_updateCount(){let t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==t)if(this.children.length<t)for(let n=0,i=t-this.children.length;n<i;++n){let s=new mf(this.object);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let n=0,i=this.children.length-t;n<i;++n)this.remove(this.children[0])}_updateRadial(t){let n=t.radial,i=n.start*Je.DEG2RAD,s=n.end*Je.DEG2RAD,o=i-s,a=new yr(n.rotation[0]*Je.DEG2RAD,n.rotation[1]*Je.DEG2RAD,n.rotation[2]*Je.DEG2RAD),l;switch(n.axis){case"z":l=new S(0,0,1);break;case"y":l=new S(0,1,0);break;default:case"x":l=new S(1,0,0);break}for(let[u,c]of this.children.entries()){c.scale.x=n.scale[0],c.scale.y=n.scale[1],c.scale.z=n.scale[2],c.position.setScalar(0);let h=o/t.count*u-i;switch(n.axis){case"x":c.rotation.set(0,h,0);break;case"y":c.rotation.set(0,0,h);break;case"z":c.rotation.set(h,0,0);break}c.translateOnAxis(l,n.radius),c.position.x+=n.position[0],c.position.y+=n.position[1],c.position.z+=n.position[2],n.alignment===!0?(c.rotation.x+=a.x,c.rotation.y+=a.y,c.rotation.z+=a.z):c.rotation.copy(a)}}_updateLinear(t){if(t.type!=="linear")throw new Error;let n=t.linear,i=new yr(n.rotation[0]*Je.DEG2RAD,n.rotation[1]*Je.DEG2RAD,n.rotation[2]*Je.DEG2RAD);for(let[s,o]of this.children.entries())o.scale.x=1+(n.scale[0]-1)*s,o.scale.y=1+(n.scale[1]-1)*s,o.scale.z=1+(n.scale[2]-1)*s,o.rotation.x=i.x*s,o.rotation.y=i.y*s,o.rotation.z=i.z*s,o.position.x=n.position[0]*s,o.position.y=n.position[1]*s,o.position.z=n.position[2]*s}_updateGrid(t){let n=0,i=t.grid;if(i.useCenter===!0){let s={x:i.count[0]%2===0?2:1,y:i.count[1]%2===0?2:1,z:i.count[2]%2===0?2:1},o=new S(i.size[0]*(i.count[0]-s.x)*.5,i.size[1]*(i.count[1]-s.y)*.5,i.size[2]*(i.count[2]-s.z)*.5);for(let a=0;a<i.count[0];a++)for(let l=0;l<i.count[1];l++)for(let u=0;u<i.count[2];u++){let c=this.children[n++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=i.size[0]*a-o.x,c.position.y=i.size[1]*l-o.y,c.position.z=i.size[2]*u-o.z}}else for(let s=0;s<i.count[0];s++)for(let o=0;o<i.count[1];o++)for(let a=0;a<i.count[2];a++){let l=this.children[n++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=i.size[0]*s,l.position.y=-i.size[1]*o,l.position.z=-i.size[2]*a}}fromClonerState(t){return t.hideBase!==void 0&&this.setHideBase(t.hideBase),So(this.parameters,t),this.update(),this}};function IB(r){if(r.geometry.attributes.extrudeNormals||!r.geometry.attributes.position)return;let e=new Map,t=r.geometry.attributes.position.array,n=r.geometry.attributes.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let o=`${t[s]}_${t[s+1]}_${t[s+2]}`,a=new S(n[s],n[s+1],n[s+2]);e.has(o)?e.get(o)?.normals.push(a):e.set(o,{normals:[a],result:new S})}e.forEach((s,o)=>{for(let a of s.normals)s.result.add(a);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let o=`${t[s]}_${t[s+1]}_${t[s+2]}`,a=e.get(o)?.result;a&&(i[s]=a.x,i[s+1]=a.y,i[s+2]=a.z)}r.geometry.setAttribute("extrudeNormal",new _e(i,3))}function LB(r){if(r.geometry.attributes.extrudeNormals||!r.geometry.attributes.position)return;let e=r.geometry.attributes.position.array,t=new Float32Array(e.length),n=new S;for(let i=0;i<e.length;i+=3)n.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=n.x,t[i+1]=n.y,t[i+2]=n.z;r.geometry.setAttribute("extrudeNormal",new _e(t,3))}function zs(r){if(r.objectType!=="TextFrame"){if(Array.isArray(r.material)){for(let e of r.material)if(e.getLayersOfType("outline").length===0)return}else if(r.material.getLayersOfType("outline").length===0)return;r.objectType==="Mesh2D"?LB(r):IB(r)}}function Gs(r){if(!r.geometry.attributes.position)return;let e=r.geometry.attributes.position.array,t=new Float32Array(e.length),n=parseInt(r.uuid.replace(/\D/g,"")),i=[Je.seededRandom(n),Je.seededRandom(n+1e4),Je.seededRandom(n+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];r.geometry.setAttribute("randomColor",new je(t,3))}var Ot=class extends Tr(kt){constructor(t,n){super(t,n);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Oe;this.booleanExclude=null;Array.isArray(n)&&t.groups.length===0&&t.addGroup(0,t.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(t){}get cloner(){return this._cloner}set cloner(t){this._cloner&&this.remove(this._cloner),t&&this.add(t),this._cloner=t}updateGeometry(t){let n=this.geometry,i=o0[n.userData.type],s=this.objectType==="NonParametric"?Object.assign({},n.userData,{geometry:n}):n.userData,o=i.build(i.normalizeInputs(t,s)),a=n.uuid;this.geometry.dispose(),this.geometry=o,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),zs(this),n.getAttribute("randomColor")&&Gs(this)}clone(t){let n=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,i=hu(n),s=this.material;return new this.constructor(i,s).copy(this,t)}copy(t,n=!0){return super.copy(t,n),t.cloner&&(this.cloner=new uu(t,t.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(t){t===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new uu(this)),this.cloner.fromClonerState(t))}fromState(t,n){return super.fromState(t),t.type==="Mesh"&&(this.setFromClonerState(t.cloner),this.castShadow=t.castShadow??!0,this.receiveShadow=t.receiveShadow??!0,this.booleanExclude=t.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Hr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(t=!1){return t?this.booleanWasTransformed=!0:this.freeBooleanPointer(),xt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let t of this.children)Ft(t)&&(t.freeBooleanPointer(),xt(t)&&t.invalidateUpstreamBooleanData())}};var OB=new S(0,0,1),xS=new S,bS=new S,wS=new Gt,xl=class extends Ot{constructor(t=qn.create({}),n){super(t,n);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Rt;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=t.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(t){return super.fromState(t),this.shape.update(),this}setHelperVisibility(){}updateGeometry(t){if(super.updateGeometry(t),"userData"in this.geometry){let n=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:n})}}setShape(t){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=t,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(t,n){super.updateWorldMatrix(t,n),wS.getNormalMatrix(this.matrixWorld),xS.copy(OB).applyMatrix3(wS).normalize(),bS.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(xS,bS)}clone(t){let n=this.shape.clone(),i=this.material,s=this.geometry.userData,o=qn.create(Object.assign({},s,{shape:n})),a=new xl(o,i).copy(this,t);return a.shape=n,n.update(),a}raycast(t,n){Ot.prototype.raycast.call(this,t,n)}};function gf(r,e){return RB(r)}function RB(r){let e={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=vt.createFromState(r.shape,r.width,r.height);e.shape=n}else r.type==="NonParametricGeometry"&&(r.data.groups&&r.data.groups.forEach(n=>n.materialIndex=Math.max(n.materialIndex??0,0)),e.geometry=new _a().parse(r));let t;try{t=hu(e)}catch(n){console.error(n)}if(!t){let n=vt.createFromState(il.defaultData(),100,100);e.shape=n,t=hu(e)}return t}var He;df.then(r=>{He=r});var _S=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),SS=new Uint32Array([0,1,2,3]),AS=new Uint8Array([4]),Er=class{static build(r,e,t,n,i){let s,o,a,l=r?.phongAngle??e?.phongAngle??35;if(n===!1&&(l=-1),r.positionWASM!==void 0){t&&t!==0&&(He.free_bvh(t),He.free_subdivision_surface(t));try{s=Er.allocate(r,i)}catch(u){console.error(u,r),s=Er.allocate({positionWASM:_S,indexWASM:SS,verticesPerFaceWASM:AS},i)}He.set_destination_refinement_level(s,0),o=Er.buildLevel(s,!0,l)}else s=t,r.phongAngle!==void 0&&(o=Er.buildLevel(s,!0,l));return r.subdivisions!==void 0&&(He.set_destination_refinement_level(s,r.subdivisions),r.subdivisions>0?a=Er.buildLevel(s,!1,l):a=null),{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}}static primitiveToQuads(r,e){r.widthSegments>16&&(r.widthSegments=16),r.heightSegments>16&&(r.heightSegments=16),r.depthSegments>16&&(r.depthSegments=16),r.radialSegments>16&&(r.radialSegments=16),r.type==="DodecahedronGeometry"&&(r.detail=0);let t=r.shape!==void 0?e.geometry:gf(r),n,i,s,o;return{positions:n,triIndices:o}=u0(t.getAttribute("position"),t.getIndex()),{indices:i,verticesPerFace:s}=h0(n,o,t),{positions:n,indices:i,verticesPerFace:s}}static allocate(r,e){let t,n,i,s=[],o=[];r.positionWASM&&r.positionWASM.length>0?(t=r.positionWASM,n=r.indexWASM,i=r.verticesPerFaceWASM):(t=_S,n=SS,i=AS);let a=t.length,l=n.length,u=i.length,c=t.length+s.length+o.length,h=n.length+i.length,d=c*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,f=c*Float32Array.BYTES_PER_ELEMENT,m=h*Uint32Array.BYTES_PER_ELEMENT,p=He._malloc(d),g=new Float32Array(He.HEAPF32.buffer,p,c),y=new Uint32Array(He.HEAPU32.buffer,p+f,h);g.set(t,0),g.set(s,t.length),g.set(o,t.length+s.length),y.set(n,0),y.set(i,n.length);let x;r?.scaleBaked?.some(b=>b!==1)&&(x=new Oe().makeScale(...r.scaleBaked)),e&&(x?x.premultiply(e):x=e);let w=x?He.alloc_subdivision_surface2(p,a,p+f,l,p+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u,x.elements):He.alloc_subdivision_surface(p,a,p+f,l,p+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return He._free(p),w}static buildLevel(r,e,t,n,i){let s=i?He.get_mesh_data2(r,e?He.Level.CONTROL:He.Level.REFINED,t,i.elements):He.get_mesh_data(r,e?He.Level.CONTROL:He.Level.REFINED,t),o=8,a=He.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),u=0,c=He.HEAPU32[a[u]>>2],h=He.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let d=He.HEAPU32[a[u]>>2],f=He.HEAPF32.subarray(d>>2,(d>>2)+l[u]);u++;let m=He.HEAPU32[a[u]>>2],p=He.HEAPU32.subarray(m>>2,(m>>2)+l[u]);u++;let g=He.HEAPU32[a[u]>>2],y=He.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let x=new Pe;if(x.setIndex(new hs(y,1)),x.setAttribute("position",new _e(h,3)),x.setAttribute("normal",new _e(f,3)),e){x.setAttribute("faceMap",new hs(p,1));let w=new Float32Array(f.length/3*4).fill(0);x.setAttribute("color",new je(w,4))}return He.free_mesh_data(s),x.userData.type="SubdivGeometry",x}n.getAttribute("position").copyArray(h),n.getAttribute("normal").copyArray(f),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,He.free_mesh_data(s)}static buildControlCageWireframe(r,e,t){let n=He.get_wireframe_data_for_base_level(r),i=4,s=He.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(2,2+2),a=0,l=He.HEAPU32[s[a]>>2],u=He.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let c=He.HEAPU32[s[a]>>2],h=He.HEAPU32.subarray(c>>2,(c>>2)+o[a]);if(e===void 0){let d=new Pe;d.setAttribute("position",new _e(u,3));let f=new Float32Array(u.length);for(let m=0,p=u.length;m<p;)f[m++]=t.r,f[m++]=t.g,f[m++]=t.b;return d.setAttribute("color",new je(f,3)),d.setIndex(new hs(h,1)),He.free_wireframe_data_for_base_level(n),d}e.getAttribute("position").copyArray(u),e.attributes.position.needsUpdate=!0,He.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,e,t){e||He.set_destination_refinement_level(r,1);let n=t?He.get_topological_data2(r,e?He.Level.CONTROL:He.Level.REFINED,t.elements):He.get_topological_data(r,e?He.Level.CONTROL:He.Level.REFINED),i=6,s=He.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(3,3+3),a=0,l=He.HEAPU32[s[a]>>2],u=new Float32Array(He.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let c=He.HEAPU32[s[a]>>2],h=new Uint32Array(He.HEAPU32.subarray(c>>2,(c>>2)+o[a]));a++;let d=He.HEAPU32[s[a]>>2],f=new Uint8Array(He.HEAPU32.subarray(d>>2,(d>>2)+o[a]));return He.free_topological_data(n),{positions:u,indices:h,verticesPerFace:f}}};var MS=["getX","getY","getZ"];function u0(r,e){let t={},n=e?e.count:r.count,i=0,s=[],o=[],a=1e4;for(let u=0;u<n;u++){let c=e?e.getX(u):u,h="";for(let d=0;d<3;d++)h+=`${~~(r[MS[d]](c)*a)},`;if(h in t)s.push(t[h]);else{for(let d=0;d<3;d++)o.push(r[MS[d]](c));t[h]=i,s.push(i),i++}}let l=[];for(let u=0;u<s.length;u+=3)s[u]===s[u+1]||s[u]===s[u+2]||s[u+1]===s[u+2]||l.push(s[u],s[u+1],s[u+2]);return{positions:o,triIndices:l}}var yf=new S,a0=new S,l0=new S,c0=new S;function h0(r,e,t){let n=[],i=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0&&t.userData.shape.shapeHoles.length===0){let s=t.userData.shape.extractShapePointsToFlatArray([]),o=0;for(let l=0;l<s.length;l+=2)o+=(s[l]-s[(l===0?s.length:l)-2])*(s[l+1]+s[(l===0?s.length:l)-1]);r.length=0;let a=0;if(o<0)for(let l=0;l<s.length;l+=2)r.push(s[l],s[l+1],0),n.push(a++);else for(let l=s.length-2;l>=0;l-=2)r.push(s[l],s[l+1],0),n.push(a++);return i.push(a),{indices:n,verticesPerFace:i}}for(let s=0,o=t.capStartIndex??e.length;s<o;)if(e[s+1]===e[s+3]&&e[s+2]===e[s+5]||e[s+0]===e[s+3]&&e[s+2]===e[s+4]){yf.set(r[e[s]*3],r[e[s]*3+1],r[e[s]*3+2]),a0.set(r[e[s+1]*3],r[e[s+1]*3+1],r[e[s+1]*3+2]),l0.set(r[e[s+4]*3],r[e[s+4]*3+1],r[e[s+4]*3+2]),c0.set(r[e[s+5]*3],r[e[s+5]*3+1],r[e[s+5]*3+2]),a0.sub(yf).normalize(),l0.sub(yf).normalize(),c0.sub(yf).normalize();let a=a0.cross(l0).dot(c0);Math.abs(a)>.005?(n.push(e[s],e[s+1],e[s+2]),i.push(3),s+=3):(n.push(e[s],e[s+1],e[s+4],e[s+5]),i.push(4),s+=6)}else n.push(e[s],e[s+1],e[s+2]),i.push(3),s+=3;if(t.capStartIndex!==void 0){let s=[],o=[],a=0;for(let l=0,u=0;l<r.length;l+=3,u++)r[l+2]===0&&(s.push(u),a++),r[l+2]===t.userData.parameters.depth&&o.push(u);if(t.userData.parameters.extrudeBevelSize===0){let l=o[0];o[0]=o[1],o[1]=l}s.reverse(),n.push(...s,...o),i.push(a,a)}return{indices:n,verticesPerFace:i}}var Hr={};BA(Hr,{calcBoolean:()=>FB,calcBooleanTopological:()=>BB,freeMeshSet:()=>GB,getMeshSet:()=>UB,transformMeshSet:()=>zB});var ES,CS=new Promise(r=>{ES=r}),TS=!1;async function DS(){if(TS)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.81/build",[t,n]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:n});ES(s),TS=!0}var it,bl;CS.then(r=>it=r);function NB(r,e){let t,{positions:n,triIndices:i}=u0(r.getAttribute("position"),r.getIndex()),s;if(e){let{indices:o,verticesPerFace:a}=h0(n,i,r);s=a.length,t=[];for(let l=0,u=0;l<s;l++){t.push(a[l]);for(let c=0;c<a[l];c++)t.push(o[u++])}}else{let o=i.length;t=Array(o+o/3),s=0;for(let a=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=i[a++],t[l++]=i[a++],t[l++]=i[a++]}return{positions:n,faceIndices:t,nFaces:s}}function PS(r){let e=r.length,t=e*Uint32Array.BYTES_PER_ELEMENT,n=e*Float32Array.BYTES_PER_ELEMENT,i=Number.isInteger(r[0])?t:n,s=it._malloc(i);return(Number.isInteger(r[0])?new Uint32Array(it.HEAPU32.buffer,s,e):new Float32Array(it.HEAPF32.buffer,s,e)).set(r,0),s}function IS(r){switch(r){case 0:return it.OP.UNION;case 1:return it.OP.INTERSECTION;case 2:return it.OP.A_MINUS_B;case 3:return it.OP.B_MINUS_A;case 4:return it.OP.SYMMETRIC_DIFFERENCE;case 5:return it.OP.ALL;default:throw new Error("Unknown boolean operation "+r)}}function BB(r,e){bl===void 0&&(bl=it.init_csg());let t=PS(r),n=it.csg_calc_topological(bl,t,r.length,IS(e));it._free(t);let i=6,s=it.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(3,3+3),a=0,l=it.HEAPU32[s[a]>>2],u=new Float32Array(it.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let c=it.HEAPU32[s[a]>>2],h=new Uint32Array(it.HEAPU32.subarray(c>>2,(c>>2)+o[a]));a++;let d=it.HEAPU32[s[a]>>2],f=new Uint8Array(it.HEAPU32.subarray(d>>2,(d>>2)+o[a]));return it.free_mesh_data(n),{positions:u,indices:h,verticesPerFace:f}}function FB(r,e,t,n){bl===void 0&&(bl=it.init_csg());let i=PS(r),s=it.csg_calc(bl,i,r.length,n,IS(e));it._free(i);let o=5,a=it.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(2,2+3),u=0,c=it.HEAPU32[a[u]>>2],h=it.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let d=it.HEAPU32[a[u]>>2],f=it.HEAPF32.subarray(d>>2,(d>>2)+l[u]);u++;let m=l[u];t.setAttribute("position",new _e(h,3)),t.setAttribute("normal",new _e(f,3));let p=it.HEAPF32.subarray((s>>2)+5,(s>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Ln),t.boundingSphere.center.set(p[0],p[1],p[2]),t.boundingSphere.radius=(p[3]**2+p[4]**2+p[5]**2)**.5,t.userData.parameters={width:p[3]*2,height:p[4]*2,depth:p[5]*2},it.free_mesh_data(s),m}function UB(r,e){if(it===void 0)return-1;let t,n,i;if(e&&r.userData.positions!==void 0){let p=r.userData;i=p.verticesPerFace.length,t=p.positions,n=Array(p.verticesPerFace.reduce((g,y)=>g+y,0)+i);for(let g=0,y=0,x=0;g<p.verticesPerFace.length;g++){n[x++]=p.verticesPerFace[g];for(let w=0;w<p.verticesPerFace[g];w++)n[x++]=p.indices[y++]}}else({positions:t,faceIndices:n,nFaces:i}=NB(r,e));let s=t.length,o=n.length,a=t.length,l=n.length,u=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,c=a*Float32Array.BYTES_PER_ELEMENT,h=l*Uint32Array.BYTES_PER_ELEMENT,d=it._malloc(u),f=new Float32Array(it.HEAPF32.buffer,d,a),m=new Uint32Array(it.HEAPU32.buffer,d+c,l);return f.set(t,0),m.set(n,0),it.get_csg_mesh(d,s,d+c,o,i)}function zB(r,e){it.transform_csg_mesh(r,e.elements)}function GB(r){it.free_csg_mesh(r)}var o0={ConeGeometry:A_,CubeGeometry:M_,CylinderGeometry:S_,DodecahedronGeometry:T_,EllipseGeometry:Y_,HelixGeometry:J_,IcosahedronGeometry:$_,LatheGeometry:eS,NonParametricGeometry:tS,PolygonGeometry:nS,PyramidGeometry:rS,RectangleGeometry:iS,SphereGeometry:sS,PlaneGeometry:oS,BackdropGeometry:aS,StarGeometry:lS,TextFrameGeometry:hf,TorusGeometry:cS,TorusKnotGeometry:uS,TriangleGeometry:hS,VectorGeometry:qn},hu=r=>o0[r.type].create(r);var LS=new Oe;function d0(r){let e=!1;return r.scene.objects.traverse((t,n)=>{n.geometry?.type==="BooleanGeometry"&&(e=!0)}),e}var vf=class extends Ot{constructor(t=new Pe,n){super(t,n);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(t){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];xt(s)&&s.recomputeBoolean(t===!0)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(vS(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Hr.getMeshSet(s.geometry,t===!0),s.booleanMeshSetAddress===-1)return;Hr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else xt(s)&&s.needsTransformForDownstream===!0?(Hr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(LS.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Hr.transformMeshSet(s.booleanMeshSetAddress,LS),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(t===!0)return Hr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let n=this.geometry;n.dispose(),this.geometry=new Pe,this.geometry.userData=n.userData,this.geometry.boundingSphere=n.boundingSphere;try{this.booleanMeshSetAddress=Hr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,zs(this),Gs(this)}updateGeometry(t){let n=t.parameters;n.operation!==void 0&&(this.booleanOp=n.operation),n.phongAngle!==void 0&&(this.phongAngle=n.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var mi=r=>{var e;return e=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new Qn(30,30,30),e};var xf=new zi,f0=new Ln,OS=new Oe,gi=(r,e,t,n,i=!1)=>{let s=e,o=r.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),f0.copy(s.boundingSphere),f0.applyMatrix4(o),t.ray.intersectsSphere(f0)===!1||(OS.copy(o).invert(),xf.copy(t.ray).applyMatrix4(OS),s.boundingBox!==null&&xf.intersectsBox(s.boundingBox)===!1))return;let a,l,u,c,h=s.index,d=s.attributes.position,f=s.drawRange,m,p;if(i===!1){let y=Math.max(0,f.start),x=Math.min(h.count,f.start+f.count);for(m=y,p=x;m<p;m+=3)if(l=h.getX(m),u=h.getX(m+1),c=h.getX(m+2),a=g(r,t,xf,d,l,u,c),a){a.faceIndex=Math.floor(m/3),n.push(a);return}}else{let x=s.attributes.position,w=new S,b=new S,_=new S,A=new S,M=2,T=1/((r.scale.x+r.scale.y+r.scale.z)/3),E=T*T,C=Math.max(0,f.start),L=Math.min(x.count,f.start+f.count);for(let R=C,O=L-1;R<O;R+=M){if(w.fromBufferAttribute(x,R),b.fromBufferAttribute(x,R+1),xf.distanceSqToSegment(w,b,A,_)>E)continue;A.applyMatrix4(r.matrixWorld);let j=t.ray.origin.distanceTo(A);j<t.near||j>t.far||n.push({distance:j,point:_.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(y,x,w,b,_,A,M){let v=new S,T=new S,E=new S,C=new S,L=new S;if(v.fromBufferAttribute(b,_),T.fromBufferAttribute(b,A),E.fromBufferAttribute(b,M),w.intersectTriangle(v,T,E,!1,C)===null)return null;L.copy(C),L.applyMatrix4(y.matrixWorld);let O=x.ray.origin.distanceTo(L);return O<x.near||O>x.far?null:{faceIndex:1,distance:O,point:L.clone(),object:y}}};var bf=new S,Cr=new Br,p0=class extends ds{constructor(t){let n=new Pe,i=new xr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new Re(15711266),u=new Re(15711266),c=new Re(2857471);h("n1","n2",l),h("n2","n4",l),h("n4","n3",l),h("n3","n1",l),h("f1","f2",l),h("f2","f4",l),h("f4","f3",l),h("f3","f1",l),h("n1","f1",l),h("n2","f2",l),h("n3","f3",l),h("n4","f4",l),h("p","n1",u),h("p","n2",u),h("p","n3",u),h("p","n4",u),h("u1","u2",c),h("u2","u3",c),h("u3","u1",c);function h(f,m,p){d(f,p),d(m,p)}function d(f,m){s.push(0,0,0),o.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(s.length/3-1)}n.setAttribute("position",new _e(s,3)),n.setAttribute("color",new _e(o,3));super(n,i);this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let t=this.geometry,n=this.pointMap,i=!0;Cr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let s=1,o=1,a=i?.8:1e-4;Wr("n1",n,t,Cr,-s,-o,a),Wr("n2",n,t,Cr,s,-o,a),Wr("n3",n,t,Cr,-s,o,a),Wr("n4",n,t,Cr,s,o,a);let l=a;Wr("f1",n,t,Cr,-s,-o,l),Wr("f2",n,t,Cr,s,-o,l),Wr("f3",n,t,Cr,-s,o,l),Wr("f4",n,t,Cr,s,o,l);let u=l,c=.5;Wr("u1",n,t,Cr,s*.7*c,o*1.1,u),Wr("u2",n,t,Cr,-s*.7*c,o*1.1,u),Wr("u3",n,t,Cr,0,o*(1.1+.9*c),u),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Wr(r,e,t,n,i,s,o){bf.set(i,s,o).unproject(n);let a=e[r];if(a!==void 0){let l=t.getAttribute("position");for(let u=0,c=a.length;u<c;u++)l.setXYZ(a[u],bf.x,bf.y,bf.z)}}var wf=class extends mi(p0){constructor(t){super(t);this.object=t;this.object=t,this.name=`CombinedCameraHelper: ${t.uuid}`}updateMatrixWorld(t){super.updateMatrixWorld(t),this.updateTarget()}updateTarget(){let t=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(t)}raycast(t,n){gi(this.object,this.geometry,t,n,!0)}};var wl=class extends mi(Uh){constructor(t,n=15,i=10066329){super(t,n,i);this.object=t;this.added=!1;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,n){gi(this.object,wl.geometryHelper,t,n)}};var _l=class extends mi(zh){constructor(t,n=15){super(n);this.object=t;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${t.uuid}`,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}raycast(t,n){gi(this.object,_l.geometryHelper,t,n)}update(){}};var Sl=class extends mi(Fh){constructor(t,n=15,i=6710886){super(t,n,i);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,n){gi(this.object,Sl.geometryHelper,t,n)}};var _f=class extends mi(Bh){constructor(t,n=6710886){super(t,n);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,n){gi(this.object,_f.geometryHelper,t,n)}update(){if(this.object!==void 0){let t=_f._vector,n=this.object.distance?this.object.distance:1e3,i=n*Math.tan(this.object.angle);this.cone.scale.set(i,i,n),t.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(t);let s=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let o=0,a=this.cone.material.length;o<a;o++)this.cone.material[o].color.set(s);else this.cone.material.color.set(s)}}},du=_f;du._vector=new S;var yi=(r,e)=>class extends r{constructor(){super(...arguments);this.objectHelper=new e(this)}get geometryHelper(){return e.geometryHelper}raycast(i,s){this.objectHelper.raycast(i,s)}fromLightState(i,s){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let o=this;i.color!==void 0&&(o.color=sn(i.color,s)),i.intensity!==void 0&&(o.intensity=i.intensity),i.depth!==void 0&&(o.shadow.camera.far=i.depth,o.shadow.needsUpdate=!0),i.shadows!==void 0&&(this.castShadow=i.shadows)}return this}};var Al=new S,m0=new S,pr=class extends yi(Tr(Br),wf){constructor(t=window.innerWidth,n=window.innerHeight,i=45,s,o=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Ao.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=t,this.height=n,this.orthoCamera=new ua(t*-.5,t*.5,n*.5,n*-.5,s??-5e4,o),this.perspCamera=new Zt(i,t/n,s??50,o),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(t,n){let i=new pr().fromState(n);return i.objectHelper.update(),i.uuid=t,i}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(t,n){t==="PerspectiveCamera"?this.perspCamera.near=n:this.orthoCamera.near=n}setZoom(t,n){n>=0&&(t==="PerspectiveCamera"?this.perspCamera.zoom=n:this.orthoCamera.zoom=n)}set cameraType(t){t==="PerspectiveCamera"?this.toPerspective():t==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(t){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(t){t>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}lookAt(t){super.lookAt(t),this.getWorldPosition(Al),this.targetOffset=Al.distanceTo(t)}getTarget(t=new S){return this.getWorldDirection(m0),this.getWorldPosition(Al),m0.multiplyScalar(this.targetOffset),t.copy(Al).add(m0),t}getDistanceToTarget(){let t=this.getTarget();return this.getWorldPosition(Al),Al.distanceTo(t)}updateUp(){let t=this.getWorldQuaternion(new qt),n=new S(0,0,1).applyQuaternion(t),i=new S().copy(ot.DefaultUp);this.isUpVectorFlipped&&i.negate(),i.applyQuaternion(t);let s=new S().copy(ot.DefaultUp).projectOnPlane(n),o=new S().crossVectors(s,i).dot(n)>=0?1:-1;this.angleOffsetFromUp=s.angleTo(i)*o}getViewFrontToObject(t){let n=t.getWorldPosition(new S),s=t.getWorldDirection(new S).multiplyScalar(this.targetOffset);return{position:n.clone().add(s),target:n}}getViewToObject(t){let n=t.getWorldPosition(new S),s=this.getWorldDirection(new S).multiplyScalar(this.targetOffset);return{position:n.clone().sub(s),target:n}}setViewplaneSize(t,n){this.left=-t*.5,this.right=t*.5,this.top=n*.5,this.bottom=-n*.5,this.aspect=t/n,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(t){this.perspCamera.setFocalLength(t),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(t,n,i,s,o,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(t,n,i,s,o,a):this.orthoCamera.setViewOffset(t,n,i,s,o,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,n){super.updateWorldMatrix(t,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(t,n){return super.copy(t,n),this.orthoCamera.copy(t.orthoCamera),this.perspCamera.copy(t.perspCamera),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.far=t.far,this.view=t.view===null?null:Object.assign({},t.view),this._cameraType=t._cameraType,this.aspect=t.aspect,this.fov=t.fov,this.focus=t.focus,this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this.targetOffset=t.targetOffset,this.updateProjectionMatrix(),this}toCameraState(t=[]){let n={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ja(n,t)}fromCameraState(t){let{orthographic:n,perspective:i}=t;return t.type!==void 0&&(this.cameraType=t.type),t.far!==void 0&&(this.far=t.far),n!==void 0&&(n.near!==void 0&&(this.orthoCamera.near=n.near),n.zoom!==void 0&&(this.orthoCamera.zoom=n.zoom)),i!==void 0&&(i.near!==void 0&&(this.perspCamera.near=i.near),i.fov!==void 0&&(this.perspCamera.fov=i.fov),i.zoom!==void 0&&(this.perspCamera.zoom=i.zoom)),t.up!==void 0&&this.up.fromArray(t.up),t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=t.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(t){return{...super.toState(t),...this.toCameraState(t),type:this.cameraType}}fromState(t){return super.fromState(t),this.fromCameraState(t),this}};var Do=class extends yi(Tr(is),_l){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(t,n){let i=new Do().fromState(n);return i.uuid=t,i.objectHelper.update(),i}};var Ml=class extends yi(Tr(Oh),wl){constructor(...t){super(...t);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new wr(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,n,i){let s=new Ml().fromState(n,i);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&n.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(t,n){let i=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;return super.fromLightState(t,n),t.size!==void 0&&mS(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),i&&this.update(),this}fromState(t,n){return super.fromState(t),this.fromDirectionalLightState(t,n),this}};var Tl=class extends yi(Tr(Lh),Sl){constructor(...t){super(...t);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new S(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),o=new S(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),a=new _n(s,o),l=new xo(a,new Re(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(t,n,i){let s=new Tl().fromState(n,i);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof xo&&(n.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof xo&&(n.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let t in this._gizmos){let n=this._gizmos[t];if(n instanceof xo){let i=this.shadow.camera,s=new S(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),o=new S(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z);n.box.set(s,o),n.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}fromPointLightState(t,n){return super.fromLightState(t,n),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,n){return super.fromState(t),this.fromPointLightState(t,n),this}};var RS=new S,NS=new S,BS=new qt,El=class extends yi(Tr(Ih),du){constructor(...t){super(...t);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let i=this.shadow.camera;i.fov=Je.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new wr(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,n,i){let s=new El().fromState(n,i);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&n.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),NS.setFromMatrixPosition(this.matrixWorld),BS.setFromRotationMatrix(this.matrixWorld),RS.copy(this.up).applyQuaternion(BS).negate().multiplyScalar(this.distance),this.target.position.copy(NS).add(RS),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(t,n){return super.fromLightState(t,n),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,n){return super.fromState(t),this.fromSpotLightState(t,n),this}};var Tn=class{constructor(e){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Je.generateUUID(),this.type=e,this.name=""}analyze(e,t){t=t??{},e.analyzing=!0,this.build(e.addFlow(t.slot,t.cache,t.context),"v4"),e.clearVertexNodeCode(),e.clearFragmentNodeCode(),e.removeFlow(),e.analyzing=!1}analyzeAndFlow(e,t,n){return n=n??{},this.analyze(e,n),this.flow(e,t,n)}flow(e,t,n){n=n??{},e.addFlow(n.slot,n.cache,n.context);let i={result:this.build(e,t),code:e.clearNodeCode(),extra:e.context.extra};return e.removeFlow(),i}build(e,t,n){t=t??this.getType(e,t);let i=e.getNodeData(n??this);return e.analyzing&&this.appendDepsNode(e,i,t),e.nodes.indexOf(this)===-1&&e.nodes.push(this),this.updateFrame!==void 0&&e.updaters.indexOf(this)===-1&&e.updaters.push(this),this.generate(e,t,n)}updateFrame(e){}generateReadonly(e,t,n,i,s,o){return""}generate(e,t,n,i,s){return""}parse(e,t,n,i){}appendDepsNode(e,t,n){t.deps=(t.deps||0)+1;let i=e.getTypeLength(n);(i>(t.outputMax||0)||this.getType(e,n))&&(t.outputMax=i,t.output=n)}setName(e){this.name=e}getName(){return this.name}getType(e,t){return t==="sampler2D"||t==="samplerCube"?t:this.type}getHash(){let e="{",t,n;for(t in this)n=this[t],n instanceof Tn&&(e+='"'+t+'":'+n.getHash()+",");if(this.hashProperties)for(let i=0;i<this.hashProperties.length;i++)t=this.hashProperties[i],n=this[t],e+='"'+t+'":"'+String(n)+'",';return e+='"id":"'+this.uuid+'"}',e}};var ze=class extends Tn{constructor(t,n){super(t);this.scope="";n=n??{},this.shared=n.shared!==void 0?n.shared:!0,this.unique=n.unique!==void 0?n.unique:!1}build(t,n,i,s){if(n=n??this.getType(t),this.getShared(t,n)){let o=this.getUnique(t,n);o&&this.uuid===void 0&&(this.uuid=Je.generateUUID()),i=t.getUUID(i??this.getUUID(),!o);let a=t.getNodeData(i),l=a.output||this.getType(t);if(t.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(t,a,n),this.generate(t,n,i)):super.build(t,n,i);if(o)return a.name=a.name||super.build(t,n,i),a.name;if(!this.getLabel()&&(!this.getShared(t,l)||t.context.ignoreCache||a.deps===1))return super.build(t,n,i);i=this.getUUID(!1);let u=this.getTemp(t,i);if(u)return t.format(u,l,n);{u=super.generate(t,n,i,a.output,s);let c=this.generate(t,l,i);return t.addNodeCode(u+" = "+c+";"),t.format(u,l,n)}}return super.build(t,n,i)}getShared(t,n){return n!=="sampler2D"&&n!=="samplerCube"&&this.shared}getUnique(t,n){return this.unique}setLabel(t){return this.label=t,this}getLabel(){return this.label}getUUID(t){let n=this.uuid;return typeof this.scope=="string"&&(n=this.scope+"-"+n),n}getTemp(t,n){n=n||this.uuid;let i=t.getVars()[n];return i?i.name:void 0}generate(t,n,i,s,o){return this.getShared(t,n)||console.error("TempNode is not shared"),i=i??this.uuid,t.getTempVar(i,s??this.getType(t),o,this.getLabel()).name}};var Et=class extends ze{constructor(t,n){n=n??{},n.shared=n.shared!==void 0?n.shared:!1;super(t,n);this.readonly=!1}setReadonly(t){return this.readonly=t,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(t,n,i,s,o,a){i=t.getUUID(i??this.getUUID()),s=s??this.getType(t);let l=t.getNodeData(i);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(t,n,i,s,o,a):t.isShader("vertex")?(l.vertex||(l.vertex=t.createVertexUniform(s,this,o,a,this.getLabel())),t.format(l.vertex.name,s,n)):(l.fragment||(l.fragment=t.createFragmentUniform(s,this,o,a,this.getLabel())),t.format(l.fragment.name,s,n))}};var bt=class extends Et{constructor(t=0,n,i,s){super("c");this.nodeType="Color";this.value=t instanceof Cn?t:new Cn(t||0,n,i,s)}setRGBA(t){this.value.setRGBA(t.r,t.g,t.b,t.a)}generate(t,n,i,s,o,a){i=t.getUUID(i??this.getUUID()),s=s??this.getType(t);let l=t.getNodeData(i),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(t,"f");t.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(t,n,i,s,o,a):t.isShader("vertex")?(l.vertex||(l.vertex=t.createVertexUniform(s,this,o,a,this.getLabel())),t.format(l.vertex.name,s,n)):(l.fragment||(l.fragment=t.createFragmentUniform(s,this,o,a,this.getLabel())),t.format(l.fragment.name,s,n))}generateReadonly(t,n,i,s,o,a){return t.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",s,n)}};var Ae=class extends Et{constructor(t){super("f");this.nodeType="Float";this.value=t??0}generateReadonly(t,n,i,s,o,a){return t.format(this.value+(this.value%1?"":".0"),s,n)}};var st=class extends Et{constructor(t){super("i");this.nodeType="Int";this.value=Math.floor(t??0)}generateReadonly(t,n,i,s,o,a){return t.format(this.value.toString(),s,n)}};var ks=class extends Tn{constructor(){super("basic");this.nodeType="Basic";this.color=new bt(5855577),this.shadingAlpha=new Ae(1),this.shadingBlend=new st(0)}generate(t){let n;if(t.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(t,"v3",{cache:"position"}):void 0;t.mergeUniform(zr.merge([me.fog])),t.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
3137
|
+
}`;function AD(r,e,t){let n=new xc,i=new N,s=new N,o=new Ve,a=new um({depthPacking:PM}),l=new hm,u={},c=t.maxTextureSize,h={0:bn,1:Ui,2:wn},d=new yt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new N},radius:{value:4}},vertexShader:_D,fragmentShader:SD}),f=d.clone();f.defines.HORIZONTAL_PASS=1;let m=new Pe;m.setAttribute("position",new je(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new kt(m,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Vh,this.render=function(b,_,A){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||b.length===0)return;let M=r.getRenderTarget(),v=r.getActiveCubeFace(),T=r.getActiveMipmapLevel(),E=r.state;E.setBlending(Ct),E.buffers.color.setClear(1,1,1,1),E.buffers.depth.setTest(!0),E.setScissorTest(!1);for(let C=0,L=b.length;C<L;C++){let R=b[C],O=R.shadow;if(O===void 0){console.warn("THREE.WebGLShadowMap:",R,"has no shadow.");continue}if(O.autoUpdate===!1&&O.needsUpdate===!1)continue;i.copy(O.mapSize);let W=O.getFrameExtents();if(i.multiply(W),s.copy(O.mapSize),(i.x>c||i.y>c)&&(i.x>c&&(s.x=Math.floor(c/W.x),i.x=s.x*W.x,O.mapSize.x=s.x),i.y>c&&(s.y=Math.floor(c/W.y),i.y=s.y*W.y,O.mapSize.y=s.y)),O.map===null){let Z=this.type!==cc?{minFilter:Ut,magFilter:Ut}:{};O.map=new lt(i.x,i.y,Z),O.map.texture.name=R.name+".shadowMap",O.camera.updateProjectionMatrix()}r.setRenderTarget(O.map),r.clear();let j=O.getViewportCount();for(let Z=0;Z<j;Z++){let Y=O.getViewport(Z);o.set(s.x*Y.x,s.y*Y.y,s.x*Y.z,s.y*Y.w),E.viewport(o),O.updateMatrices(R,Z),n=O.getFrustum(),w(_,A,O.camera,R,this.type)}O.isPointLightShadow!==!0&&this.type===cc&&y(O,A),O.needsUpdate=!1}g.needsUpdate=!1,r.setRenderTarget(M,v,T)};function y(b,_){let A=e.update(p);d.defines.VSM_SAMPLES!==b.blurSamples&&(d.defines.VSM_SAMPLES=b.blurSamples,f.defines.VSM_SAMPLES=b.blurSamples,d.needsUpdate=!0,f.needsUpdate=!0),b.mapPass===null&&(b.mapPass=new lt(i.x,i.y)),d.uniforms.shadow_pass.value=b.map.texture,d.uniforms.resolution.value=b.mapSize,d.uniforms.radius.value=b.radius,r.setRenderTarget(b.mapPass),r.clear(),r.renderBufferDirect(_,null,A,d,p,null),f.uniforms.shadow_pass.value=b.mapPass.texture,f.uniforms.resolution.value=b.mapSize,f.uniforms.radius.value=b.radius,r.setRenderTarget(b.map),r.clear(),r.renderBufferDirect(_,null,A,f,p,null)}function x(b,_,A,M,v,T){let E=null,C=A.isPointLight===!0?b.customDistanceMaterial:b.customDepthMaterial;if(C!==void 0?E=C:E=A.isPointLight===!0?l:a,r.localClippingEnabled&&_.clipShadows===!0&&Array.isArray(_.clippingPlanes)&&_.clippingPlanes.length!==0||_.displacementMap&&_.displacementScale!==0||_.alphaMap&&_.alphaTest>0){let L=E.uuid,R=_.uuid,O=u[L];O===void 0&&(O={},u[L]=O);let W=O[R];W===void 0&&(W=E.clone(),O[R]=W),E=W}return E.visible=_.visible,E.wireframe=_.wireframe,T===cc?E.side=_.shadowSide!==null?_.shadowSide:_.side:E.side=_.shadowSide!==null?_.shadowSide:h[_.side],E.alphaMap=_.alphaMap,E.alphaTest=_.alphaTest,E.clipShadows=_.clipShadows,E.clippingPlanes=_.clippingPlanes,E.clipIntersection=_.clipIntersection,E.displacementMap=_.displacementMap,E.displacementScale=_.displacementScale,E.displacementBias=_.displacementBias,E.wireframeLinewidth=_.wireframeLinewidth,E.linewidth=_.linewidth,A.isPointLight===!0&&E.isMeshDistanceMaterial===!0&&(E.referencePosition.setFromMatrixPosition(A.matrixWorld),E.nearDistance=M,E.farDistance=v),E}function w(b,_,A,M,v){if(b.visible===!1)return;if(b.layers.test(_.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&v===cc)&&(!b.frustumCulled||n.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,b.matrixWorld);let C=e.update(b),L=b.material;if(Array.isArray(L)){let R=C.groups;for(let O=0,W=R.length;O<W;O++){let j=R[O],Z=L[j.materialIndex];if(Z&&Z.visible){let Y=x(b,Z,M,A.near,A.far,v);r.renderBufferDirect(A,null,C,Y,b,j)}}}else if(L.visible){let R=x(b,L,M,A.near,A.far,v);r.renderBufferDirect(A,null,C,R,b,null)}}let E=b.children;for(let C=0,L=E.length;C<L;C++)w(E[C],_,A,M,v)}}function MD(r,e,t){let n=t.isWebGL2;function i(){let U=!1,xe=new Ve,Se=null,Xe=new Ve(0,0,0,0);return{setMask:function(Le){Se!==Le&&!U&&(r.colorMask(Le,Le,Le,Le),Se=Le)},setLocked:function(Le){U=Le},setClear:function(Le,Ye,be,Qe,tt){tt===!0&&(Le*=Qe,Ye*=Qe,be*=Qe),xe.set(Le,Ye,be,Qe),Xe.equals(xe)===!1&&(r.clearColor(Le,Ye,be,Qe),Xe.copy(xe))},reset:function(){U=!1,Se=null,Xe.set(-1,0,0,0)}}}function s(){let U=!1,xe=null,Se=null,Xe=null;return{setTest:function(Le){Le?X(2929):q(2929)},setMask:function(Le){xe!==Le&&!U&&(r.depthMask(Le),xe=Le)},setFunc:function(Le){if(Se!==Le){if(Le)switch(Le){case $A:r.depthFunc(512);break;case eM:r.depthFunc(519);break;case tM:r.depthFunc(513);break;case Yp:r.depthFunc(515);break;case nM:r.depthFunc(514);break;case rM:r.depthFunc(518);break;case iM:r.depthFunc(516);break;case sM:r.depthFunc(517);break;default:r.depthFunc(515)}else r.depthFunc(515);Se=Le}},setLocked:function(Le){U=Le},setClear:function(Le){Xe!==Le&&(r.clearDepth(Le),Xe=Le)},reset:function(){U=!1,xe=null,Se=null,Xe=null}}}function o(){let U=!1,xe=null,Se=null,Xe=null,Le=null,Ye=null,be=null,Qe=null,tt=null;return{setTest:function(ft){U||(ft?X(2960):q(2960))},setMask:function(ft){xe!==ft&&!U&&(r.stencilMask(ft),xe=ft)},setFunc:function(ft,wt,Yn){(Se!==ft||Xe!==wt||Le!==Yn)&&(r.stencilFunc(ft,wt,Yn),Se=ft,Xe=wt,Le=Yn)},setOp:function(ft,wt,Yn){(Ye!==ft||be!==wt||Qe!==Yn)&&(r.stencilOp(ft,wt,Yn),Ye=ft,be=wt,Qe=Yn)},setLocked:function(ft){U=ft},setClear:function(ft){tt!==ft&&(r.clearStencil(ft),tt=ft)},reset:function(){U=!1,xe=null,Se=null,Xe=null,Le=null,Ye=null,be=null,Qe=null,tt=null}}}let a=new i,l=new s,u=new o,c={},h={},d=new WeakMap,f=[],m=null,p=!1,g=null,y=null,x=null,w=null,b=null,_=null,A=null,M=!1,v=null,T=null,E=null,C=null,L=null,R=r.getParameter(35661),O=!1,W=0,j=r.getParameter(7938);j.indexOf("WebGL")!==-1?(W=parseFloat(/^WebGL (\d)/.exec(j)[1]),O=W>=1):j.indexOf("OpenGL ES")!==-1&&(W=parseFloat(/^OpenGL ES (\d)/.exec(j)[1]),O=W>=2);let Z=null,Y={},z=r.getParameter(3088),F=r.getParameter(2978),G=new Ve().fromArray(z),B=new Ve().fromArray(F);function k(U,xe,Se){let Xe=new Uint8Array(4),Le=r.createTexture();r.bindTexture(U,Le),r.texParameteri(U,10241,9728),r.texParameteri(U,10240,9728);for(let Ye=0;Ye<Se;Ye++)r.texImage2D(xe+Ye,0,6408,1,1,0,6408,5121,Xe);return Le}let H={};H[3553]=k(3553,3553,1),H[34067]=k(34067,34069,6),a.setClear(0,0,0,1),l.setClear(1),u.setClear(0),X(2929),l.setFunc(Yp),de(!1),ge(by),X(2884),ce(Ct);function X(U){c[U]!==!0&&(r.enable(U),c[U]=!0)}function q(U){c[U]!==!1&&(r.disable(U),c[U]=!1)}function ae(U,xe){return h[U]!==xe?(r.bindFramebuffer(U,xe),h[U]=xe,n&&(U===36009&&(h[36160]=xe),U===36160&&(h[36009]=xe)),!0):!1}function $(U,xe){let Se=f,Xe=!1;if(U)if(Se=d.get(xe),Se===void 0&&(Se=[],d.set(xe,Se)),U.isWebGLMultipleRenderTargets){let Le=U.texture;if(Se.length!==Le.length||Se[0]!==36064){for(let Ye=0,be=Le.length;Ye<be;Ye++)Se[Ye]=36064+Ye;Se.length=Le.length,Xe=!0}}else Se[0]!==36064&&(Se[0]=36064,Xe=!0);else Se[0]!==1029&&(Se[0]=1029,Xe=!0);Xe&&(t.isWebGL2?r.drawBuffers(Se):e.get("WEBGL_draw_buffers").drawBuffersWEBGL(Se))}function te(U){return m!==U?(r.useProgram(U),m=U,!0):!1}let V={[ra]:32774,[VA]:32778,[HA]:32779};if(n)V[Ay]=32775,V[My]=32776;else{let U=e.get("EXT_blend_minmax");U!==null&&(V[Ay]=U.MIN_EXT,V[My]=U.MAX_EXT)}let le={[WA]:0,[jA]:1,[qA]:768,[Jv]:770,[JA]:776,[ZA]:774,[YA]:772,[XA]:769,[$v]:771,[KA]:775,[QA]:773};function ce(U,xe,Se,Xe,Le,Ye,be,Qe){if(U===Ct){p===!0&&(q(3042),p=!1);return}if(p===!1&&(X(3042),p=!0),U!==kA){if(U!==g||Qe!==M){if((y!==ra||b!==ra)&&(r.blendEquation(32774),y=ra,b=ra),Qe)switch(U){case ss:r.blendFuncSeparate(1,771,1,771);break;case wy:r.blendFunc(1,1);break;case _y:r.blendFuncSeparate(0,769,0,1);break;case Sy:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",U);break}else switch(U){case ss:r.blendFuncSeparate(770,771,1,771);break;case wy:r.blendFunc(770,1);break;case _y:r.blendFuncSeparate(0,769,0,1);break;case Sy:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",U);break}x=null,w=null,_=null,A=null,g=U,M=Qe}return}Le=Le||xe,Ye=Ye||Se,be=be||Xe,(xe!==y||Le!==b)&&(r.blendEquationSeparate(V[xe],V[Le]),y=xe,b=Le),(Se!==x||Xe!==w||Ye!==_||be!==A)&&(r.blendFuncSeparate(le[Se],le[Xe],le[Ye],le[be]),x=Se,w=Xe,_=Ye,A=be),g=U,M=null}function oe(U,xe){U.side===wn?q(2884):X(2884);let Se=U.side===bn;xe&&(Se=!Se),de(Se),U.blending===ss&&U.transparent===!1?ce(Ct):ce(U.blending,U.blendEquation,U.blendSrc,U.blendDst,U.blendEquationAlpha,U.blendSrcAlpha,U.blendDstAlpha,U.premultipliedAlpha),l.setFunc(U.depthFunc),l.setTest(U.depthTest),l.setMask(U.depthWrite),a.setMask(U.colorWrite);let Xe=U.stencilWrite;u.setTest(Xe),Xe&&(u.setMask(U.stencilWriteMask),u.setFunc(U.stencilFunc,U.stencilRef,U.stencilFuncMask),u.setOp(U.stencilFail,U.stencilZFail,U.stencilZPass)),Te(U.polygonOffset,U.polygonOffsetFactor,U.polygonOffsetUnits),U.alphaToCoverage===!0?X(32926):q(32926)}function de(U){v!==U&&(U?r.frontFace(2304):r.frontFace(2305),v=U)}function ge(U){U!==UA?(X(2884),U!==T&&(U===by?r.cullFace(1029):U===zA?r.cullFace(1028):r.cullFace(1032))):q(2884),T=U}function fe(U){U!==E&&(O&&r.lineWidth(U),E=U)}function Te(U,xe,Se){U?(X(32823),(C!==xe||L!==Se)&&(r.polygonOffset(xe,Se),C=xe,L=Se)):q(32823)}function Ce(U){U?X(3089):q(3089)}function ye(U){U===void 0&&(U=33984+R-1),Z!==U&&(r.activeTexture(U),Z=U)}function Ne(U,xe){Z===null&&ye();let Se=Y[Z];Se===void 0&&(Se={type:void 0,texture:void 0},Y[Z]=Se),(Se.type!==U||Se.texture!==xe)&&(r.bindTexture(U,xe||H[U]),Se.type=U,Se.texture=xe)}function dt(){let U=Y[Z];U!==void 0&&U.type!==void 0&&(r.bindTexture(U.type,null),U.type=void 0,U.texture=void 0)}function P(){try{r.compressedTexImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function D(){try{r.texSubImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function K(){try{r.texSubImage3D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function he(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function pe(){try{r.texStorage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function Ee(){try{r.texStorage3D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function Fe(){try{r.texImage2D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function re(){try{r.texImage3D.apply(r,arguments)}catch(U){console.error("THREE.WebGLState:",U)}}function Be(U){G.equals(U)===!1&&(r.scissor(U.x,U.y,U.z,U.w),G.copy(U))}function Ie(U){B.equals(U)===!1&&(r.viewport(U.x,U.y,U.z,U.w),B.copy(U))}function ve(){r.disable(3042),r.disable(2884),r.disable(2929),r.disable(32823),r.disable(3089),r.disable(2960),r.disable(32926),r.blendEquation(32774),r.blendFunc(1,0),r.blendFuncSeparate(1,0,1,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(513),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(519,0,4294967295),r.stencilOp(7680,7680,7680),r.clearStencil(0),r.cullFace(1029),r.frontFace(2305),r.polygonOffset(0,0),r.activeTexture(33984),r.bindFramebuffer(36160,null),n===!0&&(r.bindFramebuffer(36009,null),r.bindFramebuffer(36008,null)),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),c={},Z=null,Y={},h={},d=new WeakMap,f=[],m=null,p=!1,g=null,y=null,x=null,w=null,b=null,_=null,A=null,M=!1,v=null,T=null,E=null,C=null,L=null,G.set(0,0,r.canvas.width,r.canvas.height),B.set(0,0,r.canvas.width,r.canvas.height),a.reset(),l.reset(),u.reset()}return{buffers:{color:a,depth:l,stencil:u},enable:X,disable:q,bindFramebuffer:ae,drawBuffers:$,useProgram:te,setBlending:ce,setMaterial:oe,setFlipSided:de,setCullFace:ge,setLineWidth:fe,setPolygonOffset:Te,setScissorTest:Ce,activeTexture:ye,bindTexture:Ne,unbindTexture:dt,compressedTexImage2D:P,texImage2D:Fe,texImage3D:re,texStorage2D:pe,texStorage3D:Ee,texSubImage2D:D,texSubImage3D:K,compressedTexSubImage2D:he,scissor:Be,viewport:Ie,reset:ve}}function TD(r,e,t,n,i,s,o){let a=i.isWebGL2,l=i.maxTextures,u=i.maxCubemapSize,c=i.maxTextureSize,h=i.maxSamples,d=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,f=/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap,p,g=new WeakMap,y=!1;try{y=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function x(P,D){return y?new OffscreenCanvas(P,D):Sh("canvas")}function w(P,D,K,he){let pe=1;if((P.width>he||P.height>he)&&(pe=he/Math.max(P.width,P.height)),pe<1||D===!0)if(typeof HTMLImageElement<"u"&&P instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&P instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&P instanceof ImageBitmap){let Ee=D?_h:Math.floor,Fe=Ee(pe*P.width),re=Ee(pe*P.height);p===void 0&&(p=x(Fe,re));let Be=K?x(Fe,re):p;return Be.width=Fe,Be.height=re,Be.getContext("2d").drawImage(P,0,0,Fe,re),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+P.width+"x"+P.height+") to ("+Fe+"x"+re+")."),Be}else return"data"in P&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+P.width+"x"+P.height+")."),P;return P}function b(P){return em(P.width)&&em(P.height)}function _(P){return a?!1:P.wrapS!==xn||P.wrapT!==xn||P.minFilter!==Ut&&P.minFilter!==et}function A(P,D){return P.generateMipmaps&&D&&P.minFilter!==Ut&&P.minFilter!==et}function M(P){r.generateMipmap(P)}function v(P,D,K,he,pe=!1){if(a===!1)return D;if(P!==null){if(r[P]!==void 0)return r[P];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+P+"'")}let Ee=D;return D===6403&&(K===5126&&(Ee=33326),K===5131&&(Ee=33325),K===5121&&(Ee=33321)),D===33319&&(K===5126&&(Ee=33328),K===5131&&(Ee=33327),K===5121&&(Ee=33323)),D===6408&&(K===5126&&(Ee=34836),K===5131&&(Ee=34842),K===5121&&(Ee=he===We&&pe===!1?35907:32856),K===32819&&(Ee=32854),K===32820&&(Ee=32855)),(Ee===33325||Ee===33326||Ee===33327||Ee===33328||Ee===34842||Ee===34836)&&e.get("EXT_color_buffer_float"),Ee}function T(P,D,K){return A(P,K)===!0||P.isFramebufferTexture&&P.minFilter!==Ut&&P.minFilter!==et?Math.log2(Math.max(D.width,D.height))+1:P.mipmaps!==void 0&&P.mipmaps.length>0?P.mipmaps.length:P.isCompressedTexture&&Array.isArray(P.image)?D.mipmaps.length:1}function E(P){return P===Ut||P===Ty||P===Ey?9728:9729}function C(P){let D=P.target;D.removeEventListener("dispose",C),R(D),D.isVideoTexture&&m.delete(D)}function L(P){let D=P.target;D.removeEventListener("dispose",L),W(D)}function R(P){let D=n.get(P);if(D.__webglInit===void 0)return;let K=P.source,he=g.get(K);if(he){let pe=he[D.__cacheKey];pe.usedTimes--,pe.usedTimes===0&&O(P),Object.keys(he).length===0&&g.delete(K)}n.remove(P)}function O(P){let D=n.get(P);r.deleteTexture(D.__webglTexture);let K=P.source,he=g.get(K);delete he[D.__cacheKey],o.memory.textures--}function W(P){let D=P.texture,K=n.get(P),he=n.get(D);if(he.__webglTexture!==void 0&&(r.deleteTexture(he.__webglTexture),o.memory.textures--),P.depthTexture&&P.depthTexture.dispose(),P.isWebGLCubeRenderTarget)for(let pe=0;pe<6;pe++)r.deleteFramebuffer(K.__webglFramebuffer[pe]),K.__webglDepthbuffer&&r.deleteRenderbuffer(K.__webglDepthbuffer[pe]);else{if(r.deleteFramebuffer(K.__webglFramebuffer),K.__webglDepthbuffer&&r.deleteRenderbuffer(K.__webglDepthbuffer),K.__webglMultisampledFramebuffer&&r.deleteFramebuffer(K.__webglMultisampledFramebuffer),K.__webglColorRenderbuffer)for(let pe=0;pe<K.__webglColorRenderbuffer.length;pe++)K.__webglColorRenderbuffer[pe]&&r.deleteRenderbuffer(K.__webglColorRenderbuffer[pe]);K.__webglDepthRenderbuffer&&r.deleteRenderbuffer(K.__webglDepthRenderbuffer)}if(P.isWebGLMultipleRenderTargets)for(let pe=0,Ee=D.length;pe<Ee;pe++){let Fe=n.get(D[pe]);Fe.__webglTexture&&(r.deleteTexture(Fe.__webglTexture),o.memory.textures--),n.remove(D[pe])}n.remove(D),n.remove(P)}let j=0;function Z(){j=0}function Y(){let P=j;return P>=l&&console.warn("THREE.WebGLTextures: Trying to use "+P+" texture units while this GPU supports only "+l),j+=1,P}function z(P){let D=[];return D.push(P.wrapS),D.push(P.wrapT),D.push(P.magFilter),D.push(P.minFilter),D.push(P.anisotropy),D.push(P.internalFormat),D.push(P.format),D.push(P.type),D.push(P.generateMipmaps),D.push(P.premultiplyAlpha),D.push(P.flipY),D.push(P.unpackAlignment),D.push(P.encoding),D.join()}function F(P,D){let K=n.get(P);if(P.isVideoTexture&&Ne(P),P.isRenderTargetTexture===!1&&P.version>0&&K.__version!==P.version){let he=P.image;if(he===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(he.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{$(K,P,D);return}}t.activeTexture(33984+D),t.bindTexture(3553,K.__webglTexture)}function G(P,D){let K=n.get(P);if(P.version>0&&K.__version!==P.version){$(K,P,D);return}t.activeTexture(33984+D),t.bindTexture(35866,K.__webglTexture)}function B(P,D){let K=n.get(P);if(P.version>0&&K.__version!==P.version){$(K,P,D);return}t.activeTexture(33984+D),t.bindTexture(32879,K.__webglTexture)}function k(P,D){let K=n.get(P);if(P.version>0&&K.__version!==P.version){te(K,P,D);return}t.activeTexture(33984+D),t.bindTexture(34067,K.__webglTexture)}let H={[aa]:10497,[xn]:33071,[Kp]:33648},X={[Ut]:9728,[Ty]:9984,[Ey]:9986,[et]:9729,[fM]:9985,[gs]:9987};function q(P,D,K){if(K?(r.texParameteri(P,10242,H[D.wrapS]),r.texParameteri(P,10243,H[D.wrapT]),(P===32879||P===35866)&&r.texParameteri(P,32882,H[D.wrapR]),r.texParameteri(P,10240,X[D.magFilter]),r.texParameteri(P,10241,X[D.minFilter])):(r.texParameteri(P,10242,33071),r.texParameteri(P,10243,33071),(P===32879||P===35866)&&r.texParameteri(P,32882,33071),(D.wrapS!==xn||D.wrapT!==xn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(P,10240,E(D.magFilter)),r.texParameteri(P,10241,E(D.minFilter)),D.minFilter!==Ut&&D.minFilter!==et&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){let he=e.get("EXT_texture_filter_anisotropic");if(D.type===gr&&e.has("OES_texture_float_linear")===!1||a===!1&&D.type===gc&&e.has("OES_texture_half_float_linear")===!1)return;(D.anisotropy>1||n.get(D).__currentAnisotropy)&&(r.texParameterf(P,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(D.anisotropy,i.getMaxAnisotropy())),n.get(D).__currentAnisotropy=D.anisotropy)}}function ae(P,D){let K=!1;P.__webglInit===void 0&&(P.__webglInit=!0,D.addEventListener("dispose",C));let he=D.source,pe=g.get(he);pe===void 0&&(pe={},g.set(he,pe));let Ee=z(D);if(Ee!==P.__cacheKey){pe[Ee]===void 0&&(pe[Ee]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,K=!0),pe[Ee].usedTimes++;let Fe=pe[P.__cacheKey];Fe!==void 0&&(pe[P.__cacheKey].usedTimes--,Fe.usedTimes===0&&O(D)),P.__cacheKey=Ee,P.__webglTexture=pe[Ee].texture}return K}function $(P,D,K){let he=3553;D.isDataArrayTexture&&(he=35866),D.isData3DTexture&&(he=32879);let pe=ae(P,D),Ee=D.source;if(t.activeTexture(33984+K),t.bindTexture(he,P.__webglTexture),Ee.version!==Ee.__currentVersion||pe===!0){r.pixelStorei(37440,D.flipY),r.pixelStorei(37441,D.premultiplyAlpha),r.pixelStorei(3317,D.unpackAlignment),r.pixelStorei(37443,0);let Fe=_(D)&&b(D.image)===!1,re=w(D.image,Fe,!1,c);re=dt(D,re);let Be=b(re)||a,Ie=s.convert(D.format,D.encoding),ve=s.convert(D.type),U=v(D.internalFormat,Ie,ve,D.encoding,D.isVideoTexture);q(he,D,Be);let xe,Se=D.mipmaps,Xe=a&&D.isVideoTexture!==!0,Le=Ee.__currentVersion===void 0||pe===!0,Ye=T(D,re,Be);if(D.isDepthTexture)U=6402,a?D.type===gr?U=36012:D.type===Bi?U=33190:D.type===os?U=35056:U=33189:D.type===gr&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),D.format===oo&&U===6402&&D.type!==nx&&D.type!==Bi&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),D.type=Bi,ve=s.convert(D.type)),D.format===us&&U===6402&&(U=34041,D.type!==os&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),D.type=os,ve=s.convert(D.type))),Le&&(Xe?t.texStorage2D(3553,1,U,re.width,re.height):t.texImage2D(3553,0,U,re.width,re.height,0,Ie,ve,null));else if(D.isDataTexture)if(Se.length>0&&Be){Xe&&Le&&t.texStorage2D(3553,Ye,U,Se[0].width,Se[0].height);for(let be=0,Qe=Se.length;be<Qe;be++)xe=Se[be],Xe?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Ie,ve,xe.data):t.texImage2D(3553,be,U,xe.width,xe.height,0,Ie,ve,xe.data);D.generateMipmaps=!1}else Xe?(Le&&t.texStorage2D(3553,Ye,U,re.width,re.height),t.texSubImage2D(3553,0,0,0,re.width,re.height,Ie,ve,re.data)):t.texImage2D(3553,0,U,re.width,re.height,0,Ie,ve,re.data);else if(D.isCompressedTexture){Xe&&Le&&t.texStorage2D(3553,Ye,U,Se[0].width,Se[0].height);for(let be=0,Qe=Se.length;be<Qe;be++)xe=Se[be],D.format!==Rr?Ie!==null?Xe?t.compressedTexSubImage2D(3553,be,0,0,xe.width,xe.height,Ie,xe.data):t.compressedTexImage2D(3553,be,U,xe.width,xe.height,0,xe.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Xe?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Ie,ve,xe.data):t.texImage2D(3553,be,U,xe.width,xe.height,0,Ie,ve,xe.data)}else if(D.isDataArrayTexture)Xe?(Le&&t.texStorage3D(35866,Ye,U,re.width,re.height,re.depth),t.texSubImage3D(35866,0,0,0,0,re.width,re.height,re.depth,Ie,ve,re.data)):t.texImage3D(35866,0,U,re.width,re.height,re.depth,0,Ie,ve,re.data);else if(D.isData3DTexture)Xe?(Le&&t.texStorage3D(32879,Ye,U,re.width,re.height,re.depth),t.texSubImage3D(32879,0,0,0,0,re.width,re.height,re.depth,Ie,ve,re.data)):t.texImage3D(32879,0,U,re.width,re.height,re.depth,0,Ie,ve,re.data);else if(D.isFramebufferTexture){if(Le)if(Xe)t.texStorage2D(3553,Ye,U,re.width,re.height);else{let be=re.width,Qe=re.height;for(let tt=0;tt<Ye;tt++)t.texImage2D(3553,tt,U,be,Qe,0,Ie,ve,null),be>>=1,Qe>>=1}}else if(Se.length>0&&Be){Xe&&Le&&t.texStorage2D(3553,Ye,U,Se[0].width,Se[0].height);for(let be=0,Qe=Se.length;be<Qe;be++)xe=Se[be],Xe?t.texSubImage2D(3553,be,0,0,Ie,ve,xe):t.texImage2D(3553,be,U,Ie,ve,xe);D.generateMipmaps=!1}else Xe?(Le&&t.texStorage2D(3553,Ye,U,re.width,re.height),t.texSubImage2D(3553,0,0,0,Ie,ve,re)):t.texImage2D(3553,0,U,Ie,ve,re);A(D,Be)&&M(he),Ee.__currentVersion=Ee.version,D.onUpdate&&D.onUpdate(D)}P.__version=D.version}function te(P,D,K){if(D.image.length!==6)return;let he=ae(P,D),pe=D.source;if(t.activeTexture(33984+K),t.bindTexture(34067,P.__webglTexture),pe.version!==pe.__currentVersion||he===!0){r.pixelStorei(37440,D.flipY),r.pixelStorei(37441,D.premultiplyAlpha),r.pixelStorei(3317,D.unpackAlignment),r.pixelStorei(37443,0);let Ee=D.isCompressedTexture||D.image[0].isCompressedTexture,Fe=D.image[0]&&D.image[0].isDataTexture,re=[];for(let be=0;be<6;be++)!Ee&&!Fe?re[be]=w(D.image[be],!1,!0,u):re[be]=Fe?D.image[be].image:D.image[be],re[be]=dt(D,re[be]);let Be=re[0],Ie=b(Be)||a,ve=s.convert(D.format,D.encoding),U=s.convert(D.type),xe=v(D.internalFormat,ve,U,D.encoding),Se=a&&D.isVideoTexture!==!0,Xe=pe.__currentVersion===void 0||he===!0,Le=T(D,Be,Ie);q(34067,D,Ie);let Ye;if(Ee){Se&&Xe&&t.texStorage2D(34067,Le,xe,Be.width,Be.height);for(let be=0;be<6;be++){Ye=re[be].mipmaps;for(let Qe=0;Qe<Ye.length;Qe++){let tt=Ye[Qe];D.format!==Rr?ve!==null?Se?t.compressedTexSubImage2D(34069+be,Qe,0,0,tt.width,tt.height,ve,tt.data):t.compressedTexImage2D(34069+be,Qe,xe,tt.width,tt.height,0,tt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Se?t.texSubImage2D(34069+be,Qe,0,0,tt.width,tt.height,ve,U,tt.data):t.texImage2D(34069+be,Qe,xe,tt.width,tt.height,0,ve,U,tt.data)}}}else{Ye=D.mipmaps,Se&&Xe&&(Ye.length>0&&Le++,t.texStorage2D(34067,Le,xe,re[0].width,re[0].height));for(let be=0;be<6;be++)if(Fe){Se?t.texSubImage2D(34069+be,0,0,0,re[be].width,re[be].height,ve,U,re[be].data):t.texImage2D(34069+be,0,xe,re[be].width,re[be].height,0,ve,U,re[be].data);for(let Qe=0;Qe<Ye.length;Qe++){let ft=Ye[Qe].image[be].image;Se?t.texSubImage2D(34069+be,Qe+1,0,0,ft.width,ft.height,ve,U,ft.data):t.texImage2D(34069+be,Qe+1,xe,ft.width,ft.height,0,ve,U,ft.data)}}else{Se?t.texSubImage2D(34069+be,0,0,0,ve,U,re[be]):t.texImage2D(34069+be,0,xe,ve,U,re[be]);for(let Qe=0;Qe<Ye.length;Qe++){let tt=Ye[Qe];Se?t.texSubImage2D(34069+be,Qe+1,0,0,ve,U,tt.image[be]):t.texImage2D(34069+be,Qe+1,xe,ve,U,tt.image[be])}}}A(D,Ie)&&M(34067),pe.__currentVersion=pe.version,D.onUpdate&&D.onUpdate(D)}P.__version=D.version}function V(P,D,K,he,pe){let Ee=s.convert(K.format,K.encoding),Fe=s.convert(K.type),re=v(K.internalFormat,Ee,Fe,K.encoding);n.get(D).__hasExternalTextures||(pe===32879||pe===35866?t.texImage3D(pe,0,re,D.width,D.height,D.depth,0,Ee,Fe,null):t.texImage2D(pe,0,re,D.width,D.height,0,Ee,Fe,null)),t.bindFramebuffer(36160,P),ye(D)?d.framebufferTexture2DMultisampleEXT(36160,he,pe,n.get(K).__webglTexture,0,Ce(D)):r.framebufferTexture2D(36160,he,pe,n.get(K).__webglTexture,0),t.bindFramebuffer(36160,null)}function le(P,D,K){if(r.bindRenderbuffer(36161,P),D.depthBuffer&&!D.stencilBuffer){let he=33189;if(K||ye(D)){let pe=D.depthTexture;pe&&pe.isDepthTexture&&(pe.type===gr?he=36012:pe.type===Bi&&(he=33190));let Ee=Ce(D);ye(D)?d.renderbufferStorageMultisampleEXT(36161,Ee,he,D.width,D.height):r.renderbufferStorageMultisample(36161,Ee,he,D.width,D.height)}else r.renderbufferStorage(36161,he,D.width,D.height);r.framebufferRenderbuffer(36160,36096,36161,P)}else if(D.depthBuffer&&D.stencilBuffer){let he=Ce(D);K&&ye(D)===!1?r.renderbufferStorageMultisample(36161,he,35056,D.width,D.height):ye(D)?d.renderbufferStorageMultisampleEXT(36161,he,35056,D.width,D.height):r.renderbufferStorage(36161,34041,D.width,D.height),r.framebufferRenderbuffer(36160,33306,36161,P)}else{let he=D.isWebGLMultipleRenderTargets===!0?D.texture:[D.texture];for(let pe=0;pe<he.length;pe++){let Ee=he[pe],Fe=s.convert(Ee.format,Ee.encoding),re=s.convert(Ee.type),Be=v(Ee.internalFormat,Fe,re,Ee.encoding),Ie=Ce(D);K&&ye(D)===!1?r.renderbufferStorageMultisample(36161,Ie,Be,D.width,D.height):ye(D)?d.renderbufferStorageMultisampleEXT(36161,Ie,Be,D.width,D.height):r.renderbufferStorage(36161,Be,D.width,D.height)}}r.bindRenderbuffer(36161,null)}function ce(P,D){if(D&&D.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(36160,P),!(D.depthTexture&&D.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(D.depthTexture).__webglTexture||D.depthTexture.image.width!==D.width||D.depthTexture.image.height!==D.height)&&(D.depthTexture.image.width=D.width,D.depthTexture.image.height=D.height,D.depthTexture.needsUpdate=!0),F(D.depthTexture,0);let he=n.get(D.depthTexture).__webglTexture,pe=Ce(D);if(D.depthTexture.format===oo)ye(D)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,he,0,pe):r.framebufferTexture2D(36160,36096,3553,he,0);else if(D.depthTexture.format===us)ye(D)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,he,0,pe):r.framebufferTexture2D(36160,33306,3553,he,0);else throw new Error("Unknown depthTexture format")}function oe(P){let D=n.get(P),K=P.isWebGLCubeRenderTarget===!0;if(P.depthTexture&&!D.__autoAllocateDepthBuffer){if(K)throw new Error("target.depthTexture not supported in Cube render targets");ce(D.__webglFramebuffer,P)}else if(K){D.__webglDepthbuffer=[];for(let he=0;he<6;he++)t.bindFramebuffer(36160,D.__webglFramebuffer[he]),D.__webglDepthbuffer[he]=r.createRenderbuffer(),le(D.__webglDepthbuffer[he],P,!1)}else t.bindFramebuffer(36160,D.__webglFramebuffer),D.__webglDepthbuffer=r.createRenderbuffer(),le(D.__webglDepthbuffer,P,!1);t.bindFramebuffer(36160,null)}function de(P,D,K){let he=n.get(P);D!==void 0&&V(he.__webglFramebuffer,P,P.texture,36064,3553),K!==void 0&&oe(P)}function ge(P){let D=P.texture,K=n.get(P),he=n.get(D);P.addEventListener("dispose",L),P.isWebGLMultipleRenderTargets!==!0&&(he.__webglTexture===void 0&&(he.__webglTexture=r.createTexture()),he.__version=D.version,o.memory.textures++);let pe=P.isWebGLCubeRenderTarget===!0,Ee=P.isWebGLMultipleRenderTargets===!0,Fe=b(P)||a;if(pe){K.__webglFramebuffer=[];for(let re=0;re<6;re++)K.__webglFramebuffer[re]=r.createFramebuffer()}else{if(K.__webglFramebuffer=r.createFramebuffer(),Ee)if(i.drawBuffers){let re=P.texture;for(let Be=0,Ie=re.length;Be<Ie;Be++){let ve=n.get(re[Be]);ve.__webglTexture===void 0&&(ve.__webglTexture=r.createTexture(),o.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(a&&P.samples>0&&ye(P)===!1){let re=Ee?D:[D];K.__webglMultisampledFramebuffer=r.createFramebuffer(),K.__webglColorRenderbuffer=[],t.bindFramebuffer(36160,K.__webglMultisampledFramebuffer);for(let Be=0;Be<re.length;Be++){let Ie=re[Be];K.__webglColorRenderbuffer[Be]=r.createRenderbuffer(),r.bindRenderbuffer(36161,K.__webglColorRenderbuffer[Be]);let ve=s.convert(Ie.format,Ie.encoding),U=s.convert(Ie.type),xe=v(Ie.internalFormat,ve,U,Ie.encoding),Se=Ce(P);r.renderbufferStorageMultisample(36161,Se,xe,P.width,P.height),r.framebufferRenderbuffer(36160,36064+Be,36161,K.__webglColorRenderbuffer[Be])}r.bindRenderbuffer(36161,null),P.depthBuffer&&(K.__webglDepthRenderbuffer=r.createRenderbuffer(),le(K.__webglDepthRenderbuffer,P,!0)),t.bindFramebuffer(36160,null)}}if(pe){t.bindTexture(34067,he.__webglTexture),q(34067,D,Fe);for(let re=0;re<6;re++)V(K.__webglFramebuffer[re],P,D,36064,34069+re);A(D,Fe)&&M(34067),t.unbindTexture()}else if(Ee){let re=P.texture;for(let Be=0,Ie=re.length;Be<Ie;Be++){let ve=re[Be],U=n.get(ve);t.bindTexture(3553,U.__webglTexture),q(3553,ve,Fe),V(K.__webglFramebuffer,P,ve,36064+Be,3553),A(ve,Fe)&&M(3553)}t.unbindTexture()}else{let re=3553;(P.isWebGL3DRenderTarget||P.isWebGLArrayRenderTarget)&&(a?re=P.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),t.bindTexture(re,he.__webglTexture),q(re,D,Fe),V(K.__webglFramebuffer,P,D,36064,re),A(D,Fe)&&M(re),t.unbindTexture()}P.depthBuffer&&oe(P)}function fe(P){let D=b(P)||a,K=P.isWebGLMultipleRenderTargets===!0?P.texture:[P.texture];for(let he=0,pe=K.length;he<pe;he++){let Ee=K[he];if(A(Ee,D)){let Fe=P.isWebGLCubeRenderTarget?34067:3553,re=n.get(Ee).__webglTexture;t.bindTexture(Fe,re),M(Fe),t.unbindTexture()}}}function Te(P){if(a&&P.samples>0&&ye(P)===!1){let D=P.isWebGLMultipleRenderTargets?P.texture:[P.texture],K=P.width,he=P.height,pe=16384,Ee=[],Fe=P.stencilBuffer?33306:36096,re=n.get(P),Be=P.isWebGLMultipleRenderTargets===!0;if(Be)for(let Ie=0;Ie<D.length;Ie++)t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Ie,36161,null),t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Ie,3553,null,0);t.bindFramebuffer(36008,re.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,re.__webglFramebuffer);for(let Ie=0;Ie<D.length;Ie++){Ee.push(36064+Ie),P.depthBuffer&&Ee.push(Fe);let ve=re.__ignoreDepthValues!==void 0?re.__ignoreDepthValues:!1;if(ve===!1&&(P.depthBuffer&&(pe|=256),P.stencilBuffer&&(pe|=1024)),Be&&r.framebufferRenderbuffer(36008,36064,36161,re.__webglColorRenderbuffer[Ie]),ve===!0&&(r.invalidateFramebuffer(36008,[Fe]),r.invalidateFramebuffer(36009,[Fe])),Be){let U=n.get(D[Ie]).__webglTexture;r.framebufferTexture2D(36009,36064,3553,U,0)}r.blitFramebuffer(0,0,K,he,0,0,K,he,pe,9728),f&&r.invalidateFramebuffer(36008,Ee)}if(t.bindFramebuffer(36008,null),t.bindFramebuffer(36009,null),Be)for(let Ie=0;Ie<D.length;Ie++){t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Ie,36161,re.__webglColorRenderbuffer[Ie]);let ve=n.get(D[Ie]).__webglTexture;t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Ie,3553,ve,0)}t.bindFramebuffer(36009,re.__webglMultisampledFramebuffer)}}function Ce(P){return Math.min(h,P.samples)}function ye(P){let D=n.get(P);return a&&P.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&D.__useRenderToTexture!==!1}function Ne(P){let D=o.render.frame;m.get(P)!==D&&(m.set(P,D),P.update())}function dt(P,D){let K=P.encoding,he=P.format,pe=P.type;return P.isCompressedTexture===!0||P.isVideoTexture===!0||P.format===$p||K!==ar&&(K===We?a===!1?e.has("EXT_sRGB")===!0&&he===Rr?(P.format=$p,P.minFilter=et,P.generateMipmaps=!1):D=Ah.sRGBToLinear(D):(he!==Rr||pe!==Pt)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",K)),D}this.allocateTextureUnit=Y,this.resetTextureUnits=Z,this.setTexture2D=F,this.setTexture2DArray=G,this.setTexture3D=B,this.setTextureCube=k,this.rebindTextures=de,this.setupRenderTarget=ge,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=Te,this.setupDepthRenderbuffer=oe,this.setupFrameBufferTexture=V,this.useMultisampledRTT=ye}function ED(r,e,t){let n=t.isWebGL2;function i(s,o=null){let a;if(s===Pt)return 5121;if(s===yM)return 32819;if(s===vM)return 32820;if(s===pM)return 5120;if(s===mM)return 5122;if(s===nx)return 5123;if(s===gM)return 5124;if(s===Bi)return 5125;if(s===gr)return 5126;if(s===gc)return n?5131:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===xM)return 6406;if(s===Rr)return 6408;if(s===wM)return 6409;if(s===_M)return 6410;if(s===oo)return 6402;if(s===us)return 34041;if(s===SM)return 6403;if(s===bM)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(s===$p)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===AM)return 36244;if(s===MM)return 33319;if(s===TM)return 33320;if(s===EM)return 36249;if(s===dp||s===fp||s===pp||s===mp)if(o===We)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===dp)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===fp)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===pp)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===mp)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===dp)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===fp)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===pp)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===mp)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Cy||s===Dy||s===Py||s===Iy)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Cy)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Dy)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Py)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Iy)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===CM)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===Ly||s===Oy)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===Ly)return o===We?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Oy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Ry||s===Ny||s===By||s===Fy||s===Uy||s===zy||s===Gy||s===ky||s===Vy||s===Hy||s===Wy||s===jy||s===qy||s===Xy)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Ry)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Ny)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===By)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Fy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Uy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===zy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Gy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===ky)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===Vy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Hy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===Wy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===jy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===qy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===Xy)return o===We?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===Yy)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===Yy)return o===We?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return s===os?n?34042:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var dm=class extends Zt{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},is=class extends ot{constructor(){super(),this.isGroup=!0,this.type="Group"}},CD={type:"move"},fc=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new is,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new is,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new S,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new S),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new is,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new S,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new S),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let i=null,s=null,o=null,a=this._targetRay,l=this._grip,u=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(u&&e.hand){o=!0;for(let p of e.hand.values()){let g=t.getJointPose(p,n);if(u.joints[p.jointName]===void 0){let x=new is;x.matrixAutoUpdate=!1,x.visible=!1,u.joints[p.jointName]=x,u.add(x)}let y=u.joints[p.jointName];g!==null&&(y.matrix.fromArray(g.transform.matrix),y.matrix.decompose(y.position,y.rotation,y.scale),y.jointRadius=g.radius),y.visible=g!==null}let c=u.joints["index-finger-tip"],h=u.joints["thumb-tip"],d=c.position.distanceTo(h.position),f=.02,m=.005;u.inputState.pinching&&d>f+m?(u.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!u.inputState.pinching&&d<=f-m&&(u.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(CD)))}return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=s!==null),u!==null&&(u.visible=o!==null),this}},vr=class extends It{constructor(e,t,n,i,s,o,a,l,u,c){if(c=c!==void 0?c:oo,c!==oo&&c!==us)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&c===oo&&(n=Bi),n===void 0&&c===us&&(n=os),super(null,i,s,o,a,l,c,n,u),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:Ut,this.minFilter=l!==void 0?l:Ut,this.flipY=!1,this.generateMipmaps=!1}},fm=class extends Rt{constructor(e,t){super();let n=this,i=null,s=1,o=null,a="local-floor",l=null,u=null,c=null,h=null,d=null,f=null,m=t.getContextAttributes(),p=null,g=null,y=[],x=[],w=new Zt;w.layers.enable(1),w.viewport=new Ve;let b=new Zt;b.layers.enable(2),b.viewport=new Ve;let _=[w,b],A=new dm;A.layers.enable(1),A.layers.enable(2);let M=null,v=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(z){let F=y[z];return F===void 0&&(F=new fc,y[z]=F),F.getTargetRaySpace()},this.getControllerGrip=function(z){let F=y[z];return F===void 0&&(F=new fc,y[z]=F),F.getGripSpace()},this.getHand=function(z){let F=y[z];return F===void 0&&(F=new fc,y[z]=F),F.getHandSpace()};function T(z){let F=x.indexOf(z.inputSource);if(F===-1)return;let G=y[F];G!==void 0&&G.dispatchEvent({type:z.type,data:z.inputSource})}function E(){i.removeEventListener("select",T),i.removeEventListener("selectstart",T),i.removeEventListener("selectend",T),i.removeEventListener("squeeze",T),i.removeEventListener("squeezestart",T),i.removeEventListener("squeezeend",T),i.removeEventListener("end",E),i.removeEventListener("inputsourceschange",C);for(let z=0;z<y.length;z++){let F=x[z];F!==null&&(x[z]=null,y[z].disconnect(F))}M=null,v=null,e.setRenderTarget(p),d=null,h=null,c=null,i=null,g=null,Y.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(z){s=z,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(z){a=z,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||o},this.setReferenceSpace=function(z){l=z},this.getBaseLayer=function(){return h!==null?h:d},this.getBinding=function(){return c},this.getFrame=function(){return f},this.getSession=function(){return i},this.setSession=async function(z){if(i=z,i!==null){if(p=e.getRenderTarget(),i.addEventListener("select",T),i.addEventListener("selectstart",T),i.addEventListener("selectend",T),i.addEventListener("squeeze",T),i.addEventListener("squeezestart",T),i.addEventListener("squeezeend",T),i.addEventListener("end",E),i.addEventListener("inputsourceschange",C),m.xrCompatible!==!0&&await t.makeXRCompatible(),i.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let F={antialias:i.renderState.layers===void 0?m.antialias:!0,alpha:m.alpha,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(i,t,F),i.updateRenderState({baseLayer:d}),g=new lt(d.framebufferWidth,d.framebufferHeight,{format:Rr,type:Pt,encoding:e.outputEncoding})}else{let F=null,G=null,B=null;m.depth&&(B=m.stencil?35056:33190,F=m.stencil?us:oo,G=m.stencil?os:Bi);let k={colorFormat:32856,depthFormat:B,scaleFactor:s};c=new XRWebGLBinding(i,t),h=c.createProjectionLayer(k),i.updateRenderState({layers:[h]}),g=new lt(h.textureWidth,h.textureHeight,{format:Rr,type:Pt,depthTexture:new vr(h.textureWidth,h.textureHeight,G,void 0,void 0,void 0,void 0,void 0,void 0,F),stencilBuffer:m.stencil,encoding:e.outputEncoding,samples:m.antialias?4:0});let H=e.properties.get(g);H.__ignoreDepthValues=h.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(1),l=null,o=await i.requestReferenceSpace(a),Y.setContext(i),Y.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}};function C(z){for(let F=0;F<z.removed.length;F++){let G=z.removed[F],B=x.indexOf(G);B>=0&&(x[B]=null,y[B].dispatchEvent({type:"disconnected",data:G}))}for(let F=0;F<z.added.length;F++){let G=z.added[F],B=x.indexOf(G);if(B===-1){for(let H=0;H<y.length;H++)if(H>=x.length){x.push(G),B=H;break}else if(x[H]===null){x[H]=G,B=H;break}if(B===-1)break}let k=y[B];k&&k.dispatchEvent({type:"connected",data:G})}}let L=new S,R=new S;function O(z,F,G){L.setFromMatrixPosition(F.matrixWorld),R.setFromMatrixPosition(G.matrixWorld);let B=L.distanceTo(R),k=F.projectionMatrix.elements,H=G.projectionMatrix.elements,X=k[14]/(k[10]-1),q=k[14]/(k[10]+1),ae=(k[9]+1)/k[5],$=(k[9]-1)/k[5],te=(k[8]-1)/k[0],V=(H[8]+1)/H[0],le=X*te,ce=X*V,oe=B/(-te+V),de=oe*-te;F.matrixWorld.decompose(z.position,z.quaternion,z.scale),z.translateX(de),z.translateZ(oe),z.matrixWorld.compose(z.position,z.quaternion,z.scale),z.matrixWorldInverse.copy(z.matrixWorld).invert();let ge=X+oe,fe=q+oe,Te=le-de,Ce=ce+(B-de),ye=ae*q/fe*ge,Ne=$*q/fe*ge;z.projectionMatrix.makePerspective(Te,Ce,ye,Ne,ge,fe)}function W(z,F){F===null?z.matrixWorld.copy(z.matrix):z.matrixWorld.multiplyMatrices(F.matrixWorld,z.matrix),z.matrixWorldInverse.copy(z.matrixWorld).invert()}this.updateCamera=function(z){if(i===null)return;A.near=b.near=w.near=z.near,A.far=b.far=w.far=z.far,(M!==A.near||v!==A.far)&&(i.updateRenderState({depthNear:A.near,depthFar:A.far}),M=A.near,v=A.far);let F=z.parent,G=A.cameras;W(A,F);for(let k=0;k<G.length;k++)W(G[k],F);A.matrixWorld.decompose(A.position,A.quaternion,A.scale),z.position.copy(A.position),z.quaternion.copy(A.quaternion),z.scale.copy(A.scale),z.matrix.copy(A.matrix),z.matrixWorld.copy(A.matrixWorld);let B=z.children;for(let k=0,H=B.length;k<H;k++)B[k].updateMatrixWorld(!0);G.length===2?O(A,w,b):A.projectionMatrix.copy(w.projectionMatrix)},this.getCamera=function(){return A},this.getFoveation=function(){if(h!==null)return h.fixedFoveation;if(d!==null)return d.fixedFoveation},this.setFoveation=function(z){h!==null&&(h.fixedFoveation=z),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=z)};let j=null;function Z(z,F){if(u=F.getViewerPose(l||o),f=F,u!==null){let G=u.views;d!==null&&(e.setRenderTargetFramebuffer(g,d.framebuffer),e.setRenderTarget(g));let B=!1;G.length!==A.cameras.length&&(A.cameras.length=0,B=!0);for(let k=0;k<G.length;k++){let H=G[k],X=null;if(d!==null)X=d.getViewport(H);else{let ae=c.getViewSubImage(h,H);X=ae.viewport,k===0&&(e.setRenderTargetTextures(g,ae.colorTexture,h.ignoreDepthValues?void 0:ae.depthStencilTexture),e.setRenderTarget(g))}let q=_[k];q===void 0&&(q=new Zt,q.layers.enable(k),q.viewport=new Ve,_[k]=q),q.matrix.fromArray(H.transform.matrix),q.projectionMatrix.fromArray(H.projectionMatrix),q.viewport.set(X.x,X.y,X.width,X.height),k===0&&A.matrix.copy(q.matrix),B===!0&&A.cameras.push(q)}}for(let G=0;G<y.length;G++){let B=x[G],k=y[G];B!==null&&k!==void 0&&k.update(B,F,l||o)}j&&j(z,F),f=null}let Y=new sx;Y.setAnimationLoop(Z),this.setAnimationLoop=function(z){j=z},this.dispose=function(){}}};function DD(r,e){function t(p,g){p.fogColor.value.copy(g.color),g.isFog?(p.fogNear.value=g.near,p.fogFar.value=g.far):g.isFogExp2&&(p.fogDensity.value=g.density)}function n(p,g,y,x,w){g.isMeshBasicMaterial||g.isMeshLambertMaterial?i(p,g):g.isMeshToonMaterial?(i(p,g),c(p,g)):g.isMeshPhongMaterial?(i(p,g),u(p,g)):g.isMeshStandardMaterial?(i(p,g),h(p,g),g.isMeshPhysicalMaterial&&d(p,g,w)):g.isMeshMatcapMaterial?(i(p,g),f(p,g)):g.isMeshDepthMaterial?i(p,g):g.isMeshDistanceMaterial?(i(p,g),m(p,g)):g.isMeshNormalMaterial?i(p,g):g.isLineBasicMaterial?(s(p,g),g.isLineDashedMaterial&&o(p,g)):g.isPointsMaterial?a(p,g,y,x):g.isSpriteMaterial?l(p,g):g.isShadowMaterial?(p.color.value.copy(g.color),p.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function i(p,g){p.opacity.value=g.opacity,g.color&&p.diffuse.value.copy(g.color),g.emissive&&p.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(p.map.value=g.map),g.alphaMap&&(p.alphaMap.value=g.alphaMap),g.bumpMap&&(p.bumpMap.value=g.bumpMap,p.bumpScale.value=g.bumpScale,g.side===bn&&(p.bumpScale.value*=-1)),g.displacementMap&&(p.displacementMap.value=g.displacementMap,p.displacementScale.value=g.displacementScale,p.displacementBias.value=g.displacementBias),g.emissiveMap&&(p.emissiveMap.value=g.emissiveMap),g.normalMap&&(p.normalMap.value=g.normalMap,p.normalScale.value.copy(g.normalScale),g.side===bn&&p.normalScale.value.negate()),g.specularMap&&(p.specularMap.value=g.specularMap),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let y=e.get(g).envMap;if(y&&(p.envMap.value=y,p.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=g.reflectivity,p.ior.value=g.ior,p.refractionRatio.value=g.refractionRatio),g.lightMap){p.lightMap.value=g.lightMap;let b=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=g.lightMapIntensity*b}g.aoMap&&(p.aoMap.value=g.aoMap,p.aoMapIntensity.value=g.aoMapIntensity);let x;g.map?x=g.map:g.specularMap?x=g.specularMap:g.displacementMap?x=g.displacementMap:g.normalMap?x=g.normalMap:g.bumpMap?x=g.bumpMap:g.roughnessMap?x=g.roughnessMap:g.metalnessMap?x=g.metalnessMap:g.alphaMap?x=g.alphaMap:g.emissiveMap?x=g.emissiveMap:g.clearcoatMap?x=g.clearcoatMap:g.clearcoatNormalMap?x=g.clearcoatNormalMap:g.clearcoatRoughnessMap?x=g.clearcoatRoughnessMap:g.iridescenceMap?x=g.iridescenceMap:g.iridescenceThicknessMap?x=g.iridescenceThicknessMap:g.specularIntensityMap?x=g.specularIntensityMap:g.specularColorMap?x=g.specularColorMap:g.transmissionMap?x=g.transmissionMap:g.thicknessMap?x=g.thicknessMap:g.sheenColorMap?x=g.sheenColorMap:g.sheenRoughnessMap&&(x=g.sheenRoughnessMap),x!==void 0&&(x.isWebGLRenderTarget&&(x=x.texture),x.matrixAutoUpdate===!0&&x.updateMatrix(),p.uvTransform.value.copy(x.matrix));let w;g.aoMap?w=g.aoMap:g.lightMap&&(w=g.lightMap),w!==void 0&&(w.isWebGLRenderTarget&&(w=w.texture),w.matrixAutoUpdate===!0&&w.updateMatrix(),p.uv2Transform.value.copy(w.matrix))}function s(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity}function o(p,g){p.dashSize.value=g.dashSize,p.totalSize.value=g.dashSize+g.gapSize,p.scale.value=g.scale}function a(p,g,y,x){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.size.value=g.size*y,p.scale.value=x*.5,g.map&&(p.map.value=g.map),g.alphaMap&&(p.alphaMap.value=g.alphaMap),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let w;g.map?w=g.map:g.alphaMap&&(w=g.alphaMap),w!==void 0&&(w.matrixAutoUpdate===!0&&w.updateMatrix(),p.uvTransform.value.copy(w.matrix))}function l(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.rotation.value=g.rotation,g.map&&(p.map.value=g.map),g.alphaMap&&(p.alphaMap.value=g.alphaMap),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let y;g.map?y=g.map:g.alphaMap&&(y=g.alphaMap),y!==void 0&&(y.matrixAutoUpdate===!0&&y.updateMatrix(),p.uvTransform.value.copy(y.matrix))}function u(p,g){p.specular.value.copy(g.specular),p.shininess.value=Math.max(g.shininess,1e-4)}function c(p,g){g.gradientMap&&(p.gradientMap.value=g.gradientMap)}function h(p,g){p.roughness.value=g.roughness,p.metalness.value=g.metalness,g.roughnessMap&&(p.roughnessMap.value=g.roughnessMap),g.metalnessMap&&(p.metalnessMap.value=g.metalnessMap),e.get(g).envMap&&(p.envMapIntensity.value=g.envMapIntensity)}function d(p,g,y){p.ior.value=g.ior,g.sheen>0&&(p.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),p.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(p.sheenColorMap.value=g.sheenColorMap),g.sheenRoughnessMap&&(p.sheenRoughnessMap.value=g.sheenRoughnessMap)),g.clearcoat>0&&(p.clearcoat.value=g.clearcoat,p.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(p.clearcoatMap.value=g.clearcoatMap),g.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap),g.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),p.clearcoatNormalMap.value=g.clearcoatNormalMap,g.side===bn&&p.clearcoatNormalScale.value.negate())),g.iridescence>0&&(p.iridescence.value=g.iridescence,p.iridescenceIOR.value=g.iridescenceIOR,p.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(p.iridescenceMap.value=g.iridescenceMap),g.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=g.iridescenceThicknessMap)),g.transmission>0&&(p.transmission.value=g.transmission,p.transmissionSamplerMap.value=y.texture,p.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(p.transmissionMap.value=g.transmissionMap),p.thickness.value=g.thickness,g.thicknessMap&&(p.thicknessMap.value=g.thicknessMap),p.attenuationDistance.value=g.attenuationDistance,p.attenuationColor.value.copy(g.attenuationColor)),p.specularIntensity.value=g.specularIntensity,p.specularColor.value.copy(g.specularColor),g.specularIntensityMap&&(p.specularIntensityMap.value=g.specularIntensityMap),g.specularColorMap&&(p.specularColorMap.value=g.specularColorMap)}function f(p,g){g.matcap&&(p.matcap.value=g.matcap)}function m(p,g){p.referencePosition.value.copy(g.referencePosition),p.nearDistance.value=g.nearDistance,p.farDistance.value=g.farDistance}return{refreshFogUniforms:t,refreshMaterialUniforms:n}}function PD(){let r=Sh("canvas");return r.style.display="block",r}function Um(r={}){this.isWebGLRenderer=!0;let e=r.canvas!==void 0?r.canvas:PD(),t=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,o=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,a=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,l=r.powerPreference!==void 0?r.powerPreference:"default",u=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,c;t!==null?c=t.getContextAttributes().alpha:c=r.alpha!==void 0?r.alpha:!1;let h=null,d=null,f=[],m=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=ar,this.physicallyCorrectLights=!1,this.toneMapping=Fi,this.toneMappingExposure=1,Object.defineProperties(this,{gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});let p=this,g=!1,y=0,x=0,w=null,b=-1,_=null,A=new Ve,M=new Ve,v=null,T=e.width,E=e.height,C=1,L=null,R=null,O=new Ve(0,0,T,E),W=new Ve(0,0,T,E),j=!1,Z=new xc,Y=!1,z=!1,F=null,G=new Oe,B=new N,k=new S,H={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function X(){return w===null?C:1}let q=t;function ae(I,J){for(let ie=0;ie<I.length;ie++){let ne=I[ie],ue=e.getContext(ne,J);if(ue!==null)return ue}return null}try{let I={alpha:!0,depth:n,stencil:i,antialias:s,premultipliedAlpha:o,preserveDrawingBuffer:a,powerPreference:l,failIfMajorPerformanceCaveat:u};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${bo}`),e.addEventListener("webglcontextlost",U,!1),e.addEventListener("webglcontextrestored",xe,!1),e.addEventListener("webglcontextcreationerror",Se,!1),q===null){let J=["webgl2","webgl","experimental-webgl"];if(p.isWebGL1Renderer===!0&&J.shift(),q=ae(J,I),q===null)throw ae(J)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}q.getShaderPrecisionFormat===void 0&&(q.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(I){throw console.error("THREE.WebGLRenderer: "+I.message),I}let $,te,V,le,ce,oe,de,ge,fe,Te,Ce,ye,Ne,dt,P,D,K,he,pe,Ee,Fe,re,Be;function Ie(){$=new KC(q),te=new jC(q,$,r),$.init(te),re=new ED(q,$,te),V=new MD(q,$,te),le=new e2,ce=new fD,oe=new TD(q,$,V,ce,te,re,le),de=new XC(p),ge=new ZC(p),fe=new dT(q,te),Be=new HC(q,$,fe,te),Te=new JC(q,fe,le,Be),Ce=new i2(q,Te,fe,le),pe=new r2(q,te,oe),D=new qC(ce),ye=new dD(p,de,ge,$,te,Be,D),Ne=new DD(p,ce),dt=new mD,P=new wD($,te),he=new VC(p,de,V,Ce,c,o),K=new AD(p,Ce,te),Ee=new WC(q,$,le,te),Fe=new $C(q,$,le,te),le.programs=ye.programs,p.capabilities=te,p.extensions=$,p.properties=ce,p.renderLists=dt,p.shadowMap=K,p.state=V,p.info=le}Ie();let ve=new fm(p,q);this.xr=ve,this.getContext=function(){return q},this.getContextAttributes=function(){return q.getContextAttributes()},this.forceContextLoss=function(){let I=$.get("WEBGL_lose_context");I&&I.loseContext()},this.forceContextRestore=function(){let I=$.get("WEBGL_lose_context");I&&I.restoreContext()},this.getPixelRatio=function(){return C},this.setPixelRatio=function(I){I!==void 0&&(C=I,this.setSize(T,E,!1))},this.getSize=function(I){return I.set(T,E)},this.setSize=function(I,J,ie){if(ve.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}T=I,E=J,e.width=Math.floor(I*C),e.height=Math.floor(J*C),ie!==!1&&(e.style.width=I+"px",e.style.height=J+"px"),this.setViewport(0,0,I,J)},this.getDrawingBufferSize=function(I){return I.set(T*C,E*C).floor()},this.setDrawingBufferSize=function(I,J,ie){T=I,E=J,C=ie,e.width=Math.floor(I*ie),e.height=Math.floor(J*ie),this.setViewport(0,0,I,J)},this.getCurrentViewport=function(I){return I.copy(A)},this.getViewport=function(I){return I.copy(O)},this.setViewport=function(I,J,ie,ne){I.isVector4?O.set(I.x,I.y,I.z,I.w):O.set(I,J,ie,ne),V.viewport(A.copy(O).multiplyScalar(C).floor())},this.getScissor=function(I){return I.copy(W)},this.setScissor=function(I,J,ie,ne){I.isVector4?W.set(I.x,I.y,I.z,I.w):W.set(I,J,ie,ne),V.scissor(M.copy(W).multiplyScalar(C).floor())},this.getScissorTest=function(){return j},this.setScissorTest=function(I){V.setScissorTest(j=I)},this.setOpaqueSort=function(I){L=I},this.setTransparentSort=function(I){R=I},this.getClearColor=function(I){return I.copy(he.getClearColor())},this.setClearColor=function(){he.setClearColor.apply(he,arguments)},this.getClearAlpha=function(){return he.getClearAlpha()},this.setClearAlpha=function(){he.setClearAlpha.apply(he,arguments)},this.clear=function(I=!0,J=!0,ie=!0){let ne=0;I&&(ne|=16384),J&&(ne|=256),ie&&(ne|=1024),q.clear(ne)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",U,!1),e.removeEventListener("webglcontextrestored",xe,!1),e.removeEventListener("webglcontextcreationerror",Se,!1),dt.dispose(),P.dispose(),ce.dispose(),de.dispose(),ge.dispose(),Ce.dispose(),Be.dispose(),ye.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",tt),ve.removeEventListener("sessionend",ft),F&&(F.dispose(),F=null),wt.stop()};function U(I){I.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),g=!0}function xe(){console.log("THREE.WebGLRenderer: Context Restored."),g=!1;let I=le.autoReset,J=K.enabled,ie=K.autoUpdate,ne=K.needsUpdate,ue=K.type;Ie(),le.autoReset=I,K.enabled=J,K.autoUpdate=ie,K.needsUpdate=ne,K.type=ue}function Se(I){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",I.statusMessage)}function Xe(I){let J=I.target;J.removeEventListener("dispose",Xe),Le(J)}function Le(I){Ye(I),ce.remove(I)}function Ye(I){let J=ce.get(I).programs;J!==void 0&&(J.forEach(function(ie){ye.releaseProgram(ie)}),I.isShaderMaterial&&ye.releaseShaderCache(I))}this.renderBufferDirect=function(I,J,ie,ne,ue,Ze){J===null&&(J=H);let $e=ue.isMesh&&ue.matrixWorld.determinant()<0,rt=CA(I,J,ie,ne,ue);V.setMaterial(ne,$e);let nt=ie.index,Tt=ie.attributes.position;if(nt===null){if(Tt===void 0||Tt.count===0)return}else if(nt.count===0)return;let ut=1;ne.wireframe===!0&&(nt=Te.getWireframeAttribute(ie),ut=2),Be.setup(ue,ne,rt,ie,nt);let pt,Wt=Ee;nt!==null&&(pt=fe.get(nt),Wt=Fe,Wt.setIndex(pt));let $s=nt!==null?nt.count:Tt.count,Go=ie.drawRange.start*ut,ko=ie.drawRange.count*ut,Jr=Ze!==null?Ze.start*ut:0,_t=Ze!==null?Ze.count*ut:1/0,Vo=Math.max(Go,Jr),tn=Math.min($s,Go+ko,Jr+_t)-1,$r=Math.max(0,tn-Vo+1);if($r!==0){if(ue.isMesh)ne.wireframe===!0?(V.setLineWidth(ne.wireframeLinewidth*X()),Wt.setMode(1)):Wt.setMode(4);else if(ue.isLine){let Zi=ne.linewidth;Zi===void 0&&(Zi=1),V.setLineWidth(Zi*X()),ue.isLineSegments?Wt.setMode(1):ue.isLineLoop?Wt.setMode(2):Wt.setMode(3)}else ue.isPoints?Wt.setMode(0):ue.isSprite&&Wt.setMode(4);if(ue.isInstancedMesh)Wt.renderInstances(Vo,$r,ue.count);else if(ie.isInstancedBufferGeometry){let Zi=Math.min(ie.instanceCount,ie._maxInstanceCount);Wt.renderInstances(Vo,$r,Zi)}else Wt.render(Vo,$r)}},this.compile=function(I,J){d=P.get(I),d.init(),m.push(d),I.traverseVisible(function(ie){ie.isLight&&ie.layers.test(J.layers)&&(d.pushLight(ie),ie.castShadow&&d.pushShadow(ie))}),d.setupLights(p.physicallyCorrectLights),I.traverse(function(ie){let ne=ie.material;if(ne)if(Array.isArray(ne))for(let ue=0;ue<ne.length;ue++){let Ze=ne[ue];lp(Ze,I,ie)}else lp(ne,I,ie)}),m.pop(),d=null};let be=null;function Qe(I){be&&be(I)}function tt(){wt.stop()}function ft(){wt.start()}let wt=new sx;wt.setAnimationLoop(Qe),typeof self<"u"&&wt.setContext(self),this.setAnimationLoop=function(I){be=I,ve.setAnimationLoop(I),I===null?wt.stop():wt.start()},ve.addEventListener("sessionstart",tt),ve.addEventListener("sessionend",ft),this.render=function(I,J){if(J!==void 0&&J.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(g===!0)return;I.autoUpdate===!0&&I.updateMatrixWorld(),J.parent===null&&J.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(J),J=ve.getCamera()),I.isScene===!0&&I.onBeforeRender(p,I,J,w),d=P.get(I,m.length),d.init(),m.push(d),G.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),Z.setFromProjectionMatrix(G),z=this.localClippingEnabled,Y=D.init(this.clippingPlanes,z,J),h=dt.get(I,f.length),h.init(),f.push(h),Yn(I,J,0,p.sortObjects),h.finish(),p.sortObjects===!0&&h.sort(L,R),Y===!0&&D.beginShadows();let ie=d.state.shadowsArray;if(K.render(ie,I,J),Y===!0&&D.endShadows(),this.info.autoReset===!0&&this.info.reset(),he.render(h,I),d.setupLights(p.physicallyCorrectLights),J.isArrayCamera){let ne=J.cameras;for(let ue=0,Ze=ne.length;ue<Ze;ue++){let $e=ne[ue];Hu(h,I,$e,$e.viewport)}}else Hu(h,I,J);w!==null&&(oe.updateMultisampleRenderTarget(w),oe.updateRenderTargetMipmap(w)),I.isScene===!0&&I.onAfterRender(p,I,J),Be.resetDefaultState(),b=-1,_=null,m.pop(),m.length>0?d=m[m.length-1]:d=null,f.pop(),f.length>0?h=f[f.length-1]:h=null};function Yn(I,J,ie,ne){if(I.visible===!1)return;if(I.layers.test(J.layers)){if(I.isGroup)ie=I.renderOrder;else if(I.isLOD)I.autoUpdate===!0&&I.update(J);else if(I.isLight)d.pushLight(I),I.castShadow&&d.pushShadow(I);else if(I.isSprite){if(!I.frustumCulled||Z.intersectsSprite(I)){ne&&k.setFromMatrixPosition(I.matrixWorld).applyMatrix4(G);let $e=Ce.update(I),rt=I.material;rt.visible&&h.push(I,$e,rt,ie,k.z,null)}}else if((I.isMesh||I.isLine||I.isPoints)&&(I.isSkinnedMesh&&I.skeleton.frame!==le.render.frame&&(I.skeleton.update(),I.skeleton.frame=le.render.frame),!I.frustumCulled||Z.intersectsObject(I))){ne&&k.setFromMatrixPosition(I.matrixWorld).applyMatrix4(G);let $e=Ce.update(I),rt=I.material;if(Array.isArray(rt)){let nt=$e.groups;for(let Tt=0,ut=nt.length;Tt<ut;Tt++){let pt=nt[Tt],Wt=rt[pt.materialIndex];Wt&&Wt.visible&&h.push(I,$e,Wt,ie,k.z,pt)}}else rt.visible&&h.push(I,$e,rt,ie,k.z,null)}}let Ze=I.children;for(let $e=0,rt=Ze.length;$e<rt;$e++)Yn(Ze[$e],J,ie,ne)}function Hu(I,J,ie,ne){let ue=I.opaque,Ze=I.transmissive,$e=I.transparent;d.setupLightsView(ie),Ze.length>0&&zo(ue,J,ie),ne&&V.viewport(A.copy(ne)),ue.length>0&&Wu(ue,J,ie),Ze.length>0&&Wu(Ze,J,ie),$e.length>0&&Wu($e,J,ie),V.buffers.depth.setTest(!0),V.buffers.depth.setMask(!0),V.buffers.color.setMask(!0),V.setPolygonOffset(!1)}function zo(I,J,ie){let ne=te.isWebGL2;F===null&&(F=new lt(1,1,{generateMipmaps:!0,type:$.has("EXT_color_buffer_half_float")?gc:Pt,minFilter:gs,samples:ne&&s===!0?4:0})),p.getDrawingBufferSize(B),ne?F.setSize(B.x,B.y):F.setSize(_h(B.x),_h(B.y));let ue=p.getRenderTarget();p.setRenderTarget(F),p.clear();let Ze=p.toneMapping;p.toneMapping=Fi,Wu(I,J,ie),p.toneMapping=Ze,oe.updateMultisampleRenderTarget(F),oe.updateRenderTargetMipmap(F),p.setRenderTarget(ue)}function Wu(I,J,ie){let ne=J.isScene===!0?J.overrideMaterial:null;for(let ue=0,Ze=I.length;ue<Ze;ue++){let $e=I[ue],rt=$e.object,nt=$e.geometry,Tt=ne===null?$e.material:ne,ut=$e.group;rt.layers.test(ie.layers)&&EA(rt,J,ie,nt,Tt,ut)}}function EA(I,J,ie,ne,ue,Ze){I.onBeforeRender(p,J,ie,ne,ue,Ze),I.modelViewMatrix.multiplyMatrices(ie.matrixWorldInverse,I.matrixWorld),I.normalMatrix.getNormalMatrix(I.modelViewMatrix),ue.onBeforeRender(p,J,ie,ne,I,Ze),ue.transparent===!0&&ue.side===wn?(ue.side=bn,ue.needsUpdate=!0,p.renderBufferDirect(ie,J,ne,ue,I,Ze),ue.side=Ui,ue.needsUpdate=!0,p.renderBufferDirect(ie,J,ne,ue,I,Ze),ue.side=wn):p.renderBufferDirect(ie,J,ne,ue,I,Ze),I.onAfterRender(p,J,ie,ne,ue,Ze)}function lp(I,J,ie){J.isScene!==!0&&(J=H);let ne=ce.get(I),ue=d.state.lights,Ze=d.state.shadowsArray,$e=ue.state.version,rt=ye.getParameters(I,ue.state,Ze,J,ie),nt=ye.getProgramCacheKey(rt),Tt=ne.programs;ne.environment=I.isMeshStandardMaterial?J.environment:null,ne.fog=J.fog,ne.envMap=(I.isMeshStandardMaterial?ge:de).get(I.envMap||ne.environment),Tt===void 0&&(I.addEventListener("dispose",Xe),Tt=new Map,ne.programs=Tt);let ut=Tt.get(nt);if(ut!==void 0){if(ne.currentProgram===ut&&ne.lightsStateVersion===$e)return yy(I,rt),ut}else rt.uniforms=ye.getUniforms(I),I.onBuild(ie,rt,p),I.onBeforeCompile(rt,p),ut=ye.acquireProgram(rt,nt),Tt.set(nt,ut),ne.uniforms=rt.uniforms;let pt=ne.uniforms;(!I.isShaderMaterial&&!I.isRawShaderMaterial||I.clipping===!0)&&(pt.clippingPlanes=D.uniform),yy(I,rt),ne.needsLights=PA(I),ne.lightsStateVersion=$e,ne.needsLights&&(pt.ambientLightColor.value=ue.state.ambient,pt.lightProbe.value=ue.state.probe,pt.directionalLights.value=ue.state.directional,pt.directionalLightShadows.value=ue.state.directionalShadow,pt.spotLights.value=ue.state.spot,pt.spotLightShadows.value=ue.state.spotShadow,pt.rectAreaLights.value=ue.state.rectArea,pt.ltc_1.value=ue.state.rectAreaLTC1,pt.ltc_2.value=ue.state.rectAreaLTC2,pt.pointLights.value=ue.state.point,pt.pointLightShadows.value=ue.state.pointShadow,pt.hemisphereLights.value=ue.state.hemi,pt.directionalShadowMap.value=ue.state.directionalShadowMap,pt.directionalShadowMatrix.value=ue.state.directionalShadowMatrix,pt.spotShadowMap.value=ue.state.spotShadowMap,pt.spotShadowMatrix.value=ue.state.spotShadowMatrix,pt.pointShadowMap.value=ue.state.pointShadowMap,pt.pointShadowMatrix.value=ue.state.pointShadowMatrix);let Wt=ut.getUniforms(),$s=oa.seqWithValue(Wt.seq,pt);return ne.currentProgram=ut,ne.uniformsList=$s,ut}function yy(I,J){let ie=ce.get(I);ie.outputEncoding=J.outputEncoding,ie.instancing=J.instancing,ie.skinning=J.skinning,ie.morphTargets=J.morphTargets,ie.morphNormals=J.morphNormals,ie.morphColors=J.morphColors,ie.morphTargetsCount=J.morphTargetsCount,ie.numClippingPlanes=J.numClippingPlanes,ie.numIntersection=J.numClipIntersection,ie.vertexAlphas=J.vertexAlphas,ie.vertexTangents=J.vertexTangents,ie.toneMapping=J.toneMapping}function CA(I,J,ie,ne,ue){J.isScene!==!0&&(J=H),oe.resetTextureUnits();let Ze=J.fog,$e=ne.isMeshStandardMaterial?J.environment:null,rt=w===null?p.outputEncoding:w.isXRRenderTarget===!0?w.texture.encoding:ar,nt=(ne.isMeshStandardMaterial?ge:de).get(ne.envMap||$e),Tt=ne.vertexColors===!0&&!!ie.attributes.color&&ie.attributes.color.itemSize===4,ut=!!ne.normalMap&&!!ie.attributes.tangent,pt=!!ie.morphAttributes.position,Wt=!!ie.morphAttributes.normal,$s=!!ie.morphAttributes.color,Go=ne.toneMapped?p.toneMapping:Fi,ko=ie.morphAttributes.position||ie.morphAttributes.normal||ie.morphAttributes.color,Jr=ko!==void 0?ko.length:0,_t=ce.get(ne),Vo=d.state.lights;if(Y===!0&&(z===!0||I!==_)){let ei=I===_&&ne.id===b;D.setState(ne,I,ei)}let tn=!1;ne.version===_t.__version?(_t.needsLights&&_t.lightsStateVersion!==Vo.state.version||_t.outputEncoding!==rt||ue.isInstancedMesh&&_t.instancing===!1||!ue.isInstancedMesh&&_t.instancing===!0||ue.isSkinnedMesh&&_t.skinning===!1||!ue.isSkinnedMesh&&_t.skinning===!0||_t.envMap!==nt||ne.fog===!0&&_t.fog!==Ze||_t.numClippingPlanes!==void 0&&(_t.numClippingPlanes!==D.numPlanes||_t.numIntersection!==D.numIntersection)||_t.vertexAlphas!==Tt||_t.vertexTangents!==ut||_t.morphTargets!==pt||_t.morphNormals!==Wt||_t.morphColors!==$s||_t.toneMapping!==Go||te.isWebGL2===!0&&_t.morphTargetsCount!==Jr)&&(tn=!0):(tn=!0,_t.__version=ne.version);let $r=_t.currentProgram;tn===!0&&($r=lp(ne,J,ue));let Zi=!1,rc=!1,cp=!1,Un=$r.getUniforms(),ic=_t.uniforms;if(V.useProgram($r.program)&&(Zi=!0,rc=!0,cp=!0),ne.id!==b&&(b=ne.id,rc=!0),Zi||_!==I){if(Un.setValue(q,"projectionMatrix",I.projectionMatrix),te.logarithmicDepthBuffer&&Un.setValue(q,"logDepthBufFC",2/(Math.log(I.far+1)/Math.LN2)),_!==I&&(_=I,rc=!0,cp=!0),ne.isShaderMaterial||ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshStandardMaterial||ne.envMap){let ei=Un.map.cameraPosition;ei!==void 0&&ei.setValue(q,k.setFromMatrixPosition(I.matrixWorld))}(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial)&&Un.setValue(q,"isOrthographic",I.isOrthographicCamera===!0),(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial||ne.isShadowMaterial||ue.isSkinnedMesh)&&Un.setValue(q,"viewMatrix",I.matrixWorldInverse)}if(ue.isSkinnedMesh){Un.setOptional(q,ue,"bindMatrix"),Un.setOptional(q,ue,"bindMatrixInverse");let ei=ue.skeleton;ei&&(te.floatVertexTextures?(ei.boneTexture===null&&ei.computeBoneTexture(),Un.setValue(q,"boneTexture",ei.boneTexture,oe),Un.setValue(q,"boneTextureSize",ei.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let up=ie.morphAttributes;return(up.position!==void 0||up.normal!==void 0||up.color!==void 0&&te.isWebGL2===!0)&&pe.update(ue,ie,ne,$r),(rc||_t.receiveShadow!==ue.receiveShadow)&&(_t.receiveShadow=ue.receiveShadow,Un.setValue(q,"receiveShadow",ue.receiveShadow)),rc&&(Un.setValue(q,"toneMappingExposure",p.toneMappingExposure),_t.needsLights&&DA(ic,cp),Ze&&ne.fog===!0&&Ne.refreshFogUniforms(ic,Ze),Ne.refreshMaterialUniforms(ic,ne,C,E,F),oa.upload(q,_t.uniformsList,ic,oe)),ne.isShaderMaterial&&ne.uniformsNeedUpdate===!0&&(oa.upload(q,_t.uniformsList,ic,oe),ne.uniformsNeedUpdate=!1),ne.isSpriteMaterial&&Un.setValue(q,"center",ue.center),Un.setValue(q,"modelViewMatrix",ue.modelViewMatrix),Un.setValue(q,"normalMatrix",ue.normalMatrix),Un.setValue(q,"modelMatrix",ue.matrixWorld),$r}function DA(I,J){I.ambientLightColor.needsUpdate=J,I.lightProbe.needsUpdate=J,I.directionalLights.needsUpdate=J,I.directionalLightShadows.needsUpdate=J,I.pointLights.needsUpdate=J,I.pointLightShadows.needsUpdate=J,I.spotLights.needsUpdate=J,I.spotLightShadows.needsUpdate=J,I.rectAreaLights.needsUpdate=J,I.hemisphereLights.needsUpdate=J}function PA(I){return I.isMeshLambertMaterial||I.isMeshToonMaterial||I.isMeshPhongMaterial||I.isMeshStandardMaterial||I.isShadowMaterial||I.isShaderMaterial&&I.lights===!0}this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return x},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(I,J,ie){ce.get(I.texture).__webglTexture=J,ce.get(I.depthTexture).__webglTexture=ie;let ne=ce.get(I);ne.__hasExternalTextures=!0,ne.__hasExternalTextures&&(ne.__autoAllocateDepthBuffer=ie===void 0,ne.__autoAllocateDepthBuffer||$.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),ne.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(I,J){let ie=ce.get(I);ie.__webglFramebuffer=J,ie.__useDefaultFramebuffer=J===void 0},this.setRenderTarget=function(I,J=0,ie=0){w=I,y=J,x=ie;let ne=!0;if(I){let nt=ce.get(I);nt.__useDefaultFramebuffer!==void 0?(V.bindFramebuffer(36160,null),ne=!1):nt.__webglFramebuffer===void 0?oe.setupRenderTarget(I):nt.__hasExternalTextures&&oe.rebindTextures(I,ce.get(I.texture).__webglTexture,ce.get(I.depthTexture).__webglTexture)}let ue=null,Ze=!1,$e=!1;if(I){let nt=I.texture;(nt.isData3DTexture||nt.isDataArrayTexture)&&($e=!0);let Tt=ce.get(I).__webglFramebuffer;I.isWebGLCubeRenderTarget?(ue=Tt[J],Ze=!0):te.isWebGL2&&I.samples>0&&oe.useMultisampledRTT(I)===!1?ue=ce.get(I).__webglMultisampledFramebuffer:ue=Tt,A.copy(I.viewport),M.copy(I.scissor),v=I.scissorTest}else A.copy(O).multiplyScalar(C).floor(),M.copy(W).multiplyScalar(C).floor(),v=j;if(V.bindFramebuffer(36160,ue)&&te.drawBuffers&&ne&&V.drawBuffers(I,ue),V.viewport(A),V.scissor(M),V.setScissorTest(v),Ze){let nt=ce.get(I.texture);q.framebufferTexture2D(36160,36064,34069+J,nt.__webglTexture,ie)}else if($e){let nt=ce.get(I.texture),Tt=J||0;q.framebufferTextureLayer(36160,36064,nt.__webglTexture,ie||0,Tt)}b=-1},this.readRenderTargetPixels=function(I,J,ie,ne,ue,Ze,$e){if(!(I&&I.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let rt=ce.get(I).__webglFramebuffer;if(I.isWebGLCubeRenderTarget&&$e!==void 0&&(rt=rt[$e]),rt){V.bindFramebuffer(36160,rt);try{let nt=I.texture,Tt=nt.format,ut=nt.type;if(Tt!==Rr&&re.convert(Tt)!==q.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let pt=ut===gc&&($.has("EXT_color_buffer_half_float")||te.isWebGL2&&$.has("EXT_color_buffer_float"));if(ut!==Pt&&re.convert(ut)!==q.getParameter(35738)&&!(ut===gr&&(te.isWebGL2||$.has("OES_texture_float")||$.has("WEBGL_color_buffer_float")))&&!pt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=I.width-ne&&ie>=0&&ie<=I.height-ue&&q.readPixels(J,ie,ne,ue,re.convert(Tt),re.convert(ut),Ze)}finally{let nt=w!==null?ce.get(w).__webglFramebuffer:null;V.bindFramebuffer(36160,nt)}}},this.copyFramebufferToTexture=function(I,J,ie=0){let ne=Math.pow(2,-ie),ue=Math.floor(J.image.width*ne),Ze=Math.floor(J.image.height*ne);oe.setTexture2D(J,0),q.copyTexSubImage2D(3553,ie,0,0,I.x,I.y,ue,Ze),V.unbindTexture()},this.copyTextureToTexture=function(I,J,ie,ne=0){let ue=J.image.width,Ze=J.image.height,$e=re.convert(ie.format),rt=re.convert(ie.type);oe.setTexture2D(ie,0),q.pixelStorei(37440,ie.flipY),q.pixelStorei(37441,ie.premultiplyAlpha),q.pixelStorei(3317,ie.unpackAlignment),J.isDataTexture?q.texSubImage2D(3553,ne,I.x,I.y,ue,Ze,$e,rt,J.image.data):J.isCompressedTexture?q.compressedTexSubImage2D(3553,ne,I.x,I.y,J.mipmaps[0].width,J.mipmaps[0].height,$e,J.mipmaps[0].data):q.texSubImage2D(3553,ne,I.x,I.y,$e,rt,J.image),ne===0&&ie.generateMipmaps&&q.generateMipmap(3553),V.unbindTexture()},this.copyTextureToTexture3D=function(I,J,ie,ne,ue=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Ze=I.max.x-I.min.x+1,$e=I.max.y-I.min.y+1,rt=I.max.z-I.min.z+1,nt=re.convert(ne.format),Tt=re.convert(ne.type),ut;if(ne.isData3DTexture)oe.setTexture3D(ne,0),ut=32879;else if(ne.isDataArrayTexture)oe.setTexture2DArray(ne,0),ut=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}q.pixelStorei(37440,ne.flipY),q.pixelStorei(37441,ne.premultiplyAlpha),q.pixelStorei(3317,ne.unpackAlignment);let pt=q.getParameter(3314),Wt=q.getParameter(32878),$s=q.getParameter(3316),Go=q.getParameter(3315),ko=q.getParameter(32877),Jr=ie.isCompressedTexture?ie.mipmaps[0]:ie.image;q.pixelStorei(3314,Jr.width),q.pixelStorei(32878,Jr.height),q.pixelStorei(3316,I.min.x),q.pixelStorei(3315,I.min.y),q.pixelStorei(32877,I.min.z),ie.isDataTexture||ie.isData3DTexture?q.texSubImage3D(ut,ue,J.x,J.y,J.z,Ze,$e,rt,nt,Tt,Jr.data):ie.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),q.compressedTexSubImage3D(ut,ue,J.x,J.y,J.z,Ze,$e,rt,nt,Jr.data)):q.texSubImage3D(ut,ue,J.x,J.y,J.z,Ze,$e,rt,nt,Tt,Jr),q.pixelStorei(3314,pt),q.pixelStorei(32878,Wt),q.pixelStorei(3316,$s),q.pixelStorei(3315,Go),q.pixelStorei(32877,ko),ue===0&&ne.generateMipmaps&&q.generateMipmap(ut),V.unbindTexture()},this.initTexture=function(I){I.isCubeTexture?oe.setTextureCube(I,0):I.isData3DTexture?oe.setTexture3D(I,0):I.isDataArrayTexture?oe.setTexture2DArray(I,0):oe.setTexture2D(I,0),V.unbindTexture()},this.resetState=function(){y=0,x=0,w=null,V.reset(),Be.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var pm=class extends Um{};pm.prototype.isWebGL1Renderer=!0;var ha=class{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new Re(e),this.near=t,this.far=n}clone(){return new ha(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},lr=class extends ot{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}},Dh=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Jp,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=ni()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,s=this.stride;i<s;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=ni()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=ni()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},zn=new S,co=class{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=i===!0}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)zn.fromBufferAttribute(this,t),zn.applyMatrix4(e),this.setXYZ(t,zn.x,zn.y,zn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)zn.fromBufferAttribute(this,t),zn.applyNormalMatrix(e),this.setXYZ(t,zn.x,zn.y,zn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)zn.fromBufferAttribute(this,t),zn.transformDirection(e),this.setXYZ(t,zn.x,zn.y,zn.z);return this}setX(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){return this.data.array[e*this.data.stride+this.offset]}getY(e){return this.data.array[e*this.data.stride+this.offset+1]}getZ(e){return this.data.array[e*this.data.stride+this.offset+2]}getW(e){return this.data.array[e*this.data.stride+this.offset+3]}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,s){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=s,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let n=0;n<this.count;n++){let i=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[i+s])}return new je(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new co(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let n=0;n<this.count;n++){let i=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[i+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}};var Ph=class extends je{constructor(e,t,n,i=1){typeof n=="number"&&(i=n,n=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}};var xr=class extends lo{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Re(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},Lv=new S,Ov=new S,Rv=new Oe,Hp=new zi,dh=new Ln,uo=class extends ot{constructor(e=new Pe,t=new xr){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[0];for(let i=1,s=t.count;i<s;i++)Lv.fromBufferAttribute(t,i-1),Ov.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=Lv.distanceTo(Ov);e.setAttribute("lineDistance",new _e(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){let n=this.geometry,i=this.matrixWorld,s=e.params.Line.threshold,o=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),dh.copy(n.boundingSphere),dh.applyMatrix4(i),dh.radius+=s,e.ray.intersectsSphere(dh)===!1)return;Rv.copy(i).invert(),Hp.copy(e.ray).applyMatrix4(Rv);let a=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=a*a,u=new S,c=new S,h=new S,d=new S,f=this.isLineSegments?2:1,m=n.index,g=n.attributes.position;if(m!==null){let y=Math.max(0,o.start),x=Math.min(m.count,o.start+o.count);for(let w=y,b=x-1;w<b;w+=f){let _=m.getX(w),A=m.getX(w+1);if(u.fromBufferAttribute(g,_),c.fromBufferAttribute(g,A),Hp.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let v=e.ray.origin.distanceTo(d);v<e.near||v>e.far||t.push({distance:v,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}else{let y=Math.max(0,o.start),x=Math.min(g.count,o.start+o.count);for(let w=y,b=x-1;w<b;w+=f){if(u.fromBufferAttribute(g,w),c.fromBufferAttribute(g,w+1),Hp.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let A=e.ray.origin.distanceTo(d);A<e.near||A>e.far||t.push({distance:A,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s<o;s++){let a=i[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[a]=s}}}}},Nv=new S,Bv=new S,ds=class extends uo{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[];for(let i=0,s=t.count;i<s;i+=2)Nv.fromBufferAttribute(t,i),Bv.fromBufferAttribute(t,i+1),n[i]=i===0?0:n[i-1],n[i+1]=n[i]+Nv.distanceTo(Bv);e.setAttribute("lineDistance",new _e(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}};var br=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,i=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)n=this.getPoint(o/e),s+=n.distanceTo(i),t.push(s),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let n=this.getLengths(),i=0,s=n.length,o;t?o=t:o=e*n[s-1];let a=0,l=s-1,u;for(;a<=l;)if(i=Math.floor(a+(l-a)/2),u=n[i]-o,u<0)a=i+1;else if(u>0)l=i-1;else{l=i;break}if(i=l,n[i]===o)return i/(s-1);let c=n[i],d=n[i+1]-c,f=(o-c)/d;return(i+f)/(s-1)}getTangent(e,t){let i=e-1e-4,s=e+1e-4;i<0&&(i=0),s>1&&(s=1);let o=this.getPoint(i),a=this.getPoint(s),l=t||(o.isVector2?new N:new S);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new S,i=[],s=[],o=[],a=new S,l=new Oe;for(let f=0;f<=e;f++){let m=f/e;i[f]=this.getTangentAt(m,new S)}s[0]=new S,o[0]=new S;let u=Number.MAX_VALUE,c=Math.abs(i[0].x),h=Math.abs(i[0].y),d=Math.abs(i[0].z);c<=u&&(u=c,n.set(1,0,0)),h<=u&&(u=h,n.set(0,1,0)),d<=u&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),s[0].crossVectors(i[0],a),o[0].crossVectors(i[0],s[0]);for(let f=1;f<=e;f++){if(s[f]=s[f-1].clone(),o[f]=o[f-1].clone(),a.crossVectors(i[f-1],i[f]),a.length()>Number.EPSILON){a.normalize();let m=Math.acos(cn(i[f-1].dot(i[f]),-1,1));s[f].applyMatrix4(l.makeRotationAxis(a,m))}o[f].crossVectors(i[f],s[f])}if(t===!0){let f=Math.acos(cn(s[0].dot(s[e]),-1,1));f/=e,i[0].dot(a.crossVectors(s[0],s[e]))>0&&(f=-f);for(let m=1;m<=e;m++)s[m].applyMatrix4(l.makeRotationAxis(i[m],f*m)),o[m].crossVectors(i[m],s[m])}return{tangents:i,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},ho=class extends br{constructor(e=0,t=0,n=1,i=1,s=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){let n=t||new N,i=Math.PI*2,s=this.aEndAngle-this.aStartAngle,o=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=i;for(;s>i;)s-=i;s<Number.EPSILON&&(o?s=0:s=i),this.aClockwise===!0&&!o&&(s===i?s=-i:s=s-i);let a=this.aStartAngle+e*s,l=this.aX+this.xRadius*Math.cos(a),u=this.aY+this.yRadius*Math.sin(a);if(this.aRotation!==0){let c=Math.cos(this.aRotation),h=Math.sin(this.aRotation),d=l-this.aX,f=u-this.aY;l=d*c-f*h+this.aX,u=d*h+f*c+this.aY}return n.set(l,u)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},mm=class extends ho{constructor(e,t,n,i,s,o){super(e,t,n,n,i,s,o),this.isArcCurve=!0,this.type="ArcCurve"}};function zm(){let r=0,e=0,t=0,n=0;function i(s,o,a,l){r=s,e=a,t=-3*s+3*o-2*a-l,n=2*s-2*o+a+l}return{initCatmullRom:function(s,o,a,l,u){i(o,a,u*(a-s),u*(l-o))},initNonuniformCatmullRom:function(s,o,a,l,u,c,h){let d=(o-s)/u-(a-s)/(u+c)+(a-o)/c,f=(a-o)/c-(l-o)/(c+h)+(l-a)/h;d*=c,f*=c,i(o,a,d,f)},calc:function(s){let o=s*s,a=o*s;return r+e*s+t*o+n*a}}}var fh=new S,Wp=new zm,jp=new zm,qp=new zm,gm=class extends br{constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new S){let n=t,i=this.points,s=i.length,o=(s-(this.closed?0:1))*e,a=Math.floor(o),l=o-a;this.closed?a+=a>0?0:(Math.floor(Math.abs(a)/s)+1)*s:l===0&&a===s-1&&(a=s-2,l=1);let u,c;this.closed||a>0?u=i[(a-1)%s]:(fh.subVectors(i[0],i[1]).add(i[0]),u=fh);let h=i[a%s],d=i[(a+1)%s];if(this.closed||a+2<s?c=i[(a+2)%s]:(fh.subVectors(i[s-1],i[s-2]).add(i[s-1]),c=fh),this.curveType==="centripetal"||this.curveType==="chordal"){let f=this.curveType==="chordal"?.5:.25,m=Math.pow(u.distanceToSquared(h),f),p=Math.pow(h.distanceToSquared(d),f),g=Math.pow(d.distanceToSquared(c),f);p<1e-4&&(p=1),m<1e-4&&(m=p),g<1e-4&&(g=p),Wp.initNonuniformCatmullRom(u.x,h.x,d.x,c.x,m,p,g),jp.initNonuniformCatmullRom(u.y,h.y,d.y,c.y,m,p,g),qp.initNonuniformCatmullRom(u.z,h.z,d.z,c.z,m,p,g)}else this.curveType==="catmullrom"&&(Wp.initCatmullRom(u.x,h.x,d.x,c.x,this.tension),jp.initCatmullRom(u.y,h.y,d.y,c.y,this.tension),qp.initCatmullRom(u.z,h.z,d.z,c.z,this.tension));return n.set(Wp.calc(l),jp.calc(l),qp.calc(l)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(new S().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function Fv(r,e,t,n,i){let s=(n-e)*.5,o=(i-t)*.5,a=r*r,l=r*a;return(2*t-2*n+s+o)*l+(-3*t+3*n-2*s-o)*a+s*r+t}function ID(r,e){let t=1-r;return t*t*e}function LD(r,e){return 2*(1-r)*r*e}function OD(r,e){return r*r*e}function pc(r,e,t,n){return ID(r,e)+LD(r,t)+OD(r,n)}function RD(r,e){let t=1-r;return t*t*t*e}function ND(r,e){let t=1-r;return 3*t*t*r*e}function BD(r,e){return 3*(1-r)*r*r*e}function FD(r,e){return r*r*r*e}function mc(r,e,t,n,i){return RD(r,e)+ND(r,t)+BD(r,n)+FD(r,i)}var Zn=class extends br{constructor(e=new N,t=new N,n=new N,i=new N){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new N){let n=t,i=this.v0,s=this.v1,o=this.v2,a=this.v3;return n.set(mc(e,i.x,s.x,o.x,a.x),mc(e,i.y,s.y,o.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},ym=class extends br{constructor(e=new S,t=new S,n=new S,i=new S){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new S){let n=t,i=this.v0,s=this.v1,o=this.v2,a=this.v3;return n.set(mc(e,i.x,s.x,o.x,a.x),mc(e,i.y,s.y,o.y,a.y),mc(e,i.z,s.z,o.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Kn=class extends br{constructor(e=new N,t=new N){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new N){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t){let n=t||new N;return n.copy(this.v2).sub(this.v1).normalize(),n}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},bc=class extends br{constructor(e=new S,t=new S){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new S){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Fr=class extends br{constructor(e=new N,t=new N,n=new N){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new N){let n=t,i=this.v0,s=this.v1,o=this.v2;return n.set(pc(e,i.x,s.x,o.x),pc(e,i.y,s.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},vm=class extends br{constructor(e=new S,t=new S,n=new S){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new S){let n=t,i=this.v0,s=this.v1,o=this.v2;return n.set(pc(e,i.x,s.x,o.x),pc(e,i.y,s.y,o.y),pc(e,i.z,s.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},da=class extends br{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new N){let n=t,i=this.points,s=(i.length-1)*e,o=Math.floor(s),a=s-o,l=i[o===0?o:o-1],u=i[o],c=i[o>i.length-2?i.length-1:o+1],h=i[o>i.length-3?i.length-1:o+2];return n.set(Fv(a,l.x,u.x,c.x,h.x),Fv(a,l.y,u.y,c.y,h.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(i.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let i=this.points[t];e.points.push(i.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let i=e.points[t];this.points.push(new N().fromArray(i))}return this}},UD=Object.freeze({__proto__:null,ArcCurve:mm,CatmullRomCurve3:gm,CubicBezierCurve:Zn,CubicBezierCurve3:ym,EllipseCurve:ho,LineCurve:Kn,LineCurve3:bc,QuadraticBezierCurve:Fr,QuadraticBezierCurve3:vm,SplineCurve:da}),xm=class extends br{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new Kn(t,e))}getPoint(e,t){let n=e*this.getLength(),i=this.getCurveLengths(),s=0;for(;s<i.length;){if(i[s]>=n){let o=i[s]-n,a=this.curves[s],l=a.getLength(),u=l===0?0:1-o/l;return a.getPointAt(u,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n<i;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],n;for(let i=0,s=this.curves;i<s.length;i++){let o=s[i],a=o.isEllipseCurve?e*2:o.isLineCurve||o.isLineCurve3?1:o.isSplineCurve?e*o.points.length:e,l=o.getPoints(a);for(let u=0;u<l.length;u++){let c=l[u];n&&n.equals(c)||(t.push(c),n=c)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let i=e.curves[t];this.curves.push(i.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t<n;t++){let i=this.curves[t];e.curves.push(i.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let i=e.curves[t];this.curves.push(new UD[i.type]().fromJSON(i))}return this}},wc=class extends xm{constructor(e){super(),this.type="Path",this.currentPoint=new N,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let n=new Kn(this.currentPoint.clone(),new N(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,i){let s=new Fr(this.currentPoint.clone(),new N(e,t),new N(n,i));return this.curves.push(s),this.currentPoint.set(n,i),this}bezierCurveTo(e,t,n,i,s,o){let a=new Zn(this.currentPoint.clone(),new N(e,t),new N(n,i),new N(s,o));return this.curves.push(a),this.currentPoint.set(s,o),this}splineThru(e){let t=[this.currentPoint.clone()].concat(e),n=new da(t);return this.curves.push(n),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,i,s,o){let a=this.currentPoint.x,l=this.currentPoint.y;return this.absarc(e+a,t+l,n,i,s,o),this}absarc(e,t,n,i,s,o){return this.absellipse(e,t,n,n,i,s,o),this}ellipse(e,t,n,i,s,o,a,l){let u=this.currentPoint.x,c=this.currentPoint.y;return this.absellipse(e+u,t+c,n,i,s,o,a,l),this}absellipse(e,t,n,i,s,o,a,l){let u=new ho(e,t,n,i,s,o,a,l);if(this.curves.length>0){let h=u.getPoint(0);h.equals(this.currentPoint)||this.lineTo(h.x,h.y)}this.curves.push(u);let c=u.getPoint(1);return this.currentPoint.copy(c),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},fa=class extends Pe{constructor(e=[new N(0,.5),new N(.5,0),new N(0,-.5)],t=12,n=0,i=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=cn(i,0,Math.PI*2);let s=[],o=[],a=[],l=[],u=[],c=1/t,h=new S,d=new N,f=new S,m=new S,p=new S,g=0,y=0;for(let x=0;x<=e.length-1;x++)switch(x){case 0:g=e[x+1].x-e[x].x,y=e[x+1].y-e[x].y,f.x=y*1,f.y=-g,f.z=y*0,p.copy(f),f.normalize(),l.push(f.x,f.y,f.z);break;case e.length-1:l.push(p.x,p.y,p.z);break;default:g=e[x+1].x-e[x].x,y=e[x+1].y-e[x].y,f.x=y*1,f.y=-g,f.z=y*0,m.copy(f),f.x+=p.x,f.y+=p.y,f.z+=p.z,f.normalize(),l.push(f.x,f.y,f.z),p.copy(m)}for(let x=0;x<=t;x++){let w=n+x*c*i,b=Math.sin(w),_=Math.cos(w);for(let A=0;A<=e.length-1;A++){h.x=e[A].x*b,h.y=e[A].y,h.z=e[A].x*_,o.push(h.x,h.y,h.z),d.x=x/t,d.y=A/(e.length-1),a.push(d.x,d.y);let M=l[3*A+0]*b,v=l[3*A+1],T=l[3*A+0]*_;u.push(M,v,T)}}for(let x=0;x<t;x++)for(let w=0;w<e.length-1;w++){let b=w+x*e.length,_=b,A=b+e.length,M=b+e.length+1,v=b+1;s.push(_,A,v),s.push(M,v,A)}this.setIndex(s),this.setAttribute("position",new _e(o,3)),this.setAttribute("uv",new _e(a,2)),this.setAttribute("normal",new _e(u,3))}static fromJSON(e){return new fa(e.points,e.segments,e.phiStart,e.phiLength)}};var fo=class extends Pe{constructor(e=1,t=1,n=1,i=8,s=1,o=!1,a=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l};let u=this;i=Math.floor(i),s=Math.floor(s);let c=[],h=[],d=[],f=[],m=0,p=[],g=n/2,y=0;x(),o===!1&&(e>0&&w(!0),t>0&&w(!1)),this.setIndex(c),this.setAttribute("position",new _e(h,3)),this.setAttribute("normal",new _e(d,3)),this.setAttribute("uv",new _e(f,2));function x(){let b=new S,_=new S,A=0,M=(t-e)/n;for(let v=0;v<=s;v++){let T=[],E=v/s,C=E*(t-e)+e;for(let L=0;L<=i;L++){let R=L/i,O=R*l+a,W=Math.sin(O),j=Math.cos(O);_.x=C*W,_.y=-E*n+g,_.z=C*j,h.push(_.x,_.y,_.z),b.set(W,M,j).normalize(),d.push(b.x,b.y,b.z),f.push(R,1-E),T.push(m++)}p.push(T)}for(let v=0;v<i;v++)for(let T=0;T<s;T++){let E=p[T][v],C=p[T+1][v],L=p[T+1][v+1],R=p[T][v+1];c.push(E,C,R),c.push(C,L,R),A+=6}u.addGroup(y,A,0),y+=A}function w(b){let _=m,A=new N,M=new S,v=0,T=b===!0?e:t,E=b===!0?1:-1;for(let L=1;L<=i;L++)h.push(0,g*E,0),d.push(0,E,0),f.push(.5,.5),m++;let C=m;for(let L=0;L<=i;L++){let O=L/i*l+a,W=Math.cos(O),j=Math.sin(O);M.x=T*j,M.y=g*E,M.z=T*W,h.push(M.x,M.y,M.z),d.push(0,E,0),A.x=W*.5+.5,A.y=j*.5*E+.5,f.push(A.x,A.y),m++}for(let L=0;L<i;L++){let R=_+L,O=C+L;b===!0?c.push(O,O+1,R):c.push(O+1,O,R),v+=3}u.addGroup(y,v,b===!0?1:2),y+=v}}static fromJSON(e){return new fo(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},pa=class extends fo{constructor(e=1,t=1,n=8,i=1,s=!1,o=0,a=Math.PI*2){super(0,e,t,n,i,s,o,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:s,thetaStart:o,thetaLength:a}}static fromJSON(e){return new pa(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},ma=class extends Pe{constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};let s=[],o=[];a(i),u(n),c(),this.setAttribute("position",new _e(s,3)),this.setAttribute("normal",new _e(s.slice(),3)),this.setAttribute("uv",new _e(o,2)),i===0?this.computeVertexNormals():this.normalizeNormals();function a(x){let w=new S,b=new S,_=new S;for(let A=0;A<t.length;A+=3)f(t[A+0],w),f(t[A+1],b),f(t[A+2],_),l(w,b,_,x)}function l(x,w,b,_){let A=_+1,M=[];for(let v=0;v<=A;v++){M[v]=[];let T=x.clone().lerp(b,v/A),E=w.clone().lerp(b,v/A),C=A-v;for(let L=0;L<=C;L++)L===0&&v===A?M[v][L]=T:M[v][L]=T.clone().lerp(E,L/C)}for(let v=0;v<A;v++)for(let T=0;T<2*(A-v)-1;T++){let E=Math.floor(T/2);T%2===0?(d(M[v][E+1]),d(M[v+1][E]),d(M[v][E])):(d(M[v][E+1]),d(M[v+1][E+1]),d(M[v+1][E]))}}function u(x){let w=new S;for(let b=0;b<s.length;b+=3)w.x=s[b+0],w.y=s[b+1],w.z=s[b+2],w.normalize().multiplyScalar(x),s[b+0]=w.x,s[b+1]=w.y,s[b+2]=w.z}function c(){let x=new S;for(let w=0;w<s.length;w+=3){x.x=s[w+0],x.y=s[w+1],x.z=s[w+2];let b=g(x)/2/Math.PI+.5,_=y(x)/Math.PI+.5;o.push(b,1-_)}m(),h()}function h(){for(let x=0;x<o.length;x+=6){let w=o[x+0],b=o[x+2],_=o[x+4],A=Math.max(w,b,_),M=Math.min(w,b,_);A>.9&&M<.1&&(w<.2&&(o[x+0]+=1),b<.2&&(o[x+2]+=1),_<.2&&(o[x+4]+=1))}}function d(x){s.push(x.x,x.y,x.z)}function f(x,w){let b=x*3;w.x=e[b+0],w.y=e[b+1],w.z=e[b+2]}function m(){let x=new S,w=new S,b=new S,_=new S,A=new N,M=new N,v=new N;for(let T=0,E=0;T<s.length;T+=9,E+=6){x.set(s[T+0],s[T+1],s[T+2]),w.set(s[T+3],s[T+4],s[T+5]),b.set(s[T+6],s[T+7],s[T+8]),A.set(o[E+0],o[E+1]),M.set(o[E+2],o[E+3]),v.set(o[E+4],o[E+5]),_.copy(x).add(w).add(b).divideScalar(3);let C=g(_);p(A,E+0,x,C),p(M,E+2,w,C),p(v,E+4,b,C)}}function p(x,w,b,_){_<0&&x.x===1&&(o[w]=x.x-1),b.x===0&&b.z===0&&(o[w]=_/2/Math.PI+.5)}function g(x){return Math.atan2(x.z,-x.x)}function y(x){return Math.atan2(-x.y,Math.sqrt(x.x*x.x+x.z*x.z))}}static fromJSON(e){return new ma(e.vertices,e.indices,e.radius,e.details)}},ga=class extends ma{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,i=1/n,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],o=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(s,o,e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new ga(e.radius,e.detail)}};var Nr=class extends wc{constructor(e){super(e),this.uuid=ni(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,i=this.holes.length;n<i;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let i=e.holes[t];this.holes.push(i.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t<n;t++){let i=this.holes[t];e.holes.push(i.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let i=e.holes[t];this.holes.push(new wc().fromJSON(i))}return this}},zD={triangulate:function(r,e,t=2){let n=e&&e.length,i=n?e[0]*t:r.length,s=hx(r,0,i,t,!0),o=[];if(!s||s.next===s.prev)return o;let a,l,u,c,h,d,f;if(n&&(s=WD(r,e,s,t)),r.length>80*t){a=u=r[0],l=c=r[1];for(let m=t;m<i;m+=t)h=r[m],d=r[m+1],h<a&&(a=h),d<l&&(l=d),h>u&&(u=h),d>c&&(c=d);f=Math.max(u-a,c-l),f=f!==0?1/f:0}return _c(s,o,t,a,l,f),o}};function hx(r,e,t,n,i){let s,o;if(i===tP(r,e,t,n)>0)for(s=e;s<t;s+=n)o=Uv(s,r[s],r[s+1],o);else for(s=t-n;s>=e;s-=n)o=Uv(s,r[s],r[s+1],o);return o&&Wh(o,o.next)&&(Ac(o),o=o.next),o}function fs(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(Wh(t,t.next)||zt(t.prev,t,t.next)===0)){if(Ac(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function _c(r,e,t,n,i,s,o){if(!r)return;!o&&s&&QD(r,n,i,s);let a=r,l,u;for(;r.prev!==r.next;){if(l=r.prev,u=r.next,s?kD(r,n,i,s):GD(r)){e.push(l.i/t),e.push(r.i/t),e.push(u.i/t),Ac(r),r=u.next,a=u.next;continue}if(r=u,r===a){o?o===1?(r=VD(fs(r),e,t),_c(r,e,t,n,i,s,2)):o===2&&HD(r,e,t,n,i,s):_c(fs(r),e,t,n,i,s,1);break}}}function GD(r){let e=r.prev,t=r,n=r.next;if(zt(e,t,n)>=0)return!1;let i=r.next.next;for(;i!==r.prev;){if(sa(e.x,e.y,t.x,t.y,n.x,n.y,i.x,i.y)&&zt(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function kD(r,e,t,n){let i=r.prev,s=r,o=r.next;if(zt(i,s,o)>=0)return!1;let a=i.x<s.x?i.x<o.x?i.x:o.x:s.x<o.x?s.x:o.x,l=i.y<s.y?i.y<o.y?i.y:o.y:s.y<o.y?s.y:o.y,u=i.x>s.x?i.x>o.x?i.x:o.x:s.x>o.x?s.x:o.x,c=i.y>s.y?i.y>o.y?i.y:o.y:s.y>o.y?s.y:o.y,h=bm(a,l,e,t,n),d=bm(u,c,e,t,n),f=r.prevZ,m=r.nextZ;for(;f&&f.z>=h&&m&&m.z<=d;){if(f!==r.prev&&f!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&zt(f.prev,f,f.next)>=0||(f=f.prevZ,m!==r.prev&&m!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,m.x,m.y)&&zt(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;f&&f.z>=h;){if(f!==r.prev&&f!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&zt(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;m&&m.z<=d;){if(m!==r.prev&&m!==r.next&&sa(i.x,i.y,s.x,s.y,o.x,o.y,m.x,m.y)&&zt(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function VD(r,e,t){let n=r;do{let i=n.prev,s=n.next.next;!Wh(i,s)&&dx(i,n,n.next,s)&&Sc(i,s)&&Sc(s,i)&&(e.push(i.i/t),e.push(n.i/t),e.push(s.i/t),Ac(n),Ac(n.next),n=r=s),n=n.next}while(n!==r);return fs(n)}function HD(r,e,t,n,i,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&JD(o,a)){let l=fx(o,a);o=fs(o,o.next),l=fs(l,l.next),_c(o,e,t,n,i,s),_c(l,e,t,n,i,s);return}a=a.next}o=o.next}while(o!==r)}function WD(r,e,t,n){let i=[],s,o,a,l,u;for(s=0,o=e.length;s<o;s++)a=e[s]*n,l=s<o-1?e[s+1]*n:r.length,u=hx(r,a,l,n,!1),u===u.next&&(u.steiner=!0),i.push(KD(u));for(i.sort(jD),s=0;s<i.length;s++)qD(i[s],t),t=fs(t,t.next);return t}function jD(r,e){return r.x-e.x}function qD(r,e){if(e=XD(r,e),e){let t=fx(e,r);fs(e,e.next),fs(t,t.next)}}function XD(r,e){let t=e,n=r.x,i=r.y,s=-1/0,o;do{if(i<=t.y&&i>=t.next.y&&t.next.y!==t.y){let d=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=n&&d>s){if(s=d,d===n){if(i===t.y)return t;if(i===t.next.y)return t.next}o=t.x<t.next.x?t:t.next}}t=t.next}while(t!==e);if(!o)return null;if(n===s)return o;let a=o,l=o.x,u=o.y,c=1/0,h;t=o;do n>=t.x&&t.x>=l&&n!==t.x&&sa(i<u?n:s,i,l,u,i<u?s:n,i,t.x,t.y)&&(h=Math.abs(i-t.y)/(n-t.x),Sc(t,r)&&(h<c||h===c&&(t.x>o.x||t.x===o.x&&YD(o,t)))&&(o=t,c=h)),t=t.next;while(t!==a);return o}function YD(r,e){return zt(r.prev,r,e.prev)<0&&zt(e.next,r,r.next)<0}function QD(r,e,t,n){let i=r;do i.z===null&&(i.z=bm(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,ZD(i)}function ZD(r){let e,t,n,i,s,o,a,l,u=1;do{for(t=r,r=null,s=null,o=0;t;){for(o++,n=t,a=0,e=0;e<u&&(a++,n=n.nextZ,!!n);e++);for(l=u;a>0||l>0&&n;)a!==0&&(l===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,a--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;t=n}s.nextZ=null,u*=2}while(o>1);return r}function bm(r,e,t,n,i){return r=32767*(r-t)*i,e=32767*(e-n)*i,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function KD(r){let e=r,t=r;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==r);return t}function sa(r,e,t,n,i,s,o,a){return(i-o)*(e-a)-(r-o)*(s-a)>=0&&(r-o)*(n-a)-(t-o)*(e-a)>=0&&(t-o)*(s-a)-(i-o)*(n-a)>=0}function JD(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!$D(r,e)&&(Sc(r,e)&&Sc(e,r)&&eP(r,e)&&(zt(r.prev,r,e.prev)||zt(r,e.prev,e))||Wh(r,e)&&zt(r.prev,r,r.next)>0&&zt(e.prev,e,e.next)>0)}function zt(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function Wh(r,e){return r.x===e.x&&r.y===e.y}function dx(r,e,t,n){let i=mh(zt(r,e,t)),s=mh(zt(r,e,n)),o=mh(zt(t,n,r)),a=mh(zt(t,n,e));return!!(i!==s&&o!==a||i===0&&ph(r,t,e)||s===0&&ph(r,n,e)||o===0&&ph(t,r,n)||a===0&&ph(t,e,n))}function ph(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function mh(r){return r>0?1:r<0?-1:0}function $D(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&dx(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function Sc(r,e){return zt(r.prev,r,r.next)<0?zt(r,e,r.next)>=0&&zt(r,r.prev,e)>=0:zt(r,e,r.prev)<0||zt(r,r.next,e)<0}function eP(r,e){let t=r,n=!1,i=(r.x+e.x)/2,s=(r.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&i<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function fx(r,e){let t=new wm(r.i,r.x,r.y),n=new wm(e.i,e.x,e.y),i=r.next,s=e.prev;return r.next=e,e.prev=r,t.next=i,i.prev=t,n.next=t,t.prev=n,s.next=n,n.prev=s,n}function Uv(r,e,t,n){let i=new wm(r,e,t);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Ac(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function wm(r,e,t){this.i=r,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function tP(r,e,t,n){let i=0;for(let s=e,o=t-n;s<t;s+=n)i+=(r[o]-r[s])*(r[s+1]+r[o+1]),o=s;return i}var as=class{static area(e){let t=e.length,n=0;for(let i=t-1,s=0;s<t;i=s++)n+=e[i].x*e[s].y-e[s].x*e[i].y;return n*.5}static isClockWise(e){return as.area(e)<0}static triangulateShape(e,t){let n=[],i=[],s=[];zv(e),Gv(n,e);let o=e.length;t.forEach(zv);for(let l=0;l<t.length;l++)i.push(o),o+=t[l].length,Gv(n,t[l]);let a=zD.triangulate(n,i);for(let l=0;l<a.length;l+=3)s.push(a.slice(l,l+3));return s}};function zv(r){let e=r.length;e>2&&r[e-1].equals(r[0])&&r.pop()}function Gv(r,e){for(let t=0;t<e.length;t++)r.push(e[t].x),r.push(e[t].y)}var ya=class extends ma{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,i=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(i,s,e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new ya(e.radius,e.detail)}};var va=class extends Pe{constructor(e=new Nr([new N(0,.5),new N(-.5,-.5),new N(.5,-.5)]),t=12){super(),this.type="ShapeGeometry",this.parameters={shapes:e,curveSegments:t};let n=[],i=[],s=[],o=[],a=0,l=0;if(Array.isArray(e)===!1)u(e);else for(let c=0;c<e.length;c++)u(e[c]),this.addGroup(a,l,c),a+=l,l=0;this.setIndex(n),this.setAttribute("position",new _e(i,3)),this.setAttribute("normal",new _e(s,3)),this.setAttribute("uv",new _e(o,2));function u(c){let h=i.length/3,d=c.extractPoints(t),f=d.shape,m=d.holes;as.isClockWise(f)===!1&&(f=f.reverse());for(let g=0,y=m.length;g<y;g++){let x=m[g];as.isClockWise(x)===!0&&(m[g]=x.reverse())}let p=as.triangulateShape(f,m);for(let g=0,y=m.length;g<y;g++){let x=m[g];f=f.concat(x)}for(let g=0,y=f.length;g<y;g++){let x=f[g];i.push(x.x,x.y,0),s.push(0,0,1),o.push(x.x,x.y)}for(let g=0,y=p.length;g<y;g++){let x=p[g],w=x[0]+h,b=x[1]+h,_=x[2]+h;n.push(w,b,_),l+=3}}}toJSON(){let e=super.toJSON(),t=this.parameters.shapes;return nP(t,e)}static fromJSON(e,t){let n=[];for(let i=0,s=e.shapes.length;i<s;i++){let o=t[e.shapes[i]];n.push(o)}return new va(n,e.curveSegments)}};function nP(r,e){if(e.shapes=[],Array.isArray(r))for(let t=0,n=r.length;t<n;t++){let i=r[t];e.shapes.push(i.uuid)}else e.shapes.push(r.uuid);return e}var po=class extends Pe{constructor(e=1,t=32,n=16,i=0,s=Math.PI*2,o=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:s,thetaStart:o,thetaLength:a},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));let l=Math.min(o+a,Math.PI),u=0,c=[],h=new S,d=new S,f=[],m=[],p=[],g=[];for(let y=0;y<=n;y++){let x=[],w=y/n,b=0;y==0&&o==0?b=.5/t:y==n&&l==Math.PI&&(b=-.5/t);for(let _=0;_<=t;_++){let A=_/t;h.x=-e*Math.cos(i+A*s)*Math.sin(o+w*a),h.y=e*Math.cos(o+w*a),h.z=e*Math.sin(i+A*s)*Math.sin(o+w*a),m.push(h.x,h.y,h.z),d.copy(h).normalize(),p.push(d.x,d.y,d.z),g.push(A+b,1-w),x.push(u++)}c.push(x)}for(let y=0;y<n;y++)for(let x=0;x<t;x++){let w=c[y][x+1],b=c[y][x],_=c[y+1][x],A=c[y+1][x+1];(y!==0||o>0)&&f.push(w,b,A),(y!==n-1||l<Math.PI)&&f.push(b,_,A)}this.setIndex(f),this.setAttribute("position",new _e(m,3)),this.setAttribute("normal",new _e(p,3)),this.setAttribute("uv",new _e(g,2))}static fromJSON(e){return new po(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}};var xa=class extends Pe{constructor(e=1,t=.4,n=64,i=8,s=2,o=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:s,q:o},n=Math.floor(n),i=Math.floor(i);let a=[],l=[],u=[],c=[],h=new S,d=new S,f=new S,m=new S,p=new S,g=new S,y=new S;for(let w=0;w<=n;++w){let b=w/n*s*Math.PI*2;x(b,s,o,e,f),x(b+.01,s,o,e,m),g.subVectors(m,f),y.addVectors(m,f),p.crossVectors(g,y),y.crossVectors(p,g),p.normalize(),y.normalize();for(let _=0;_<=i;++_){let A=_/i*Math.PI*2,M=-t*Math.cos(A),v=t*Math.sin(A);h.x=f.x+(M*y.x+v*p.x),h.y=f.y+(M*y.y+v*p.y),h.z=f.z+(M*y.z+v*p.z),l.push(h.x,h.y,h.z),d.subVectors(h,f).normalize(),u.push(d.x,d.y,d.z),c.push(w/n),c.push(_/i)}}for(let w=1;w<=n;w++)for(let b=1;b<=i;b++){let _=(i+1)*(w-1)+(b-1),A=(i+1)*w+(b-1),M=(i+1)*w+b,v=(i+1)*(w-1)+b;a.push(_,A,v),a.push(A,M,v)}this.setIndex(a),this.setAttribute("position",new _e(l,3)),this.setAttribute("normal",new _e(u,3)),this.setAttribute("uv",new _e(c,2));function x(w,b,_,A,M){let v=Math.cos(w),T=Math.sin(w),E=_/b*w,C=Math.cos(E);M.x=A*(2+C)*.5*v,M.y=A*(2+C)*T*.5,M.z=A*Math.sin(E)*.5}}static fromJSON(e){return new xa(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}};var ln={arraySlice:function(r,e,t){return ln.isTypedArray(r)?new r.constructor(r.subarray(e,t!==void 0?t:r.length)):r.slice(e,t)},convertArray:function(r,e,t){return!r||!t&&r.constructor===e?r:typeof e.BYTES_PER_ELEMENT=="number"?new e(r):Array.prototype.slice.call(r)},isTypedArray:function(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)},getKeyframeOrder:function(r){function e(i,s){return r[i]-r[s]}let t=r.length,n=new Array(t);for(let i=0;i!==t;++i)n[i]=i;return n.sort(e),n},sortedArray:function(r,e,t){let n=r.length,i=new r.constructor(n);for(let s=0,o=0;o!==n;++s){let a=t[s]*e;for(let l=0;l!==e;++l)i[o++]=r[a+l]}return i},flattenJSON:function(r,e,t,n){let i=1,s=r[0];for(;s!==void 0&&s[n]===void 0;)s=r[i++];if(s===void 0)return;let o=s[n];if(o!==void 0)if(Array.isArray(o))do o=s[n],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=r[i++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[n],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=r[i++];while(s!==void 0);else do o=s[n],o!==void 0&&(e.push(s.time),t.push(o)),s=r[i++];while(s!==void 0)},subclip:function(r,e,t,n,i=30){let s=r.clone();s.name=e;let o=[];for(let l=0;l<s.tracks.length;++l){let u=s.tracks[l],c=u.getValueSize(),h=[],d=[];for(let f=0;f<u.times.length;++f){let m=u.times[f]*i;if(!(m<t||m>=n)){h.push(u.times[f]);for(let p=0;p<c;++p)d.push(u.values[f*c+p])}}h.length!==0&&(u.times=ln.convertArray(h,u.times.constructor),u.values=ln.convertArray(d,u.values.constructor),o.push(u))}s.tracks=o;let a=1/0;for(let l=0;l<s.tracks.length;++l)a>s.tracks[l].times[0]&&(a=s.tracks[l].times[0]);for(let l=0;l<s.tracks.length;++l)s.tracks[l].shift(-1*a);return s.resetDuration(),s},makeClipAdditive:function(r,e=0,t=r,n=30){n<=0&&(n=30);let i=t.tracks.length,s=e/n;for(let o=0;o<i;++o){let a=t.tracks[o],l=a.ValueTypeName;if(l==="bool"||l==="string")continue;let u=r.tracks.find(function(y){return y.name===a.name&&y.ValueTypeName===l});if(u===void 0)continue;let c=0,h=a.getValueSize();a.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(c=h/3);let d=0,f=u.getValueSize();u.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(d=f/3);let m=a.times.length-1,p;if(s<=a.times[0]){let y=c,x=h-c;p=ln.arraySlice(a.values,y,x)}else if(s>=a.times[m]){let y=m*h+c,x=y+h-c;p=ln.arraySlice(a.values,y,x)}else{let y=a.createInterpolant(),x=c,w=h-c;y.evaluate(s),p=ln.arraySlice(y.resultBuffer,x,w)}l==="quaternion"&&new qt().fromArray(p).normalize().conjugate().toArray(p);let g=u.times.length;for(let y=0;y<g;++y){let x=y*f+d;if(l==="quaternion")qt.multiplyQuaternionsFlat(u.values,x,p,0,u.values,x);else{let w=f-d*2;for(let b=0;b<w;++b)u.values[x+b]-=p[b]}}}return r.blendMode=DM,r}},ba=class{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,i=t[n],s=t[n-1];n:{e:{let o;t:{r:if(!(e<i)){for(let a=n+2;;){if(i===void 0){if(e<s)break r;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(s=i,i=t[++n],e<i)break e}o=t.length;break t}if(!(e>=s)){let a=t[1];e<a&&(n=2,s=a);for(let l=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(i=s,s=t[--n-1],e>=s)break e}o=n,n=0;break t}break n}for(;n<o;){let a=n+o>>>1;e<t[a]?o=a:n=a+1}if(i=t[n],s=t[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,i)}return this.interpolate_(n,s,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,s=e*i;for(let o=0;o!==i;++o)t[o]=n[s+o];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},_m=class extends ba{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Qy,endingEnd:Qy}}intervalChanged_(e,t,n){let i=this.parameterPositions,s=e-2,o=e+1,a=i[s],l=i[o];if(a===void 0)switch(this.getSettings_().endingStart){case Zy:s=e,a=2*t-n;break;case Ky:s=i.length-2,a=t+i[s]-i[s+1];break;default:s=e,a=n}if(l===void 0)switch(this.getSettings_().endingEnd){case Zy:o=e,l=2*n-t;break;case Ky:o=1,l=n+i[1]-i[0];break;default:o=e-1,l=t}let u=(n-t)*.5,c=this.valueSize;this._weightPrev=u/(t-a),this._weightNext=u/(l-n),this._offsetPrev=s*c,this._offsetNext=o*c}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,u=l-a,c=this._offsetPrev,h=this._offsetNext,d=this._weightPrev,f=this._weightNext,m=(n-t)/(i-t),p=m*m,g=p*m,y=-d*g+2*d*p-d*m,x=(1+d)*g+(-1.5-2*d)*p+(-.5+d)*m+1,w=(-1-f)*g+(1.5+f)*p+.5*m,b=f*g-f*p;for(let _=0;_!==a;++_)s[_]=y*o[c+_]+x*o[u+_]+w*o[l+_]+b*o[h+_];return s}},Sm=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,u=l-a,c=(n-t)/(i-t),h=1-c;for(let d=0;d!==a;++d)s[d]=o[u+d]*h+o[l+d]*c;return s}},Am=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}},Ur=class{constructor(e,t,n,i){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=ln.convertArray(t,this.TimeBufferType),this.values=ln.convertArray(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:ln.convertArray(e.times,Array),values:ln.convertArray(e.values,Array)};let i=e.getInterpolation();i!==e.DefaultInterpolation&&(n.interpolation=i)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new Am(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new Sm(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new _m(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case bh:t=this.InterpolantFactoryMethodDiscrete;break;case wh:t=this.InterpolantFactoryMethodLinear;break;case gp:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){let n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return bh;case this.InterpolantFactoryMethodLinear:return wh;case this.InterpolantFactoryMethodSmooth:return gp}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){let t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(e!==1){let t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){let n=this.times,i=n.length,s=0,o=i-1;for(;s!==i&&n[s]<e;)++s;for(;o!==-1&&n[o]>t;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=ln.arraySlice(n,s,o),this.values=ln.arraySlice(this.values,s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(i!==void 0&&ln.isTypedArray(i))for(let a=0,l=i.length;a!==l;++a){let u=i[a];if(isNaN(u)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,u),e=!1;break}}return e}optimize(){let e=ln.arraySlice(this.times),t=ln.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===gp,s=e.length-1,o=1;for(let a=1;a<s;++a){let l=!1,u=e[a],c=e[a+1];if(u!==c&&(a!==1||u!==e[0]))if(i)l=!0;else{let h=a*n,d=h-n,f=h+n;for(let m=0;m!==n;++m){let p=t[h+m];if(p!==t[d+m]||p!==t[f+m]){l=!0;break}}}if(l){if(a!==o){e[o]=e[a];let h=a*n,d=o*n;for(let f=0;f!==n;++f)t[d+f]=t[h+f]}++o}}if(s>0){e[o]=e[s];for(let a=s*n,l=o*n,u=0;u!==n;++u)t[l+u]=t[a+u];++o}return o!==e.length?(this.times=ln.arraySlice(e,0,o),this.values=ln.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=ln.arraySlice(this.times,0),t=ln.arraySlice(this.values,0),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};Ur.prototype.TimeBufferType=Float32Array;Ur.prototype.ValueBufferType=Float32Array;Ur.prototype.DefaultInterpolation=wh;var mo=class extends Ur{};mo.prototype.ValueTypeName="bool";mo.prototype.ValueBufferType=Array;mo.prototype.DefaultInterpolation=bh;mo.prototype.InterpolantFactoryMethodLinear=void 0;mo.prototype.InterpolantFactoryMethodSmooth=void 0;var Mm=class extends Ur{};Mm.prototype.ValueTypeName="color";var Tm=class extends Ur{};Tm.prototype.ValueTypeName="number";var Em=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(i-t),u=e*a;for(let c=u+a;u!==c;u+=4)qt.slerpFlat(s,0,o,u-a,o,u,l);return s}},Mc=class extends Ur{InterpolantFactoryMethodLinear(e){return new Em(this.times,this.values,this.getValueSize(),e)}};Mc.prototype.ValueTypeName="quaternion";Mc.prototype.DefaultInterpolation=wh;Mc.prototype.InterpolantFactoryMethodSmooth=void 0;var go=class extends Ur{};go.prototype.ValueTypeName="string";go.prototype.ValueBufferType=Array;go.prototype.DefaultInterpolation=bh;go.prototype.InterpolantFactoryMethodLinear=void 0;go.prototype.InterpolantFactoryMethodSmooth=void 0;var Cm=class extends Ur{};Cm.prototype.ValueTypeName="vector";var kv={enabled:!1,files:{},add:function(r,e){this.enabled!==!1&&(this.files[r]=e)},get:function(r){if(this.enabled!==!1)return this.files[r]},remove:function(r){delete this.files[r]},clear:function(){this.files={}}},yo=class{constructor(e,t,n){let i=this,s=!1,o=0,a=0,l,u=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(c){a++,s===!1&&i.onStart!==void 0&&i.onStart(c,o,a),s=!0},this.itemEnd=function(c){o++,i.onProgress!==void 0&&i.onProgress(c,o,a),o===a&&(s=!1,i.onLoad!==void 0&&i.onLoad())},this.itemError=function(c){i.onError!==void 0&&i.onError(c)},this.resolveURL=function(c){return l?l(c):c},this.setURLModifier=function(c){return l=c,this},this.addHandler=function(c,h){return u.push(c,h),this},this.removeHandler=function(c){let h=u.indexOf(c);return h!==-1&&u.splice(h,2),this},this.getHandler=function(c){for(let h=0,d=u.length;h<d;h+=2){let f=u[h],m=u[h+1];if(f.global&&(f.lastIndex=0),f.test(c))return m}return null}}},rP=new yo,ps=class{constructor(e){this.manager=e!==void 0?e:rP,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let n=this;return new Promise(function(i,s){n.load(e,i,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}},Ri={},ms=class extends ps{constructor(e){super(e)}load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=kv.get(e);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(Ri[e]!==void 0){Ri[e].push({onLoad:t,onProgress:n,onError:i});return}Ri[e]=[],Ri[e].push({onLoad:t,onProgress:n,onError:i});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(u=>{if(u.status===200||u.status===0){if(u.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||u.body===void 0||u.body.getReader===void 0)return u;let c=Ri[e],h=u.body.getReader(),d=u.headers.get("Content-Length"),f=d?parseInt(d):0,m=f!==0,p=0,g=new ReadableStream({start(y){x();function x(){h.read().then(({done:w,value:b})=>{if(w)y.close();else{p+=b.byteLength;let _=new ProgressEvent("progress",{lengthComputable:m,loaded:p,total:f});for(let A=0,M=c.length;A<M;A++){let v=c[A];v.onProgress&&v.onProgress(_)}y.enqueue(b),x()}})}}});return new Response(g)}else throw Error(`fetch for "${u.url}" responded with ${u.status}: ${u.statusText}`)}).then(u=>{switch(l){case"arraybuffer":return u.arrayBuffer();case"blob":return u.blob();case"document":return u.text().then(c=>new DOMParser().parseFromString(c,a));case"json":return u.json();default:if(a===void 0)return u.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),d=h&&h[1]?h[1].toLowerCase():void 0,f=new TextDecoder(d);return u.arrayBuffer().then(m=>f.decode(m))}}}).then(u=>{kv.add(e,u);let c=Ri[e];delete Ri[e];for(let h=0,d=c.length;h<d;h++){let f=c[h];f.onLoad&&f.onLoad(u)}}).catch(u=>{let c=Ri[e];if(c===void 0)throw this.manager.itemError(e),u;delete Ri[e];for(let h=0,d=c.length;h<d;h++){let f=c[h];f.onError&&f.onError(u)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}};var wa=class extends ot{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Re(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}},vo=class extends wa{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.groundColor=new Re(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},Vv=new Oe,Hv=new S,Wv=new S,Tc=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new N(512,512),this.map=null,this.mapPass=null,this.matrix=new Oe,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new xc,this._frameExtents=new N(1,1),this._viewportCount=1,this._viewports=[new Ve(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,n=this.matrix;Hv.setFromMatrixPosition(e.matrixWorld),t.position.copy(Hv),Wv.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Wv),t.updateMatrixWorld(),Vv.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Vv),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(t.projectionMatrix),n.multiply(t.matrixWorldInverse)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},Dm=class extends Tc{constructor(){super(new Zt(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,n=yc*2*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,s=e.distance||t.far;(n!==t.fov||i!==t.aspect||s!==t.far)&&(t.fov=n,t.aspect=i,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},Ih=class extends wa{constructor(e,t,n=0,i=Math.PI/3,s=0,o=1){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.target=new ot,this.distance=n,this.angle=i,this.penumbra=s,this.decay=o,this.shadow=new Dm}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},jv=new Oe,lc=new S,Xp=new S,Pm=class extends Tc{constructor(){super(new Zt(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new N(4,2),this._viewportCount=6,this._viewports=[new Ve(2,1,1,1),new Ve(0,1,1,1),new Ve(3,1,1,1),new Ve(1,1,1,1),new Ve(3,0,1,1),new Ve(1,0,1,1)],this._cubeDirections=[new S(1,0,0),new S(-1,0,0),new S(0,0,1),new S(0,0,-1),new S(0,1,0),new S(0,-1,0)],this._cubeUps=[new S(0,1,0),new S(0,1,0),new S(0,1,0),new S(0,1,0),new S(0,0,1),new S(0,0,-1)]}updateMatrices(e,t=0){let n=this.camera,i=this.matrix,s=e.distance||n.far;s!==n.far&&(n.far=s,n.updateProjectionMatrix()),lc.setFromMatrixPosition(e.matrixWorld),n.position.copy(lc),Xp.copy(n.position),Xp.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(Xp),n.updateMatrixWorld(),i.makeTranslation(-lc.x,-lc.y,-lc.z),jv.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(jv)}},Lh=class extends wa{constructor(e,t,n=0,i=1){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new Pm}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},Im=class extends Tc{constructor(){super(new ua(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},Oh=class extends wa{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.target=new ot,this.shadow=new Im}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};var Lm=class extends Pe{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}clone(){return new this.constructor().copy(this)}toJSON(){let e=super.toJSON(this);return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}},_a=class extends ps{constructor(e){super(e)}load(e,t,n,i){let s=this,o=new ms(s.manager);o.setPath(s.path),o.setRequestHeader(s.requestHeader),o.setWithCredentials(s.withCredentials),o.load(e,function(a){try{t(s.parse(JSON.parse(a)))}catch(l){i?i(l):console.error(l),s.manager.itemError(e)}},n,i)}parse(e){let t={},n={};function i(f,m){if(t[m]!==void 0)return t[m];let g=f.interleavedBuffers[m],y=s(f,g.buffer),x=ju(g.type,y),w=new Dh(x,g.stride);return w.uuid=g.uuid,t[m]=w,w}function s(f,m){if(n[m]!==void 0)return n[m];let g=f.arrayBuffers[m],y=new Uint32Array(g).buffer;return n[m]=y,y}let o=e.isInstancedBufferGeometry?new Lm:new Pe,a=e.data.index;if(a!==void 0){let f=ju(a.type,a.array);o.setIndex(new je(f,1))}let l=e.data.attributes;for(let f in l){let m=l[f],p;if(m.isInterleavedBufferAttribute){let g=i(e.data,m.data);p=new co(g,m.itemSize,m.offset,m.normalized)}else{let g=ju(m.type,m.array),y=m.isInstancedBufferAttribute?Ph:je;p=new y(g,m.itemSize,m.normalized)}m.name!==void 0&&(p.name=m.name),m.usage!==void 0&&p.setUsage(m.usage),m.updateRange!==void 0&&(p.updateRange.offset=m.updateRange.offset,p.updateRange.count=m.updateRange.count),o.setAttribute(f,p)}let u=e.data.morphAttributes;if(u)for(let f in u){let m=u[f],p=[];for(let g=0,y=m.length;g<y;g++){let x=m[g],w;if(x.isInterleavedBufferAttribute){let b=i(e.data,x.data);w=new co(b,x.itemSize,x.offset,x.normalized)}else{let b=ju(x.type,x.array);w=new je(b,x.itemSize,x.normalized)}x.name!==void 0&&(w.name=x.name),p.push(w)}o.morphAttributes[f]=p}e.data.morphTargetsRelative&&(o.morphTargetsRelative=!0);let h=e.data.groups||e.data.drawcalls||e.data.offsets;if(h!==void 0)for(let f=0,m=h.length;f!==m;++f){let p=h[f];o.addGroup(p.start,p.count,p.materialIndex)}let d=e.data.boundingSphere;if(d!==void 0){let f=new S;d.center!==void 0&&f.fromArray(d.center),o.boundingSphere=new Ln(f,d.radius)}return e.name&&(o.name=e.name),e.userData&&(o.userData=e.userData),o}};var Rh=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=qv(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=qv();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function qv(){return(typeof performance>"u"?Date:performance).now()}var Gm="\\[\\]\\.:\\/",iP=new RegExp("["+Gm+"]","g"),km="[^"+Gm+"]",sP="[^"+Gm.replace("\\.","")+"]",oP=/((?:WC+[\/:])*)/.source.replace("WC",km),aP=/(WCOD+)?/.source.replace("WCOD",sP),lP=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",km),cP=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",km),uP=new RegExp("^"+oP+aP+lP+cP+"$"),hP=["material","materials","bones"],Om=class{constructor(e,t,n){let i=n||St.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},St=class{constructor(e,t,n){this.path=t,this.parsedPath=n||St.parseTrackName(t),this.node=St.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new St.Composite(e,t,n):new St(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(iP,"")}static parseTrackName(e){let t=uP.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);hP.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(s){for(let o=0;o<s.length;o++){let a=s[o];if(a.name===t||a.uuid===t)return a;let l=n(a.children);if(l)return l}return null},i=n(e.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)e[t++]=n[i]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,n=t.objectName,i=t.propertyName,s=t.propertyIndex;if(e||(e=St.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(n){let u=t.objectIndex;switch(n){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let c=0;c<e.length;c++)if(e[c].name===u){u=c;break}break;default:if(e[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[n]}if(u!==void 0){if(e[u]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[u]}}let o=e[i];if(o===void 0){let u=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+u+"."+i+" but it wasn't found.",e);return}let a=this.Versioning.None;this.targetObject=e,e.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:e.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(i==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=s}else o.fromArray!==void 0&&o.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(l=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=i;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};St.Composite=Om;St.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};St.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};St.prototype.GetterByBindingType=[St.prototype._getValue_direct,St.prototype._getValue_array,St.prototype._getValue_arrayElement,St.prototype._getValue_toArray];St.prototype.SetterByBindingTypeAndVersioning=[[St.prototype._setValue_direct,St.prototype._setValue_direct_setNeedsUpdate,St.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[St.prototype._setValue_array,St.prototype._setValue_array_setNeedsUpdate,St.prototype._setValue_array_setMatrixWorldNeedsUpdate],[St.prototype._setValue_arrayElement,St.prototype._setValue_arrayElement_setNeedsUpdate,St.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[St.prototype._setValue_fromArray,St.prototype._setValue_fromArray_setNeedsUpdate,St.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var we=class{constructor(e){typeof e=="string"&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}clone(){return new we(this.value.clone===void 0?this.value:this.value.clone())}};var Sa=class{constructor(e,t,n=0,i=1/0){this.ray=new zi(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new vc,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,n=[]){return Rm(e,this,n,t),n.sort(Xv),n}intersectObjects(e,t=!0,n=[]){for(let i=0,s=e.length;i<s;i++)Rm(e[i],this,n,t);return n.sort(Xv),n}};function Xv(r,e){return r.distance-e.distance}function Rm(r,e,t,n){if(r.layers.test(e.layers)&&r.raycast(e,t),n===!0){let i=r.children;for(let s=0,o=i.length;s<o;s++)Rm(i[s],e,t,!0)}}var Ec=class{constructor(e=1,t=0,n=0){return this.radius=e,this.phi=t,this.theta=n,this}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(cn(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}};var Yv=new S,gh=new S,Nh=class{constructor(e=new S,t=new S){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Yv.subVectors(e,this.start),gh.subVectors(this.end,this.start);let n=gh.dot(gh),s=gh.dot(Yv)/n;return t&&(s=cn(s,0,1)),s}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},Qv=new S,Bh=class extends ot{constructor(e,t){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;let n=new Pe,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,l=32;o<l;o++,a++){let u=o/l*Math.PI*2,c=a/l*Math.PI*2;i.push(Math.cos(u),Math.sin(u),1,Math.cos(c),Math.sin(c),1)}n.setAttribute("position",new _e(i,3));let s=new xr({fog:!1,toneMapped:!1});this.cone=new ds(n,s),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateMatrixWorld();let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),Qv.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Qv),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}};var Fh=class extends kt{constructor(e,t,n){let i=new po(t,4,2),s=new ri({wireframe:!0,fog:!1,toneMapped:!1});super(i,s),this.light=e,this.light.updateMatrixWorld(),this.color=n,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}};var Zv=new S,yh=new S,Kv=new S,Uh=class extends ot{constructor(e,t,n){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,t===void 0&&(t=1);let i=new Pe;i.setAttribute("position",new _e([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let s=new xr({fog:!1,toneMapped:!1});this.lightPlane=new uo(i,s),this.add(this.lightPlane),i=new Pe,i.setAttribute("position",new _e([0,0,0,0,0,1],3)),this.targetLine=new uo(i,s),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){Zv.setFromMatrixPosition(this.light.matrixWorld),yh.setFromMatrixPosition(this.light.target.matrixWorld),Kv.subVectors(yh,Zv),this.lightPlane.lookAt(yh),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(yh),this.targetLine.scale.z=Kv.length()}},vh=new S,jt=new Br,wr=class extends ds{constructor(e){let t=new Pe,n=new xr({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],o={};a("n1","n2"),a("n2","n4"),a("n4","n3"),a("n3","n1"),a("f1","f2"),a("f2","f4"),a("f4","f3"),a("f3","f1"),a("n1","f1"),a("n2","f2"),a("n3","f3"),a("n4","f4"),a("p","n1"),a("p","n2"),a("p","n3"),a("p","n4"),a("u1","u2"),a("u2","u3"),a("u3","u1"),a("c","t"),a("p","c"),a("cn1","cn2"),a("cn3","cn4"),a("cf1","cf2"),a("cf3","cf4");function a(m,p){l(m),l(p)}function l(m){i.push(0,0,0),s.push(0,0,0),o[m]===void 0&&(o[m]=[]),o[m].push(i.length/3-1)}t.setAttribute("position",new _e(i,3)),t.setAttribute("color",new _e(s,3)),super(t,n),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=o,this.update();let u=new Re(16755200),c=new Re(16711680),h=new Re(43775),d=new Re(16777215),f=new Re(3355443);this.setColors(u,c,h,d,f)}setColors(e,t,n,i,s){let a=this.geometry.getAttribute("color");a.setXYZ(0,e.r,e.g,e.b),a.setXYZ(1,e.r,e.g,e.b),a.setXYZ(2,e.r,e.g,e.b),a.setXYZ(3,e.r,e.g,e.b),a.setXYZ(4,e.r,e.g,e.b),a.setXYZ(5,e.r,e.g,e.b),a.setXYZ(6,e.r,e.g,e.b),a.setXYZ(7,e.r,e.g,e.b),a.setXYZ(8,e.r,e.g,e.b),a.setXYZ(9,e.r,e.g,e.b),a.setXYZ(10,e.r,e.g,e.b),a.setXYZ(11,e.r,e.g,e.b),a.setXYZ(12,e.r,e.g,e.b),a.setXYZ(13,e.r,e.g,e.b),a.setXYZ(14,e.r,e.g,e.b),a.setXYZ(15,e.r,e.g,e.b),a.setXYZ(16,e.r,e.g,e.b),a.setXYZ(17,e.r,e.g,e.b),a.setXYZ(18,e.r,e.g,e.b),a.setXYZ(19,e.r,e.g,e.b),a.setXYZ(20,e.r,e.g,e.b),a.setXYZ(21,e.r,e.g,e.b),a.setXYZ(22,e.r,e.g,e.b),a.setXYZ(23,e.r,e.g,e.b),a.setXYZ(24,t.r,t.g,t.b),a.setXYZ(25,t.r,t.g,t.b),a.setXYZ(26,t.r,t.g,t.b),a.setXYZ(27,t.r,t.g,t.b),a.setXYZ(28,t.r,t.g,t.b),a.setXYZ(29,t.r,t.g,t.b),a.setXYZ(30,t.r,t.g,t.b),a.setXYZ(31,t.r,t.g,t.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,s.r,s.g,s.b),a.setXYZ(41,s.r,s.g,s.b),a.setXYZ(42,s.r,s.g,s.b),a.setXYZ(43,s.r,s.g,s.b),a.setXYZ(44,s.r,s.g,s.b),a.setXYZ(45,s.r,s.g,s.b),a.setXYZ(46,s.r,s.g,s.b),a.setXYZ(47,s.r,s.g,s.b),a.setXYZ(48,s.r,s.g,s.b),a.setXYZ(49,s.r,s.g,s.b),a.needsUpdate=!0}update(){let e=this.geometry,t=this.pointMap,n=1,i=1;jt.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Qt("c",t,e,jt,0,0,-1),Qt("t",t,e,jt,0,0,1),Qt("n1",t,e,jt,-n,-i,-1),Qt("n2",t,e,jt,n,-i,-1),Qt("n3",t,e,jt,-n,i,-1),Qt("n4",t,e,jt,n,i,-1),Qt("f1",t,e,jt,-n,-i,1),Qt("f2",t,e,jt,n,-i,1),Qt("f3",t,e,jt,-n,i,1),Qt("f4",t,e,jt,n,i,1),Qt("u1",t,e,jt,n*.7,i*1.1,-1),Qt("u2",t,e,jt,-n*.7,i*1.1,-1),Qt("u3",t,e,jt,0,i*2,-1),Qt("cf1",t,e,jt,-n,0,1),Qt("cf2",t,e,jt,n,0,1),Qt("cf3",t,e,jt,0,-i,1),Qt("cf4",t,e,jt,0,i,1),Qt("cn1",t,e,jt,-n,0,-1),Qt("cn2",t,e,jt,n,0,-1),Qt("cn3",t,e,jt,0,-i,-1),Qt("cn4",t,e,jt,0,i,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Qt(r,e,t,n,i,s,o){vh.set(i,s,o).unproject(n);let a=e[r];if(a!==void 0){let l=t.getAttribute("position");for(let u=0,c=a.length;u<c;u++)l.setXYZ(a[u],vh.x,vh.y,vh.z)}}var xo=class extends ds{constructor(e,t=16776960){let n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],s=new Pe;s.setIndex(new je(n,1)),s.setAttribute("position",new _e(i,3)),super(s,new xr({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){let t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}};var zh=class extends ds{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],i=new Pe;i.setAttribute("position",new _e(t,3)),i.setAttribute("color",new _e(n,3));let s=new xr({vertexColors:!0,toneMapped:!1});super(i,s),this.type="AxesHelper"}setColors(e,t,n){let i=new Re,s=this.geometry.attributes.color.array;return i.set(e),i.toArray(s,0),i.toArray(s,3),i.set(t),i.toArray(s,6),i.toArray(s,9),i.set(n),i.toArray(s,12),i.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},Gh=class{constructor(){this.type="ShapePath",this.color=new Re,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new wc,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,s,o){return this.currentPath.bezierCurveTo(e,t,n,i,s,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e,t){function n(x){let w=[];for(let b=0,_=x.length;b<_;b++){let A=x[b],M=new Nr;M.curves=A.curves,w.push(M)}return w}function i(x,w){let b=w.length,_=!1;for(let A=b-1,M=0;M<b;A=M++){let v=w[A],T=w[M],E=T.x-v.x,C=T.y-v.y;if(Math.abs(C)>Number.EPSILON){if(C<0&&(v=w[M],E=-E,T=w[A],C=-C),x.y<v.y||x.y>T.y)continue;if(x.y===v.y){if(x.x===v.x)return!0}else{let L=C*(x.x-v.x)-E*(x.y-v.y);if(L===0)return!0;if(L<0)continue;_=!_}}else{if(x.y!==v.y)continue;if(T.x<=x.x&&x.x<=v.x||v.x<=x.x&&x.x<=T.x)return!0}}return _}let s=as.isClockWise,o=this.subPaths;if(o.length===0)return[];if(t===!0)return n(o);let a,l,u,c=[];if(o.length===1)return l=o[0],u=new Nr,u.curves=l.curves,c.push(u),c;let h=!s(o[0].getPoints());h=e?!h:h;let d=[],f=[],m=[],p=0,g;f[p]=void 0,m[p]=[];for(let x=0,w=o.length;x<w;x++)l=o[x],g=l.getPoints(),a=s(g),a=e?!a:a,a?(!h&&f[p]&&p++,f[p]={s:new Nr,p:g},f[p].s.curves=l.curves,h&&p++,m[p]=[]):m[p].push({h:l,p:g[0]});if(!f[0])return n(o);if(f.length>1){let x=!1,w=0;for(let b=0,_=f.length;b<_;b++)d[b]=[];for(let b=0,_=f.length;b<_;b++){let A=m[b];for(let M=0;M<A.length;M++){let v=A[M],T=!0;for(let E=0;E<f.length;E++)i(v.p,f[E].p)&&(b!==E&&w++,T?(T=!1,d[E].push(v)):x=!0);T&&d[b].push(v)}}w>0&&x===!1&&(m=d)}let y;for(let x=0,w=f.length;x<w;x++){u=f[x].s,c.push(u),y=m[x];for(let b=0,_=y.length;b<_;b++)u.holes.push(y[b].h)}return c}},{floatView:Bz,uint32View:Fz,baseTable:Uz,shiftTable:zz,mantissaTable:Gz,exponentTable:kz,offsetTable:Vz}=dP();function dP(){let r=new ArrayBuffer(4),e=new Float32Array(r),t=new Uint32Array(r),n=new Uint32Array(512),i=new Uint32Array(512);for(let l=0;l<256;++l){let u=l-127;u<-27?(n[l]=0,n[l|256]=32768,i[l]=24,i[l|256]=24):u<-14?(n[l]=1024>>-u-14,n[l|256]=1024>>-u-14|32768,i[l]=-u-1,i[l|256]=-u-1):u<=15?(n[l]=u+15<<10,n[l|256]=u+15<<10|32768,i[l]=13,i[l|256]=13):u<128?(n[l]=31744,n[l|256]=64512,i[l]=24,i[l|256]=24):(n[l]=31744,n[l|256]=64512,i[l]=13,i[l|256]=13)}let s=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let l=1;l<1024;++l){let u=l<<13,c=0;for(;(u&8388608)===0;)u<<=1,c-=8388608;u&=-8388609,c+=947912704,s[l]=u|c}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)o[l]=l<<23;o[31]=1199570944,o[32]=2147483648;for(let l=33;l<63;++l)o[l]=2147483648+(l-32<<23);o[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(a[l]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:i,mantissaTable:s,exponentTable:o,offsetTable:a}}var kh=class extends lt{constructor(e,t,n){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(e,t,n),this.samples=4}};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:bo}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=bo);var Ta=".",Cc=Symbol("target"),Vm=Symbol("unsubscribe");function Dc(r){return r instanceof Date||r instanceof Set||r instanceof Map||r instanceof WeakSet||r instanceof WeakMap||ArrayBuffer.isView(r)}function px(r){return(typeof r=="object"?r===null:typeof r!="function")||r instanceof RegExp}var ur=Array.isArray;function wo(r){return typeof r=="symbol"}var fP={after:(r,e)=>ur(r)?r.slice(e.length):e===""?r:r.slice(e.length+1),concat:(r,e)=>ur(r)?(r=[...r],e&&r.push(e),r):e&&e.toString!==void 0?(r!==""&&(r+=Ta),wo(e)?r+e.toString():r+e):r,initial:r=>{if(ur(r))return r.slice(0,-1);if(r==="")return r;let e=r.lastIndexOf(Ta);return e===-1?"":r.slice(0,e)},last:r=>{if(ur(r))return r[r.length-1]||"";if(r==="")return r;let e=r.lastIndexOf(Ta);return e===-1?r:r.slice(e+1)},walk:(r,e)=>{if(ur(r))for(let t of r)e(t);else if(r!==""){let t=0,n=r.indexOf(Ta);if(n===-1)e(r);else for(;t<r.length;)n===-1&&(n=r.length),e(r.slice(t,n)),t=n+1,n=r.indexOf(Ta,t)}},get(r,e){return this.walk(e,t=>{r&&(r=r[t])}),r}},Hn=fP;function Hm(r){return typeof r=="object"&&typeof r.next=="function"}function Wm(r,e,t,n,i){let s=r.next;if(e.name==="entries")r.next=function(){let o=s.call(this);return o.done===!1&&(o.value[0]=i(o.value[0],e,o.value[0],n),o.value[1]=i(o.value[1],e,o.value[0],n)),o};else if(e.name==="values"){let o=t[Cc].keys();r.next=function(){let a=s.call(this);return a.done===!1&&(a.value=i(a.value,e,o.next().value,n)),a}}else r.next=function(){let o=s.call(this);return o.done===!1&&(o.value=i(o.value,e,o.value,n)),o};return r}function jh(r,e,t){return r.isUnsubscribed||e.ignoreSymbols&&wo(t)||e.ignoreUnderscores&&t.charAt(0)==="_"||"ignoreKeys"in e&&e.ignoreKeys.includes(t)}var Pc=class{constructor(e){this._equals=e,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return this._descriptorCache===void 0&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(e){let t=this._getDescriptorCache(),n=t.get(e);return n===void 0&&(n={},t.set(e,n)),n}_getOwnPropertyDescriptor(e,t){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(e,t);let n=this._getProperties(e),i=n[t];return i===void 0&&(i=Reflect.getOwnPropertyDescriptor(e,t),n[t]=i),i}getProxy(e,t,n,i){if(this.isUnsubscribed)return e;let s=e[i],o=s||e;this._pathCache.set(o,t);let a=this._proxyCache.get(o);return a===void 0&&(a=s===void 0?new Proxy(e,n):e,this._proxyCache.set(o,a)),a}getPath(e){return this.isUnsubscribed?void 0:this._pathCache.get(e)}isDetached(e,t){return!Object.is(e,Hn.get(t,this.getPath(e)))}defineProperty(e,t,n){return Reflect.defineProperty(e,t,n)?(this.isUnsubscribed||(this._getProperties(e)[t]=n),!0):!1}setProperty(e,t,n,i,s){if(!this._equals(s,n)||!(t in e)){let o=this._getOwnPropertyDescriptor(e,t);return o!==void 0&&"set"in o?Reflect.set(e,t,n,i):Reflect.set(e,t,n)}return!0}deleteProperty(e,t,n){if(Reflect.deleteProperty(e,t)){if(!this.isUnsubscribed){let i=this._getDescriptorCache().get(e);i&&(delete i[t],this._pathCache.delete(n))}return!0}return!1}isSameDescriptor(e,t,n){let i=this._getOwnPropertyDescriptor(t,n);return e!==void 0&&i!==void 0&&Object.is(e.value,i.value)&&(e.writable||!1)===(i.writable||!1)&&(e.enumerable||!1)===(i.enumerable||!1)&&(e.configurable||!1)===(i.configurable||!1)&&e.get===i.get&&e.set===i.set}isGetInvariant(e,t){let n=this._getOwnPropertyDescriptor(e,t);return n!==void 0&&n.configurable!==!0&&n.writable!==!0}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function Ea(r){return toString.call(r)==="[object Object]"}function Ca(){return!0}function ys(r,e){return r.length!==e.length||r.some((t,n)=>e[n]!==t)}var qh=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]);var pP=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),jm={push:Ca,pop:Ca,shift:Ca,unshift:Ca,copyWithin:ys,reverse:ys,sort:ys,splice:ys,flat:ys,fill:ys},mx=new Set([...qh,...pP,...Object.keys(jm)]);function Da(r,e){if(r.size!==e.size)return!0;for(let t of r)if(!e.has(t))return!0;return!1}var qm=["keys","values","entries"],Xm=new Set(["has","toString"]),Ym={add:Da,clear:Da,delete:Da,forEach:Da},gx=new Set([...Xm,...Object.keys(Ym),...qm]);function Pa(r,e){if(r.size!==e.size)return!0;let t;for(let[n,i]of r)if(t=e.get(n),t!==i||t===void 0&&!e.has(n))return!0;return!1}var mP=new Set([...Xm,"get"]),Qm={set:Pa,clear:Pa,delete:Pa,forEach:Pa},yx=new Set([...mP,...Object.keys(Qm),...qm]);var An=class{constructor(e,t,n,i){this._path=t,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=i,this._changes=i?[]:null,this.clone=t===void 0?e:this._shallowClone(e)}static isHandledMethod(e){return qh.has(e)}_shallowClone(e){let t=e;if(Ea(e))t={...e};else if(ur(e))t=[...e];else if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set([...e].map(n=>this._shallowClone(n)));else if(e instanceof Map){t=new Map;for(let[n,i]of e.entries())t.set(n,this._shallowClone(i))}return this._clonedCache.add(t),t}preferredThisArg(e,t,n,i){return e?(ur(i)?this._onIsChanged=jm[t]:i instanceof Set?this._onIsChanged=Ym[t]:i instanceof Map&&(this._onIsChanged=Qm[t]),i):n}update(e,t,n){let i=Hn.after(e,this._path);if(t!=="length"){let s=this.clone;Hn.walk(i,o=>{s&&s[o]&&(this._clonedCache.has(s[o])||(s[o]=this._shallowClone(s[o])),s=s[o])}),this._hasOnValidate&&this._changes.push({path:i,property:t,previous:n}),s&&s[t]&&(s[t]=n)}this._isChanged=!0}undo(e){let t;for(let n=this._changes.length-1;n!==-1;n--)t=this._changes[n],Hn.get(e,t.path)[t.property]=t.previous}isChanged(e){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,e)}};var Ia=class extends An{static isHandledMethod(e){return mx.has(e)}};var Ic=class extends An{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}};var La=class extends An{static isHandledMethod(e){return gx.has(e)}undo(e){for(let t of this.clone)e.add(t);for(let t of e)this.clone.has(t)||e.delete(t)}};var Oa=class extends An{static isHandledMethod(e){return yx.has(e)}undo(e){for(let[t,n]of this.clone.entries())e.set(t,n);for(let t of e.keys())this.clone.has(t)||e.delete(t)}};var Lc=class extends An{constructor(e,t,n,i){super(void 0,t,n,i),this._arg1=n[0],this._weakValue=e.has(this._arg1)}isChanged(e){return this._weakValue!==e.has(this._arg1)}undo(e){this._weakValue&&!e.has(this._arg1)?e.add(this._arg1):e.delete(this._arg1)}};var Oc=class extends An{constructor(e,t,n,i){super(void 0,t,n,i),this._weakKey=n[0],this._weakHas=e.has(this._weakKey),this._weakValue=e.get(this._weakKey)}isChanged(e){return this._weakValue!==e.get(this._weakKey)}undo(e){let t=e.has(this._weakKey);this._weakHas&&!t?e.set(this._weakKey,this._weakValue):!this._weakHas&&t?e.delete(this._weakKey):this._weakValue!==e.get(this._weakKey)&&e.set(this._weakKey,this._weakValue)}};var Gr=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return Ea(e)||ur(e)||Dc(e)}static isHandledMethod(e,t){return Ea(e)?An.isHandledMethod(t):ur(e)?Ia.isHandledMethod(t):e instanceof Set?La.isHandledMethod(t):e instanceof Map?Oa.isHandledMethod(t):Dc(e)}get isCloning(){return this._stack.length>0}start(e,t,n){let i=An;ur(e)?i=Ia:e instanceof Date?i=Ic:e instanceof Set?i=La:e instanceof Map?i=Oa:e instanceof WeakSet?i=Lc:e instanceof WeakMap&&(i=Oc),this._stack.push(new i(e,t,n,this._hasOnValidate))}update(e,t,n){this._stack[this._stack.length-1].update(e,t,n)}preferredThisArg(e,t,n){let{name:i}=e,s=Gr.isHandledMethod(n,i);return this._stack[this._stack.length-1].preferredThisArg(s,i,t,n)}isChanged(e,t,n){return this._stack[this._stack.length-1].isChanged(e,t,n)}undo(e){this._previousClone!==void 0&&this._previousClone.undo(e)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}};var gP={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},Zm=(r,e,t={})=>{t={...gP,...t};let n=Symbol("ProxyTarget"),{equals:i,isShallow:s,ignoreDetached:o,details:a}=t,l=new Pc(i),u=typeof t.onValidate=="function",c=new Gr(u),h=(x,w,b,_,A)=>!u||c.isCloning||t.onValidate(Hn.concat(l.getPath(x),w),b,_,A)===!0,d=(x,w,b,_)=>{!jh(l,t,w)&&!(o&&l.isDetached(x,r))&&f(l.getPath(x),w,b,_)},f=(x,w,b,_,A)=>{c.isCloning?c.update(x,w,_):e(Hn.concat(x,w),b,_,A)},m=x=>x&&(x[n]||x),p=(x,w,b,_)=>px(x)||b==="constructor"||s&&!Gr.isHandledMethod(w,b)||jh(l,t,b)||l.isGetInvariant(w,b)||o&&l.isDetached(w,r)?x:(_===void 0&&(_=l.getPath(w)),l.getProxy(x,Hn.concat(_,b),g,n)),g={get(x,w,b){if(wo(w)){if(w===n||w===Cc)return x;if(w===Vm&&!l.isUnsubscribed&&l.getPath(x).length===0)return l.unsubscribe(),x}let _=Dc(x)?Reflect.get(x,w):Reflect.get(x,w,b);return p(_,x,w)},set(x,w,b,_){b=m(b);let A=x[n]||x,M=A[w];if(i(M,b)&&w in x)return!0;let v=h(x,w,b,M);return v&&l.setProperty(A,w,b,_,M)?(d(x,w,x[w],M),!0):!v},defineProperty(x,w,b){if(!l.isSameDescriptor(b,x,w)){let _=x[w];h(x,w,b.value,_)&&l.defineProperty(x,w,b,_)&&d(x,w,b.value,_)}return!0},deleteProperty(x,w){if(!Reflect.has(x,w))return!0;let b=Reflect.get(x,w),_=h(x,w,void 0,b);return _&&l.deleteProperty(x,w,b)?(d(x,w,void 0,b),!0):!_},apply(x,w,b){let _=w[n]||w;if(l.isUnsubscribed)return Reflect.apply(x,_,b);if((a===!1||a!==!0&&!a.includes(x.name))&&Gr.isHandledType(_)){let A=Hn.initial(l.getPath(x)),M=Gr.isHandledMethod(_,x.name);c.start(_,A,b);let v=Reflect.apply(x,c.preferredThisArg(x,w,_),M?b.map(C=>m(C)):b),T=c.isChanged(_,i),E=c.stop();if(Gr.isHandledType(v)&&M&&(w instanceof Map&&x.name==="get"&&(A=Hn.concat(A,b[0])),v=l.getProxy(v,A,g)),T){let C={name:x.name,args:b,result:v},L=c.isCloning?Hn.initial(A):A,R=c.isCloning?Hn.last(A):"";h(Hn.get(r,L),R,_,E,C)?f(L,R,_,E,C):c.undo(_)}return(w instanceof Map||w instanceof Set)&&Hm(v)?Wm(v,x,w,A,p):v}return Reflect.apply(x,w,b)}},y=l.getProxy(r,t.pathAsArray?[]:"",g);return e=e.bind(y),u&&(t.onValidate=t.onValidate.bind(y)),y};Zm.target=r=>r&&r[Cc]||r;Zm.unsubscribe=r=>r[Vm]||r;var Km=Zm;var yP=typeof global=="object"&&global&&global.Object===Object&&global,Xh=yP;var vP=typeof self=="object"&&self&&self.Object===Object&&self,xP=Xh||vP||Function("return this")(),Xt=xP;var bP=Xt.Symbol,Wn=bP;var vx=Object.prototype,wP=vx.hasOwnProperty,_P=vx.toString,Rc=Wn?Wn.toStringTag:void 0;function SP(r){var e=wP.call(r,Rc),t=r[Rc];try{r[Rc]=void 0;var n=!0}catch{}var i=_P.call(r);return n&&(e?r[Rc]=t:delete r[Rc]),i}var xx=SP;var AP=Object.prototype,MP=AP.toString;function TP(r){return MP.call(r)}var bx=TP;var EP="[object Null]",CP="[object Undefined]",wx=Wn?Wn.toStringTag:void 0;function DP(r){return r==null?r===void 0?CP:EP:wx&&wx in Object(r)?xx(r):bx(r)}var hr=DP;function PP(r){return r!=null&&typeof r=="object"}var On=PP;var IP="[object Symbol]";function LP(r){return typeof r=="symbol"||On(r)&&hr(r)==IP}var vs=LP;function OP(r,e){for(var t=-1,n=r==null?0:r.length,i=Array(n);++t<n;)i[t]=e(r[t],t,r);return i}var Yh=OP;var RP=Array.isArray,un=RP;var NP=1/0,_x=Wn?Wn.prototype:void 0,Sx=_x?_x.toString:void 0;function Ax(r){if(typeof r=="string")return r;if(un(r))return Yh(r,Ax)+"";if(vs(r))return Sx?Sx.call(r):"";var e=r+"";return e=="0"&&1/r==-NP?"-0":e}var Mx=Ax;var BP=/\s/;function FP(r){for(var e=r.length;e--&&BP.test(r.charAt(e)););return e}var Tx=FP;var UP=/^\s+/;function zP(r){return r&&r.slice(0,Tx(r)+1).replace(UP,"")}var Ex=zP;function GP(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var Nt=GP;var Cx=0/0,kP=/^[-+]0x[0-9a-f]+$/i,VP=/^0b[01]+$/i,HP=/^0o[0-7]+$/i,WP=parseInt;function jP(r){if(typeof r=="number")return r;if(vs(r))return Cx;if(Nt(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=Nt(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=Ex(r);var t=VP.test(r);return t||HP.test(r)?WP(r.slice(2),t?2:8):kP.test(r)?Cx:+r}var Jm=jP;function qP(r){return r}var Qh=qP;var XP="[object AsyncFunction]",YP="[object Function]",QP="[object GeneratorFunction]",ZP="[object Proxy]";function KP(r){if(!Nt(r))return!1;var e=hr(r);return e==YP||e==QP||e==XP||e==ZP}var Ra=KP;var JP=Xt["__core-js_shared__"],Zh=JP;var Dx=function(){var r=/[^.]+$/.exec(Zh&&Zh.keys&&Zh.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function $P(r){return!!Dx&&Dx in r}var Px=$P;var eI=Function.prototype,tI=eI.toString;function nI(r){if(r!=null){try{return tI.call(r)}catch{}try{return r+""}catch{}}return""}var ki=nI;var rI=/[\\^$.*+?()[\]{}|]/g,iI=/^\[object .+?Constructor\]$/,sI=Function.prototype,oI=Object.prototype,aI=sI.toString,lI=oI.hasOwnProperty,cI=RegExp("^"+aI.call(lI).replace(rI,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function uI(r){if(!Nt(r)||Px(r))return!1;var e=Ra(r)?cI:iI;return e.test(ki(r))}var Ix=uI;function hI(r,e){return r?.[e]}var Lx=hI;function dI(r,e){var t=Lx(r,e);return Ix(t)?t:void 0}var Jn=dI;var fI=Jn(Xt,"WeakMap"),Kh=fI;var Ox=Object.create,pI=function(){function r(){}return function(e){if(!Nt(e))return{};if(Ox)return Ox(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}(),Rx=pI;function mI(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var Nx=mI;function gI(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++t<n;)e[t]=r[t];return e}var Jh=gI;var yI=800,vI=16,xI=Date.now;function bI(r){var e=0,t=0;return function(){var n=xI(),i=vI-(n-t);if(t=n,i>0){if(++e>=yI)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}var Bx=bI;function wI(r){return function(){return r}}var Fx=wI;var _I=function(){try{var r=Jn(Object,"defineProperty");return r({},"",{}),r}catch{}}(),Na=_I;var SI=Na?function(r,e){return Na(r,"toString",{configurable:!0,enumerable:!1,value:Fx(e),writable:!0})}:Qh,Ux=SI;var AI=Bx(Ux),$h=AI;function MI(r,e){for(var t=-1,n=r==null?0:r.length;++t<n&&e(r[t],t,r)!==!1;);return r}var zx=MI;var TI=9007199254740991,EI=/^(?:0|[1-9]\d*)$/;function CI(r,e){var t=typeof r;return e=e??TI,!!e&&(t=="number"||t!="symbol"&&EI.test(r))&&r>-1&&r%1==0&&r<e}var xs=CI;function DI(r,e,t){e=="__proto__"&&Na?Na(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}var Ba=DI;function PI(r,e){return r===e||r!==r&&e!==e}var bs=PI;var II=Object.prototype,LI=II.hasOwnProperty;function OI(r,e,t){var n=r[e];(!(LI.call(r,e)&&bs(n,t))||t===void 0&&!(e in r))&&Ba(r,e,t)}var Fa=OI;function RI(r,e,t,n){var i=!t;t||(t={});for(var s=-1,o=e.length;++s<o;){var a=e[s],l=n?n(t[a],r[a],a,t,r):void 0;l===void 0&&(l=r[a]),i?Ba(t,a,l):Fa(t,a,l)}return t}var _r=RI;var Gx=Math.max;function NI(r,e,t){return e=Gx(e===void 0?r.length-1:e,0),function(){for(var n=arguments,i=-1,s=Gx(n.length-e,0),o=Array(s);++i<s;)o[i]=n[e+i];i=-1;for(var a=Array(e+1);++i<e;)a[i]=n[i];return a[e]=t(o),Nx(r,this,a)}}var ed=NI;function BI(r,e){return $h(ed(r,e,Qh),r+"")}var kx=BI;var FI=9007199254740991;function UI(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=FI}var Ua=UI;function zI(r){return r!=null&&Ua(r.length)&&!Ra(r)}var ws=zI;function GI(r,e,t){if(!Nt(t))return!1;var n=typeof e;return(n=="number"?ws(t)&&xs(e,t.length):n=="string"&&e in t)?bs(t[e],r):!1}var Vx=GI;function kI(r){return kx(function(e,t){var n=-1,i=t.length,s=i>1?t[i-1]:void 0,o=i>2?t[2]:void 0;for(s=r.length>3&&typeof s=="function"?(i--,s):void 0,o&&Vx(t[0],t[1],o)&&(s=i<3?void 0:s,i=1),e=Object(e);++n<i;){var a=t[n];a&&r(e,a,n,s)}return e})}var Hx=kI;var VI=Object.prototype;function HI(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||VI;return r===t}var za=HI;function WI(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var Wx=WI;var jI="[object Arguments]";function qI(r){return On(r)&&hr(r)==jI}var $m=qI;var jx=Object.prototype,XI=jx.hasOwnProperty,YI=jx.propertyIsEnumerable,QI=$m(function(){return arguments}())?$m:function(r){return On(r)&&XI.call(r,"callee")&&!YI.call(r,"callee")},Vi=QI;function ZI(){return!1}var qx=ZI;var Qx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xx=Qx&&typeof module=="object"&&module&&!module.nodeType&&module,KI=Xx&&Xx.exports===Qx,Yx=KI?Xt.Buffer:void 0,JI=Yx?Yx.isBuffer:void 0,$I=JI||qx,Ga=$I;var eL="[object Arguments]",tL="[object Array]",nL="[object Boolean]",rL="[object Date]",iL="[object Error]",sL="[object Function]",oL="[object Map]",aL="[object Number]",lL="[object Object]",cL="[object RegExp]",uL="[object Set]",hL="[object String]",dL="[object WeakMap]",fL="[object ArrayBuffer]",pL="[object DataView]",mL="[object Float32Array]",gL="[object Float64Array]",yL="[object Int8Array]",vL="[object Int16Array]",xL="[object Int32Array]",bL="[object Uint8Array]",wL="[object Uint8ClampedArray]",_L="[object Uint16Array]",SL="[object Uint32Array]",Lt={};Lt[mL]=Lt[gL]=Lt[yL]=Lt[vL]=Lt[xL]=Lt[bL]=Lt[wL]=Lt[_L]=Lt[SL]=!0;Lt[eL]=Lt[tL]=Lt[fL]=Lt[nL]=Lt[pL]=Lt[rL]=Lt[iL]=Lt[sL]=Lt[oL]=Lt[aL]=Lt[lL]=Lt[cL]=Lt[uL]=Lt[hL]=Lt[dL]=!1;function AL(r){return On(r)&&Ua(r.length)&&!!Lt[hr(r)]}var Zx=AL;function ML(r){return function(e){return r(e)}}var ka=ML;var Kx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nc=Kx&&typeof module=="object"&&module&&!module.nodeType&&module,TL=Nc&&Nc.exports===Kx,eg=TL&&Xh.process,EL=function(){try{var r=Nc&&Nc.require&&Nc.require("util").types;return r||eg&&eg.binding&&eg.binding("util")}catch{}}(),Hi=EL;var Jx=Hi&&Hi.isTypedArray,CL=Jx?ka(Jx):Zx,td=CL;var DL=Object.prototype,PL=DL.hasOwnProperty;function IL(r,e){var t=un(r),n=!t&&Vi(r),i=!t&&!n&&Ga(r),s=!t&&!n&&!i&&td(r),o=t||n||i||s,a=o?Wx(r.length,String):[],l=a.length;for(var u in r)(e||PL.call(r,u))&&!(o&&(u=="length"||i&&(u=="offset"||u=="parent")||s&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||xs(u,l)))&&a.push(u);return a}var nd=IL;function LL(r,e){return function(t){return r(e(t))}}var rd=LL;var OL=rd(Object.keys,Object),$x=OL;var RL=Object.prototype,NL=RL.hasOwnProperty;function BL(r){if(!za(r))return $x(r);var e=[];for(var t in Object(r))NL.call(r,t)&&t!="constructor"&&e.push(t);return e}var eb=BL;function FL(r){return ws(r)?nd(r):eb(r)}var Va=FL;function UL(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var tb=UL;var zL=Object.prototype,GL=zL.hasOwnProperty;function kL(r){if(!Nt(r))return tb(r);var e=za(r),t=[];for(var n in r)n=="constructor"&&(e||!GL.call(r,n))||t.push(n);return t}var nb=kL;function VL(r){return ws(r)?nd(r,!0):nb(r)}var ii=VL;var HL=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WL=/^\w*$/;function jL(r,e){if(un(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||vs(r)?!0:WL.test(r)||!HL.test(r)||e!=null&&r in Object(e)}var rb=jL;var qL=Jn(Object,"create"),Wi=qL;function XL(){this.__data__=Wi?Wi(null):{},this.size=0}var ib=XL;function YL(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var sb=YL;var QL="__lodash_hash_undefined__",ZL=Object.prototype,KL=ZL.hasOwnProperty;function JL(r){var e=this.__data__;if(Wi){var t=e[r];return t===QL?void 0:t}return KL.call(e,r)?e[r]:void 0}var ob=JL;var $L=Object.prototype,e3=$L.hasOwnProperty;function t3(r){var e=this.__data__;return Wi?e[r]!==void 0:e3.call(e,r)}var ab=t3;var n3="__lodash_hash_undefined__";function r3(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Wi&&e===void 0?n3:e,this}var lb=r3;function Ha(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}Ha.prototype.clear=ib;Ha.prototype.delete=sb;Ha.prototype.get=ob;Ha.prototype.has=ab;Ha.prototype.set=lb;var tg=Ha;function i3(){this.__data__=[],this.size=0}var cb=i3;function s3(r,e){for(var t=r.length;t--;)if(bs(r[t][0],e))return t;return-1}var _s=s3;var o3=Array.prototype,a3=o3.splice;function l3(r){var e=this.__data__,t=_s(e,r);if(t<0)return!1;var n=e.length-1;return t==n?e.pop():a3.call(e,t,1),--this.size,!0}var ub=l3;function c3(r){var e=this.__data__,t=_s(e,r);return t<0?void 0:e[t][1]}var hb=c3;function u3(r){return _s(this.__data__,r)>-1}var db=u3;function h3(r,e){var t=this.__data__,n=_s(t,r);return n<0?(++this.size,t.push([r,e])):t[n][1]=e,this}var fb=h3;function Wa(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}Wa.prototype.clear=cb;Wa.prototype.delete=ub;Wa.prototype.get=hb;Wa.prototype.has=db;Wa.prototype.set=fb;var Ss=Wa;var d3=Jn(Xt,"Map"),As=d3;function f3(){this.size=0,this.__data__={hash:new tg,map:new(As||Ss),string:new tg}}var pb=f3;function p3(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var mb=p3;function m3(r,e){var t=r.__data__;return mb(e)?t[typeof e=="string"?"string":"hash"]:t.map}var Ms=m3;function g3(r){var e=Ms(this,r).delete(r);return this.size-=e?1:0,e}var gb=g3;function y3(r){return Ms(this,r).get(r)}var yb=y3;function v3(r){return Ms(this,r).has(r)}var vb=v3;function x3(r,e){var t=Ms(this,r),n=t.size;return t.set(r,e),this.size+=t.size==n?0:1,this}var xb=x3;function ja(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}ja.prototype.clear=pb;ja.prototype.delete=gb;ja.prototype.get=yb;ja.prototype.has=vb;ja.prototype.set=xb;var Bc=ja;var b3="Expected a function";function ng(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(b3);var t=function(){var n=arguments,i=e?e.apply(this,n):n[0],s=t.cache;if(s.has(i))return s.get(i);var o=r.apply(this,n);return t.cache=s.set(i,o)||s,o};return t.cache=new(ng.Cache||Bc),t}ng.Cache=Bc;var bb=ng;var w3=500;function _3(r){var e=bb(r,function(n){return t.size===w3&&t.clear(),n}),t=e.cache;return e}var wb=_3;var S3=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,A3=/\\(\\)?/g,M3=wb(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(S3,function(t,n,i,s){e.push(i?s.replace(A3,"$1"):n||t)}),e}),_b=M3;function T3(r){return r==null?"":Mx(r)}var Sb=T3;function E3(r,e){return un(r)?r:rb(r,e)?[r]:_b(Sb(r))}var Sr=E3;var C3=1/0;function D3(r){if(typeof r=="string"||vs(r))return r;var e=r+"";return e=="0"&&1/r==-C3?"-0":e}var Ts=D3;function P3(r,e){e=Sr(e,r);for(var t=0,n=e.length;r!=null&&t<n;)r=r[Ts(e[t++])];return t&&t==n?r:void 0}var id=P3;function I3(r,e){for(var t=-1,n=e.length,i=r.length;++t<n;)r[i+t]=e[t];return r}var qa=I3;var Ab=Wn?Wn.isConcatSpreadable:void 0;function L3(r){return un(r)||Vi(r)||!!(Ab&&r&&r[Ab])}var Mb=L3;function Tb(r,e,t,n,i){var s=-1,o=r.length;for(t||(t=Mb),i||(i=[]);++s<o;){var a=r[s];e>0&&t(a)?e>1?Tb(a,e-1,t,n,i):qa(i,a):n||(i[i.length]=a)}return i}var Eb=Tb;function O3(r){var e=r==null?0:r.length;return e?Eb(r,1):[]}var Cb=O3;function R3(r){return $h(ed(r,void 0,Cb),r+"")}var sd=R3;var N3=rd(Object.getPrototypeOf,Object),Xa=N3;var B3="[object Object]",F3=Function.prototype,U3=Object.prototype,Db=F3.toString,z3=U3.hasOwnProperty,G3=Db.call(Object);function k3(r){if(!On(r)||hr(r)!=B3)return!1;var e=Xa(r);if(e===null)return!0;var t=z3.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Db.call(t)==G3}var od=k3;function V3(r,e,t){var n=-1,i=r.length;e<0&&(e=-e>i?0:i+e),t=t>i?i:t,t<0&&(t+=i),i=e>t?0:t-e>>>0,e>>>=0;for(var s=Array(i);++n<i;)s[n]=r[n+e];return s}var Pb=V3;function H3(){this.__data__=new Ss,this.size=0}var Ib=H3;function W3(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}var Lb=W3;function j3(r){return this.__data__.get(r)}var Ob=j3;function q3(r){return this.__data__.has(r)}var Rb=q3;var X3=200;function Y3(r,e){var t=this.__data__;if(t instanceof Ss){var n=t.__data__;if(!As||n.length<X3-1)return n.push([r,e]),this.size=++t.size,this;t=this.__data__=new Bc(n)}return t.set(r,e),this.size=t.size,this}var Nb=Y3;function Ya(r){var e=this.__data__=new Ss(r);this.size=e.size}Ya.prototype.clear=Ib;Ya.prototype.delete=Lb;Ya.prototype.get=Ob;Ya.prototype.has=Rb;Ya.prototype.set=Nb;var ad=Ya;function Q3(r,e){return r&&_r(e,Va(e),r)}var Bb=Q3;function Z3(r,e){return r&&_r(e,ii(e),r)}var Fb=Z3;var kb=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ub=kb&&typeof module=="object"&&module&&!module.nodeType&&module,K3=Ub&&Ub.exports===kb,zb=K3?Xt.Buffer:void 0,Gb=zb?zb.allocUnsafe:void 0;function J3(r,e){if(e)return r.slice();var t=r.length,n=Gb?Gb(t):new r.constructor(t);return r.copy(n),n}var ld=J3;function $3(r,e){for(var t=-1,n=r==null?0:r.length,i=0,s=[];++t<n;){var o=r[t];e(o,t,r)&&(s[i++]=o)}return s}var Vb=$3;function eO(){return[]}var cd=eO;var tO=Object.prototype,nO=tO.propertyIsEnumerable,Hb=Object.getOwnPropertySymbols,rO=Hb?function(r){return r==null?[]:(r=Object(r),Vb(Hb(r),function(e){return nO.call(r,e)}))}:cd,Qa=rO;function iO(r,e){return _r(r,Qa(r),e)}var Wb=iO;var sO=Object.getOwnPropertySymbols,oO=sO?function(r){for(var e=[];r;)qa(e,Qa(r)),r=Xa(r);return e}:cd,ud=oO;function aO(r,e){return _r(r,ud(r),e)}var jb=aO;function lO(r,e,t){var n=e(r);return un(r)?n:qa(n,t(r))}var hd=lO;function cO(r){return hd(r,Va,Qa)}var qb=cO;function uO(r){return hd(r,ii,ud)}var dd=uO;var hO=Jn(Xt,"DataView"),fd=hO;var dO=Jn(Xt,"Promise"),pd=dO;var fO=Jn(Xt,"Set"),md=fO;var Xb="[object Map]",pO="[object Object]",Yb="[object Promise]",Qb="[object Set]",Zb="[object WeakMap]",Kb="[object DataView]",mO=ki(fd),gO=ki(As),yO=ki(pd),vO=ki(md),xO=ki(Kh),_o=hr;(fd&&_o(new fd(new ArrayBuffer(1)))!=Kb||As&&_o(new As)!=Xb||pd&&_o(pd.resolve())!=Yb||md&&_o(new md)!=Qb||Kh&&_o(new Kh)!=Zb)&&(_o=function(r){var e=hr(r),t=e==pO?r.constructor:void 0,n=t?ki(t):"";if(n)switch(n){case mO:return Kb;case gO:return Xb;case yO:return Yb;case vO:return Qb;case xO:return Zb}return e});var Za=_o;var bO=Object.prototype,wO=bO.hasOwnProperty;function _O(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&wO.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var Jb=_O;var SO=Xt.Uint8Array,rg=SO;function AO(r){var e=new r.constructor(r.byteLength);return new rg(e).set(new rg(r)),e}var Ka=AO;function MO(r,e){var t=e?Ka(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}var $b=MO;var TO=/\w*$/;function EO(r){var e=new r.constructor(r.source,TO.exec(r));return e.lastIndex=r.lastIndex,e}var ew=EO;var tw=Wn?Wn.prototype:void 0,nw=tw?tw.valueOf:void 0;function CO(r){return nw?Object(nw.call(r)):{}}var rw=CO;function DO(r,e){var t=e?Ka(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var gd=DO;var PO="[object Boolean]",IO="[object Date]",LO="[object Map]",OO="[object Number]",RO="[object RegExp]",NO="[object Set]",BO="[object String]",FO="[object Symbol]",UO="[object ArrayBuffer]",zO="[object DataView]",GO="[object Float32Array]",kO="[object Float64Array]",VO="[object Int8Array]",HO="[object Int16Array]",WO="[object Int32Array]",jO="[object Uint8Array]",qO="[object Uint8ClampedArray]",XO="[object Uint16Array]",YO="[object Uint32Array]";function QO(r,e,t){var n=r.constructor;switch(e){case UO:return Ka(r);case PO:case IO:return new n(+r);case zO:return $b(r,t);case GO:case kO:case VO:case HO:case WO:case jO:case qO:case XO:case YO:return gd(r,t);case LO:return new n;case OO:case BO:return new n(r);case RO:return ew(r);case NO:return new n;case FO:return rw(r)}}var iw=QO;function ZO(r){return typeof r.constructor=="function"&&!za(r)?Rx(Xa(r)):{}}var yd=ZO;var KO="[object Map]";function JO(r){return On(r)&&Za(r)==KO}var sw=JO;var ow=Hi&&Hi.isMap,$O=ow?ka(ow):sw,aw=$O;var eR="[object Set]";function tR(r){return On(r)&&Za(r)==eR}var lw=tR;var cw=Hi&&Hi.isSet,nR=cw?ka(cw):lw,uw=nR;var rR=1,iR=2,sR=4,hw="[object Arguments]",oR="[object Array]",aR="[object Boolean]",lR="[object Date]",cR="[object Error]",dw="[object Function]",uR="[object GeneratorFunction]",hR="[object Map]",dR="[object Number]",fw="[object Object]",fR="[object RegExp]",pR="[object Set]",mR="[object String]",gR="[object Symbol]",yR="[object WeakMap]",vR="[object ArrayBuffer]",xR="[object DataView]",bR="[object Float32Array]",wR="[object Float64Array]",_R="[object Int8Array]",SR="[object Int16Array]",AR="[object Int32Array]",MR="[object Uint8Array]",TR="[object Uint8ClampedArray]",ER="[object Uint16Array]",CR="[object Uint32Array]",Dt={};Dt[hw]=Dt[oR]=Dt[vR]=Dt[xR]=Dt[aR]=Dt[lR]=Dt[bR]=Dt[wR]=Dt[_R]=Dt[SR]=Dt[AR]=Dt[hR]=Dt[dR]=Dt[fw]=Dt[fR]=Dt[pR]=Dt[mR]=Dt[gR]=Dt[MR]=Dt[TR]=Dt[ER]=Dt[CR]=!0;Dt[cR]=Dt[dw]=Dt[yR]=!1;function vd(r,e,t,n,i,s){var o,a=e&rR,l=e&iR,u=e&sR;if(t&&(o=i?t(r,n,i,s):t(r)),o!==void 0)return o;if(!Nt(r))return r;var c=un(r);if(c){if(o=Jb(r),!a)return Jh(r,o)}else{var h=Za(r),d=h==dw||h==uR;if(Ga(r))return ld(r,a);if(h==fw||h==hw||d&&!i){if(o=l||d?{}:yd(r),!a)return l?jb(r,Fb(o,r)):Wb(r,Bb(o,r))}else{if(!Dt[h])return i?r:{};o=iw(r,h,a)}}s||(s=new ad);var f=s.get(r);if(f)return f;s.set(r,o),uw(r)?r.forEach(function(g){o.add(vd(g,e,t,g,r,s))}):aw(r)&&r.forEach(function(g,y){o.set(y,vd(g,e,t,y,r,s))});var m=u?l?dd:qb:l?ii:Va,p=c?void 0:m(r);return zx(p||r,function(g,y){p&&(y=g,g=r[y]),Fa(o,y,vd(g,e,t,y,r,s))}),o}var xd=vd;var DR=1,PR=4;function IR(r){return xd(r,DR|PR)}var Fc=IR;function LR(r,e){return r!=null&&e in Object(r)}var pw=LR;function OR(r,e,t){e=Sr(e,r);for(var n=-1,i=e.length,s=!1;++n<i;){var o=Ts(e[n]);if(!(s=r!=null&&t(r,o)))break;r=r[o]}return s||++n!=i?s:(i=r==null?0:r.length,!!i&&Ua(i)&&xs(o,i)&&(un(r)||Vi(r)))}var mw=OR;function RR(r,e){return r!=null&&mw(r,e,pw)}var gw=RR;function NR(r){return function(e,t,n){for(var i=-1,s=Object(e),o=n(e),a=o.length;a--;){var l=o[r?a:++i];if(t(s[l],l,s)===!1)break}return e}}var yw=NR;var BR=yw(),vw=BR;var FR=function(){return Xt.Date.now()},bd=FR;var UR="Expected a function",zR=Math.max,GR=Math.min;function kR(r,e,t){var n,i,s,o,a,l,u=0,c=!1,h=!1,d=!0;if(typeof r!="function")throw new TypeError(UR);e=Jm(e)||0,Nt(t)&&(c=!!t.leading,h="maxWait"in t,s=h?zR(Jm(t.maxWait)||0,e):s,d="trailing"in t?!!t.trailing:d);function f(A){var M=n,v=i;return n=i=void 0,u=A,o=r.apply(v,M),o}function m(A){return u=A,a=setTimeout(y,e),c?f(A):o}function p(A){var M=A-l,v=A-u,T=e-M;return h?GR(T,s-v):T}function g(A){var M=A-l,v=A-u;return l===void 0||M>=e||M<0||h&&v>=s}function y(){var A=bd();if(g(A))return x(A);a=setTimeout(y,p(A))}function x(A){return a=void 0,d&&n?f(A):(n=i=void 0,o)}function w(){a!==void 0&&clearTimeout(a),u=0,n=l=i=a=void 0}function b(){return a===void 0?o:x(bd())}function _(){var A=bd(),M=g(A);if(n=arguments,i=this,l=A,M){if(a===void 0)return m(l);if(h)return clearTimeout(a),a=setTimeout(y,e),f(l)}return a===void 0&&(a=setTimeout(y,e)),o}return _.cancel=w,_.flush=b,_}var Uc=kR;function VR(r,e,t){(t!==void 0&&!bs(r[e],t)||t===void 0&&!(e in r))&&Ba(r,e,t)}var zc=VR;function HR(r){return On(r)&&ws(r)}var xw=HR;function WR(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}var Gc=WR;function jR(r){return _r(r,ii(r))}var bw=jR;function qR(r,e,t,n,i,s,o){var a=Gc(r,t),l=Gc(e,t),u=o.get(l);if(u){zc(r,t,u);return}var c=s?s(a,l,t+"",r,e,o):void 0,h=c===void 0;if(h){var d=un(l),f=!d&&Ga(l),m=!d&&!f&&td(l);c=l,d||f||m?un(a)?c=a:xw(a)?c=Jh(a):f?(h=!1,c=ld(l,!0)):m?(h=!1,c=gd(l,!0)):c=[]:od(l)||Vi(l)?(c=a,Vi(a)?c=bw(a):(!Nt(a)||Ra(a))&&(c=yd(l))):h=!1}h&&(o.set(l,c),i(c,l,n,s,o),o.delete(l)),zc(r,t,c)}var ww=qR;function _w(r,e,t,n,i){r!==e&&vw(e,function(s,o){if(i||(i=new ad),Nt(s))ww(r,e,o,t,_w,n,i);else{var a=n?n(Gc(r,o),s,o+"",r,e,i):void 0;a===void 0&&(a=s),zc(r,o,a)}},ii)}var Sw=_w;function XR(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var Aw=XR;function YR(r,e){return e.length<2?r:id(r,Pb(e,0,-1))}var Mw=YR;var QR=Hx(function(r,e,t){Sw(r,e,t)}),So=QR;function ZR(r,e){return e=Sr(e,r),r=Mw(r,e),r==null||delete r[Ts(Aw(e))]}var Tw=ZR;function KR(r){return od(r)?void 0:r}var Ew=KR;var JR=1,$R=2,eN=4,tN=sd(function(r,e){var t={};if(r==null)return t;var n=!1;e=Yh(e,function(s){return s=Sr(s,r),n||(n=s.length>1),s}),_r(r,dd(r),t),n&&(t=xd(t,JR|$R|eN,Ew));for(var i=e.length;i--;)Tw(t,e[i]);return t}),Ja=tN;function nN(r,e,t,n){if(!Nt(r))return r;e=Sr(e,r);for(var i=-1,s=e.length,o=s-1,a=r;a!=null&&++i<s;){var l=Ts(e[i]),u=t;if(l==="__proto__"||l==="constructor"||l==="prototype")return r;if(i!=o){var c=a[l];u=n?n(c,l,a):void 0,u===void 0&&(u=Nt(c)?c:xs(e[i+1])?[]:{})}Fa(a,l,u),a=a[l]}return r}var Cw=nN;function rN(r,e,t){for(var n=-1,i=e.length,s={};++n<i;){var o=e[n],a=id(r,o);t(a,o)&&Cw(s,Sr(o,r),a)}return s}var Dw=rN;function iN(r,e){return Dw(r,e,function(t,n){return gw(r,n)})}var Pw=iN;var sN=sd(function(r,e){return r==null?{}:Pw(r,e)}),ig=sN;function $a(r,e){return Object.setPrototypeOf(r,e),r}var oN=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),aN=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),lN=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||kc&&"ontouchend"in document,cN=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,uN=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,hN=()=>{if(typeof window>"u")return!1;let r=navigator.userAgent,e=navigator.vendor;return/Safari/i.test(r)&&/Apple Computer/.test(e)},dN=()=>{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]},Jj=oN(),kc=aN(),Vc=lN(),Iw=cN(),Kt=uN(),$j=hN(),e9=Number(dN());function Lw(r){return Array.isArray(r)?r:[r]}function Hc(r){return kc?r.metaKey:r.ctrlKey}var Es;(t=>{t.all=["PerspectiveCamera","OrthographicCamera"];function e(n){return t.all.includes(n)}t.is=e})(Es||(Es={}));var Ao;(i=>{i.DefaultUp=[0,1,0],i.DefaultTargetOffset=1e3,i.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:i.DefaultUp,isUpVectorFlipped:!1,targetOffset:i.DefaultTargetOffset};function n(s){return s.type==="PerspectiveCamera"?s.perspective.zoom:s.orthographic.zoom}i.getZoom=n})(Ao||(Ao={}));var ji;(t=>{function r(n,i){return n[0]===i[0]&&n[1]===i[1]}t.isEqual=r;function e(n,i,s){return[n[0]+(i[0]-n[0])*s,n[1]+(i[1]-n[1])*s]}t.lerp=e})(ji||(ji={}));var rn;(i=>{function r(s,o){return s[0]===o[0]&&s[1]===o[1]&&s[2]===o[2]}i.isEqual=r;function e(s,o){return[s[0]+o[0],s[1]+o[1],s[2]+o[2]]}i.add=e;function t(s,o){return[s[0]-o[0],s[1]-o[1],s[2]-o[2]]}i.sub=t;function n(s,o,a){return[s[0]+(o[0]-s[0])*a,s[1]+(o[1]-s[1])*a,s[2]+(o[2]-s[2])*a]}i.lerp=n})(rn||(rn={}));var Wc;(t=>{function r(n,i){return n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]}t.isEqual=r;function e(n,i,s){return[n[0]+(i[0]-n[0])*s,n[1]+(i[1]-n[1])*s,n[2]+(i[2]-n[2])*s,n[3]+(i[3]-n[3])*s]}t.lerp=e})(Wc||(Wc={}));var si;(i=>{i.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function e(s,o){for(let a=0;a<16;a++)if(s[a]!==o[a])return!1;return!0}i.isEqual=e;function t(s){return s??i.identity}i.simplify=t;function n(s,o){let a=o.slice(0);for(var l=0,u=o.length;l<u;l+=3){let c=s[3]*o[l]+s[7]*o[l+1]+s[11]*o[l+2]+s[15];a[l]=(s[0]*o[l]+s[4]*o[l+1]+s[8]*o[l+2]+s[12])/c,a[l+1]=(s[1]*o[l]+s[5]*o[l+1]+s[9]*o[l+2]+s[13])/c,a[l+2]=(s[2]*o[l]+s[6]*o[l+1]+s[10]*o[l+2]+s[14])/c}return a}i.applyMatrix4=n})(si||(si={}));var hn;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function n(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}l.toRgb255a1=n;function i(u){return{r:u.r,g:u.g,b:u.b}}l.clone=i;function s(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}l.fromHex=s;function o(u,c){return u.r===c.r&&u.g===c.g&&u.b===c.b}l.equals=o;function a(u,c,h){return{r:u.r+(c.r-u.r)*h,g:u.g+(c.g-u.g)*h,b:u.b+(c.b-u.b)*h}}l.lerp=a})(hn||(hn={}));var Rn;(o=>{o.white={...hn.white,a:1};function e(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}o.from0to1=e;function t(a,l){return{...hn.fromHex(a),a:l}}o.fromHexAndA=t;function n(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}o.toRgb255a1=n;function i(a,l){return hn.equals(a,l)&&a.a===l.a}o.equals=i;function s(a,l,u){return{r:a.r+(l.r-a.r)*u,g:a.g+(l.g-a.g)*u,b:a.b+(l.b-a.b)*u,a:a.a+(l.a-a.a)*u}}o.lerp=s})(Rn||(Rn={}));var wd;(e=>e.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(wd||(wd={}));var _d;(e=>e.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(_d||(_d={}));var Sd;(e=>e.defaultData={control1:[.5,.05],control2:[.1,.3]})(Sd||(Sd={}));var Ad;(e=>{function r(t,n=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*n,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+n)),useCenter:!0}}}e.defaultData=r})(Ad||(Ad={}));var Vt=class{modifyById(e,t){let n=this;if(n[e]===void 0)throw new Error("not expected");{let s={...n,[e]:t};return Object.setPrototypeOf(s,Vt.prototype),s}}add(e,t){return this.runOp({type:1,id:e,data:t})?.data??this}runOp(e){let t=this;if(e.type===1){let n=t[e.id],i;n===void 0?i={type:2,id:e.id}:i={type:1,id:e.id,data:n};let{id:s,data:o}=e,a={...t,[s]:o};return Object.setPrototypeOf(a,Vt.prototype),{data:a,actual:e,reverse:i}}else if(e.type===2){let{id:n}=e,i=t[n];if(i===void 0)return null;{let s={...t};return Object.setPrototypeOf(s,Vt.prototype),delete s[n],{data:s,actual:e,reverse:{type:1,id:n,data:i}}}}throw new Error("illegal arg")}};function jc(r){if(r.deepFreeze!==void 0){r.deepFreeze(r);return}let e=Object.getOwnPropertyNames(r);for(let t of e){let n=r[t];n&&typeof n=="object"&&jc(n)}return Object.freeze(r)}function Ow(r,e){let t=0;for(;t<r.length&&t<e.length;){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1;t+=1}return t!==e.length?-1:t!==r.length?1:0}var Md=class extends Error{};function oi(r,e,t){if(r===void 0?e===void 0?(r=0,e=10):r=e-10:e===void 0&&(e=r+10),r>e){let s=r;r=e,e=s}let n=[],i=1/(t+1);for(let s=0;s<t;s++){let o=r+(e-r)*(s+.75+Math.random()*.5)*i;n.push(o)}return n}function Td(r){return r instanceof Uint8Array||r instanceof Uint16Array||r instanceof Uint32Array||r instanceof Int8Array||r instanceof Int16Array||r instanceof Int32Array||r instanceof Float32Array||r instanceof Float64Array}function Rw(){return typeof process<"u"}function Nw(r,e){for(let t of r)e(t.id,t.data),Nw(t.children,e)}function Bw(r,e){e(r.id,r.data);for(let t of r.children)Bw(t,e)}var Ar=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Ar.prototype)}deepFreeze(){let t=0;for(;t<this.length;)jc(this[t]),t++}fillCaches0(t,n){this.objCaches.set(t.id,t),this.parentCaches.set(t.id,n);for(let i of t.children)this.fillCaches0(i,t.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let t of this)this.fillCaches0(t,null)}}randomId(){this.fillCaches();let t=Array.from(this.objCaches.keys());if(t.length!==0)return t[Math.max(0,Math.floor(Math.random()*t.length)-1)]}isDescendantOf(t,n){for(;t;){let i=this.parent(t);if(i===n)return!0;t=i}return!1}data(t){return this.get(t)?.data}has(t){return this.childrenOf(t)!==void 0}get(t){return this.fillCaches(),this.objCaches.get(t)}childrenOf(t){return t===null?this:this.get(t)?.children}traverseFrom(t,n){if(t===null)this.traverse(n);else{let i=this.get(t);i&&Bw(i,n)}}traverse(t){Nw(this,t)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(t){return this.fillCaches(),this.parentCaches.get(t)}childrenArray(t){return t===null?this:this.get(t).children}modifyById(t,n){if(this.get(t)===void 0)throw new Error("not expected");{let s=this.parent(t),o=this.childrenArray(s),a=o.findIndex(c=>c.id===t);if(a<0)throw new Error("not expected");let l=o[a];return o=[...o],o[a]={...l,data:n},this.modifyArrayBy(s,o)}}modifyArrayBy(t,n){let i=t,s=n;for(;i!==null;){let a=s,l=i;if(i=this.parent(i),i===void 0)throw new Error;s=this.childrenArray(i);let u=s.findIndex(c=>c.id===l);if(u<0)throw new Error;s=[...s],s[u]={...s[u],children:a}}Object.setPrototypeOf(s,Ar.prototype);let o=s;return o.fillCaches(),o}runOp(t){switch(t.type){case 7:return this.addOp(t);case 8:return this.deleteOp(t);case 9:return this.moveOp(t)}}checkDuplicatedIdRec({id:t,children:n}){if(this.get(t)!==void 0)return!0;for(let i of n)if(this.checkDuplicatedIdRec(i))return!0;return!1}addOp(t){let{parent:n,fi:i,id:s,data:o,children:a}=t;if(n!==null&&this.get(n)===void 0)return null;if(this.checkDuplicatedIdRec(t))return null;{let l=n,u=this.childrenArray(l),c={fi:i,id:s,data:o,children:a};return u=[...u,c],u.sort((d,f)=>d.fi-f.fi),t.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:t,reverse:{type:8,id:s}}}}deleteOp(t){let{id:n}=t;if(this.get(n)===null)return null;{let i=this.parent(n);if(i===void 0)return null;let s=this.childrenArray(i),o=s.findIndex(u=>u.id===n);t.localIndex=o,s=[...s];let a=s.splice(o,1)[0];return{data:this.modifyArrayBy(i,s),actual:t,reverse:{type:7,...a,parent:i}}}}moveOp(t){let{parent:n,fi:i,id:s}=t;if(n!==null&&this.get(n)===void 0)return this.deleteOp({type:8,id:s});if(n!==null){let f=n;for(;f!==null;){if(f===void 0)throw new Error;if(f===s)throw new Md("cyclic tree");f=this.parent(f)}}let o=this.parent(s);if(o===void 0)return null;let a=o,l=this.childrenArray(o),u=l.findIndex(f=>f.id===s);l=[...l];let c=l.splice(u,1)[0],h=this.modifyArrayBy(o,l);o=n,l=h.childrenArray(o);let d=c.fi;return c={...c,fi:i},l=[...l,c],l.sort((f,m)=>f.fi-m.fi),t.localIndex=l.indexOf(c),h=h.modifyArrayBy(o,l),{data:h,actual:t,reverse:{type:9,parent:a,fi:d,id:s}}}previous(t,n){if(n===null){let s=this.childrenArray(t);return s.length===0?null:s[s.length-1].id}let i=null;for(let s of this.childrenArray(t)){if(s.id===n)return i;i=s.id}return null}traverseSortNext(t){let n=this.parent(t);if(n!==void 0){let i=this.childrenArray(n),s=i.findIndex(o=>o.id===t)+1;if(s<i.length)return i[s].id;if(n)return this.traverseSortNext(n)}}sortNext(t){let n=this.childrenArray(t);return n.length>0?n[0].id:this.traverseSortNext(t)}traverseSortPrevious(t){let n=this.childrenArray(t);return n.length>0?this.traverseSortPrevious(n[n.length-1].id):t}sortPrevious(t){let n=this.parent(t);if(n!==void 0){let i=this.childrenArray(n),s=i.findIndex(o=>o.id===t)-1;return s>=0?this.traverseSortPrevious(i[s].id):n}}getAllSorted(t){let n=[];for(let i of t){let s=this.getWithSortKey(i.id);s!==void 0&&n.push({...i,...s})}n.sort((i,s)=>Ow(i.sortKey,s.sortKey));for(let i of n)delete i.sortKey;return n}getWithSortKey(t){var n=t;let i=[],s=this.get(n),o=s;if(s!==void 0){for(;n;)i.splice(0,0,s.fi),n=this.parent(n),n!==null&&(s=this.get(n));return{...o,sortKey:i}}}insertBeforeHelper(t,n,i){return this.insertAfterHelper(t,this.previous(t,n),i)}insertAfterHelper(t,n,i){let s=this.childrenArray(t);if(n===null){if(s.length===0)return oi(0,i,i);{let o=s[0].fi;return oi(o-i,o,i)}}else{let o=this.get(n);if(o===void 0||this.parent(n)!==t)throw new Error("illegal args");let a=s.find(l=>l.fi>o.fi);if(a===void 0){let l=s[s.length-1].fi;return oi(l,l+i,i)}else return oi(o.fi,a.fi,i)}}};var Ed;(e=>{function r(t,n){if(Array.isArray(t)){let i=n.props,s={},o=[...t],a=!1;if(i)for(let l of Object.keys(i)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");s[l]=o[u],o[u]=i[l],a=!0}return a?{data:o,actual:n,reverse:{type:0,props:s}}:null}else{let i=n.props,s={},o={...t},a=!1;if(i)for(let l of Object.keys(i)){s[l]=o[l];let u=i[l];u===void 0?delete o[l]:o[l]=u,a=!0}return a?{data:o,actual:n,reverse:{type:0,props:s}}:null}}e.runOp=r})(Ed||(Ed={}));var Ht=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Ht.prototype)}deepFreeze(){let t=0;for(;t<this.length;)jc(this[t]),t++}fillCaches0(t){this.objCaches.set(t.id,t)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let t of this)this.fillCaches0(t)}}randomId(){this.fillCaches();let t=Array.from(this.objCaches.keys());if(t.length!==0)return t[Math.max(0,Math.floor(Math.random()*t.length)-1)]}data(t){return this.get(t)?.data}get(t){return this.fillCaches(),this.objCaches.get(t)}modifyById(t,n){if(this.get(t)===void 0)throw new Error("not expected");{let s=this,o=s.findIndex(u=>u.id===t);if(o<0)throw new Error("not expected");let a=s[o];return s=[...s],s[o]={...a,data:n},this.modifyArrayBy(s)}}modifyArrayBy(t){Object.setPrototypeOf(t,Ht.prototype);let n=t;return Rw()||n.fillCaches(),n}runOp(t){switch(t.type){case 4:return this.addOp(t);case 5:return this.deleteOp(t);case 6:return this.moveOp(t)}}addOp(t){let{fi:n,id:i,data:s}=t,o=this,a={fi:n,id:i,data:s};return o=[...o,a],o.sort((u,c)=>u.fi-c.fi),t.localIndex=o.indexOf(a),{data:this.modifyArrayBy(o),actual:t,reverse:{type:5,id:i}}}deleteOp(t){let{id:n}=t,i=this,s=i.findIndex(l=>l.id===n);if(s===-1)return null;t.localIndex=s,i=[...i];let o=i.splice(s,1)[0];return{data:this.modifyArrayBy(i),actual:t,reverse:{type:4,...o}}}moveOp(t){let{fi:n,id:i}=t,s=this;s=[...s];let o=s.findIndex(c=>c.id===i);if(o===-1)return null;let a=s[o].fi,l={...s[o],fi:n};return s[o]=l,s.sort((c,h)=>c.fi-h.fi),t.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:t,reverse:{type:6,fi:a,id:i}}}previous(t){if(t===null)return this.length===0?null:this[this.length-1].id;let n=null;for(let i of this){if(i.id===t)return n;n=i.id}return null}insertBeforeHelper(t,n){return this.insertAfterHelper(this.previous(t),n)}insertAfterHelper(t,n){let i=this;if(t===null){if(i.length===0)return oi(0,n,n);{let s=i[0].fi;return oi(s-n,s,n)}}else{let s=this.get(t);if(s===void 0)throw new Error("illegal args");let o=i.find(a=>a.fi>s.fi);if(o===void 0){let a=i[i.length-1].fi;return oi(a,a+n,n)}else return oi(s.fi,o.fi,n)}}};var Fw=Symbol(),Dd=Symbol(),el=class{reportOp(e,t){let n=this;if(t===null)return;n._current=t.data;let i=[];for(;!(n instanceof Cd);){let s=n._path,o=n._current;if(s!==""&&i.splice(0,0,s),n=n._parent,n===null)return;n.update(s,o)}n.push(i,e,t.actual,t.reverse)}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let n=t[Dd];n&&n(),delete this._children[e]}}}},og=class extends el{constructor(e,t,n){super(),this._parent=e,this._path=t,this._current=n}update(e,t){if(Array.isArray(this._current)){if(typeof e=="string"&&(e=parseInt(e),isNaN(e)))throw new Error("Invalid path");this._current=[...this._current],this._current[e]=t}else this._current={...this._current,[e]:t}}runOp(e){this.reportOp(e,Ed.runOp(this._current,e))}},ag=class extends el{constructor(e,t,n){super(),this._parent=e,this._path=t,this._current=n}update(e,t){this._current={...this._current,[e]:t},Object.setPrototypeOf(this._current,Vt.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},Uw={get(r,e){if(e===Dd)return()=>{r._parent=null};if(e===Fw)return r._current;let{_current:t,_children:n}=r;if(e==="push"&&Array.isArray(t))throw new Error("not supported to expand array");let i=n===void 0?void 0:n[e];if(i!==void 0)return i;let s=t[e],o=Pd(r,e,s);return o!==s?(n===void 0&&(n={},r._children=n),n[e]=o,o):s},has(r,e){return e in r._current},ownKeys(r){return Reflect.ownKeys(r._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(r){return Object.getPrototypeOf(r._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(r,e){let t=r._current,n=Reflect.getOwnPropertyDescriptor(t,e);return n&&{writable:!0,configurable:!0,enumerable:n.enumerable,value:t[e]}}},fN={...Uw,set(r,e,t){let n={type:0,props:{[e]:Cs(t)??t}};return r.deleteChildren(e),r.runOp(n),!0},deleteProperty(r,e){let t={type:0,props:{[e]:void 0}};return r.deleteChildren(e),r.runOp(t),!0}},pN={...Uw,set(r,e,t){return t===void 0?this.deleteProperty(r,e):(r.deleteChildren(e),r.runOp({type:1,id:e,data:t})),!0},deleteProperty(r,e){return r.runOp({type:2,id:e}),!0}},tl=class extends el{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Dd]=()=>{this._parent=null}}unproxy(){return this._current}update(e,t){this._current=this._current.modifyById(e,t)}runOp(e){this.reportOp(e,this._current.runOp(e))}randomId(){return this._current.randomId()}isDescendantOf(e,t){return this._current.isDescendantOf(e,t)}childrenOf(e){return this._current.childrenOf(e)}traverse(e){return this._current.traverse(e)}get(e){return this._current.get(e)}parent(e){return this._current.parent(e)}traverse(e){this._current.traverse((t,n)=>{e(t,this.data(t))})}data(e){let{_current:t,_children:n}=this,i=n===void 0?void 0:n[e];if(i!==void 0)return i;let s=t.get(e)?.data,o=Pd(this,e,s);return o!==s?(n===void 0&&(n={},this._children=n),n[e]=o,o):s}add(e,t,n,i,s){this.runOp({type:7,parent:e,fi:t,id:n,data:i,children:s})}move(e,t,n){this.runOp({type:9,parent:e,fi:t,id:n})}insertAfter(e,t,n){let i=this._current.insertAfterHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.add(e,i[s],o.id,o.data,o.children)}}insertBefore(e,t,n){let i=this._current.insertBeforeHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.add(e,i[s],o.id,o.data,o.children)}}moveAfter(e,t,n){let i=this._current.insertAfterHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.move(e,i[s],o)}}moveBefore(e,t,n){let i=this._current.insertBeforeHelper(e,t,n.length);for(let s=0;s<n.length;s++){let o=n[s];this.move(e,i[s],o)}}delete(e){this.deleteChildren(e),this.runOp({type:8,id:e})}sortNext(e){return this._current.sortNext(e)}sortPrevious(e){return this._current.sortPrevious(e)}getAllSorted(e){return this._current.getAllSorted(e)}},nl=class extends el{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Dd]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(e){let t=this.length;for(let n=0;n<t;n++){let i=this._current[n].id;e(this.data(this._current[n].id),i)}}update(e,t){this._current=this._current.modifyById(e,t)}randomId(){return this._current.randomId()}get(e){return{...this._current.get(e),data:this.data(e)}}data(e){let{_current:t,_children:n}=this,i=n===void 0?void 0:n[e];if(i!==void 0)return i;let s=t.get(e)?.data,o=Pd(this,e,s);return o!==s?(n===void 0&&(n={},this._children=n),n[e]=o,o):s}runOp(e){this.reportOp(e,this._current.runOp(e))}add(e,t,n){this.runOp({type:4,fi:e,id:t,data:n})}move(e,t){this.runOp({type:6,fi:e,id:t})}insertAfter(e,t){let n=this._current.insertAfterHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(n[i],s.id,s.data)}}insertBefore(e,t){let n=this._current.insertBeforeHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(n[i],s.id,s.data)}}moveAfter(e,t){let n=this._current.insertAfterHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(n[i],s)}}moveBefore(e,t){let n=this._current.insertBeforeHelper(e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(n[i],s)}}delete(e){this.deleteChildren(e),this.runOp({type:5,id:e})}};function sg(r,e,t){if(r.length>0){let n=r[r.length-1];if(n.type===0&&e.type===0&&Id.equal(n.path,t)){Object.assign(n.props,e.props);return}}r.push({...e,path:t})}var Cd=class{constructor(e){this.ts=[],this.actual=[],this.reverse=[],this._current=e}update(e,t){if(e!=="")throw new Error("");this._current=t}push(e,t,n,i){sg(this.ts,t,e),sg(this.actual,n,e),sg(this.reverse,i,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Pd(r,e,t){return t instanceof Ar?new tl(r,e,t):t instanceof Ht?new nl(r,e,t):t instanceof Vt?new Proxy(new ag(r,e,t),pN):t!==null&&typeof t=="object"?Td(t)?t:new Proxy(new og(r,e,t),fN):t}function lg(r){let e=new Cd(r);return[Pd(e,"",r),e]}function cg(r,e){let[t,n]=lg(r);return e(t),n.result()}function Cs(r){return r instanceof tl||r instanceof nl?r._current:r!==null&&typeof r=="object"?r[Fw]:r}var Id;(n=>{function r(i,s){if(s.length===i.length)for(var o=0;o<i.length;){if(i[o]!==s[o])return!1;o+=1}else return!1;return!0}n.equal=r;function e(i,s,o){let a=t(o,i);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...s};return Object.keys(a).forEach(u=>{delete l[u]}),l}else return s}n.removeOverridden=e;function t(i,s,o=0){if(s.length<=o)return i;if((i instanceof Ar||i instanceof tl)&&typeof s[o]=="string")return t(i.data(s[o]),s,o+1);if((i instanceof Ht||i instanceof nl)&&typeof s[o]=="string")return t(i.data(s[o]),s,o+1);if(typeof s[o]=="number"&&Array.isArray(i))return t(i[s[o]],s,o+1);if(typeof s[o]=="string"&&typeof i=="object")return t(i[s[o]],s,o+1)}n.zoom=t})(Id||(Id={}));var Ld=class{},qc=class extends Ld{constructor(t){super();this.id=t}},Xc=class extends Ld{constructor(t){super();this.data=t}};var hg;try{hg=new TextDecoder}catch{}var De,Ps,Q=0;var qw=[],dg=qw,fg=0,$n={},mt,Ds,Mr=0,ai=0,dr,qi,jn=[],At,zw={useRecords:!1,mapsAsObjects:!0},Yc=class{},mg=new Yc;mg.name="MessagePack 0xC1";var rl=!1,li=class{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0)),Object.assign(this,e)}unpack(e,t){if(De)return Kw(()=>(Rd(),this?this.unpack(e,t):li.prototype.unpack.call(zw,e,t)));Ps=t>-1?t:e.length,Q=0,fg=0,ai=0,Ds=null,dg=qw,dr=null,De=e;try{At=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(n){throw De=null,e instanceof Uint8Array?n:new Error("Source must be a Uint8Array or Buffer but was a "+(e&&typeof e=="object"?e.constructor.name:typeof e))}if(this instanceof li){if($n=this,this.structures)return mt=this.structures,Od();(!mt||mt.length>0)&&(mt=[])}else $n=zw,(!mt||mt.length>0)&&(mt=[]);return Od()}unpackMultiple(e,t){let n,i=0;try{rl=!0;let s=e.length,o=this?this.unpack(e,s):Fd.unpack(e,s);if(t){for(t(o);Q<s;)if(i=Q,t(Od())===!1)return}else{for(n=[o];Q<s;)i=Q,n.push(Od());return n}}catch(s){throw s.lastPosition=i,s.values=n,s}finally{rl=!1,Rd()}}_mergeStructures(e,t){e=e||[];for(let n=0,i=e.length;n<i;n++){let s=e[n];s&&(s.isShared=!0,n>=32&&(s.highByte=n-32>>5))}e.sharedLength=e.length;for(let n in t||[])if(n>=0){let i=e[n],s=t[n];s&&(i&&((e.restoreStructures||(e.restoreStructures=[]))[n]=i),e[n]=s)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function Od(){try{if(!$n.trusted&&!rl){let e=mt.sharedLength||0;e<mt.length&&(mt.length=e)}let r=Yt();if(Q==Ps)mt.restoreStructures&&Gw(),mt=null,De=null,qi&&(qi=null);else if(Q>Ps){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}else if(!rl)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw mt.restoreStructures&&Gw(),Rd(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function Gw(){for(let r in mt.restoreStructures)mt[r]=mt.restoreStructures[r];mt.restoreStructures=null}function Yt(){let r=De[Q++];if(r<160)if(r<128){if(r<64)return r;{let e=mt[r&63]||$n.getStructures&&Xw()[r&63];return e?(e.read||(e.read=gg(e,r&63)),e.read()):r}}else if(r<144)if(r-=128,$n.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[Qw()]=Yt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Yt(),Yt());return e}else{r-=144;let e=new Array(r);for(let t=0;t<r;t++)e[t]=Yt();return e}else if(r<192){let e=r-160;if(ai>=Q)return Ds.slice(Q-Mr,(Q+=e)-Mr);if(ai==0&&Ps<140){let t=e<16?yg(e):Yw(e);if(t!=null)return t}return pg(e)}else{let e;switch(r){case 192:return null;case 193:return dr?(e=Yt(),e>0?dr[1].slice(dr.position1,dr.position1+=e):dr[0].slice(dr.position0,dr.position0-=e)):mg;case 194:return!1;case 195:return!0;case 196:return ug(De[Q++]);case 197:return e=At.getUint16(Q),Q+=2,ug(e);case 198:return e=At.getUint32(Q),Q+=4,ug(e);case 199:return Mo(De[Q++]);case 200:return e=At.getUint16(Q),Q+=2,Mo(e);case 201:return e=At.getUint32(Q),Q+=4,Mo(e);case 202:if(e=At.getFloat32(Q),$n.useFloat32>2){let t=Bd[(De[Q]&127)<<1|De[Q+1]>>7];return Q+=4,(t*e+(e>0?.5:-.5)>>0)/t}return Q+=4,e;case 203:return e=At.getFloat64(Q),Q+=8,e;case 204:return De[Q++];case 205:return e=At.getUint16(Q),Q+=2,e;case 206:return e=At.getUint32(Q),Q+=4,e;case 207:return $n.int64AsNumber?(e=At.getUint32(Q)*4294967296,e+=At.getUint32(Q+4)):e=At.getBigUint64(Q),Q+=8,e;case 208:return At.getInt8(Q++);case 209:return e=At.getInt16(Q),Q+=2,e;case 210:return e=At.getInt32(Q),Q+=4,e;case 211:return $n.int64AsNumber?(e=At.getInt32(Q)*4294967296,e+=At.getUint32(Q+4)):e=At.getBigInt64(Q),Q+=8,e;case 212:if(e=De[Q++],e==114)return jw(De[Q++]&63);{let t=jn[e];if(t)return t.read?(Q++,t.read(Yt())):t.noBuffer?(Q++,t()):t(De.subarray(Q,++Q));throw new Error("Unknown extension "+e)}case 213:return e=De[Q],e==114?(Q++,jw(De[Q++]&63,De[Q++])):Mo(2);case 214:return Mo(4);case 215:return Mo(8);case 216:return Mo(16);case 217:return e=De[Q++],ai>=Q?Ds.slice(Q-Mr,(Q+=e)-Mr):gN(e);case 218:return e=At.getUint16(Q),Q+=2,ai>=Q?Ds.slice(Q-Mr,(Q+=e)-Mr):yN(e);case 219:return e=At.getUint32(Q),Q+=4,ai>=Q?Ds.slice(Q-Mr,(Q+=e)-Mr):vN(e);case 220:return e=At.getUint16(Q),Q+=2,Vw(e);case 221:return e=At.getUint32(Q),Q+=4,Vw(e);case 222:return e=At.getUint16(Q),Q+=2,Hw(e);case 223:return e=At.getUint32(Q),Q+=4,Hw(e);default:if(r>=224)return r-256;if(r===void 0){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}throw new Error("Unknown MessagePack token "+r)}}}var mN=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function gg(r,e){function t(){if(t.count++>2){let i=r.read=new Function("r","return function(){return {"+r.map(s=>mN.test(s)?s+":r()":"["+JSON.stringify(s)+"]:r()").join(",")+"}}")(Yt);return r.highByte===0&&(r.read=kw(e,r.read)),i()}let n={};for(let i=0,s=r.length;i<s;i++){let o=r[i];n[o]=Yt()}return n}return t.count=0,r.highByte===0?kw(e,t):t}var kw=(r,e)=>function(){let t=De[Q++];if(t===0)return e();let n=r<32?-(r+(t<<5)):r+(t<<5),i=mt[n]||Xw()[n];if(!i)throw new Error("Record id is not defined for "+n);return i.read||(i.read=gg(i,r)),i.read()};function Xw(){let r=Kw(()=>(De=null,$n.getStructures()));return mt=$n._mergeStructures(r,mt)}var pg=Nd,gN=Nd,yN=Nd,vN=Nd;function Nd(r){let e;if(r<16&&(e=yg(r)))return e;if(r>64&&hg)return hg.decode(De.subarray(Q,Q+=r));let t=Q+r,n=[];for(e="";Q<t;){let i=De[Q++];if((i&128)===0)n.push(i);else if((i&224)===192){let s=De[Q++]&63;n.push((i&31)<<6|s)}else if((i&240)===224){let s=De[Q++]&63,o=De[Q++]&63;n.push((i&31)<<12|s<<6|o)}else if((i&248)===240){let s=De[Q++]&63,o=De[Q++]&63,a=De[Q++]&63,l=(i&7)<<18|s<<12|o<<6|a;l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|l&1023),n.push(l)}else n.push(i);n.length>=4096&&(e+=Mn.apply(String,n),n.length=0)}return n.length>0&&(e+=Mn.apply(String,n)),e}function Vw(r){let e=new Array(r);for(let t=0;t<r;t++)e[t]=Yt();return e}function Hw(r){if($n.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[Qw()]=Yt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Yt(),Yt());return e}}var Mn=String.fromCharCode;function Yw(r){let e=Q,t=new Array(r);for(let n=0;n<r;n++){let i=De[Q++];if((i&128)>0){Q=e;return}t[n]=i}return Mn.apply(String,t)}function yg(r){if(r<4)if(r<2){if(r===0)return"";{let e=De[Q++];if((e&128)>1){Q-=1;return}return Mn(e)}}else{let e=De[Q++],t=De[Q++];if((e&128)>0||(t&128)>0){Q-=2;return}if(r<3)return Mn(e,t);let n=De[Q++];if((n&128)>0){Q-=3;return}return Mn(e,t,n)}else{let e=De[Q++],t=De[Q++],n=De[Q++],i=De[Q++];if((e&128)>0||(t&128)>0||(n&128)>0||(i&128)>0){Q-=4;return}if(r<6){if(r===4)return Mn(e,t,n,i);{let s=De[Q++];if((s&128)>0){Q-=5;return}return Mn(e,t,n,i,s)}}else if(r<8){let s=De[Q++],o=De[Q++];if((s&128)>0||(o&128)>0){Q-=6;return}if(r<7)return Mn(e,t,n,i,s,o);let a=De[Q++];if((a&128)>0){Q-=7;return}return Mn(e,t,n,i,s,o,a)}else{let s=De[Q++],o=De[Q++],a=De[Q++],l=De[Q++];if((s&128)>0||(o&128)>0||(a&128)>0||(l&128)>0){Q-=8;return}if(r<10){if(r===8)return Mn(e,t,n,i,s,o,a,l);{let u=De[Q++];if((u&128)>0){Q-=9;return}return Mn(e,t,n,i,s,o,a,l,u)}}else if(r<12){let u=De[Q++],c=De[Q++];if((u&128)>0||(c&128)>0){Q-=10;return}if(r<11)return Mn(e,t,n,i,s,o,a,l,u,c);let h=De[Q++];if((h&128)>0){Q-=11;return}return Mn(e,t,n,i,s,o,a,l,u,c,h)}else{let u=De[Q++],c=De[Q++],h=De[Q++],d=De[Q++];if((u&128)>0||(c&128)>0||(h&128)>0||(d&128)>0){Q-=12;return}if(r<14){if(r===12)return Mn(e,t,n,i,s,o,a,l,u,c,h,d);{let f=De[Q++];if((f&128)>0){Q-=13;return}return Mn(e,t,n,i,s,o,a,l,u,c,h,d,f)}}else{let f=De[Q++],m=De[Q++];if((f&128)>0||(m&128)>0){Q-=14;return}if(r<15)return Mn(e,t,n,i,s,o,a,l,u,c,h,d,f,m);let p=De[Q++];if((p&128)>0){Q-=15;return}return Mn(e,t,n,i,s,o,a,l,u,c,h,d,f,m,p)}}}}}function ug(r){return $n.copyBuffers?Uint8Array.prototype.slice.call(De,Q,Q+=r):De.subarray(Q,Q+=r)}function Mo(r){let e=De[Q++];if(jn[e])return jn[e](De.subarray(Q,Q+=r));throw new Error("Unknown extension type "+e)}var Ww=new Array(4096);function Qw(){let r=De[Q++];if(r>=160&&r<192){if(r=r-160,ai>=Q)return Ds.slice(Q-Mr,(Q+=r)-Mr);if(!(ai==0&&Ps<180))return pg(r)}else return Q--,Yt();let e=(r<<5^(r>1?At.getUint16(Q):r>0?De[Q]:0))&4095,t=Ww[e],n=Q,i=Q+r-3,s,o=0;if(t&&t.bytes==r){for(;n<i;){if(s=At.getUint32(n),s!=t[o++]){n=1879048192;break}n+=4}for(i+=3;n<i;)if(s=De[n++],s!=t[o++]){n=1879048192;break}if(n===i)return Q=n,t.string;i-=3,n=Q}for(t=[],Ww[e]=t,t.bytes=r;n<i;)s=At.getUint32(n),t.push(s),n+=4;for(i+=3;n<i;)s=De[n++],t.push(s);let a=r<16?yg(r):Yw(r);return a!=null?t.string=a:t.string=pg(r)}var jw=(r,e)=>{var t=Yt();let n=r;e!==void 0&&(r=r<32?-((e<<5)+r):(e<<5)+r,t.highByte=e);let i=mt[r];return i&&i.isShared&&((mt.restoreStructures||(mt.restoreStructures=[]))[r]=i),mt[r]=t,t.read=gg(t,n),t.read()},Zw=typeof self=="object"?self:global;jn[0]=()=>{};jn[0].noBuffer=!0;jn[101]=()=>{let r=Yt();return(Zw[r[0]]||Error)(r[1])};jn[105]=r=>{let e=At.getUint32(Q-4);qi||(qi=new Map);let t=De[Q],n;t>=144&&t<160||t==220||t==221?n=[]:n={};let i={target:n};qi.set(e,i);let s=Yt();return i.used?Object.assign(n,s):(i.target=s,s)};jn[112]=r=>{let e=At.getUint32(Q-4),t=qi.get(e);return t.used=!0,t.target};jn[115]=()=>new Set(Yt());var vg=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");jn[116]=r=>{let e=r[0],t=vg[e];if(!t)throw new Error("Could not find typed array for code "+e);return new Zw[t](Uint8Array.prototype.slice.call(r,1).buffer)};jn[120]=()=>{let r=Yt();return new RegExp(r[0],r[1])};jn[98]=r=>{let e=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],t=Q;Q+=e-4,dr=[Yt(),Yt()],dr.position0=0,dr.position1=0;let n=Q;Q=t;try{return Yt()}finally{Q=n}};jn[255]=r=>r.length==4?new Date((r[0]*16777216+(r[1]<<16)+(r[2]<<8)+r[3])*1e3):r.length==8?new Date(((r[0]<<22)+(r[1]<<14)+(r[2]<<6)+(r[3]>>2))/1e6+((r[3]&3)*4294967296+r[4]*16777216+(r[5]<<16)+(r[6]<<8)+r[7])*1e3):r.length==12?new Date(((r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3])/1e6+((r[4]&128?-281474976710656:0)+r[6]*1099511627776+r[7]*4294967296+r[8]*16777216+(r[9]<<16)+(r[10]<<8)+r[11])*1e3):new Date("invalid");function Kw(r){let e=Ps,t=Q,n=fg,i=Mr,s=ai,o=Ds,a=dg,l=qi,u=dr,c=new Uint8Array(De.slice(0,Ps)),h=mt,d=mt.slice(0,mt.length),f=$n,m=rl,p=r();return Ps=e,Q=t,fg=n,Mr=i,ai=s,Ds=o,dg=a,qi=l,dr=u,De=c,rl=m,mt=h,mt.splice(0,mt.length,...d),$n=f,At=new DataView(De.buffer,De.byteOffset,De.byteLength),p}function Rd(){De=null,qi=null,mt=null}function Jw(r){r.unpack?jn[r.type]=r.unpack:jn[r.type]=r}var Bd=new Array(147);for(let r=0;r<256;r++)Bd[r]=+("1e"+Math.floor(45.15-r*.30103));var Fd=new li({useRecords:!1}),xN=Fd.unpack,bN=Fd.unpackMultiple,wN=Fd.unpack,Ud={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},_N=new Float32Array(1),L9=new Uint8Array(_N.buffer,0,4);var zd;try{zd=new TextEncoder}catch{}var Gd,bg,kd=typeof Buffer<"u",xg=kd?Buffer.allocUnsafeSlow:Uint8Array,n_=kd?Buffer:Uint8Array,$w=kd?4294967296:2144337920,se,Jt,ee=0,ci,ui=null,SN=/[\u0080-\uFFFF]/,Qc=Symbol("record-id"),To=class extends li{constructor(e){super(e),this.offset=0;let t,n,i,s,o,a,l=0,u=n_.prototype.utf8Write?function(v,T,E){return se.utf8Write(v,T,E)}:zd&&zd.encodeInto?function(v,T){return zd.encodeInto(v,se.subarray(T)).written}:!1,c=this;e||(e={});let h=e&&e.sequential,d=e.structures||e.saveStructures,f=e.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=e.maxOwnStructures;m==null&&(m=d?32:64),h&&!e.saveStructures&&(this.structures=[]);let p=f>32||m+f>64,g=f+64,y=f+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],w=0,b=0;this.pack=this.encode=function(v,T){if(se||(se=new xg(8192),Jt=new DataView(se.buffer,0,8192),ee=0),ci=se.length-10,ci-ee<2048?(se=new xg(se.length),Jt=new DataView(se.buffer,0,se.length),ci=se.length-10,ee=0):ee=ee+7&2147483640,n=ee,a=c.structuredClone?new Map:null,c.bundleStrings?(ui=["",""],se[ee++]=214,se[ee++]=98,ui.position=ee-n,ee+=4):ui=null,i=c.structures,i){i.uninitialized&&(i=c._mergeStructures(c.getStructures()));let E=i.sharedLength||0;if(E>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let C=0;C<E;C++){let L=i[C];if(!L)continue;let R,O=i.transitions;for(let W=0,j=L.length;W<j;W++){let Z=L[W];R=O[Z],R||(R=O[Z]=Object.create(null)),O=R}O[Qc]=C+64}l=E}h||(i.nextId=E+64)}s&&(s=!1),o=i||[];try{if(_(v),ui){Jt.setUint32(ui.position+n,ee-ui.position-n);let E=ui;ui=null,_(E[0]),_(E[1])}if(c.offset=ee,a&&a.idsToInsert){ee+=a.idsToInsert.length*6,ee>ci&&M(ee),c.offset=ee;let E=MN(se.subarray(n,ee),a.idsToInsert);return a=null,E}return T&i_?(se.start=n,se.end=ee,se):se.subarray(n,ee)}finally{if(i){if(b<10&&b++,w>1e4)i.transitions=null,b=0,w=0,x.length>0&&(x=[]);else if(x.length>0&&!h){for(let E=0,C=x.length;E<C;E++)x[E][Qc]=0;x=[]}if(s&&c.saveStructures){let E=i.sharedLength||f;i.length>E&&(i=i.slice(0,E));let C=se.subarray(n,ee);return c.saveStructures(i,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(v)):(l=E,C)}}T&LN&&(ee=n)}};let _=v=>{ee>ci&&(se=M(ee));var T=typeof v,E;if(T==="string"){let C=v.length;if(ui&&C>=8&&C<4096){let O=SN.test(v);ui[O?0:1]+=v,se[ee++]=193,_(O?-C:C);return}let L;C<32?L=1:C<256?L=2:C<65536?L=3:L=5;let R=C*3;if(ee+R>ci&&(se=M(ee+R)),C<64||!u){let O,W,j,Z=ee+L;for(O=0;O<C;O++)W=v.charCodeAt(O),W<128?se[Z++]=W:W<2048?(se[Z++]=W>>6|192,se[Z++]=W&63|128):(W&64512)===55296&&((j=v.charCodeAt(O+1))&64512)===56320?(W=65536+((W&1023)<<10)+(j&1023),O++,se[Z++]=W>>18|240,se[Z++]=W>>12&63|128,se[Z++]=W>>6&63|128,se[Z++]=W&63|128):(se[Z++]=W>>12|224,se[Z++]=W>>6&63|128,se[Z++]=W&63|128);E=Z-ee-L}else E=u(v,ee+L,R);E<32?se[ee++]=160|E:E<256?(L<2&&se.copyWithin(ee+2,ee+1,ee+1+E),se[ee++]=217,se[ee++]=E):E<65536?(L<3&&se.copyWithin(ee+3,ee+2,ee+2+E),se[ee++]=218,se[ee++]=E>>8,se[ee++]=E&255):(L<5&&se.copyWithin(ee+5,ee+3,ee+3+E),se[ee++]=219,Jt.setUint32(ee,E),ee+=4),ee+=E}else if(T==="number")if(v>>>0===v)v<64?se[ee++]=v:v<256?(se[ee++]=204,se[ee++]=v):v<65536?(se[ee++]=205,se[ee++]=v>>8,se[ee++]=v&255):(se[ee++]=206,Jt.setUint32(ee,v),ee+=4);else if(v>>0===v)v>=-32?se[ee++]=256+v:v>=-128?(se[ee++]=208,se[ee++]=v+256):v>=-32768?(se[ee++]=209,Jt.setInt16(ee,v),ee+=2):(se[ee++]=210,Jt.setInt32(ee,v),ee+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){se[ee++]=202,Jt.setFloat32(ee,v);let L;if(C<4||(L=v*Bd[(se[ee]&127)<<1|se[ee+1]>>7])>>0===L){ee+=4;return}else ee--}se[ee++]=203,Jt.setFloat64(ee,v),ee+=8}else if(T==="object")if(!v)se[ee++]=192;else{if(a){let L=a.get(v);if(L){if(!L.id){let R=a.idsToInsert||(a.idsToInsert=[]);L.id=R.push(L)}se[ee++]=214,se[ee++]=112,Jt.setUint32(ee,L.id),ee+=4;return}else a.set(v,{offset:ee-n})}let C=v.constructor;if(C===Object)A(v,!0);else if(C===Array){E=v.length,E<16?se[ee++]=144|E:E<65536?(se[ee++]=220,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=221,Jt.setUint32(ee,E),ee+=4);for(let L=0;L<E;L++)_(v[L])}else if(C===Map){E=v.size,E<16?se[ee++]=128|E:E<65536?(se[ee++]=222,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=223,Jt.setUint32(ee,E),ee+=4);for(let[L,R]of v)_(L),_(R)}else{for(let L=0,R=Gd.length;L<R;L++){let O=bg[L];if(v instanceof O){let W=Gd[L];if(W.write){W.type&&(se[ee++]=212,se[ee++]=W.type,se[ee++]=0),_(W.write.call(this,v));return}let j=se,Z=Jt,Y=ee;se=null;let z;try{z=W.pack.call(this,v,F=>(se=j,j=null,ee+=F,ee>ci&&M(ee),{target:se,targetView:Jt,position:ee-F}),_)}finally{j&&(se=j,Jt=Z,ee=Y,ci=se.length-10)}z&&(z.length+ee>ci&&M(z.length+ee),ee=AN(z,se,ee,W.type));return}}A(v,!v.hasOwnProperty)}}else if(T==="boolean")se[ee++]=v?195:194;else if(T==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))se[ee++]=211,Jt.setBigInt64(ee,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)se[ee++]=207,Jt.setBigUint64(ee,v);else if(this.largeBigIntToFloat)se[ee++]=203,Jt.setFloat64(ee,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");ee+=8}else if(T==="undefined")this.encodeUndefinedAsNil?se[ee++]=192:(se[ee++]=212,se[ee++]=0,se[ee++]=0);else if(T==="function")_(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},A=this.useRecords===!1?this.variableMapSize?v=>{let T=Object.keys(v),E=T.length;E<16?se[ee++]=128|E:E<65536?(se[ee++]=222,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=223,Jt.setUint32(ee,E),ee+=4);let C;for(let L=0;L<E;L++)_(C=T[L]),_(v[C])}:(v,T)=>{se[ee++]=222;let E=ee-n;ee+=2;let C=0;for(let L in v)(T||v.hasOwnProperty(L))&&(_(L),_(v[L]),C++);se[E+++n]=C>>8,se[E+n]=C&255}:v=>{let T=Object.keys(v),E,C=o.transitions||(o.transitions=Object.create(null)),L=0;for(let O=0,W=T.length;O<W;O++){let j=T[O];E=C[j],E||(E=C[j]=Object.create(null),L++),C=E}let R=C[Qc];if(R)R>=96&&p?(se[ee++]=((R-=96)&31)+96,se[ee++]=R>>5):se[ee++]=R;else{R=o.nextId,R||(R=64),R<g&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(R=o.nextOwnId,R<y||(R=g),o.nextOwnId=R+1):(R>=y&&(R=g),o.nextId=R+1);let O=T.highByte=R>=96&&p?R-96>>5:-1;C[Qc]=R,o[R-64]=T,R<g?(T.isShared=!0,o.sharedLength=R-63,s=!0,O>=0?(se[ee++]=(R&31)+96,se[ee++]=O):se[ee++]=R):(O>=0?(se[ee++]=213,se[ee++]=114,se[ee++]=(R&31)+96,se[ee++]=O):(se[ee++]=212,se[ee++]=114,se[ee++]=R),L&&(w+=b*L),x.length>=m&&(x.shift()[Qc]=0),x.push(C),_(T))}for(let O=0,W=T.length;O<W;O++)_(v[T[O]])},M=v=>{let T;if(v>16777216){if(v-n>$w)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min($w,Math.round(Math.max((v-n)*(v>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(v-n<<2,se.length-1)>>12)+1<<12;let E=new xg(T);return Jt=new DataView(E.buffer,0,T),se.copy?se.copy(E,0,n,v):E.set(se.slice(n,v)),ee-=n,n=0,ci=E.length-10,se=E}}useBuffer(e){se=e,Jt=new DataView(se.buffer,se.byteOffset,se.byteLength),ee=0}};bg=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Yc];Gd=[{pack(r,e,t){let n=r.getTime()/1e3;if((this.useTimestamp32||r.getMilliseconds()===0)&&n>=0&&n<4294967296){let{target:i,targetView:s,position:o}=e(6);i[o++]=214,i[o++]=255,s.setUint32(o,n)}else if(n>0&&n<17179869184){let{target:i,targetView:s,position:o}=e(10);i[o++]=215,i[o++]=255,s.setUint32(o,r.getMilliseconds()*4e6+(n/1e3/4294967296>>0)),s.setUint32(o+4,n)}else if(isNaN(n)){if(this.onInvalidDate)return e(0),t(this.onInvalidDate());let{target:i,targetView:s,position:o}=e(3);i[o++]=212,i[o++]=255,i[o++]=255}else{let{target:i,targetView:s,position:o}=e(15);i[o++]=199,i[o++]=12,i[o++]=255,s.setUint32(o,r.getMilliseconds()*1e6),s.setBigInt64(o+4,BigInt(Math.floor(n)))}}},{pack(r,e,t){let n=Array.from(r),{target:i,position:s}=e(this.structuredClone?3:0);this.structuredClone&&(i[s++]=212,i[s++]=115,i[s++]=0),t(n)}},{pack(r,e,t){let{target:n,position:i}=e(this.structuredClone?3:0);this.structuredClone&&(n[i++]=212,n[i++]=101,n[i++]=0),t([r.name,r.message])}},{pack(r,e,t){let{target:n,position:i}=e(this.structuredClone?3:0);this.structuredClone&&(n[i++]=212,n[i++]=120,n[i++]=0),t([r.source,r.flags])}},{pack(r,e){this.structuredClone?e_(r,16,e):t_(kd?Buffer.from(r):new Uint8Array(r),e)}},{pack(r,e){let t=r.constructor;t!==n_&&this.structuredClone?e_(r,vg.indexOf(t.name),e):t_(r,e)}},{pack(r,e){let{target:t,position:n}=e(1);t[n]=193}}];function e_(r,e,t,n){let i=r.byteLength;if(i+1<256){var{target:s,position:o}=t(4+i);s[o++]=199,s[o++]=i+1}else if(i+1<65536){var{target:s,position:o}=t(5+i);s[o++]=200,s[o++]=i+1>>8,s[o++]=i+1&255}else{var{target:s,position:o,targetView:a}=t(7+i);s[o++]=201,a.setUint32(o,i+1),o+=4}s[o++]=116,s[o++]=e,s.set(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),o)}function t_(r,e){let t=r.byteLength;var n,i;if(t<256){var{target:n,position:i}=e(t+2);n[i++]=196,n[i++]=t}else if(t<65536){var{target:n,position:i}=e(t+3);n[i++]=197,n[i++]=t>>8,n[i++]=t&255}else{var{target:n,position:i,targetView:s}=e(t+5);n[i++]=198,s.setUint32(i,t),i+=4}n.set(r,i)}function AN(r,e,t,n){let i=r.length;switch(i){case 1:e[t++]=212;break;case 2:e[t++]=213;break;case 4:e[t++]=214;break;case 8:e[t++]=215;break;case 16:e[t++]=216;break;default:i<256?(e[t++]=199,e[t++]=i):i<65536?(e[t++]=200,e[t++]=i>>8,e[t++]=i&255):(e[t++]=201,e[t++]=i>>24,e[t++]=i>>16&255,e[t++]=i>>8&255,e[t++]=i&255)}return e[t++]=n,e.set(r,t),t+=i,t}function MN(r,e){let t,n=e.length*6,i=r.length-n;for(e.sort((s,o)=>s.offset>o.offset?1:-1);t=e.pop();){let s=t.offset,o=t.id;r.copyWithin(s+n,s,i),n-=6;let a=s+n;r[a++]=214,r[a++]=105,r[a++]=o>>24,r[a++]=o>>16&255,r[a++]=o>>8&255,r[a++]=o&255,i=s}return r}function Eo(r){if(r.Class){if(!r.pack&&!r.write)throw new Error("Extension has no pack or write function");if(r.pack&&!r.type)throw new Error("Extension has no type (numeric code to identify the extension)");bg.unshift(r.Class),Gd.unshift(r)}Jw(r)}var r_=new To({useRecords:!1}),TN=r_.pack,EN=r_.pack;var{NEVER:CN,ALWAYS:DN,DECIMAL_ROUND:PN,DECIMAL_FIT:IN}=Ud,i_=512,LN=1024;var s_=new To({structuredClone:!0});Eo({Class:Vt.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,Vt.prototype),r}});Eo({Class:Ht.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Ht.prototype),r}});Eo({Class:Ar.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Ar.prototype),r}});Eo({Class:qc.prototype.constructor,type:4,write(r){return r.id},read(r){return new qc(r)}});Eo({Class:Xc.prototype.constructor,type:5,write(r){return r.data},read(r){return new Xc(r)}});function ON(r){var e=0;if(r.length===0)return e;for(let t=0;t<r.length;t++){let n=r[t];e=(e<<5)-e+n,e=e&e}return e}function wg(r){if(Td(r))return r;if(Array.isArray(r))return r.map(wg);if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r).sort())e[t]=wg(r[t]);return Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else return r}var Vd;(n=>{function r(i){return s_.pack(i)}n.serialize=r;function e(i){return s_.unpack(i)}n.deserialize=e;function t(i){return ON(r(wg(i))).toString()}n.checksum=t})(Vd||(Vd={}));var Hd;(t=>{t.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function e(n){return t.all.includes(n)}t.is=e})(Hd||(Hd={}));var Wd;(t=>{function r(n){return e(n)}t.defaultData=r;function e(n){if(n==="PointLight")return{type:n,color:Rn.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:Rn.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(n==="DirectionalLight")return{type:n,color:Rn.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Wd||(Wd={}));var _g;(t=>{t.defaultData={castShadow:!0,receiveShadow:!0};function e(n,i){return n.castShadow===i.castShadow&&n.receiveShadow===i.receiveShadow}t.equals=e})(_g||(_g={}));var Sg;(t=>{t.defaultData={flatShading:!1,wireframe:!1,side:0};function e(n,i){return n.flatShading===i.flatShading&&n.side===i.side&&n.wireframe===i.wireframe}t.equals=e})(Sg||(Sg={}));var jd;(e=>e.defaultData={...Sg.defaultData,..._g.defaultData,cloner:null,booleanExclude:null})(jd||(jd={}));var Ag=(i=>(i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Center=3]="Center",i[i.Justify=4]="Justify",i))(Ag||{}),Mg=(n=>(n[n.Top=1]="Top",n[n.Center=2]="Center",n[n.Bottom=3]="Bottom",n))(Mg||{}),Tg=(n=>(n[n.None=1]="None",n[n.Upper=2]="Upper",n[n.Lower=3]="Lower",n))(Tg||{}),qd;(e=>e.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Rn.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(qd||(qd={}));var Xd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],o_=["wrapping","image"],Is;(n=>{function r(i,s){return i==="light"&&s?e(s):t(i)}n.defaultData=r;function e(i){switch(i){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:hn.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...hn.fromHex(6710886),a:1},colorB:{...hn.fromHex(6710886),a:1},colorC:{...hn.fromHex(16777215),a:1},colorD:{...hn.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Rn.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Rn.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Rn.fromHexAndA(0,1),contourColor:Rn.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Is||(Is={}));var fr;(a=>{function r(l){return!l.layers.some(c=>{if(c.data.type==="texture"&&c.data.projection!==0||c.data.type==="depth"&&!c.data.isWorldSpace||c.data.type==="noise"||c.data.type==="displace")return!0})&&!t(l)}a.isMergable=r;function e(l){let u="";return l.layers.forEach(c=>{Object.entries(c.data).forEach(([h,d])=>{u+=`${h}${d}`,Array.isArray(d)?d.forEach(f=>u+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?u+=`${f.toFixed(4)}`:u+=`${f}`}):u+=`${d}`})}),u}a.getHash=e;function t(l){let u=0;for(let c of l.layers)"alpha"in c.data&&c.data.type!=="light"&&c.data.type!=="fresnel"&&(u+=(1-u)*c.data.alpha);return u<1}a.isTransparent=t;function n(){return{layers:new Ht}}a.defaultEmptyData=n;function i(l="layer1",u="layer2"){return s("phong",l,u)}a.defaultData=i;function s(l,u="layer1",c="layer2"){let h=new Ht;return h.push({fi:0,data:Is.defaultData("light",l),id:u}),h.push({fi:1,data:Is.defaultData("color"),id:c}),{layers:h}}a.defaultTwoLayerData=s;function o(l,u="basic",c="layer1",h="layer2"){let d=Is.defaultData("texture");Object.assign(d.texture,{image:l});let f=new Ht;return f.push({fi:0,data:d,id:c}),f.push({fi:1,data:Is.defaultData("light",u),id:h}),{layers:f}}a.defaultTwoLayerTextureData=o})(fr||(fr={}));var il;(e=>{function r(){return{points:new Ht,roundness:0,shapeHoles:[],isClosed:!1}}e.defaultData=r})(il||(il={}));var Yd;(e=>{function r(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=r})(Yd||(Yd={}));var Zc;(e=>{function r(t){if(t==="RectangleGeometry")return{width:320,height:320,type:t,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(t==="VectorGeometry")return{width:1,height:1,type:t,subdivisions:12,shape:il.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(t==="BooleanGeometry")return{type:t,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}e.defaultData=r})(Zc||(Zc={}));var Kc;(i=>{i.identity={...wd.identity,hiddenMatrix:si.identity};function e(s){return{position:s.position,rotation:s.rotation,scale:s.scale,hiddenMatrix:s.hiddenMatrix}}i.fromObject=e;function t(s,o){return{position:o?.position||s.position,rotation:o?.rotation||s.rotation,scale:o?.scale||s.scale,hiddenMatrix:o?.hiddenMatrix||s.hiddenMatrix}}i.merge=t;function n(s,o){return{position:rn.isEqual(s.position,o.position)?null:o.position,rotation:rn.isEqual(s.rotation,o.rotation)?null:o.rotation,scale:rn.isEqual(s.scale,o.scale)?null:o.scale,hiddenMatrix:si.isEqual(s.hiddenMatrix,o.hiddenMatrix)?null:o.hiddenMatrix}}i.diff=n})(Kc||(Kc={}));var Xi;(e=>e.defaultData={states:new Ht,events:new Ht,visible:!0,raycastLock:!1,...Kc.identity})(Xi||(Xi={}));var a_;(e=>e.defaultData={type:"Empty",...Xi.defaultData})(a_||(a_={}));var Qd;(e=>e.defaultData={type:"Mesh",...Xi.defaultData,...jd.defaultData})(Qd||(Qd={}));var l_;(e=>e.defaultData={type:"TextFrame",...Xi.defaultData,...qd.defaultData})(l_||(l_={}));var Zd;(e=>e.defaultData={...Xi.defaultData,...Kc.identity,...Ao.defaultData})(Zd||(Zd={}));var c_;(e=>{function r(t){return{...Xi.defaultData,...Wd.defaultData(t)}}e.defaultData=r})(c_||(c_={}));var u_;(n=>(n.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:si.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ht,events:new Ht,...Ao.defaultData},n.defaultMeshObject={name:"Rectangle",...Xi.defaultData,...Qd.defaultData,geometry:Zc.defaultData("RectangleGeometry"),material:fr.defaultTwoLayerData("basic","layer1","layer2")},n.defaultBooleanObject={name:"Boolean",...Xi.defaultData,...Qd.defaultData,geometry:Zc.defaultData("BooleanGeometry"),material:fr.defaultTwoLayerData("phong","layer1","layer2")}))(u_||(u_={}));var Jc;(t=>{function r(n,i){if(i===void 0)return n;let s={...n};return"material"in s&&"material"in i&&i.material&&(s.material=cg(s.material,o=>{if(typeof o!="string")for(let[a,l]of Object.entries(i.material.layers)){let u=o.layers.data(a);u&&So(u,l)}}).data),s.materials&&i.materials&&(s.materials=cg(s.materials,o=>{for(let a=0;a<s.materials.length;a++){let l=i.materials[a];if(typeof l!="string")for(let[u,c]of Object.entries(l.layers)){let h=o[a]?.layers?.data(u);h&&So(h,c)}}}).data),s}t.patchMaterialState=r;function e(n,i){if(i===void 0)return n;let s={...n};if(Object.assign(s,Kc.merge(s,i)),Es.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let o=i;o.orthographic?.zoom!==void 0&&(s.orthographic.zoom=o.orthographic.zoom),o.perspective?.zoom!==void 0&&(s.perspective.zoom=o.perspective.zoom),o.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=o.isUpVectorFlipped),o.targetOffset!==void 0&&(s.targetOffset=o.targetOffset)}else if(n.type==="Mesh")s.geometry={...s.geometry},Object.assign(s.geometry,i.geometry),s=r(s,i);else if(Hd.is(n.type)){let o=i;o.intensity!==void 0&&(s.intensity=o.intensity),o.color!==void 0&&(typeof o.color=="string"?s.color=o.color:s.color=hn.clone(o.color))}return s}t.patch=e})(Jc||(Jc={}));var Kd;(e=>e.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Kd||(Kd={}));var RN={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},NN={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Jd={CC0:RN,Originals:NN};var sl;(l=>{let r=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],e=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function t(){let u={},c=0;for(let h of r)u[`image_${c}`]={data:h,name:`Image ${c}`,asset:!1},c++;c=0;for(let h of e)u[`matcap_${c}`]={data:h,name:`Matcap ${c}`,asset:!1},c++;return u}l.defaultImages=t;function n(){let u={};return u["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},u}l.defaultColors=n;function i(){let u={},c={...Jd.CC0,...Jd.Originals},h=0;for(let[d,f]of Object.entries(c)){let m=f.split("/").pop()??"unknown",p=f.split(".").pop(),g="";if(p==="mp3")g="audio/mpeg";else if(p==="wav")g="audio/wav";else continue;u[`audio_${h}`]={name:d,filename:m,data:f,mimeType:g,asset:!1,free:d in Jd.CC0},h++}return u}l.defaultAudios=i,l.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function o(){return{materials:new Vt,images:new Vt,colors:new Vt,audios:new Vt,penumbraSize:[.5,.5,.5]}}l.emptyData=o;function a(){return{materials:new Vt,images:$a(t(),Vt.prototype),colors:$a(n(),Vt.prototype),audios:$a(i(),Vt.prototype),penumbraSize:new Array(5).fill(.5)}}l.defaultData=a})(sl||(sl={}));function Dg(r){r.layers.forEach(e=>{if(e.type==="depth"&&e.colorA!==void 0){let t=e.colorA,n=e.colorB,i=[[t.r,t.g,t.b,t.a],[n.r,n.g,n.b,n.a]],s=[0,1];for(let a=2;a<10;a++)i.push(i[1]),s.push(1);let o={...ig(Cs(e),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,e.near),far:Math.max(0,e.far),colors:i,steps:s,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(e,o)}else if(e.type==="depth"&&e.gradientType===1&&(e.near<0||e.far<0)){let t={...Cs(e),near:Math.max(e.near,0),far:Math.max(e.far,0)};Object.assign(e,t)}})}function BN(r){Object.values(r.shared.materials).forEach(e=>Dg(e))}function FN(r){r.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(n=>{typeof n!="string"&&Dg(n)}):"material"in t&&typeof t.material!="string"&&Dg(t.material)})}function UN(r){Object.assign(r.scene.publish,{orbitControls:{...Kd.defaultData,...Cs(r.scene.publish.orbitControls)}})}function zN(r){function e(t){if(t.layers){for(let n of Object.values(t.layers))if(n){for(let[i,s]of Object.entries(n))if((Xd.includes(i)||typeof s=="boolean")&&delete n[i],i==="texture")for(let[o,a]of Object.entries(s))(o_.includes(o)||typeof a=="boolean")&&delete s[o]}}}r.scene.objects.traverse((t,n)=>{n.states.forEach(i=>{let s=i;s.material?e(s.material):s.materials&&s.materials.forEach(o=>{e(o)})})})}function GN(r){r.scene.publish.withBackground=!0}function kN(r){r.scene.publish.settings.web={compress:!0,preset:1}}function VN(r){r.scene.objects.traverse((e,t)=>{let n=t.cloner;n&&(n.radial.scale=n.radial.scale.map(i=>i+1),n.linear.scale=n.linear.scale.map(i=>i+1))})}function HN(r){r.scene.objects.traverse((e,t)=>{let n=t.geometry;n&&(n.type==="DodecahedronGeometry"||n.type==="IcosahedronGeometry")&&(n.detail=Math.round(n.detail))})}function WN(r){r.scene.objects.traverse((e,t)=>{let n=r.scene.objects.parent(e);t.type==="Mesh"&&(!n||r.scene.objects.data(n).geometry?.type!=="BooleanGeometry")&&(t.booleanExclude=null)})}function Cg(r){!r.layers||r.layers.forEach(e=>{if(e.type==="depth"&&e.colors.length===10){let t=[...e.colors];t.push(e.colors[9]);let n=[...e.steps];n.push(e.steps[9]);let i={...Cs(e),colors:t,steps:n};Object.assign(e,i)}})}function jN(r){r.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="BooleanGeometry"||t.geometry.type==="SubdivGeometry")&&(t.geometry.phongAngle=35)})}function h_(r){r.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(n=>{typeof n!="string"&&Cg(n)}):"material"in t&&typeof t.material!="string"&&Cg(t.material)}),Object.values(r.shared.materials).forEach(e=>Cg(e))}function qN(r){r.scene.environment.ambientLight.softShadows=!1,r.scene.environment.ambientLight.softShadowQuality="low",r.scene.objects.traverse((e,t)=>{(t.type==="DirectionalLight"||t.type==="SpotLight")&&(t.shadowResolution=1024,t.shadowRadius=1,t.depth=1e5)}),r.shared.penumbraSize=new Array(5).fill(.5)}function XN(r){r.shared.audios=$a(sl.defaultAudios(),Vt.prototype)}var d_=13;function f_(r){let e=r.schema??0;e!==d_&&(console.warn("updating from ",e,"to ",d_),e<1&&(FN(r),BN(r),r.schema=1),e<2&&(UN(r),r.schema=2),e<3&&(zN(r),r.schema=3),e<4&&(GN(r),r.schema=4),e<5&&(kN(r),r.schema=5),e<6&&(VN(r),r.schema=6),e<7&&(HN(r),r.schema=7),e<8&&(WN(r),r.schema=8),e<9&&(h_(r),r.schema=9),e<10&&(jN(r),r.schema=10),e<11&&(qN(r),r.schema=11),e<12&&(h_(r),r.schema=12),e<13&&(XN(r),r.schema=13))}var $d;(e=>e.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})($d||($d={}));function m_(r,e=!1){let t=r[0].index!==null,n=new Set(Object.keys(r[0].attributes)),i=new Set(Object.keys(r[0].morphAttributes)),s={},o={},a=r[0].morphTargetsRelative,l=new Pe,u=0;for(let c=0;c<r.length;++c){let h=r[c],d=0;if(t!==(h.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let f in h.attributes){if(!n.has(f))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+'. All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.'),null;s[f]===void 0&&(s[f]=[]),s[f].push(h.attributes[f]),d++}if(d!==n.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". Make sure all geometries have the same number of attributes."),null;if(a!==h.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let f in h.morphAttributes){if(!i.has(f))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". .morphAttributes must be consistent throughout all geometries."),null;o[f]===void 0&&(o[f]=[]),o[f].push(h.morphAttributes[f])}if(l.userData.mergedUserData=l.userData.mergedUserData||[],l.userData.mergedUserData.push(h.userData),e){let f;if(t)f=h.index.count;else if(h.attributes.position!==void 0)f=h.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+c+". The geometry must have either an index or a position attribute"),null;l.addGroup(u,f,c),u+=f}}if(t){let c=0,h=[];for(let d=0;d<r.length;++d){let f=r[d].index;for(let m=0;m<f.count;++m)h.push(f.getX(m)+c);c+=r[d].attributes.position.count}l.setIndex(h)}for(let c in s){let h=p_(s[c]);if(!h)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+c+" attribute."),null;l.setAttribute(c,h)}for(let c in o){let h=o[c][0].length;if(h===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[c]=[];for(let d=0;d<h;++d){let f=[];for(let p=0;p<o[c].length;++p)f.push(o[c][p][d]);let m=p_(f);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+c+" morphAttribute."),null;l.morphAttributes[c].push(m)}}return l}function p_(r){let e,t,n,i=0;for(let a=0;a<r.length;++a){let l=r[a];if(l.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(e===void 0&&(e=l.array.constructor),e!==l.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=l.itemSize),t!==l.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(n===void 0&&(n=l.normalized),n!==l.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;i+=l.array.length}let s=new e(i),o=0;for(let a=0;a<r.length;++a)s.set(r[a].array,o),o+=r[a].array.length;return new je(s,t,n)}var Pg={type:"change"},g_={type:"changeZoom"},YN={type:"changePan"},ol={type:"start"},$c={type:"end"},Ig=new qt,QN=new N,ZN=2*Math.PI,KN=1e-8,JN=.01,y_=2,Lg=.125,v_=2,Og=1,Rg=1,Ng=.1;var ef=class extends Rt{constructor(t,n){super();this.object=t;this.domElement=n;this.enabled=!0;this.useKeyEvents=!0;this.enableDamping=!1;this.enableZoom=!0;this.enableRotate=!0;this.enablePan=!0;this.autoRotate=!1;this.rotationLimitsMode=0;this.panLimitsMode=0;this.rotationSoftLimit=2;this.panSoftLimit=2;this.hoverRotatePanMode=0;this.zoomLimitsEnabled=!1;this.preventScroll=!0;this.mouseButtons=[0,5];this.mouseButtonsPlay=[3,4,5];this.touches=[null,cr.DOLLY_ROTATE,cr.PAN];this.offset=new S;this.eye=new S;this.lastPosition=new S;this.lastQuaternion=new qt;this.current=new N;this.overShoot=new N;this.overRatio=new N;this.spherical=new Ec;this.sphericalDelta=new Ec;this.panOffset=new S;this.panLeftV=new S;this.panUpV=new S;this.panV=new S;this.rotateStart=new N;this.rotateEnd=new N;this.rotateDelta=new N;this.panStart=new N;this.panEnd=new N;this.panDelta=new N;this.dollyStart=new N;this.dollyEnd=new N;this.dollyDelta=new N;this.rotationRangeFactor=new N;this.panRangeFactor=new N;this.state=-1;this.zoomChanged=!1;this.isPointerDown=!1;this.isFirstHover=!0;this.isThetaFlipped=!1;this.prevScale=0;this.scale=1;this.gesture=!1;this.timer=-1;this.timerHover=-1;this.minDistance=0;this.maxDistance=1/0;this.minZoom=0;this.maxZoom=1/0;this.minPhi=0;this.maxPhi=Math.PI;this.minTheta=-1/0;this.maxTheta=1/0;this.minH=0;this.maxH=Math.PI;this.minV=-1/0;this.maxV=1/0;this.autoRotateClockwise=!0;this.isPanOverShoot=!1;this.isRotateOverShoot=!1;this.update=()=>{let t=this.object.position;this.offset.copy(t).sub(this.target),this.spherical.setFromVector3(this.offset),this.object.isUpVectorFlipped&&(this.spherical.phi*=-1,this.spherical.theta-=Math.PI),this.autoRotate&&this.state===-1&&this.rotateLeft((this.autoRotateClockwise===!0?1:-1)*this.getAutoRotationAngle()),this.rotationLimitsMode!==0&&this.applyLimits(this.sphericalDelta,this.rotationLimitsMode,this.rotationSoftLimit,this.maxTheta,this.minTheta,this.maxPhi,this.minPhi,this.rotationRangeFactor),this.rotationLimitsMode!==2&&(this.spherical.phi+=this.sphericalDelta.phi),(this.rotationLimitsMode!==1||this.autoRotate===!0)&&(this.spherical.theta+=this.sphericalDelta.theta),this.spherical.radius*=this.scale,this.zoomLimitsEnabled&&(this.spherical.radius=Math.max(this.minDistance,Math.min(this.maxDistance,this.spherical.radius))),this.panLimitsMode!==0&&(this.target.applyQuaternion(Ig.copy(this.object.quaternion).invert()),this.panOffset.applyQuaternion(Ig),this.applyLimits(this.panOffset,this.panLimitsMode,this.panSoftLimit,this.maxH,this.minH,this.maxV,this.minV,this.panRangeFactor),this.target.applyQuaternion(this.object.quaternion),this.panOffset.applyQuaternion(this.object.quaternion)),this.panLimitsMode===2&&(this.panOffset.y=0),this.panLimitsMode===1&&(this.panOffset.x=0),this.state===-1&&!this.gesture?(this.panOffset.multiplyScalar(1-Lg),this.target.add(this.panOffset)):(this.target.add(this.panOffset),this.panOffset.set(0,0,0)),this.offset.setFromSpherical(this.spherical),t.copy(this.target).add(this.offset);let n=this.spherical.phi%ZN;return this.eye.copy(this.offset).normalize(),this.object.up.copy(ot.DefaultUp).applyAxisAngle(this.eye,this.object.angleOffsetFromUp),n>0&&n>Math.PI||n<0&&n>-Math.PI?(this.object.up.negate(),this.object.lookAt(this.target),this.object.isUpVectorFlipped=!0):(this.object.lookAt(this.target),this.object.isUpVectorFlipped=!1),this.state===-1||this.enableDamping===!0?(this.sphericalDelta.theta*=1-Lg,this.sphericalDelta.phi*=1-Lg):this.sphericalDelta.set(0,0,0),this.scale=1,this.zoomChanged||this.lastPosition.distanceToSquared(this.object.position)>JN||8*(1-this.lastQuaternion.dot(this.object.quaternion))>KN?(this.dispatchEvent(Pg),this.lastPosition.copy(this.object.position),this.lastQuaternion.copy(this.object.quaternion),this.zoomChanged=!1,!0):(this.isPanOverShoot=!1,this.isRotateOverShoot=!1,this.sphericalDelta.set(0,0,0),this.panOffset.set(0,0,0),!1)};this.onPointerDown=t=>{this.enabled!==!1&&(this.isPointerDown=!0,ht.length===0&&(this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)),eB(t),t.pointerType==="touch"?this.onPointerDownTouch(t):this.onPointerDownMouse(t))};this.onPointerMove=t=>{this.enabled!==!1&&(t.pointerType==="touch"?this.onPointerMoveTouch(t):this.onPointerMoveMouse(t))};this.onPointerUp=t=>{b_(t),this.isPointerDown=!1,ht.length===0&&(this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp)),this.dispatchEvent($c),this.state=-1};this.onPointerCancel=t=>{b_(t)};this.onPointerDownMouse=t=>{let n;switch(this.useKeyEvents?n=this.mouseButtons[t.button]:n=this.mouseButtonsPlay[t.button],n){case 0:if(t.altKey===!0&&!t.shiftKey&&!Hc(t)){if(this.enableRotate===!1)return;this.handleMouseDownRotate(t),this.state=0}else if(this.key===" "){if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2}break;case 4:if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2;break;case 3:if(Hc(t)||t.shiftKey){if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2}else{if(this.enableRotate===!1)return;this.handleMouseDownRotate(t),this.state=0}break;case 5:if(Hc(t)||t.shiftKey){if(this.enableRotate===!1)return;this.handleMouseDownRotate(t),this.state=0}else{if(this.enablePan===!1)return;this.handleMouseDownPan(t),this.state=2}break;default:this.state=-1}this.state!==-1&&this.dispatchEvent(ol)};this.onPointerMoveMouse=t=>{switch(this.state){case 0:if(this.enableRotate===!1)return;this.handleMouseMoveRotate(t);break;case 1:if(this.enableZoom===!1)return;this.handleMouseMoveDolly(t);break;case 2:if(this.enablePan===!1)return;this.handleMouseMovePan(t);break}};this.onPointerDownTouch=t=>{switch(w_(t),this.touches[ht.length-1]){case cr.ROTATE:if(this.enableRotate===!1){this.state=-1;return}this.handleTouchStartRotate(),this.state=3;break;case cr.PAN:if(this.enablePan===!1){this.state=-1;return}this.handleTouchStartPan(),this.state=4;break;case cr.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this.handleTouchStartDollyPan(),this.state=5;break;case cr.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this.handleTouchStartDollyRotate(),this.state=6;break;default:this.state=-1}this.state!==-1&&this.dispatchEvent(ol)};this.onPointerMoveTouch=t=>{switch(w_(t),this.state){case 3:if(this.enableRotate===!1)return;this.handleTouchMoveRotate(t),this.update();break;case 4:if(this.enablePan===!1)return;this.handleTouchMovePan(t),this.update();break;case 5:if(this.enableZoom===!1&&this.enablePan===!1)return;this.handleTouchMoveDollyPan(t),this.update();break;case 6:if(this.enableZoom===!1&&this.enableRotate===!1)return;this.handleTouchMoveDollyRotate(t),this.update();break;default:this.state=-1}};this.dispatchEndDebounced=Uc(()=>this.dispatchEvent($c),33);this.onMouseWheel=t=>{this.enabled===!1||this.enableZoom===!1&&this.enablePan===!1||((this.domElement.clientHeight===document.body.clientHeight&&this.domElement.clientWidth===document.body.clientWidth||this.preventScroll)&&t.preventDefault(),this.dispatchEvent(ol),this.handleMouseWheel(t),this.dispatchEndDebounced())};this.onGesture=t=>{if(this.enabled!==!1)if(t.preventDefault(),t.type==="gesturechange"){if(this.enableZoom===!1)return;this.dispatchEvent(ol),t.scale>this.prevScale?this.dollyIn(this.getZoomScale()):t.scale<this.prevScale&&this.dollyOut(this.getZoomScale()),this.prevScale=t.scale,this.update()}else this.dispatchEvent($c)};this.onContextMenu=t=>{this.enabled!==!1&&t.preventDefault()};this.onTouchMove=t=>{(t.touches.length>1||this.preventScroll)&&t.preventDefault()};this.onTouchEnd=t=>{t.preventDefault()};this.onKeyDown=t=>{this.enabled!==!1&&(this.key=t.key)};this.onKeyUp=()=>{this.enabled!==!1&&(this.key=void 0,this.state!==-1&&this.onPointerUp(ht[0]))};this.onPointerHover=t=>{if(!(Kt||this.enabled===!1||this.state!==-1||this.hoverRotatePanMode===2&&this.isPanOverShoot||this.hoverRotatePanMode===1&&this.isRotateOverShoot)){if(window.clearTimeout(this.timerHover),this.isPointerDown=!0,this.isFirstHover){let n={clientX:window.innerWidth/2,clientY:window.innerHeight/2};this.hoverRotatePanMode===2?this.handleMouseDownPan(n):this.hoverRotatePanMode===1&&this.handleMouseDownRotate(n),this.isFirstHover=!1}this.hoverRotatePanMode===2?this.handleMouseMovePan(t,Ng):this.hoverRotatePanMode===1&&this.handleMouseMoveRotate(t,Ng),this.timerHover=window.setTimeout(()=>{this.isPointerDown=!1},30)}};this.object=t,this.domElement=n,this.target=this.object.getTarget(),this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.connect(),this.update()}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(Pg),this.isFirstHover=!0,this.update(),this.state=-1}resetTo(t,n,i){this.target.copy(t),this.object.position.copy(n),this.object.zoom=i,this.object.updateProjectionMatrix(),this.dispatchEvent(Pg),this.update(),this.state=-1}fromJSON(t){this.setEnableDampingSpeed(t.enableDamping),this.enablePan=t.enablePan,this.enableZoom=t.enableZoom,this.enableRotate=t.enableRotate,this.rotationLimitsMode=t.rotationLimitsMode,this.panLimitsMode=t.panLimitsMode,this.panSoftLimit=t.panSoftLimit,this.rotationSoftLimit=t.rotationSoftLimit,this.hoverRotatePanMode=t.hoverRotatePanMode,this.isFirstHover=!0,this.hoverRotatePanMode!==0&&this.domElement.addEventListener("pointermove",this.onPointerHover),Ng=(t.hoverRotatePanStrength/100)**2,this.zoomLimitsEnabled=t.zoomLimitsEnabled,this.minZoom=t.zoomLimits.min,this.maxZoom=Math.max(t.zoomLimits.min,t.zoomLimits.max),this.minDistance=1e3/t.zoomLimits.max,this.maxDistance=Math.max(this.minDistance,1e3/t.zoomLimits.min),this.autoRotate=t.autoRotate,y_=t.autoRotateSpeed,this.autoRotateClockwise=t.autoRotateClockwise;let i=this.object.getTarget().applyQuaternion(Ig.copy(this.object.quaternion).invert());this.minV=-t.panVerticalOffset.min+i.y,this.maxV=t.panVerticalOffset.max+i.y,this.minH=-t.panHorizontalOffset.min+i.x,this.maxH=t.panHorizontalOffset.max+i.x,this.panRangeFactor.set(this.maxH-this.minH,this.maxV-this.minV).divideScalar(2),this.rotationRangeFactor.setScalar(Math.PI).divideScalar(4),this.minPhi=Ls(this.spherical.phi-t.rotationVerticalOffset.min),this.maxPhi=Ls(this.spherical.phi+t.rotationVerticalOffset.max),this.minTheta=Ls(this.spherical.theta-t.rotationHorizontalOffset.min),this.maxTheta=Ls(this.spherical.theta+t.rotationHorizontalOffset.max),this.isThetaFlipped=this.minTheta>this.maxTheta,this.preventScroll=t.preventScroll,t.orbitTouches===1&&(this.touches[0]=cr.ROTATE),t.panTouches===1&&(this.touches[0]=cr.PAN),t.orbitTouches===2&&(this.touches[1]=cr.DOLLY_ROTATE),t.panTouches===2&&(this.touches[1]=cr.DOLLY_PAN),t.orbitTouches===3&&(this.touches[2]=cr.ROTATE),t.panTouches===3&&(this.touches[2]=cr.PAN)}connect(){this.domElement.addEventListener("contextmenu",this.onContextMenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointercancel",this.onPointerCancel),this.domElement.addEventListener("wheel",this.onMouseWheel),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keyup",this.onKeyUp,!1),Vc||(this.domElement.addEventListener("gesturestart",this.onGesture),this.domElement.addEventListener("gesturechange",this.onGesture),this.domElement.addEventListener("gestureend",this.onGesture)),this.domElement.addEventListener("touchmove",this.onTouchMove),this.domElement.addEventListener("touchend",this.onTouchEnd)}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("pointercancel",this.onPointerCancel),this.domElement.removeEventListener("wheel",this.onMouseWheel),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keyup",this.onKeyUp,!1),this.domElement.removeEventListener("pointermove",this.onPointerHover),Vc||(this.domElement.removeEventListener("gesturestart",this.onGesture),this.domElement.removeEventListener("gesturechange",this.onGesture),this.domElement.removeEventListener("gestureend",this.onGesture)),this.domElement.removeEventListener("touchmove",this.onTouchMove),this.domElement.removeEventListener("touchend",this.onTouchEnd),this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp)}applyLimits(t,n,i,s,o,a,l,u){this.overShoot.set(0,0);let c,h,d;t instanceof S?(c=t.x,h=t.y,this.current.set(this.target.x,this.target.y),d=!0):(c=t.theta,h=t.phi,this.current.set(Ls(this.spherical.theta),Ls(this.spherical.phi)),d=!1),i===0&&(this.current.x+=c,this.current.y+=h),(n===3||n===2)&&(!d&&this.isThetaFlipped?this.current.x>s&&this.current.x<0?this.overShoot.x=s-this.current.x:this.current.x<o&&this.current.x>0&&(this.overShoot.x=o-this.current.x):this.current.x>s?this.overShoot.x=s-this.current.x:this.current.x<o&&(this.overShoot.x=o-this.current.x),s===o&&(c=0)),(n===3||n===1)&&(this.current.y>a?this.overShoot.y=a-this.current.y:this.current.y<l&&(this.overShoot.y=l-this.current.y),a===l&&(h=0)),d||(this.overShoot.x=Ls(this.overShoot.x),this.overShoot.y=Ls(this.overShoot.y)),i!==0?(this.overRatio.copy(this.overShoot).divide(u),this.overRatio.x=Math.min(Math.abs(this.overRatio.x),1),this.overRatio.y=Math.min(Math.abs(this.overRatio.y),1),i===1&&(this.overRatio.x=x_(Math.abs(this.overRatio.x)),this.overRatio.y=x_(Math.abs(this.overRatio.y))),this.isPointerDown||i===1?i===2&&(this.overRatio.x>.9||this.overRatio.y>.9)?this.isPointerDown=!1:(c*this.overShoot.x<0&&(c*=1-this.overRatio.x),h*this.overShoot.y<0&&(h*=1-this.overRatio.y)):i===2&&(!d&&(this.overRatio.x>.002||this.overRatio.y>.002)||d&&(Math.abs(this.overShoot.x)>2||Math.abs(this.overShoot.y)>2)?(c=this.overShoot.x*.05,h=this.overShoot.y*.05,d?this.isPanOverShoot=!0:this.isRotateOverShoot=!0):d?this.isPanOverShoot=!1:this.isRotateOverShoot=!1)):(c+=this.overShoot.x,h+=this.overShoot.y),t instanceof S?(t.x=c,t.y=h):(t.theta=c,t.phi=h)}setEnableDampingSpeed(t){this.enableDamping=t,Og=t===!0?.2:1}stopDamping(){this.sphericalDelta.theta=0,this.sphericalDelta.phi=0}getAutoRotationAngle(){return 2*Math.PI/60/60*y_}getZoomScale(){return Math.pow(.95,v_)}rotateLeft(t){this.sphericalDelta.theta-=t}rotateUp(t){this.sphericalDelta.phi-=t}panLeft(t,n){this.panLeftV.setFromMatrixColumn(n,0),this.panLeftV.multiplyScalar(-t),this.panOffset.add(this.panLeftV)}panUp(t,n){this.panUpV.setFromMatrixColumn(n,1),this.panUpV.multiplyScalar(t),this.panOffset.add(this.panUpV)}pan(t,n){let i=this.domElement;if(i&&this.object.isPerspectiveCamera){let s=this.object.position;this.panV.copy(s).sub(this.target);let o=this.panV.length();o*=Math.tan(this.object.fov/2*Math.PI/180),this.panLeft(2*t*o/i.clientHeight,this.object.matrix),this.panUp(2*n*o/i.clientHeight,this.object.matrix)}else i&&this.object.isOrthographicCamera&&(this.panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this.panUp(n*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix));this.dispatchEvent(YN)}dollyOut(t){this.object.isPerspectiveCamera?this.scale/=t:this.object.isOrthographicCamera&&(this.object.zoom*=t,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0),this.dispatchEvent(g_)}dollyIn(t){this.object.isPerspectiveCamera?this.scale*=t:this.object.isOrthographicCamera&&(this.object.zoom/=t,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0),this.dispatchEvent(g_)}zoomOut(t=this.getZoomScale()){this.dispatchEvent(ol),this.dollyOut(t),this.dispatchEvent($c)}zoomIn(t=this.getZoomScale()){this.dispatchEvent(ol),this.dollyIn(t),this.dispatchEvent($c)}handleMouseDownRotate(t){this.rotateStart.set(t.clientX,t.clientY)}handleMouseDownDolly(t){this.dollyStart.set(t.clientX,t.clientY)}handleMouseDownPan(t){this.panStart.set(t.clientX,t.clientY)}handleMouseMoveRotate(t,n=1){this.rotateEnd.set(t.clientX,t.clientY),this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(Og*n).rotateAround(QN,-this.object.angleOffsetFromUp);let i=this.domElement;this.rotateLeft(2*Math.PI*this.rotateDelta.x/i.clientHeight),this.rotateUp(2*Math.PI*this.rotateDelta.y/i.clientHeight),this.rotateStart.copy(this.rotateEnd),this.update()}handleMouseMoveDolly(t){this.dollyEnd.set(t.clientX,t.clientY),this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart),this.dollyDelta.y>0?this.dollyOut(this.getZoomScale()):this.dollyDelta.y<0&&this.dollyIn(this.getZoomScale()),this.dollyStart.copy(this.dollyEnd),this.update()}handleMouseMovePan(t,n=1){this.panEnd.set(t.clientX,t.clientY),this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(Rg*n),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd),this.update()}handleMouseWheel(t){if(Iw===!1&&Hc(t)===!1&&$N(t)===!0){if(this.enablePan===!1)return;this.gesture?(this.panDelta.set(-t.deltaX,-t.deltaY).multiplyScalar(Rg),this.panDelta.x=Math.min(Math.abs(this.panDelta.x),100)*(this.panDelta.x<0?-1:1),this.panDelta.y=Math.min(Math.abs(this.panDelta.y),100)*(this.panDelta.y<0?-1:1),t.altKey?this.pan(0,this.panDelta.y):t.shiftKey?this.pan(this.panDelta.x,0):this.pan(this.panDelta.x,this.panDelta.y),this.update()):(this.gesture=!0,this.isPointerDown=!0),window.clearTimeout(this.timer),this.timer=window.setTimeout(()=>{this.gesture=!1,this.isPointerDown=!1},30)}else{if(this.enableZoom===!1)return;t.deltaY===0?t.deltaX<0?this.dollyIn(this.getZoomScale()):t.deltaX>0&&this.dollyOut(this.getZoomScale()):t.deltaY<0?this.dollyIn(this.getZoomScale()):t.deltaY>0&&this.dollyOut(this.getZoomScale()),this.update(),this.gesture=!1,this.isPointerDown=!1}}handleTouchStartRotate(){if(ht.length===2){let t=.5*(ht[0].pageX+ht[1].pageX),n=.5*(ht[0].pageY+ht[1].pageY);this.rotateStart.set(t,n)}else this.rotateStart.set(ht[0].pageX,ht[0].pageY)}handleTouchStartPan(){if(ht.length===2){let t=.5*(ht[0].pageX+ht[1].pageX),n=.5*(ht[0].pageY+ht[1].pageY);this.panStart.set(t,n)}else this.panStart.set(ht[0].pageX,ht[0].pageY)}handleTouchStartDolly(){let t=ht[0].pageX-ht[1].pageX,n=ht[0].pageY-ht[1].pageY,i=Math.sqrt(t*t+n*n);this.dollyStart.set(0,i)}handleTouchStartDollyPan(){this.enableZoom&&this.handleTouchStartDolly(),this.enablePan&&this.handleTouchStartPan()}handleTouchStartDollyRotate(){this.enableZoom&&this.handleTouchStartDolly(),this.enableRotate&&this.handleTouchStartRotate()}handleTouchMoveRotate(t){if(ht.length===2){let i=Bg(t),s=.5*(t.pageX+i.x),o=.5*(t.pageY+i.y);this.rotateEnd.set(s,o)}else{if(t.pointerId!==ht[0].pointerId)return;this.rotateEnd.set(t.pageX,t.pageY)}this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(Og);let n=this.domElement;n&&(this.rotateLeft(2*Math.PI*this.rotateDelta.x/n.clientHeight),this.rotateUp(2*Math.PI*this.rotateDelta.y/n.clientHeight)),this.rotateStart.copy(this.rotateEnd)}handleTouchMovePan(t){if(ht.length===2){let n=Bg(t),i=.5*(t.pageX+n.x),s=.5*(t.pageY+n.y);this.panEnd.set(i,s)}else{if(t.pointerId!==ht[0].pointerId)return;this.panEnd.set(t.pageX,t.pageY)}this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(Rg),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}handleTouchMoveDolly(t){let n=Bg(t),i=t.pageX-n.x,s=t.pageY-n.y,o=Math.sqrt(i*i+s*s);this.dollyEnd.set(0,o),this.dollyDelta.set(0,Math.pow(this.dollyEnd.y/this.dollyStart.y,v_)),this.dollyOut(this.dollyDelta.y),this.dollyStart.copy(this.dollyEnd)}handleTouchMoveDollyPan(t){this.enableZoom&&this.handleTouchMoveDolly(t),this.enablePan&&this.handleTouchMovePan(t)}handleTouchMoveDollyRotate(t){this.enableZoom&&this.handleTouchMoveDolly(t),this.enableRotate&&this.handleTouchMoveRotate(t)}};function Ls(r){let e=Math.PI*2;for(;r<=-Math.PI;)r+=e;for(;r>Math.PI;)r-=e;return r}function x_(r){return 1-Math.pow(1-r,4)}function $N(r){return r.wheelDeltaY===0||r.deltaY===0?kc&&r.shiftKey&&Math.abs(r.wheelDeltaX)>=120?!1:r.wheelDeltaX?r.wheelDeltaX===-3*r.deltaX:r.deltaMode===0:r.wheelDeltaY?r.wheelDeltaY===-3*r.deltaY:r.deltaMode===0}var ht=[],tf={};function eB(r){ht.push(r)}function b_(r){delete tf[r.pointerId];for(let e=0;e<ht.length;e++)if(ht[e].pointerId===r.pointerId){ht.splice(e,1);return}}function w_(r){let e=tf[r.pointerId];e===void 0&&(e=new N,tf[r.pointerId]=e),e.set(r.pageX,r.pageY)}function Bg(r){let e=r.pointerId===ht[0].pointerId?ht[1]:ht[0];return tf[e.pointerId]}var Os=class extends Sa{constructor(){super(),this.layers.enable(3),this.layers.enable(8)}setFromCamera(e,t){t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):t.isPerspectiveCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):console.error("Raycaster: Unsupported camera type.")}intersectVisibleObjects(e,t=!0,n=[]){return e.forEach(i=>{i.visible&&this.intersectObject(i,t,n)}),n}createRaycastLineHelper(){let e=new xr({color:65280,linewidth:10}),t=new S(this.ray.origin.x,this.ray.origin.y,this.ray.origin.z),n=new S(this.ray.direction.x,this.ray.direction.y,this.ray.direction.z),i=this.camera.far-this.camera.near,s=new S().addVectors(t,n.multiplyScalar(i)),o=new Pe;return o.setFromPoints([t,s]),new uo(o,e)}};var Cn=class extends Re{constructor(t,n,i,s){super(t,n,i);this.isColorA=!0;this.a=s}setRGBA(t,n,i,s){super.setRGB(t,n,i),this.a=s}copy(t){return super.copy(t),this.a="a"in t?t.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(t){this.r=t}set y(t){this.g=t}set z(t){this.b=t}set w(t){this.a=t}};var S_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},r.parameters),n=t.width/2,i=t.radiusTop??n,s=t.radiusBottom??n;return i===s?(i=n,s=n):i>s?(i=n,s=s*n/i):(i=i*n/s,s=n),{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width),radiusTop:i,radiusBottom:s})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:h,cornerSegments:d,hollow:f}=r.parameters,m;return h||f?m=new eu(u,c,n,i,s,o,a,l*Math.PI/180,h,h,d,f):m=new fo(u,c,n,i,s,o,a,l*Math.PI/180),m.scale(1,1,t/e),Object.assign(m,{userData:{...r,type:"CylinderGeometry"}})}};function Rs(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function __(r){return new N(r.y,-r.x)}var eu=class extends Pe{constructor(e,t,n,i,s,o,a,l,u,c,h,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",e=e!==void 0?e:1,t=t!==void 0?t:1,n=n||1,i=Math.floor(i)||8,s=Math.floor(s)||1,o=o!==void 0?o:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,o&&(u=0,c=0);let m=[],p=[],g=[],y=[],x=0,w=n/2,b=new S,_=new S;f&&e==0&&(e=u),f&&t==0&&(t=c);let A=new N(e,w),M=new N(t,-w),v=null,T=null,E=null,C=null,L=A.clone().sub(M),R=0,O=0,W=0;d>0&&(R=Math.min(e,t)*(1-d),O=e-R,W=t-R);let j=A.clone();j.x-=R;let Z=Math.PI-L.angle(),Y=L.angle(),z=Math.tan(Y/2),F=Math.tan(Z/2),G=z+F,B=d?G:F,k=d?G:z;if(u=Math.min(u,(e-O)/B,L.length()/G),c=Math.min(c,(t-W)/k,L.length()/G),u>0){let te=u/z;v=A.clone().sub(new N(te,u)),d&&(E=v.clone(),E.x-=R-G*u),A.sub(L.clone().setLength(te))}if(c>0){let te=c/F;T=M.clone().sub(new N(te,-c)),M.add(L.clone().setLength(te)),d&&(C=T.clone(),C.x-=R-G*c,j.sub(L.clone().setLength(te)))}L=A.clone().sub(M);let H=L.length()<.5,X=[];for(let te=0;te<=i;te++){let V=[],le=te/i,ce=le*l+a,oe=new N(Math.sin(ce),Math.cos(ce));C&&T?(q(V,le,oe,Z,c,C,-1,!0),q(V,le,oe,Y,c,T,-1,!1)):T?(ae(V,oe,T.x,0,-1),q(V,le,oe,Y,c,T,-1,!1)):o||ae(V,oe,t,W,-1);let de=__(L).normalize();if(Rs(de,oe,b),!H)for(let ge=0;ge<=s;ge++){let fe=ge/s,Te=L.clone().multiplyScalar(fe).add(M);Rs(Te,oe,_),p.push(_.x,_.y,_.z),g.push(b.x,b.y,b.z),y.push(le,.5+_.y/n),V.push(x++)}if(E&&v?(q(V,le,oe,Z,u,v,1,!1),q(V,le,oe,Y,u,E,1,!0)):v?(q(V,le,oe,Z,u,v,1,!1),ae(V,oe,v.x,0,1)):o||ae(V,oe,e,O,1),d&&!H){let ge=__(L).multiplyScalar(-1).normalize();Rs(ge,oe,b);for(let fe=0;fe<=s;fe++){let Te=fe/s,Ce=L.clone().multiplyScalar(-Te).add(j);Rs(Ce,oe,_),p.push(_.x,_.y,_.z),g.push(b.x,b.y,b.z),y.push(le,.5+_.y/n),V.push(x++)}}d&&!o&&V.push(V[0]),X.push(V)}for(let te=0;te<X.length-1;te++)for(let V=0;V<X[0].length-1;V++){if(o&&d&&V==s)continue;let le=X[te][V],ce=X[te+1][V],oe=X[te+1][V+1],de=X[te][V+1],ge=p[oe*3+0],fe=p[oe*3+2];m.push(le,ce,de),(ge!=0||fe!=0)&&m.push(ce,oe,de)}l<Math.PI*2&&($(-1,X[0],a),$(1,X[X.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new _e(p,3)),this.setAttribute("normal",new _e(g,3)),this.setAttribute("uv",new _e(y,2));function q(te,V,le,ce,oe,de,ge,fe){for(let Te=0;Te<h+1;Te++){let Ce=Te/h,ye=ge<0?Ce:1-Ce;fe&&(ye-=1),ye*=ce;let Ne=new N(Math.sin(ye),Math.cos(ye)*ge),dt=Ne.clone().multiplyScalar(oe).add(de);Rs(dt,le,_),p.push(_.x,_.y,_.z),Rs(Ne,le,b),g.push(b.x,b.y,b.z),y.push(V,.5+_.y/n),te.push(x++)}}function ae(te,V,le,ce,oe){let de=new S,ge=new N,fe=[le,ce];oe<0&&fe.reverse();for(let Te of fe)ge.set(Te,w*oe),Rs(ge,V,de),p.push(de.x,de.y,de.z),g.push(0,oe,0),y.push(.5,.5),te.push(x++)}function $(te,V,le){let ce=new N(Math.sin(le),Math.cos(le)),oe=new N(-Math.cos(le),Math.sin(le)),de=new S,ge=te<0?(Ce,ye,Ne)=>m.push(Ce,ye,Ne):(Ce,ye,Ne)=>m.push(Ce,Ne,ye),fe=new N((e+t+O+W)/4,0);Rs(fe,ce,de),p.push(de.x,de.y,de.z),g.push(oe.x,0,oe.y),y.push(.5,.5);let Te=x++;for(let Ce of V){let ye=p.slice(Ce*3,Ce*3+3);p.push(...ye),g.push(oe.x,0,oe.y);let Ne=y.slice(Ce*2,Ce*2+2);y.push(...Ne),x++}for(let Ce=Te+1;Ce<x-1;Ce++)ge(Te,Ce,Ce+1);ge(Te,x-1,Te+1)}}};var A_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:h}=r.parameters,d;return u>0||c>0||l<360?d=new eu(0,e/2,n,i,s,o,a,l*Math.PI/180,u,c,h,0,!0):d=new pa(e/2,n,i,s,o),d.scale(1,1,t/e),Object.assign(d,{userData:{...r,type:"ConeGeometry"}})}};var M_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:o,cornerRadius:a,cornerSegments:l}=r.parameters,u;return a==0?u=new Qn(e,t,n,i,s,o):u=new zg(e,t,n,i,s,o,a,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},Ug=Math.PI/2,zg=class extends Pe{constructor(e=1,t=1,n=1,i=1,s=1,o=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let u=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o),l=Math.floor(l),a=Math.min(a,e/2,t/2,n/2);let c=[],h=[],d=[],f=[],m=0,p=0;g("z","y","x",-1,-1,n,t,e,o,s,0),g("z","y","x",1,-1,n,t,-e,o,s,1),g("x","z","y",1,1,e,n,t,i,o,2),g("x","z","y",1,-1,e,n,-t,i,o,3),g("x","y","z",1,-1,e,t,n,i,s,4),g("x","y","z",-1,-1,e,t,-n,i,s,5),a>0&&(y("z","y","x",-1,-1,1,n,t,e,o,0),y("z","y","x",1,-1,-1,n,t,e,o,1),y("z","y","x",-1,1,-1,n,t,e,o,1),y("z","y","x",1,1,1,n,t,e,o,0),y("x","y","z",-1,-1,-1,e,t,n,i,0),y("x","y","z",1,-1,1,e,t,n,i,1),y("x","y","z",-1,1,1,e,t,n,i,0),y("x","y","z",1,1,-1,e,t,n,i,1),y("y","x","z",-1,-1,1,t,e,n,s,0),y("y","x","z",1,-1,-1,t,e,n,s,1),y("y","x","z",1,1,1,t,e,n,s,1),y("y","x","z",-1,1,-1,t,e,n,s,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new _e(h,3)),this.setAttribute("normal",new _e(d,3)),this.setAttribute("uv",new _e(f,2));function g(w,b,_,A,M,v,T,E,C,L,R){let O=(v-2*a)/C,W=(T-2*a)/L,j=v/2-a,Z=T/2-a,Y=E/2,z=C+1,F=L+1,G=0,B=0,k=new S;for(let H=0;H<F;H++){let X=H*W-Z;for(let q=0;q<z;q++){let ae=q*O-j;k[w]=ae*A,k[b]=X*M,k[_]=Y,h.push(k.x,k.y,k.z),k[w]=0,k[b]=0,k[_]=E>0?1:-1,d.push(k.x,k.y,k.z),f.push(q/C),f.push(1-H/L),G+=1}}for(let H=0;H<L;H++)for(let X=0;X<C;X++){let q=m+X+z*H,ae=m+X+z*(H+1),$=m+(X+1)+z*(H+1),te=m+(X+1)+z*H;c.push(q,ae,te),c.push(ae,$,te),B+=6}u.addGroup(p,B,R),p+=B,m+=G}function y(w,b,_,A,M,v,T,E,C,L,R){let O=(T-2*a)/L,W=T/2-a,j=E/2-a,Z=C/2,Y=L+1,z=0,F=0,G=new S,B=new S;for(let k=0;k<l+1;k++){let H=k/l*Ug,X=Math.sin(H)*a,q=(1-Math.cos(H))*a,ae=Math.sin(H),$=Math.cos(H);G[b]=(j+X)*M,G[_]=(Z-q)*v,B[w]=0,B[b]=ae*Math.sign(G[b]),B[_]=$*Math.sign(G[_]);for(let te=0;te<Y;te++){let V=te*O-W;G[w]=V*A,h.push(G.x,G.y,G.z),d.push(B.x,B.y,B.z),f.push(te/L),f.push(0),z+=1}}for(let k=0;k<l;k++)for(let H=0;H<L;H++){let X=m+H+Y*k,q=m+H+Y*(k+1),ae=m+(H+1)+Y*(k+1),$=m+(H+1)+Y*k;c.push(X,q,$),c.push(q,ae,$),F+=6}u.addGroup(p,F,R),p+=F,m+=z}function x(w,b,_){let A=new S,M=new S(e/2,t/2,n/2);M.subScalar(a);let v=[],T=w*b*_>0?(C,L,R)=>c.push(C,L,R):(C,L,R)=>c.push(C,R,L);for(let C=0;C<=l;C++){let L=[],R=Ug*(1-C/l),O=Math.cos(R),W=Math.sin(R),j=0;for(let Z=0;Z<=C;Z++){let Y=Math.cos(j),z=Math.sin(j);A.x=O*Y,A.y=W,A.z=O*z;let F=M.clone().addScaledVector(A,a);h.push(w*F.x,b*F.y,_*F.z),d.push(w*A.x,b*A.y,_*A.z),f.push(0,0),L.push(m++),j+=Ug/C}v.push(L)}let E=v.length-1;for(let C=0;C<E;C++){let L=v[C],R=v[C+1],O=L.length-1;T(L[0],R[1],R[0]);for(let W=1;W<=O;W++)T(L[W-1],L[W],R[W]),T(L[W],R[W+1],R[W])}}}};var Ns=class extends Pe{constructor(e=[],t=[],n="",i=1,s=.2,o=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],u=[];c(),h(),this.setAttribute("position",new _e(a,3)),this.setAttribute("normal",new _e(u,3)),this.setAttribute("uv",new _e(l,2));return;function c(){s=Math.min(1-1e-5,s),s==0&&(o=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[n],m=new S,p=m.clone(),g=new or,y=s*i,x=i-y,w=o+1,b=new S,_=(z,F)=>b.subVectors(z,F).normalize(),A=(z,F)=>Array(z).fill(void 0).map(F),M=A(e.length/3,(z,F)=>new S().fromArray(e,F*3).setLength(i)),v=[],T=1e6;for(let z=0;z<M.length;z++){let F=M[z],G=[],B,k,H,X=1e10,q=-1;for(;(q=t.indexOf(z,q+1))!=-1;){let V=q-q%3;B=t[V+(q+1)%3],k=t[V+(q+2)%3],H=F.distanceToSquared(M[B]),X=Math.min(X,H),G.push([B,k,H])}X+=1e-6;let ae=[],$=0,te=G.length;for(let V=0;V<te;V++){[B,k,H]=G[$];let le=v[B]?.includes(z)==!0;H<=X&&ae.push(B+ +le*T),$=G.findIndex(ce=>ce[0]==k)}v.push(ae)}let E=[];{let z=0,F=0,G,B,k=f==3;for(let H=0;H<=o;H++){G=H*(H+1)/2,B=(H+1)*(H+2)/2;for(let X=0;X<o-H;X++)[z,F]=[G+X+H+2,B+X+H+3],E.push(G,B,...k?[F,G]:[z,B],F,z),[G,B]=[z,F];E.push(G,B,G+o+2)}}let C=m.clone(),L=m.clone(),R=m.clone(),O=m.clone(),W=m.clone(),j=[],Z=A(M.length,()=>A(f,()=>m.clone()));for(let z=0;z<M.length;z++){m.copy(M[z]).normalize(),C.copy(m).multiplyScalar(x);let F=v[z];for(let ae=0;ae<F.length;ae++){let $=F[ae],te=F[(ae+1)%f];g.setFromPointsAndIndices(M,z,$%T,te%T),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(C,Z[z][ae])}let G=[],B=[],k=[],H=new S;o==0&&[...Z[z]].reduce((ae,$)=>ae.add($),H).multiplyScalar(1/f);for(let ae=0;ae<f;ae++){let $=[],te=(ae-1+f)%f,V=Z[z][te],le=Z[z][ae];m.copy(V).sub(C),p.copy(le).sub(C);let ce=C.angleTo(m),oe=m.angleTo(p),de=Math.cos(ce)*y;o==0?L.copy(H):L.copy(C).setLength(x+de),B.push(de);let ge=[L,V,le];for(let fe=0;fe<2;fe++){let Te=ge[fe],Ce=ge[fe+1];O.subVectors(Te,C),W.subVectors(Ce,C),R.crossVectors(O,W).normalize();for(let ye=0;ye<w;ye++){let Ne=[ce,oe][fe]*ye/w;m.copy(O).applyAxisAngle(R,Ne).add(C),G.push(m.clone()),fe&&(_(m,C),$.push([ye==0?Te:m.clone(),b.clone()]))}fe&&(_(Ce,C),$.push([Ce,b.clone()]))}k.push($)}j.push(k);let X=2*w,q=2;for(let ae=0;ae<f;ae++){let $=X*ae,te=X*((ae+1)%f),V=[G[$]];for(let ce=1;ce<w;ce++){O=G[$+ce],W=G[te+ce],V.push(O);for(let oe=1,de=ce-q+1;oe<=de;oe++)m.lerpVectors(O,W,oe/(de+1)),m.sub(C).setLength(B[ae]).add(C),V.push(m.clone());V.push(W)}for(let ce=0;ce<w;ce++)V.push(G[ce+w+$]);V.push(G[te+w]);let le=E.map(ce=>V[ce]);a.push(...le.map(ce=>[ce.x,ce.y,ce.z]).flat()),u.push(...le.map(ce=>(_(ce,C),[b.x,b.y,b.z])).flat())}}let Y=[];for(let z=0;z<v.length;z++)for(let F=0;F<f;F++){let G=v[z][F];if(G<T){let B=v[G].findIndex(X=>X%T==z),k=j[z][F],H=j[G][B];for(let X=0;X<w;X++){let q=k[X],ae=H[w-X],$=k[X+1],te=H[w-(X+1)];[q,ae,$,$,ae,te].forEach(V=>{a.push(V[0].x,V[0].y,V[0].z),u.push(V[1].x,V[1].y,V[1].z)})}Y.push(k[0][0],H[w][0],k[w][0],H[0][0])}}for(;Y.length;){let z,F,G,B;[z,F]=Y.splice(0,2);let k=[z];for(;z!=F;)k.push(F),G=Y.indexOf(F),B=G%2,F=Y.splice(G-B,2)[1-B];b.subVectors(k[0],k[1]).cross(m.subVectors(k[0],k[2])).normalize();let H=b.dot(k[0])<0;H&&b.negate();for(let X=1;X<=k.length-2;X++)[k[X+ +H],k[X+1-+H],k[0]].forEach(q=>{a.push(q.x,q.y,q.z),u.push(b.x,b.y,b.z)})}}function h(){let d=new S;for(let M=0;M<a.length;M+=3){d.x=a[M+0],d.y=a[M+1],d.z=a[M+2];let v=_(d)/2/Math.PI+.5,T=A(d)/Math.PI+.5;l.push(v,1-T)}let f=new S,m=new S,p=new S,g=new S,y=new N,x=new N,w=new N,b=(M,v,T,E)=>{E<0&&M.x===1&&(l[v]=M.x-1),T.x===0&&T.z===0&&(l[v]=E/2/Math.PI+.5)};for(let M=0,v=0;M<a.length;M+=9,v+=6){f.set(a[M+0],a[M+1],a[M+2]),m.set(a[M+3],a[M+4],a[M+5]),p.set(a[M+6],a[M+7],a[M+8]),y.set(l[v+0],l[v+1]),x.set(l[v+2],l[v+3]),w.set(l[v+4],l[v+5]),g.copy(f).add(m).add(p).divideScalar(3);let T=_(g);b(y,v+0,f,T),b(x,v+2,m,T),b(w,v+4,p,T)}for(let M=0;M<l.length;M+=6){let v=l[M+0],T=l[M+2],E=l[M+4],C=Math.max(v,T,E),L=Math.min(v,T,E);C>.9&&L<.1&&(v<.2&&(l[M+0]+=1),T<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function _(M){return Math.atan2(M.z,-M.x)}function A(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(e){return new Ns(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}};var T_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new tu(e*.5,s,o):new ga(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"DodecahedronGeometry"}})}},tu=class extends Ns{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=1/i,o=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-i,0,-s,i,0,s,-i,0,s,i,-s,-i,0,-s,i,0,s,-i,0,s,i,0,-i,0,-s,i,0,-s,-i,0,s,i,0,s],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(o,a,l,e,t,n),this.type=l}static fromJSON(e){return new tu(e.radius,e.corner,e.cornerSides)}};var nu=1e-12,ll=class{constructor(e){this.position=new N;this.startPosition=new N;this.uuid=Je.generateUUID();this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new ll(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},cl=class extends ll{constructor(t){super(t.position);this.parent=t}copy(t){return super.copy(t),this}clone(){return new cl(this.parent).copy(this)}},Vr=class extends ll{constructor(t,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=t,this.controls.push(new cl(this),new cl(this))}static create(t,n){let i=new Vr(t,new N(...n.position));return i.controls[0].position.set(...n.controlPrevious.position),i.controls[1].position.set(...n.controlNext.position),i.roundness=n.roundness,i.areControlsDirectionsMirrored=n.areControlsDirectionsMirrored,i}getOppositeControl(t){let n=this.controls.indexOf(t);return n===0?this.controls[1]:n===1?this.controls[0]:null}applyOffsetToControls(t,n=1){for(let i=0,s=this.controls.length;i<s;i++){let o=this.controls[i];this.position.distanceTo(o.position)<=n?o.position.copy(this.position):o.applyOffset(t)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(t){return super.copy(t),this.controls[0].copy(t.controls[0]),this.controls[1].copy(t.controls[1]),this.roundness=t.roundness,this.uuid=t.uuid,this}clone(){return new Vr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let t=this.curveBefore?.getTangentAt(1),n=this.curveAfter?.getTangentAt(0);return[t,n]}computeNormals(t=new N,n=new N){let[i,s]=this.computeTangents();return i&&s&&(E_(i,t),E_(s,n)),[t,n]}computeTangent(t=new N){let[n,i]=this.computeTangents();return n&&i&&t.copy(n).add(i).normalize(),t}computeNormal(t=new N){let[n,i]=this.computeNormals();return t.copy(n).add(i).normalize(),t}};function E_(r,e=new N){let t=r.length();return e.set(-r.y/t,r.x/t)}var kg=r=>r,ul=new N,nf=new N,tB=new N,nB=new N,rB=new N,iB=new N,D_=new S,P_=new S;function I_(r){let e=new N;e.addVectors(r.v0,ul.subVectors(r.v1,r.v0).multiplyScalar(2/3));let t=new N;return t.addVectors(r.v2,nf.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new Zn(r.v0,e,t,r.v2)}function ru(r,e,t=Number.EPSILON){return Math.abs(r-e)<t}function sB(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function oB(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function Vg(r,e,t){let n=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),i=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),s=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2));return Math.acos((i*i+n*n-s*s)/(2*i*n))}function L_(r,e,t){return C_(r,e)&&C_(e,t)&&Gg(r.position,e.position,t.position)}function Gg(r,e,t){return ul.copy(e).sub(r).cross(nf.copy(t).sub(r))===0}function O_(r,e,t,n,i){let s=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),o=(r.y+e.y)/2,a=(r.x+e.x)/2,l=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(r.y-e.y)/s,u=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(e.x-r.x)/s;return n.set(a+l,o+u),i.set(a-l,o-u),[n,i]}function R_(r,e,t){let n=r.distanceTo(t),i=e.distanceTo(t);return n<i?e:r}function N_(r,e,t,n,i,s){let o=e.x-r.x,a=e.y-r.y,l=t.x-r.x,u=t.y-r.y,c=Math.sqrt((o+l)*(o+l)+(a+u)*(a+u)),h;return Vg(e,r,t)>Math.PI&&(c*=-1),ru(u,a)?h=(a+u)*(n/c-.5)*8/3/(o-l):h=(o+l)*(n/c-.5)*8/3/(u-a),i.set(e.x-h*a,e.y+h*o),s.set(t.x+h*u,t.y-h*l),[i,s]}function Hg(r,e){return r.position.equals(r.controls[1].position)&&e.position.equals(e.controls[0].position)}function C_(r,e){return Gg(r.position,r.controls[1].position,e.position)&&Gg(r.position,e.controls[0].position,e.position)}function B_(r,e,t,n,i=.5){let s=ul.subVectors(e,r).multiplyScalar(i).add(r),o=nf.subVectors(t,e).multiplyScalar(i).add(e),a=tB.subVectors(n,t).multiplyScalar(i).add(t),l=s,u=nB.subVectors(o,s).multiplyScalar(i).add(s),c=rB.subVectors(a,o).multiplyScalar(i).add(o),h=a,d=iB.subVectors(c,u).multiplyScalar(i).add(u);return[r.x,r.y,l.x,l.y,u.x,u.y,d.x,d.y,c.x,c.y,h.x,h.y,n.x,n.y]}function F_(r,e,t=12,n=!0){let i=P_.set(0,0,0),s,o=0,a=[];for(let l=0;l<e.length;l++){let u=kg(e[l]),c=ul,h=Bs(u,t);a.push(h);for(let d=0;d<=h;d++)if(u instanceof Zn||u instanceof Fr||u instanceof Kn){if(u.getPoint(d/h,c),i.set(c.x,c.y,0),s!==void 0&&oB(s,i))continue;s===void 0&&(s=D_),s.copy(i),r.setXYZ(o,i.x,i.y,i.z),o++}}return n&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),r}function U_(r,e,t,n=12,i=!0){let s=P_.set(0,0,0),o=0,a=[];for(let l=0;l<e.length;l++){if(t[l]===!1)continue;let u,c=kg(e[l]),h=ul,d=Bs(c,n);a.push(d);for(let f=0;f<=d;f++)if(c instanceof Zn||c instanceof Fr||c instanceof Kn){if(c.getPoint(f/d,h),s.set(h.x,h.y,0),u?.equals(s))continue;u===void 0?u=D_:(r.setXYZ(o,u.x,u.y,u.z),o++,r.setXYZ(o,s.x,s.y,s.z),o++),u.copy(s)}}return i&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),a}function Wg(r,e=12,t=!1){let n=[];for(let i=0,s=r.length;i<s;i++){let o=r[i],a=0;if(t&&o.roundedCurveCorner!==void 0){let l=Bs(o.roundedCurveCorner,e)*.5;i>0&&(n[i-1]+=l),a+=l}o.curveAfter!==void 0&&(a+=Bs(o.curveAfter,e)),n.push(a)}return r.length>0&&t&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=Bs(r[0].roundedCurveCorner,e)*.5),n}function Bs(r,e=12){return r&&r instanceof ho?e*2:r&&(r instanceof Kn||r instanceof bc)?1:r&&r instanceof da?e*r.points.length:e}function z_(r,e,t=12,n=!0){let i,s=0;for(let o=0;o<e.length;o++){let a=kg(e[o]),l=Bs(a,t),u=ul;for(let c=0;c<=l;c++)if(a instanceof Zn||a instanceof Fr||a instanceof Kn){if(a.getPoint(c/l,u),i!==void 0&&sB(i,u,nu))continue;i===void 0&&(i=nf),i.copy(u),r.push(u.x,u.y),s++}}return ru(r[0],r[r.length-2],nu)&&ru(r[1],r[r.length-1],nu)&&(r.pop(),r.pop()),n&&s>1&&!(ru(r[s-1],r[1],nu)&&ru(r[s-2],r[0],nu))&&(r.push(r[0],r[1]),s++),r}var jg=new N,aB=new N,lB=new N,cB=new N,uB=new N,hB=new N,vt=class extends Nr{constructor(t=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Rt;this.plane=new Gn(new S(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Je.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=t,this._height=n}static createFromState(t,n,i){let s=new vt;return s.isClosed=t.isClosed,s.points=t.points.map(o=>Vr.create(o.id,o.data)),typeof t.roundness=="number"&&(s.roundness=t.roundness),s.shapeHoles=t.shapeHoles.map(o=>vt.createFromState(o)),n!==void 0&&i!==void 0&&s.applySize(n,i),s.update(),s}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(t){if(this._roundness!==t){this._roundness=t;for(let n=0,i=this.points.length;n<i;n++)this.points[n].roundness=t;this.needsUpdate=!0}}getPointsIndexesByIds(t){return t.map(n=>this.getPointIndexById(n)).filter(n=>n>=0)}getPointIndexById(t){let n=this.points.length,i=this.points.findIndex(s=>s.uuid===t);if(i<0){let s=n;for(let o=0,a=this.shapeHoles.length;o<a;o++){let l=this.shapeHoles[o],u=l.points.length-1,c=l.getPointIndexById(t);if(c<0)s+=u;else return c+s}}return i}getLineIndexById(t){return this.getPointIndexById(t)}getBezierPoint(t){if(t<=this.points.length-1)return this.points[t];if(this.shapeHoles.length>0)for(let n=0,i=this.shapeHoles.length;n<i;n++){let s=this.shapeHoles[n],o=t-this.points.length;if(o<=s.points.length-1)return s.points[o]}throw new Error("This shape does not have a point for this index: "+t)}getBezierPointIndex(t){let n=this.points.indexOf(t);if(n>=0)return n;if(n=this.points.length,this.shapeHoles.length>0)for(let i=0,s=this.shapeHoles.length;i<s;i++){let o=this.shapeHoles[i],a=o.points.indexOf(t);if(a>=0)return n+a;n+=o.points.length}return-1}getAllPoints(){let t=[].concat(...this.shapeHoles.map(n=>n.points));return[...this.points,...t]}applySize(t,n){t===0&&(t=.001),n===0&&(n=.001),this._width=t,this._height=n}applyScale(t,n){let i=jg.set(t,n);for(let s=0,o=this.points.length;s<o;s++){let a=this.points[s];a.position.multiply(i),a.controls[0].position.multiply(i),a.controls[1].position.multiply(i)}for(let s=0,o=this.shapeHoles.length;s<o;s++)this.shapeHoles[s].applyScale(t,n);this._update(!1)}createPoint(t,n=0,i=Je.generateUUID()){let s;t instanceof N?s=t:s=new N(t,n);let o=new Vr(i,s);return o.roundness=this.roundness,o}addPoint(t){this.points.push(t),this.needsUpdate=!0}addPointAt(t,n){this.points.splice(n,0,t),this.needsUpdate=!0}getPointByUuid(t){for(let n=0,i=this.points.length;n<i;n++){let s=this.points[n];if(s.uuid===t)return s}for(let n=0,i=this.shapeHoles.length;n<i;n++){let o=this.shapeHoles[n].getPointByUuid(t);if(o)return o}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(t){let n=this.points.indexOf(t);n>=0&&this.points.splice(n,1),this.needsUpdate=!0}removePointById(t){let n=this.points.find(i=>i.uuid===t);n&&this.removePoint(n)}update(t=!0){for(let n=0,i=this.shapeHoles.length;n<i;n++)this.shapeHoles[n].update(!1);this._update(t)}extractShapePointsToBuffer(t,n=12,i=!1){this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n);let s=i?this.roundedCurveDivisions:this.curveDivisions;return F_(t,i?this.roundedCurves:this.curves,n,this.autoClose),s.reduce((o,a)=>o+a,0)+1}computeCurveDivisions(t=12){return this.curveDivisions=Wg(this.points,t,!1),this.roundedCurveDivisions=Wg(this.points,t,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(t,n,i=12){return U_(t,this.curves,n,i,this.autoClose).reduce((o,a)=>o+a,0)*2}extractShapePointsToFlatArray(t,n=12){return this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n),z_(t,this.roundedCurves,n,this.autoClose)}getCurveIndexFromVertexId(t,n=!1){let i=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let s=n?this.roundedCurveDivisions:this.curveDivisions,o=0;n&&this.points[0].roundedCurveCorner!==void 0&&(o=Bs(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=t-o;a<0&&(a+=s.reduce((l,u)=>l+u,0));for(let l=0,u=s.length;l<u;l++){let c=s[l];if(a<i+c)return[l,(a-i+1)/c];i+=c}return[0,1]}getCurveT(t,n,i){let s=this.points[t],o=this.points[t>=this.points.length-1?0:t+1],a=this.curveDivisions,l=a[t];if(Hg(s,o)){let h=s.position.distanceTo(o.position);return s.position.distanceTo(jg.set(i.x,i.y))/h}let u=0;for(let h=0;h<t;h++)u+=a[h];return(n-u)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(t,n){Hg(n,t)?this.lineTo(t.position.x,t.position.y):this.bezierCurveTo(n.controls[1].position.x,n.controls[1].position.y,t.controls[0].position.x,t.controls[0].position.y,t.position.x,t.position.y);let i=this.curves[this.curves.length-1];t.curveBefore=i,n.curveAfter=i;let s=i.clone();t.roundedCurveBefore=s,n.roundedCurveAfter=s,t.roundedCurveCorner=void 0,this.roundedCurves.push(s)}_update(t=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let o=this.points[i];if(i===0)this.moveTo(o.position.x,o.position.y);else{let a=this.points[i-1];this._applyCurveForPoint(o,a)}}let n=this.getLastPoint();if(n?.curveAfter&&(n.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,o=this.points.length;s<o;s++){let a=this.points[s],l=this.points[s-1]??this.points[this.points.length-1],u=this.points[s+1]??this.points[0],c=a.roundness,h=l&&u&&L_(l,a,u);if(!a.controlsMoved()&&c>0&&!h){let d=a.curveBefore,f=a.curveAfter;if(d===void 0||f===void 0)continue;let m=a.roundedCurveBefore,p=a.roundedCurveAfter,g=d.getLength(),y=f.getLength(),x=Math.min(c,g*.499),w=Math.min(c,y*.499),b=Math.min(x,w),_=1-b/g,A=b/y,M=d.getPointAt(_,jg),v=f.getPointAt(A,aB);this._subSplitCurve(d,m,_,M,void 0),this._subSplitCurve(f,p,A,void 0,v);let T;if(this.useCubicForRoundedCorners){let E=Vg(M,a.position,v)/2,C=Math.tan(E)*M.distanceTo(a.position),[L,R]=O_(M,v,C,lB,cB),O=R_(L,R,a.position),[W,j]=N_(O,M,v,C,uB,hB);T=new Zn(M.clone(),W.clone(),j.clone(),v.clone())}else T=new Fr(M.clone(),a.position.clone(),v.clone());a.roundedCurveCorner=T,this.roundedCurves.splice(s+i,0,T),i++}}}t&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(t,n,i,s,o){if(t instanceof Kn)s!==void 0&&n.v2.copy(s),o!==void 0&&n.v1.copy(o);else{let a=t,l=n,u=a.getUtoTmapping(i,0),c=B_(a.v0,a.v1,a.v2,a.v3,u);return s!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),o!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return n}clone(){let t=new vt(this._width,this._height);return t.points=this.points.map(n=>n.clone()),t.isClosed=this.isClosed,t.roundness=this.roundness,t.isMesh2D=this.isMesh2D,t.shapeHoles=this.shapeHoles.map(n=>n.clone()),t}toJSON(){return{points:this.points.reduce((t,n)=>t.concat(n.toJSON()),[]),shapeHoles:this.shapeHoles.map(t=>t.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(t){this.points=[],this.pointIDs=0;let n=t.points.length/7;for(let i=0;i<n;i++){let s=i*7,o=t.points[s+0],a=t.points[s+1],l=t.points[s+2],u=t.points[s+3],c=t.points[s+4],h=t.points[s+5],d=t.points[s+6],f=new Vr(Je.generateUUID(),new N(o,a));f.controls[0].position.set(l,u),f.controls[1].position.set(c,h),f.roundness=d,this.points.push(f)}return this.shapeHoles=t.shapeHoles?.length?t.shapeHoles.map(i=>{let s=new vt;return s.fromJSON(i),s}):[],this.isClosed=t.isClosed,this._roundness=t.roundness,this._update(),this}fromShape(t){let n=(s,o)=>{o instanceof Zn&&o.v3.equals(s.position)&&s.controls[0].position.copy(o.v2)},i=s=>{let o=[],a,l;for(a=0,l=s.length;a<l;a++)s[a]instanceof Fr&&(s[a]=I_(s[a]));for(a=0,l=s.length;a<l;a++){let h=s[a],d=a>0?s[a-1]:null,f;h instanceof Zn?(f=this.createPoint(h.v0),f.controls[1].position.copy(h.v1)):h instanceof Kn&&(f=this.createPoint(h.v1)),f!==void 0&&(d!==null&&n(f,d),o.push(f))}let u=s[s.length-1],c=!1;return u instanceof Zn?u.v3.equals(o[0].position)&&(o[0].controls[0].position.copy(u.v2),c=!0):u instanceof Kn&&u.v2.equals(o[0].position)&&(c=!0),this.isClosed=c,o};return this.points=i(t.curves),t instanceof Nr&&(this.shapeHoles=t.holes.map(s=>{let o=new vt;return o.fromShape(s),o})),this.update(),this}};var Xg=Math.PI*2;function qg({x:r,y:e},t,n,i,s){return{x:r*t+i,y:e*n+s}}function dB(r,e){let t=e===1.5707963267948966?.551915024494:e===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(e/4),n=Math.cos(r),i=Math.sin(r),s=Math.cos(r+e),o=Math.sin(r+e);return[{x:n-i*t,y:i+n*t},{x:s+o*t,y:o-s*t},{x:s,y:o}]}function G_(r,e,t,n){let i=r*n-e*t<0?-1:1,s=Math.min(1,Math.max(-1,r*t+e*n));return i*Math.acos(s)}function fB(r,e,t,n,i,s,o,a,l,u){let c=Math.pow(i,2),h=Math.pow(s,2),d=Math.pow(o,2),f=Math.pow(a,2),m=c*h-c*f-h*d;m<0&&(m=0),m/=c*f+h*d,m=Math.sqrt(m)*(l===u?-1:1);let p=m*i/s*a,g=m*-s/i*o,y=p+(r+t)/2,x=g+(e+n)/2,w=(o-p)/i,b=(a-g)/s,_=(-o-p)/i,A=(-a-g)/s,M=G_(1,0,w,b),v=G_(w,b,_,A);return!u&&v>0&&(v-=Xg),u&&v<0&&(v+=Xg),{centerx:y,centery:x,ang1:M,ang2:v}}function k_({px:r,py:e,cx:t,cy:n,rx:i,ry:s,largeArcFlag:o,sweepFlag:a}){let l=[];if(i===0||s===0)return[];let u=(r-t)/2,c=(e-n)/2;if(u===0&&c===0)return[];i=Math.abs(i),s=Math.abs(s);let h=Math.pow(u,2)/Math.pow(i,2)+Math.pow(c,2)/Math.pow(s,2);h>1&&(i*=Math.sqrt(h),s*=Math.sqrt(h));let d=fB(r,e,t,n,i,s,u,c,o,a),{ang1:f,ang2:m}=d,{centerx:p,centery:g}=d,y=Math.abs(m)/(Xg/4);Math.abs(1-y)<1e-7&&(y=1);let x=Math.max(Math.ceil(y),1);m/=x;for(let w=0;w<x;w++)l.push(dB(f,m)),f+=m;return l.map(w=>{let{x:b,y:_}=qg(w[0],i,s,p,g),{x:A,y:M}=qg(w[1],i,s,p,g),{x:v,y:T}=qg(w[2],i,s,p,g);return{x1:b,y1:_,x2:A,y2:M,x:v,y:T}})}var Bt;(function(r){r[r.ODD=0]="ODD",r[r.NONZERO=1]="NONZERO",r[r.POSITIVE=2]="POSITIVE",r[r.NEGATIVE=3]="NEGATIVE",r[r.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Bt||(Bt={}));var dn;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(dn||(dn={}));function Ge(r,e){if(!r)throw e||"Assertion Failed!"}var Ue=function(){function r(){}return r.vertEq=function(e,t){return e.s===t.s&&e.t===t.t},r.vertLeq=function(e,t){return e.s<t.s||e.s===t.s&&e.t<=t.t},r.transLeq=function(e,t){return e.t<t.t||e.t===t.t&&e.s<=t.s},r.edgeGoesLeft=function(e){return r.vertLeq(e.Dst,e.Org)},r.edgeGoesRight=function(e){return r.vertLeq(e.Org,e.Dst)},r.vertL1dist=function(e,t){return Math.abs(e.s-t.s)+Math.abs(e.t-t.t)},r.edgeEval=function(e,t,n){Ge(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?i<s?t.t-e.t+(e.t-n.t)*(i/(i+s)):t.t-n.t+(n.t-e.t)*(s/(i+s)):0},r.edgeSign=function(e,t,n){Ge(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?(t.t-n.t)*i+(t.t-e.t)*s:0},r.transEval=function(e,t,n){Ge(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?i<s?t.s-e.s+(e.s-n.s)*(i/(i+s)):t.s-n.s+(n.s-e.s)*(s/(i+s)):0},r.transSign=function(e,t,n){Ge(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?(t.s-n.s)*i+(t.s-e.s)*s:0},r.vertCCW=function(e,t,n){return e.s*(t.t-n.t)+t.s*(n.t-e.t)+n.s*(e.t-t.t)>=0},r.interpolate=function(e,t,n,i){return e=e<0?0:e,n=n<0?0:n,e<=n?n===0?(t+i)/2:t+(i-t)*(e/(e+n)):i+(t-i)*(n/(e+n))},r.intersect=function(e,t,n,i,s){var o,a,l;r.vertLeq(e,t)||(l=e,e=t,t=l),r.vertLeq(n,i)||(l=n,n=i,i=l),r.vertLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.vertLeq(n,t)?r.vertLeq(t,i)?(o=r.edgeEval(e,n,t),a=r.edgeEval(n,t,i),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,t.s)):(o=r.edgeSign(e,n,t),a=-r.edgeSign(e,i,t),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,i.s)):s.s=(n.s+t.s)/2,r.transLeq(e,t)||(l=e,e=t,t=l),r.transLeq(n,i)||(l=n,n=i,i=l),r.transLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.transLeq(n,t)?r.transLeq(t,i)?(o=r.transEval(e,n,t),a=r.transEval(n,t,i),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,t.t)):(o=r.transSign(e,n,t),a=-r.transSign(e,i,t),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,i.t)):s.t=(n.t+t.t)/2},r}(),iu=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return r}(),rf=function(){function r(e){this.side=e,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(r.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(e){this.Sym.Lface=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(e){this.Sym.Org=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(e){this.Sym.Lnext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(e){this.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(e){this.Lnext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(e){this.Sym.Onext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(e){this.Sym.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(e){this.Sym.Lnext.Sym=e},enumerable:!0,configurable:!0}),r}(),hl=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return r}(),V_=function(){function r(){var e=new hl,t=new iu,n=new rf(0),i=new rf(1);e.next=e.prev=e,e.anEdge=null,t.next=t.prev=t,n.next=n,n.Sym=i,i.next=i,i.Sym=n,this.vHead=e,this.fHead=t,this.eHead=n,this.eHeadSym=i}return r.prototype.makeEdge_=function(e){var t=new rf(0),n=new rf(1);e.Sym.side<e.side&&(e=e.Sym);var i=e.Sym.next;return n.next=i,i.Sym.next=t,t.next=e,e.Sym.next=n,t.Sym=n,t.Onext=t,t.Lnext=n,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,n.Sym=t,n.Onext=n,n.Lnext=t,n.Org=null,n.Lface=null,n.winding=0,n.activeRegion=null,t},r.prototype.splice_=function(e,t){var n=e.Onext,i=t.Onext;n.Sym.Lnext=t,i.Sym.Lnext=e,e.Onext=i,t.Onext=n},r.prototype.makeVertex_=function(e,t,n){var i=e;Ge(i,"Vertex can't be null!");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t;var o=t;do o.Org=i,o=o.Onext;while(o!==t)},r.prototype.makeFace_=function(e,t,n){var i=e;Ge(i,"Face can't be null");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t,i.trail=null,i.marked=!1,i.inside=n.inside;var o=t;do o.Lface=i,o=o.Lnext;while(o!==t)},r.prototype.killEdge_=function(e){e.Sym.side<e.side&&(e=e.Sym);var t=e.next,n=e.Sym.next;t.Sym.next=n,n.Sym.next=t},r.prototype.killVertex_=function(e,t){var n=e.anEdge,i=n;do i.Org=t,i=i.Onext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.killFace_=function(e,t){var n=e.anEdge,i=n;do i.Lface=t,i=i.Lnext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.makeEdge=function(){var e=new hl,t=new hl,n=new iu,i=this.makeEdge_(this.eHead);return this.makeVertex_(e,i,this.vHead),this.makeVertex_(t,i.Sym,this.vHead),this.makeFace_(n,i,this.fHead),i},r.prototype.splice=function(e,t){var n=!1,i=!1;if(e!==t){if(t.Org!==e.Org&&(i=!0,this.killVertex_(t.Org,e.Org)),t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(t,e),!i){var s=new hl;this.makeVertex_(s,t,e.Org),e.Org.anEdge=e}if(!n){var o=new iu;this.makeFace_(o,t,e.Lface),e.Lface.anEdge=e}}},r.prototype.delete=function(e){var t=e.Sym,n=!1;if(e.Lface!==e.Rface&&(n=!0,this.killFace_(e.Lface,e.Rface)),e.Onext===e)this.killVertex_(e.Org,null);else if(e.Rface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev),!n){var i=new iu;this.makeFace_(i,e,e.Lface)}t.Onext===t?(this.killVertex_(t.Org,null),this.killFace_(t.Lface,null)):(e.Lface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),this.killEdge_(e)},r.prototype.addEdgeVertex=function(e){var t=this.makeEdge_(e),n=t.Sym;this.splice_(t,e.Lnext),t.Org=e.Dst;var i=new hl;return this.makeVertex_(i,n,t.Org),t.Lface=n.Lface=e.Lface,t},r.prototype.splitEdge=function(e){var t=this.addEdgeVertex(e),n=t.Sym;return this.splice_(e.Sym,e.Sym.Oprev),this.splice_(e.Sym,n),e.Dst=n.Org,n.Dst.anEdge=n.Sym,n.Rface=e.Rface,n.winding=e.winding,n.Sym.winding=e.Sym.winding,n.idx=e.idx,n.Sym.idx=e.Sym.idx,n},r.prototype.connect=function(e,t){var n=!1,i=this.makeEdge_(e),s=i.Sym;if(t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(i,e.Lnext),this.splice_(s,t),i.Org=e.Dst,s.Org=t.Org,i.Lface=s.Lface=e.Lface,e.Lface.anEdge=s,!n){var o=new iu;this.makeFace_(o,i,e.Lface)}return i},r.prototype.zapFace=function(e){var t=e.anEdge,n,i,s,o,a;i=t.Lnext;do n=i,i=n.Lnext,n.Lface=null,n.Rface===null&&(n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),s=n.Sym,s.Onext===s?this.killVertex_(s.Org,null):(s.Org.anEdge=s.Onext,this.splice_(s,s.Oprev)),this.killEdge_(n));while(n!=t);o=e.prev,a=e.next,a.prev=o,o.next=a},r.prototype.countFaceVerts_=function(e){var t=e.anEdge,n=0;do n++,t=t.Lnext;while(t!==e.anEdge);return n},r.prototype.mergeConvexFaces=function(e){var t,n,i,s,o,a,l;for(t=this.fHead.next;t!==this.fHead;t=t.next)if(!!t.inside)for(n=t.anEdge,o=n.Org;i=n.Lnext,s=n.Sym,s&&s.Lface&&s.Lface.inside&&(a=this.countFaceVerts_(t),l=this.countFaceVerts_(s.Lface),a+l-2<=e&&Ue.vertCCW(n.Lprev.Org,n.Org,s.Lnext.Lnext.Org)&&Ue.vertCCW(s.Lprev.Org,s.Org,n.Lnext.Lnext.Org)&&(i=s.Lnext,this.delete(s),n=null,s=null)),!(n&&n.Lnext.Org===o);)n=i;return!0},r.prototype.check=function(){var e=this.fHead,t=this.vHead,n=this.eHead,i,s,o,a,l,u;for(s=e,s=e;(i=s.next)!==e;s=i){Ge(i.prev===s),l=i.anEdge;do Ge(l.Sym!==l),Ge(l.Sym.Sym===l),Ge(l.Lnext.Onext.Sym===l),Ge(l.Onext.Sym.Lnext===l),Ge(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(Ge(i.prev===s&&i.anEdge===null),a=t,a=t;(o=a.next)!==t;a=o){Ge(o.prev===a),l=o.anEdge;do Ge(l.Sym!==l),Ge(l.Sym.Sym===l),Ge(l.Lnext.Onext.Sym===l),Ge(l.Onext.Sym.Lnext===l),Ge(l.Org===o),l=l.Onext;while(l!==o.anEdge)}for(Ge(o.prev===a&&o.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)Ge(l.Sym.next===u.Sym),Ge(l.Sym!==l),Ge(l.Sym.Sym===l),Ge(l.Org!==null),Ge(l.Dst!==null),Ge(l.Lnext.Onext.Sym===l),Ge(l.Onext.Sym.Lnext===l);Ge(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},r}(),H_=function(){function r(){this.handle=null}return r}(),W_=function(){function r(){this.key=null,this.node=0}return r}(),pB=function(){function r(e,t){this.leq=t,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=e,this.nodes=[],this.handles=[];for(var n=0;n<e+1;n++)this.nodes[n]=new H_,this.handles[n]=new W_;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return r.prototype.floatDown_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e<<1,o<this.size&&this.leq(n[t[o+1].handle].key,n[t[o].handle].key)&&++o,Ge(o<=this.max),s=t[o].handle,o>this.size||this.leq(n[i].key,n[s].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.floatUp_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e>>1,s=t[o].handle,o===0||this.leq(n[s].key,n[i].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.init=function(){for(var e=this.size;e>=1;--e)this.floatDown_(e);this.initialized=!0},r.prototype.min=function(){return this.handles[this.nodes[1].handle].key},r.prototype.insert=function(e){var t,n;if(t=++this.size,t*2>this.max){this.max*=2;var i,s;for(s=this.nodes.length,this.nodes.length=this.max+1,i=s;i<this.nodes.length;i++)this.nodes[i]=new H_;for(s=this.handles.length,this.handles.length=this.max+1,i=s;i<this.handles.length;i++)this.handles[i]=new W_}return this.freeList===0?n=t:(n=this.freeList,this.freeList=this.handles[n].node),this.nodes[t].handle=n,this.handles[n].node=t,this.handles[n].key=e,this.initialized&&this.floatUp_(t),n},r.prototype.extractMin=function(){var e=this.nodes,t=this.handles,n=e[1].handle,i=t[n].key;return this.size>0&&(e[1].handle=e[this.size].handle,t[e[1].handle].node=1,t[n].key=null,t[n].node=this.freeList,this.freeList=n,--this.size,this.size>0&&this.floatDown_(1)),i},r.prototype.delete=function(e){var t=this.nodes,n=this.handles,i;Ge(e>=1&&e<=this.max&&n[e].key!==null),i=n[e].node,t[i].handle=t[this.size].handle,n[t[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(n[t[i>>1].handle].key,n[t[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),n[e].key=null,n[e].node=this.freeList,this.freeList=e},r}(),Yg=function(){function r(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return r}(),j_=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),mB=function(){function r(e,t){this.frame=e,this.leq=t,this.head=new j_,this.head.next=this.head,this.head.prev=this.head}return r.prototype.min=function(){return this.head.next},r.prototype.max=function(){return this.head.prev},r.prototype.insert=function(e){return this.insertBefore(this.head,e)},r.prototype.search=function(e){var t=this.head;do t=t.next;while(t.key!==null&&!this.leq(this.frame,e,t.key));return t},r.prototype.insertBefore=function(e,t){do e=e.prev;while(e.key!==null&&!this.leq(this.frame,e.key,t));var n=new j_;return n.key=t,n.next=e.next,e.next.prev=n,n.prev=e,e.next=n,n},r.prototype.delete=function(e){e.next.prev=e.prev,e.prev.next=e.next},r}(),gB=function(){function r(){}return r.regionBelow=function(e){return e.nodeUp.prev.key},r.regionAbove=function(e){return e.nodeUp.next.key},r.debugEvent=function(e){},r.addWinding=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.edgeLeq=function(e,t,n){var i=e.event,s=t.eUp,o=n.eUp;if(s.Dst===i)return o.Dst===i?Ue.vertLeq(s.Org,o.Org)?Ue.edgeSign(o.Dst,s.Org,o.Org)<=0:Ue.edgeSign(s.Dst,o.Org,s.Org)>=0:Ue.edgeSign(o.Dst,i,o.Org)<=0;if(o.Dst===i)return Ue.edgeSign(s.Dst,i,s.Org)>=0;var a=Ue.edgeEval(s.Dst,i,s.Org),l=Ue.edgeEval(o.Dst,i,o.Org);return a>=l},r.deleteRegion=function(e,t){t.fixUpperEdge&&Ge(t.eUp.winding===0),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},r.fixUpperEdge=function(e,t,n){Ge(t.fixUpperEdge),e.mesh.delete(t.eUp),t.fixUpperEdge=!1,t.eUp=n,n.activeRegion=t},r.topLeftRegion=function(e,t){var n=t.eUp.Org,i;do t=r.regionAbove(t);while(t.eUp.Org===n);if(t.fixUpperEdge){if(i=e.mesh.connect(r.regionBelow(t).eUp.Sym,t.eUp.Lnext),i===null)return null;r.fixUpperEdge(e,t,i),t=r.regionAbove(t)}return t},r.topRightRegion=function(e){var t=e.eUp.Dst;do e=r.regionAbove(e);while(e.eUp.Dst===t);return e},r.addRegionBelow=function(e,t,n){var i=new Yg;return i.eUp=n,i.nodeUp=e.dict.insertBefore(t.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,n.activeRegion=i,i},r.isWindingInside=function(e,t){switch(e.windingRule){case Bt.ODD:return(t&1)!==0;case Bt.NONZERO:return t!==0;case Bt.POSITIVE:return t>0;case Bt.NEGATIVE:return t<0;case Bt.ABS_GEQ_TWO:return t>=2||t<=-2}throw new Error("Invalid winding rulle")},r.computeWinding=function(e,t){t.windingNumber=r.regionAbove(t).windingNumber+t.eUp.winding,t.inside=r.isWindingInside(e,t.windingNumber)},r.finishRegion=function(e,t){var n=t.eUp,i=n.Lface;i.inside=t.inside,i.anEdge=n,r.deleteRegion(e,t)},r.finishLeftRegions=function(e,t,n){for(var i,s=null,o=t,a=t.eUp;o!==n;){if(o.fixUpperEdge=!1,s=r.regionBelow(o),i=s.eUp,i.Org!=a.Org){if(!s.fixUpperEdge){r.finishRegion(e,o);break}i=e.mesh.connect(a.Lprev,i.Sym),r.fixUpperEdge(e,s,i)}a.Onext!==i&&(e.mesh.splice(i.Oprev,i),e.mesh.splice(a,i)),r.finishRegion(e,o),a=s.eUp,o=s}return a},r.addRightEdges=function(e,t,n,i,s,o){var a,l,u,c,h=!0;u=n;do Ge(Ue.vertLeq(u.Org,u.Dst)),r.addRegionBelow(e,t,u.Sym),u=u.Onext;while(u!==i);for(s===null&&(s=r.regionBelow(t).eUp.Rprev),l=t,c=s;a=r.regionBelow(l),u=a.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(e.mesh.splice(u.Oprev,u),e.mesh.splice(c.Oprev,u)),a.windingNumber=l.windingNumber-u.winding,a.inside=r.isWindingInside(e,a.windingNumber),l.dirty=!0,!h&&r.checkForRightSplice(e,l)&&(r.addWinding(u,c),r.deleteRegion(e,l),e.mesh.delete(c)),h=!1,l=a,c=u;l.dirty=!0,Ge(l.windingNumber-u.winding===a.windingNumber),o&&r.walkDirtyRegions(e,l)},r.spliceMergeVertices=function(e,t,n){e.mesh.splice(t,n)},r.vertexWeights=function(e,t,n){var i=Ue.vertL1dist(t,e),s=Ue.vertL1dist(n,e),o=.5*s/(i+s),a=.5*i/(i+s);e.coords[0]+=o*t.coords[0]+a*n.coords[0],e.coords[1]+=o*t.coords[1]+a*n.coords[1],e.coords[2]+=o*t.coords[2]+a*n.coords[2]},r.getIntersectData=function(e,t,n,i,s,o){t.coords[0]=t.coords[1]=t.coords[2]=0,t.idx=-1,r.vertexWeights(t,n,i),r.vertexWeights(t,s,o)},r.checkForRightSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp;if(Ue.vertLeq(i.Org,s.Org)){if(Ue.edgeSign(s.Dst,i.Org,s.Org)>0)return!1;Ue.vertEq(i.Org,s.Org)?i.Org!==s.Org&&(e.pq.delete(i.Org.pqHandle),r.spliceMergeVertices(e,s.Oprev,i)):(e.mesh.splitEdge(s.Sym),e.mesh.splice(i,s.Oprev),t.dirty=n.dirty=!0)}else{if(Ue.edgeSign(i.Dst,s.Org,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Oprev,i)}return!0},r.checkForLeftSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o;if(Ge(!Ue.vertEq(i.Dst,s.Dst)),Ue.vertLeq(i.Dst,s.Dst)){if(Ue.edgeSign(i.Dst,s.Dst,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,o=e.mesh.splitEdge(i),e.mesh.splice(s.Sym,o),o.Lface.inside=t.inside}else{if(Ue.edgeSign(s.Dst,i.Dst,s.Org)>0)return!1;t.dirty=n.dirty=!0,o=e.mesh.splitEdge(s),e.mesh.splice(i.Lnext,s.Sym),o.Rface.inside=t.inside}return!0},r.checkForIntersect=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o=i.Org,a=s.Org,l=i.Dst,u=s.Dst,c,h,d=new hl,f,m;if(Ge(!Ue.vertEq(u,l)),Ge(Ue.edgeSign(l,e.event,o)<=0),Ge(Ue.edgeSign(u,e.event,a)>=0),Ge(o!==e.event&&a!==e.event),Ge(!t.fixUpperEdge&&!n.fixUpperEdge),o===a||(c=Math.min(o.t,l.t),h=Math.max(a.t,u.t),c>h))return!1;if(Ue.vertLeq(o,a)){if(Ue.edgeSign(u,o,a)>0)return!1}else if(Ue.edgeSign(l,a,o)<0)return!1;return r.debugEvent(e),Ue.intersect(l,o,u,a,d),Ge(Math.min(o.t,l.t)<=d.t),Ge(d.t<=Math.max(a.t,u.t)),Ge(Math.min(u.s,l.s)<=d.s),Ge(d.s<=Math.max(a.s,o.s)),Ue.vertLeq(d,e.event)&&(d.s=e.event.s,d.t=e.event.t),f=Ue.vertLeq(o,a)?o:a,Ue.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),Ue.vertEq(d,o)||Ue.vertEq(d,a)?(r.checkForRightSplice(e,t),!1):!Ue.vertEq(l,e.event)&&Ue.edgeSign(l,e.event,d)>=0||!Ue.vertEq(u,e.event)&&Ue.edgeSign(u,e.event,d)<=0?u===e.event?(e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Sym,i),t=r.topLeftRegion(e,t),i=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),n),r.addRightEdges(e,t,i.Oprev,i,i,!0),!0):l===e.event?(e.mesh.splitEdge(s.Sym),e.mesh.splice(i.Lnext,s.Oprev),n=t,t=r.topRightRegion(t),m=r.regionBelow(t).eUp.Rprev,n.eUp=s.Oprev,s=r.finishLeftRegions(e,n,null),r.addRightEdges(e,t,s.Onext,i.Rprev,m,!0),!0):(Ue.edgeSign(l,e.event,d)>=0&&(r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),i.Org.s=e.event.s,i.Org.t=e.event.t),Ue.edgeSign(u,e.event,d)<=0&&(t.dirty=n.dirty=!0,e.mesh.splitEdge(s.Sym),s.Org.s=e.event.s,s.Org.t=e.event.t),!1):(e.mesh.splitEdge(i.Sym),e.mesh.splitEdge(s.Sym),e.mesh.splice(s.Oprev,i),i.Org.s=d.s,i.Org.t=d.t,i.Org.pqHandle=e.pq.insert(i.Org),r.getIntersectData(e,i.Org,o,l,a,u),r.regionAbove(t).dirty=t.dirty=n.dirty=!0,!1)},r.walkDirtyRegions=function(e,t){for(var n=r.regionBelow(t),i,s;;){for(;n.dirty;)t=n,n=r.regionBelow(n);if(!t.dirty&&(n=t,t=r.regionAbove(t),t===null||!t.dirty))return;if(t.dirty=!1,i=t.eUp,s=n.eUp,i.Dst!==s.Dst&&r.checkForLeftSplice(e,t)&&(n.fixUpperEdge?(r.deleteRegion(e,n),e.mesh.delete(s),n=r.regionBelow(t),s=n.eUp):t.fixUpperEdge&&(r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n),i=t.eUp)),i.Org!==s.Org)if(i.Dst!==s.Dst&&!t.fixUpperEdge&&!n.fixUpperEdge&&(i.Dst===e.event||s.Dst===e.event)){if(r.checkForIntersect(e,t))return}else r.checkForRightSplice(e,t);i.Org===s.Org&&i.Dst===s.Dst&&(r.addWinding(s,i),r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n))}},r.connectRightVertex=function(e,t,n){var i,s=n.Onext,o=r.regionBelow(t),a=t.eUp,l=o.eUp,u=!1;if(a.Dst!==l.Dst&&r.checkForIntersect(e,t),Ue.vertEq(a.Org,e.event)&&(e.mesh.splice(s.Oprev,a),t=r.topLeftRegion(e,t),s=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),o),u=!0),Ue.vertEq(l.Org,e.event)&&(e.mesh.splice(n,l.Oprev),n=r.finishLeftRegions(e,o,null),u=!0),u){r.addRightEdges(e,t,n.Onext,s,s,!0);return}Ue.vertLeq(l.Org,a.Org)?i=l.Oprev:i=a,i=e.mesh.connect(n.Lprev,i),r.addRightEdges(e,t,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,r.walkDirtyRegions(e,t)},r.connectLeftDegenerate=function(e,t,n){var i,s,o,a,l;if(i=t.eUp,Ue.vertEq(i.Org,n)){Ge(!1),r.spliceMergeVertices(e,i,n.anEdge);return}if(!Ue.vertEq(i.Dst,n)){e.mesh.splitEdge(i.Sym),t.fixUpperEdge&&(e.mesh.delete(i.Onext),t.fixUpperEdge=!1),e.mesh.splice(n.anEdge,i),r.sweepEvent(e,n);return}Ge(!1),t=r.topRightRegion(t),l=r.regionBelow(t),o=l.eUp.Sym,s=a=o.Onext,l.fixUpperEdge&&(Ge(s!==o),r.deleteRegion(e,l),e.mesh.delete(o),o=s.Oprev),e.mesh.splice(n.anEdge,o),Ue.edgeGoesLeft(s)||(s=null),r.addRightEdges(e,t,o.Onext,a,s,!0)},r.connectLeftVertex=function(e,t){var n,i,s,o,a,l,u=new Yg;if(u.eUp=t.anEdge.Sym,n=e.dict.search(u).key,i=r.regionBelow(n),!!i){if(o=n.eUp,a=i.eUp,Ue.edgeSign(o.Dst,t,o.Org)===0){r.connectLeftDegenerate(e,n,t);return}if(s=Ue.vertLeq(a.Dst,o.Dst)?n:i,n.inside||s.fixUpperEdge){if(s===n)l=e.mesh.connect(t.anEdge.Sym,o.Lnext);else{var c=e.mesh.connect(a.Dnext,t.anEdge);l=c.Sym}s.fixUpperEdge?r.fixUpperEdge(e,s,l):r.computeWinding(e,r.addRegionBelow(e,n,l)),r.sweepEvent(e,t)}else r.addRightEdges(e,n,t.anEdge,t.anEdge,null,!0)}},r.sweepEvent=function(e,t){e.event=t,r.debugEvent(e);for(var n=t.anEdge;n.activeRegion===null;)if(n=n.Onext,n===t.anEdge){r.connectLeftVertex(e,t);return}var i=r.topLeftRegion(e,n.activeRegion);Ge(i!==null);var s=r.regionBelow(i),o=s.eUp,a=r.finishLeftRegions(e,s,null);a.Onext===o?r.connectRightVertex(e,i,a):r.addRightEdges(e,i,a.Onext,o,o,!0)},r.addSentinel=function(e,t,n,i){var s=new Yg,o=e.mesh.makeEdge();o.Org.s=n,o.Org.t=i,o.Dst.s=t,o.Dst.t=i,e.event=o.Dst,s.eUp=o,s.windingNumber=0,s.inside=!1,s.fixUpperEdge=!1,s.sentinel=!0,s.dirty=!1,s.nodeUp=e.dict.insert(s)},r.initEdgeDict=function(e){e.dict=new mB(e,r.edgeLeq);var t=e.bmax[0]-e.bmin[0],n=e.bmax[1]-e.bmin[1],i=e.bmin[0]-t,s=e.bmax[0]+t,o=e.bmin[1]-n,a=e.bmax[1]+n;r.addSentinel(e,i,s,o),r.addSentinel(e,i,s,a)},r.doneEdgeDict=function(e){for(var t,n=0;(t=e.dict.min().key)!==null;)t.sentinel||(Ge(t.fixUpperEdge),Ge(++n===1)),Ge(t.windingNumber===0),r.deleteRegion(e,t)},r.removeDegenerateEdges=function(e){var t,n,i,s=e.mesh.eHead;for(t=s.next;t!==s;t=n)n=t.next,i=t.Lnext,Ue.vertEq(t.Org,t.Dst)&&t.Lnext.Lnext!==t&&(r.spliceMergeVertices(e,i,t),e.mesh.delete(t),t=i,i=t.Lnext),i.Lnext===t&&(i!==t&&((i===n||i===n.Sym)&&(n=n.next),e.mesh.delete(i)),(t===n||t===n.Sym)&&(n=n.next),e.mesh.delete(t))},r.initPriorityQ=function(e){var t,n,i,s=0;for(i=e.mesh.vHead,n=i.next;n!==i;n=n.next)s++;for(s+=8,t=e.pq=new pB(s,Ue.vertLeq),i=e.mesh.vHead,n=i.next;n!==i;n=n.next)n.pqHandle=t.insert(n);return n!==i?!1:(t.init(),!0)},r.donePriorityQ=function(e){e.pq=null},r.removeDegenerateFaces=function(e,t){var n,i,s;for(n=t.fHead.next;n!==t.fHead;n=i)i=n.next,s=n.anEdge,Ge(s.Lnext!==s),s.Lnext.Lnext===s&&(r.addWinding(s.Onext,s),e.mesh.delete(s));return!0},r.computeInterior=function(e,t){t===void 0&&(t=!0);var n,i;if(r.removeDegenerateEdges(e),!r.initPriorityQ(e))return!1;for(r.initEdgeDict(e);(n=e.pq.extractMin())!==null;){for(;i=e.pq.min(),!(i===null||!Ue.vertEq(i,n));)i=e.pq.extractMin(),r.spliceMergeVertices(e,n.anEdge,i.anEdge);r.sweepEvent(e,n)}return e.event=e.dict.min().key.eUp.Org,r.debugEvent(e),r.doneEdgeDict(e),r.donePriorityQ(e),r.removeDegenerateFaces(e,e.mesh)?(t&&e.mesh.check(),!0):!1},r}(),yB=function(){function r(){this.mesh=new V_,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Bt.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return r.prototype.dot_=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},r.prototype.normalize_=function(e){var t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2];if(!t)throw"Zero-size vector!";t=Math.sqrt(t),e[0]/=t,e[1]/=t,e[2]/=t},r.prototype.longAxis_=function(e){var t=0;return Math.abs(e[1])>Math.abs(e[0])&&(t=1),Math.abs(e[2])>Math.abs(e[t])&&(t=2),t},r.prototype.computeNormal_=function(e){var t,n,i,s,o,a,l=[0,0,0],u=[0,0,0],c=[0,0,0],h=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],p=this.mesh.vHead;t=p.next;for(var g=0;g<3;++g)s=t.coords[g],u[g]=s,m[g]=t,l[g]=s,f[g]=t;for(t=p.next;t!==p;t=t.next)for(var y=0;y<3;++y)s=t.coords[y],s<u[y]&&(u[y]=s,m[y]=t),s>l[y]&&(l[y]=s,f[y]=t);var x=0;if(l[1]-u[1]>l[0]-u[0]&&(x=1),l[2]-u[2]>l[x]-u[x]&&(x=2),u[x]>=l[x]){e[0]=0,e[1]=0,e[2]=1;return}for(a=0,n=m[x],i=f[x],c[0]=n.coords[0]-i.coords[0],c[1]=n.coords[1]-i.coords[1],c[2]=n.coords[2]-i.coords[2],t=p.next;t!==p;t=t.next)h[0]=t.coords[0]-i.coords[0],h[1]=t.coords[1]-i.coords[1],h[2]=t.coords[2]-i.coords[2],d[0]=c[1]*h[2]-c[2]*h[1],d[1]=c[2]*h[0]-c[0]*h[2],d[2]=c[0]*h[1]-c[1]*h[0],o=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],o>a&&(a=o,e[0]=d[0],e[1]=d[1],e[2]=d[2]);a<=0&&(e[0]=e[1]=e[2]=0,e[this.longAxis_(c)]=1)},r.prototype.checkOrientation_=function(){for(var e=this.mesh.fHead,t,n=this.mesh.vHead,i,s=0,o=e.next;o!==e;o=o.next)if(i=o.anEdge,!(i.winding<=0))do s+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==o.anEdge);if(s<0){for(t=n.next;t!==n;t=t.next)t.t=-t.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},r.prototype.projectPolygon_=function(){var e=this.mesh.vHead,t=[0,0,0],n,i,s=!1;t[0]=this.normal[0],t[1]=this.normal[1],t[2]=this.normal[2],!t[0]&&!t[1]&&!t[2]&&(this.computeNormal_(t),s=!0),n=this.sUnit,i=this.tUnit;var o=this.longAxis_(t);n[o]=0,n[(o+1)%3]=1,n[(o+2)%3]=0,i[o]=0,i[(o+1)%3]=0,i[(o+2)%3]=t[o]>0?1:-1;for(var a=e.next;a!==e;a=a.next)a.s=this.dot_(a.coords,n),a.t=this.dot_(a.coords,i);s&&this.checkOrientation_();for(var l=!0,u=e.next;u!==e;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},r.prototype.addWinding_=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.prototype.tessellateMonoRegion_=function(e,t){var n,i;if(n=t.anEdge,!(n.Lnext!==n&&n.Lnext.Lnext!==n))throw"Mono region invalid";for(;Ue.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;Ue.vertLeq(n.Org,n.Dst);n=n.Lnext);i=n.Lprev;for(var s=void 0;n.Lnext!==i;)if(Ue.vertLeq(n.Dst,i.Org)){for(;i.Lnext!==n&&(Ue.edgeGoesLeft(i.Lnext)||Ue.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)s=e.connect(i.Lnext,i),i=s.Sym;i=i.Lprev}else{for(;i.Lnext!==n&&(Ue.edgeGoesRight(n.Lprev)||Ue.edgeSign(n.Dst,n.Org,n.Lprev.Org)>=0);)s=e.connect(n,n.Lprev),n=s.Sym;n=n.Lnext}if(i.Lnext===n)throw"Mono region invalid";for(;i.Lnext.Lnext!==n;)s=e.connect(i.Lnext,i),i=s.Sym;return!0},r.prototype.tessellateInterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)if(t=n.next,n.inside&&!this.tessellateMonoRegion_(e,n))return!1;return!0},r.prototype.discardExterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)t=n.next,n.inside||e.zapFace(n)},r.prototype.setWindingNumber_=function(e,t,n){for(var i,s=e.eHead.next;s!==e.eHead;s=i)i=s.next,s.Rface.inside!==s.Lface.inside?s.winding=s.Lface.inside?t:-t:n?e.delete(s):s.winding=0},r.prototype.getNeighbourFace_=function(e){return!e.Rface||!e.Rface.inside?-1:e.Rface.n},r.prototype.outputPolymesh_=function(e,t,n,i){var s,o=0,a=0,l;n>3&&e.mergeConvexFaces(n);for(var u=e.vHead.next;u!==e.vHead;u=u.next)u.n=-1;for(var c=e.fHead.next;c!==e.fHead;c=c.next)if(c.n=-1,!!c.inside){s=c.anEdge,l=0;do{var u=s.Org;u.n===-1&&(u.n=a,a++),l++,s=s.Lnext}while(s!==c.anEdge);if(l>n)throw"Face vertex greater that support polygon";c.n=o,++o}this.elementCount=o,t===dn.CONNECTED_POLYGONS&&(o*=2),this.elements=[],this.elements.length=o*n,this.vertexCount=a,this.vertices=[],this.vertices.length=a*i,this.vertexIndices=[],this.vertexIndices.length=a;for(var u=e.vHead.next;u!==e.vHead;u=u.next)if(u.n!==-1){var h=u.n*i;this.vertices[h+0]=u.coords[0],this.vertices[h+1]=u.coords[1],i>2&&(this.vertices[h+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var d=0,c=e.fHead.next;c!==e.fHead;c=c.next)if(!!c.inside){s=c.anEdge,l=0;do{var u=s.Org;this.elements[d++]=u.n,l++,s=s.Lnext}while(s!==c.anEdge);for(var f=l;f<n;++f)this.elements[d++]=-1;if(t===dn.CONNECTED_POLYGONS){s=c.anEdge;do this.elements[d++]=this.getNeighbourFace_(s),s=s.Lnext;while(s!==c.anEdge);for(var m=l;m<n;++m)this.elements[d++]=-1}}},r.prototype.outputContours_=function(e,t){var n,i,s=0,o=0;this.vertexCount=0,this.elementCount=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){i=n=a.anEdge;do this.vertexCount++,n=n.Lnext;while(n!==i);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*t,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;s=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){o=0,i=n=a.anEdge;do this.vertices[l++]=n.Org.coords[0],this.vertices[l++]=n.Org.coords[1],t>2&&(this.vertices[l++]=n.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(n):n.Org.idx,o++,n=n.Lnext;while(n!==i);this.elements[c++]=s,this.elements[c++]=o,s+=o}},r.prototype.addContour=function(e,t){this.mesh===null&&(this.mesh=new V_),e<2&&(e=2),e>3&&(e=3);for(var n=null,i=0;i<t.length;i+=e)n===null?(n=this.mesh.makeEdge(),this.mesh.splice(n,n.Sym)):(this.mesh.splitEdge(n),n=n.Lnext),n.Org.coords[0]=t[i+0],n.Org.coords[1]=t[i+1],e>2?n.Org.coords[2]=t[i+2]:n.Org.coords[2]=0,n.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(n),n.winding=1,n.Sym.winding=-1},r.prototype.tesselate=function(e,t,n,i,s,o){if(e===void 0&&(e=Bt.ODD),t===void 0&&(t=dn.POLYGONS),o===void 0&&(o=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,s&&(this.normal[0]=s[0],this.normal[1]=s[1],this.normal[2]=s[2]),this.windingRule=e,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),gB.computeInterior(this,o);var a=this.mesh;return t===dn.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),o&&a.check(),t===dn.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,t,n,i),!0},r}();function Co(r){var e=r.windingRule,t=e===void 0?Bt.ODD:e,n=r.elementType,i=n===void 0?dn.POLYGONS:n,s=r.polySize,o=s===void 0?3:s,a=r.vertexSize,l=a===void 0?2:a,u=r.normal,c=u===void 0?[0,0,1]:u,h=r.contours,d=h===void 0?[]:h,f=r.strict,m=f===void 0?!0:f,p=r.debug,g=p===void 0?!1:p;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var y=new yB;r.edgeCreateCallback&&(y.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(y.vertexIdCallback=r.vertexIdCallback);for(var x=0;x<d.length;x++)y.addContour(l||2,d[x]);return y.tesselate(t,i,o,l,c,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:g?y.mesh:void 0}}}var eX=Bt.ODD,tX=Bt.NONZERO,nX=Bt.POSITIVE,rX=Bt.NEGATIVE,iX=Bt.ABS_GEQ_TWO,sX=dn.POLYGONS,oX=dn.CONNECTED_POLYGONS,aX=dn.BOUNDARY_CONTOURS;var dl=class extends Pe{constructor(t,n=12,i={}){super();this.type="ShapeGeometry";this.windingRule=Bt.ODD;this.elementType=dn.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=t,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:Bt.ODD,elementType:dn.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let s=this._shape.extractShapePointsToFlatArray([],this._curveSegments),o=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,u=!0,c,h;for(let m=0,p=s.length/2;m<p;m++){let g=m*2,y=s[g+0],x=s[g+1];if(c!==void 0&&y!==c&&(l=!1),h!==void 0&&x!==h&&(u=!1),c=y,h=x,!l&&!u)break}!l&&!u&&(a=Co({contours:[s,...o],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new je(new Float32Array(d*3),3),this._normalAttribute=new je(new Float32Array(d*3),3),this._uvAttribute=new je(new Float32Array(d*2),2),this._indexAttribute=new je(new Uint32Array(f*3),1),a){let m=1/0,p=-1/0,g=1/0,y=-1/0;for(let b=0,_=d;b<_;b++){let A=b*2,M=a.vertices[A+0],v=a.vertices[A+1];M<m&&(m=M),M>p&&(p=M),v<g&&(g=v),v>y&&(y=v)}let x=p-m,w=y-g;for(let b=0,_=d;b<_;b++){let A=b*2,M=a.vertices[A+0],v=a.vertices[A+1],T=(M-m)/x,E=(v-g)/w;this._positionAttribute.setXYZ(b,M,v,0),this._normalAttribute.setXYZ(b,0,0,1),this._uvAttribute.setXY(b,T,E)}for(let b=0,_=f;b<_;b++){let A=b*3,M=a.elements[A+0],v=a.elements[A+1],T=a.elements[A+2];this._indexAttribute.setX(A+0,M),this._indexAttribute.setX(A+1,v),this._indexAttribute.setX(A+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let t=new dl(this._shape,this._curveSegments);return t.userData=Fc(this.userData),t}};var sf=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let n=e*sf.eSize;this.buffer=new ArrayBuffer(n);let i=Float32Array.BYTES_PER_ELEMENT,s=0;this.positions=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.normals=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.uvs=new Float32Array(this.buffer,s*i,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let n=e*sf.eSize,i=new ArrayBuffer(n),s=Float32Array.BYTES_PER_ELEMENT,o=0,a=new Float32Array(i,o*s,3*e);o+=3*e;let l=new Float32Array(i,o*s,3*e);o+=3*e;let u=new Float32Array(i,o*s,2*e);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=i,this.positions=a,this.normals=l,this.uvs=u,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let i=this.capacity;for(;t>i;)i*=2;this.realloc(i)}let n=this.size;return this.size=t,n}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},su=sf;su.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Qg=(r,e)=>([t,n])=>(n<t&&(n+=e),(r>=t?r:r+e)<=n),fl=class extends Pe{constructor(t,n,i=0,s=12,o=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=t,this._depth=n,this._bevel=i,this._curveSegments=s,this._bevelSegmentsInput=o,i<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(i,n/2-1e-12),this._bevelSegments=Math.floor(o));let a=this._shape.extractShapePointsToFlatArray([],s),l=this._shape.shapeHoles.map(M=>{let v=M.extractShapePointsToFlatArray([],s),T=[];for(let E=v.length-1;E>=1;E-=2){let C=v[E-1],L=v[E-0];T.push(C,L)}return T}),u=Co({windingRule:Bt.ODD,elementType:dn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),c=Co({windingRule:Bt.ODD,elementType:dn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!u)throw new Error("error generating geometry");let h=u.elementCount;if(c){u.elementCount+=c.elementCount;for(let M=0;M<c.elements.length;M++){let v=c.elements[M],T=M%2===0?u.vertexCount:0;u.elements.push(v+T)}for(let M=0;M<c.vertexIndices.length;M++){let v=c.vertexIndices[M],T=u.vertexCount;u.vertexIndices.push(v+T)}for(let M=0;M<c.vertices.length;M++){let v=c.vertices[M];u.vertices.push(v)}}let d=1/0,f=-1/0,m=1/0,p=-1/0;for(let M=0,v=u.vertexCount;M<v;M++){let T=M*2,E=u.vertices[T+0],C=u.vertices[T+1];E<d&&(d=E),E>f&&(f=E),C<m&&(m=C),C>p&&(p=C)}this._minX=d,this._minY=m,this._width=f-d,this._height=p-m;let g=u.vertexCount*2*(2+this._bevelSegments);this._buffer=new su(g);let y=[],x=[];for(let M=u.elementCount-1;M>=0;M--){let v=M>=h,T=M*2,E=u.elements[T+0],C=u.elements[T+1],L=E+C,R={start:E,count:C,normals:[],continuous:[],concave:[]},O=E,W=L-1,j=E+1,Z=this._shape.roundedCurves.length;do{let G=O-E,B=u.vertices[W*2+0],k=u.vertices[W*2+1],H=u.vertices[O*2+0],X=u.vertices[O*2+1],q=u.vertices[j*2+0],ae=u.vertices[j*2+1],$=H-B,te=X-k,V=Math.sqrt($*$+te*te);$/=V,te/=V;let le=H-q,ce=X-ae,oe=Math.sqrt(le*le+ce*ce);le/=oe,ce/=oe,R.normals[G*2+0]=-ce,R.normals[G*2+1]=le,R.concave[G]=$*ce-te*le>0;let de=u.vertexIndices[O];if(Array.isArray(de))R.continuous[G]=!1;else{let[ge,fe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(fe>0&&fe<1)R.continuous[G]=!0;else{let Te=fe===1?ge+1:ge-1;Te=(Te+Z)%Z;let Ce=fe===1?0:1,ye=this._shape.roundedCurves[ge].getTangent(fe),Ne=this._shape.roundedCurves[Te].getTangent(Ce);R.continuous[G]=ye.dot(Ne)>.95}}v&&(R.normals[G*2+0]*=-1,R.normals[G*2+1]*=-1),[W,O,j]=[O,j,j+1],j>=L&&(j-=C)}while(j!==E+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:u.vertices.slice(E*2,L*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((G,B)=>[B,B]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:u.vertices.slice(E*2,L*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,k=(1-Math.cos(B))*this._bevelSize,H=[],X=[],q=[],ae=[],$=0;for(let V=0;V<C;V++){let le=V*2,ce=(V-1+C)%C*2,oe=u.vertices[R.start*2+le+0],de=u.vertices[R.start*2+le+1],ge=-R.normals[ce+0]*k,fe=-R.normals[ce+1]*k,Te=-R.normals[le+0]*k,Ce=-R.normals[le+1]*k;if(R.concave[V]||!R.concave[V]&&v){let ye=Math.atan2(fe,ge),Ne=Math.atan2(Ce,Te);Ne>ye&&(Ne-=Math.PI*2);let dt=Ne-ye;if(R.continuous[V]||v){let P=ye+dt/2,D=Math.cos(P)*k,K=Math.sin(P)*k;H[2*$+0]=oe+D*(v?-1:1),H[2*$+1]=de+K*(v?-1:1),ae[$]=V,$++}else{let P=Math.max(1,Math.floor(s/4*Math.abs(dt)/Math.PI));for(let D=0;D<=P;D++){let K=ye+dt*(D/P),he=Math.cos(K)*k,pe=Math.sin(K)*k;H[2*$+0]=oe+he,H[2*$+1]=de+pe,ae[$]=V,$++}}}else H[2*$+0]=oe+ge,H[2*$+1]=de+fe,ae[$]=V,X[V]=$,$++,H[2*$+0]=oe,H[2*$+1]=de,ae[$]=V,$++,H[2*$+0]=oe+Te,H[2*$+1]=de+Ce,ae[$]=V,q[V]=$,$++}let te=Co({windingRule:Bt.POSITIVE,elementType:dn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[H],edgeCreateCallback:V=>{let ce=V.Org.idx,oe=ae[ce],de=ae[(ce+1)%ae.length];V.idx=[oe,de],V.Sym.idx=[de,oe]},vertexIdCallback:V=>{let le=V.Lprev.idx;return[le?le[1]:0,V.idx[0]]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!te.vertexCount)break;for(let V=0;V<te.vertexIndices.length;V++){let[le,ce]=te.vertexIndices[V];if(le===ce)continue;let oe=ce;ce<le&&(oe+=C);for(let de=le;de<oe;de++){let ge=de%C,fe=(de+1)%C;if(!R.continuous[ge]||!R.continuous[fe]){te.vertexIndices[V]=[le,ge],te.vertexIndices.splice(V+1,0,[fe,ce]),te.vertices.splice((V+1)*2,0,te.vertices[V*2],te.vertices[V*2+1]);break}}}Y.push({bevelI:G,angle:B,size:k,boundary:te,reverseMap:ae,insetPoints:H})}let z=(G,B,k)=>{let H=0,X=G.boundary.vertexIndices.length;for(;H<X&&k(G.boundary.vertexIndices[B]);)B=(B+1)%X,H++;return H},F=y.length;for(let G=1;G<Y.length;G++){let B=Y[G-1],k=Y[G],H=B.boundary.vertexIndices.length,X=k.boundary.vertexIndices.length;if(!H||!X)break;let q=R.concave.length,ae=0,$=Qg(ae,C);for(;!B.boundary.vertexIndices.filter($).length||!k.boundary.vertexIndices.filter($).length;)ae++,$=Qg(ae,C);let te=B.boundary.vertexIndices.findIndex($),V=k.boundary.vertexIndices.findIndex($);do te=(te+1)%H;while($(B.boundary.vertexIndices[te]));do V=(V+1)%X;while($(k.boundary.vertexIndices[V]));ae=(ae+1)%C;let le=ae,ce=this.buildBevelVert(R,B,(te-1+H)%H),oe=this.buildBevelVert(R,k,(V-1+X)%X),de=ce,ge=oe,fe,Te,Ce=!1;do{$=Qg(ae,C);let ye=z(B,te,$),Ne=z(k,V,$),dt=Ce;if(Ce=!1,ye&&!Ne){for(let P=0;P<ye;P++)fe=this.buildBevelVert(R,B,(te+P)%H,P/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe;Ce=!0}else if(!ye&&Ne)for(let P=0;P<Ne;P++)Te=this.buildBevelVert(R,k,(V+P)%X,P/(Ne-1)),y.push(ge.topN,de.topP,Te.topP),y.push(de.bottomP,ge.bottomN,Te.bottomP),ge=Te;else if(ye&&Ne)if(fe=this.buildBevelVert(R,B,te,0),Te=this.buildBevelVert(R,k,V,0),dt?(y.push(de.topN,Te.topP,ge.topN),y.push(de.topN,fe.topP,Te.topP),y.push(Te.bottomP,de.bottomN,ge.bottomN),y.push(Te.bottomP,fe.bottomP,de.bottomN)):(y.push(ge.topN,de.topN,fe.topP),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Te.bottomP)),de=fe,ge=Te,ye===Ne)for(let P=1;P<ye;P++)fe=this.buildBevelVert(R,B,(te+P)%H,P/(ye-1)),Te=this.buildBevelVert(R,k,(V+P)%X,P/(Ne-1)),y.push(de.topN,fe.topP,ge.topN),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Te.bottomP),de=fe,ge=Te;else if(ye>Ne){let P=ye/Ne,D=0;for(let K=1;K<ye;K++)fe=this.buildBevelVert(R,B,(te+K)%H,K/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe,K>(D+1)*P&&(D++,Te=this.buildBevelVert(R,k,(V+D)%X,D/(Ne-1)),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,ge.bottomN,Te.bottomP),ge=Te)}else{let P=Ne/ye,D=0;for(let K=1;K<Ne;K++)Te=this.buildBevelVert(R,k,(V+K)%X,K/(Ne-1)),y.push(ge.topN,fe.topP,Te.topP),y.push(fe.bottomP,ge.bottomN,Te.bottomP),ge=Te,K>(D+1)*P&&(D++,fe=this.buildBevelVert(R,B,(te+D)%H,D/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe)}te=(te+ye)%H,V=(V+Ne)%X,ae=(ae+1)%q}while(ae!==le)}{let G=Y[0];for(let B=0,k=G.boundary.vertexCount;B<k;B++){let H=this.buildBevelVert(R,G,B),X=this.buildBevelVert(R,G,(B+1)%k);y.push(X.topP,H.topN,H.bottomN),y.push(X.topP,H.bottomN,X.bottomP)}}if(v){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let k=y[B-2],H=y[B-1],X=y[B-0];G.push(X,H,k)}y.splice(F,y.length-F,...G)}if(v){let G=[];for(let B=Y[Y.length-1].boundary.vertices.length-1;B>=1;B-=2){let k=Y[Y.length-1].boundary.vertices[B-1],H=Y[Y.length-1].boundary.vertices[B-0];G.push(k,H)}x.push(G)}if(!v){let G=Y[Y.length-1],B=Co({windingRule:Y.length>1?Bt.POSITIVE:Bt.ODD,elementType:dn.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...x]});if(!B)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let k=0;k<B.elementCount*3;k+=3){let H=this.buildSurfaceVert(B,B.elements[k+0]),X=this.buildSurfaceVert(B,B.elements[k+1]),q=this.buildSurfaceVert(B,B.elements[k+2]);y.push(H.top,X.top,q.top),y.push(q.bottom,X.bottom,H.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new je(Uint32Array.from(y),1),b=new je(this._buffer.positions,3),_=new je(this._buffer.normals,3),A=new je(this._buffer.uvs,2);b.needsUpdate=!0,_.needsUpdate=!0,A.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",_),this.setAttribute("uv",A),this.setIndex(w)}buildSurfaceVert(t,n){let i=n.toString();if(i in this.vertexCache)return this.vertexCache[i];let s=t.vertices[n*2+0],o=t.vertices[n*2+1],a=(s-this._minX)/this._width,l=(o-this._minY)/this._height,u=this._buffer.get(2),c=u*3,h=u*2,d={top:u+0,bottom:u+1};return this._buffer.positions[c+0]=s,this._buffer.positions[c+1]=o,this._buffer.positions[c+2]=this._depth,this._buffer.normals[c+0]=0,this._buffer.normals[c+1]=0,this._buffer.normals[c+2]=1,this._buffer.uvs[h+0]=a,this._buffer.uvs[h+1]=l,this._buffer.positions[c+3]=s,this._buffer.positions[c+4]=o,this._buffer.positions[c+5]=0,this._buffer.normals[c+3]=0,this._buffer.normals[c+4]=0,this._buffer.normals[c+5]=-1,this._buffer.uvs[h+2]=a,this._buffer.uvs[h+3]=l,this.vertexCache[i]=d,d}buildBevelVert(t,n,i,s=1){let o=`${n.bevelI}:${i}`;if(o in this.vertexCache)return this.vertexCache[o];let[a,l]=n.boundary.vertexIndices[i],u,c,h,d;a!==l?(c=a,u=l,d=!1,h=t.continuous[c]&&t.continuous[u]):(u=a,c=(u-1+t.count)%t.count,d=t.concave[u]&&n.bevelI>0,h=t.continuous[u]||d);let f=Math.cos(n.angle),m=Math.sin(n.angle),p=i*2,g=u*2,y=c*2,x=n.boundary.vertices[p+0],w=n.boundary.vertices[p+1],b=(1-m)*this._bevelSize,_=(x-this._minX)/this._width,A=(w-this._minY)/this._height,M=t.normals[g+0],v=t.normals[g+1],T=t.normals[y+0],E=t.normals[y+1];if(d){let W=T-M,j=E-v;M=M+W*(1-s),v=v+j*(1-s);let Z=Math.sqrt(M*M+v*v);M/=Z,v/=Z}let C=this._buffer.get(h?2:4),L=C*3,R=C*2,O={i,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[L+0]=x,this._buffer.positions[L+1]=w,this._buffer.positions[L+2]=this._depth-b,this._buffer.normals[L+0]=M*f,this._buffer.normals[L+1]=v*f,this._buffer.normals[L+2]=m,this._buffer.uvs[R+0]=_,this._buffer.uvs[R+1]=A,this._buffer.positions[L+3]=x,this._buffer.positions[L+4]=w,this._buffer.positions[L+5]=b,this._buffer.normals[L+3]=M*f,this._buffer.normals[L+4]=v*f,this._buffer.normals[L+5]=-m,this._buffer.uvs[R+2]=A,this._buffer.uvs[R+3]=_,h||(C+=2,L+=6,R+=4,O.topP=C+0,O.bottomP=C+1,this._buffer.positions[L+0]=x,this._buffer.positions[L+1]=w,this._buffer.positions[L+2]=this._depth-b,this._buffer.normals[L+0]=T*f,this._buffer.normals[L+1]=E*f,this._buffer.normals[L+2]=m,this._buffer.uvs[R+0]=_,this._buffer.uvs[R+1]=A,this._buffer.positions[L+3]=x,this._buffer.positions[L+4]=w,this._buffer.positions[L+5]=b,this._buffer.normals[L+3]=T*f,this._buffer.normals[L+4]=E*f,this._buffer.normals[L+5]=-m,this._buffer.uvs[R+2]=A,this._buffer.uvs[R+3]=_),this.vertexCache[o]=O,O}clone(){let t=new fl(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return t.userData=Fc(this.userData),t}};var qn=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters),n=Math.abs(t.width),i=Math.abs(t.height??t.width),s=Math.abs(t.depth??0),o=r.shape??e?.shape,a=o?.roundness??t.roundness;o!==void 0&&(o instanceof vt?(o.width!==n||o.height!==i)&&o.applySize(n,i):o=new vt(n,i).fromJSON(o),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&o.update(!1));let l=o??new vt(n,i);return{parameters:Object.assign(t,{width:n,height:i,depth:s,roundness:a}),shape:l}}static build(r){let{depth:e,extrudeBevelSize:t,extrudeBevelSegments:n,subdivisions:i,roundness:s}=r.parameters;r.shape.roundness=s;let o;return e<=0?o=new dl(r.shape,i):o=new fl(r.shape,e,t,i,n),Object.assign(o,{userData:{...r,type:"VectorGeometry"}})}};var X_=Math.PI*2,Y_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t,spikes:n,angle:i,innerRadius:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}=r.parameters,u=r.shape,c=e*.5,h=t*.5,d=vB(u,c,h,i*Math.PI/180,n,s);u.isClosed=!0,u.update();let f=qn.create({shape:u,parameters:{subdivisions:d,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(f,{userData:{...r,type:"EllipseGeometry"}})}};function vB(r,e,t,n,i,s){if(n>=X_)return i>30||i%4===0?(bB(r,e,t,s),Math.round(i/4)):q_(r,n,i,e,t,s);let o={x:0,y:t},a=n+Math.PI*.5,l={x:Math.cos(a)*e,y:Math.sin(a)*t},u=k_({px:o.x,py:o.y,cx:l.x,cy:l.y,rx:e,ry:t,largeArcFlag:n>Math.PI,sweepFlag:!0});return i>30||i%u.length===0?xB(r,o.x,o.y,u,i,e,t,s):q_(r,n,i,e,t,s)}function xB(r,e,t,n,i,s,o,a){let l=Math.round(i/n.length);r.addPoint(pl(e,t));for(let u=0,c=n.length;u<c;u++){let h=n[u],d=r.points[u],f=pl(h.x,h.y);d.controls[1].position.set(h.x1,h.y1),f.controls[0].position.set(h.x2,h.y2),r.addPoint(f)}return a>0?Q_(r,s,o,a):r.addPoint(pl(0,0)),l}function q_(r,e,t,n,i,s){let o=-e/t;for(let a=0;a<=t;a++){let l=o*a,u=Math.sin(l)*n,c=Math.cos(l)*i;r.addPoint(pl(u,c))}return e<X_?s>0?Q_(r,n,i,s):r.addPoint(pl(0,0)):(r.removePoint(r.points[r.points.length-1]),s>0&&Z_(r,n,i,s)),1}function bB(r,e,t,n=0,i=0,s=0){let o=.5522847498,a=e*o,l=t*o;r.addPoint(of(i-e,s,i-e,s-l,i-e,s+l)),r.addPoint(of(i,s+t,i-a,s+t,i+a,s+t)),r.addPoint(of(i+e,s,i+e,s+l,i+e,s-l)),r.addPoint(of(i,s-t,i+a,s-t,i-a,s-t)),n>0&&Z_(r,e,t,n)}function pl(r,e){return new Vr(Je.generateUUID(),new N(r,e))}function of(r,e,t,n,i,s){let o=pl(r,e);return o.controls[0].position.set(t,n),o.controls[1].position.set(i,s),o}function Q_(r,e,t,n){K_(r,e,t,n).forEach(s=>r.addPoint(s))}function Z_(r,e,t,n){let i=K_(r,e,t,n),s=new vt;i.forEach(o=>s.addPoint(o)),s.isClosed=!0,r.shapeHoles.push(s)}function K_(r,e,t,n){let i=n*e/100,s=i*(Math.abs(t)/Math.abs(e)),o=new N(i/e,s/t),a=r.points.map(l=>{let u=l.clone();return u.uuid=Je.generateUUID(),u}).reverse();return a.forEach(l=>{l.position.multiply(o);let u=l.controls[0].position.clone().multiply(o),c=l.controls[1].position.clone().multiply(o);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),a}var J_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},r.parameters),n=Math.abs(t.width),i=Math.abs(t.height??n),s=Math.abs(t.depth??n),o=Math.abs(Math.min(n,s))/2;return{parameters:Object.assign(t,{width:n,height:i,depth:s,radius:o,segments:Math.round(t.segments),pathSegments:Math.round(t.pathSegments),cornerSegments:Math.round(t.cornerSegments)})}}static build(r){let{width:e,height:t,depth:n,radius:i,revolutions:s,segments:o,pathRadius:a,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:h}=r.parameters,d=new ou(!1,e,t,n,i,s,o,a,l,u,c,h);return Object.assign(d,{userData:{...r,type:"HelixGeometry"}})}},ou=class extends Pe{constructor(e=!0,t=1,n=1,i=1,s=1,o=1,a=1,l=1,u=1,c=1,h=1,d=1){super();let f=e&&o===1;f&&(d=0),h>100&&(h=100);let m=()=>new S,p=new S,g=m(),y=m(),x=m(),w,b,_,A,M,v,T,E,C=m(),L=m(),R=m(),O=m(),W=m(),j=m(),Z=m(),Y=m(),z=n-2*l+.001,F=z/o,G=Math.ceil(a*o),B=G+1,k=z/G,H=-z/2,X=c+1,q=2*Math.PI/c,ae=Math.PI/2/d,$=.01,te=Math.min((1-h/100)*l,l-$),V=l-te,le=0,ce=2,oe=d*ce+ce,de=X*oe/ce,ge=de+X*B,fe=X*(B+oe),[Te,Ce,ye]=[3,3,2].map(ve=>Array(fe*ve).fill(0)),Ne=[],dt=s-l;function P(ve,U){let xe=Math.PI/2;v=U*k,E=2*Math.PI*(v%F)/F+xe,v+=H,T=Math.sin(E)*dt,M=Math.cos(E)*dt,e?ve.set(M,T,v):ve.set(M,v,T)}P(p,-1e-10),P(g,0),C.copy(p),P(p,1);let D=p.distanceTo(g),K=V+te,he=D*G+2*K,pe=te,Ee=he-K;for(let ve=0;ve<=G;ve++){P(y,ve),Y.subVectors(y,C).normalize(),C.copy(y),j.copy(y).setComponent(+e+1,0).normalize(),Z.crossVectors(Y,j).normalize();let U=ve===0,xe=ve===G,Se=U?3*Math.PI/2:ae,Xe=U?pe:Ee,Le=U?X:ge,Ye=U?0:fe-X,be=Y.clone().multiplyScalar(U?-V:V).add(y),Qe=Y.clone().multiplyScalar(U?-1:1).normalize();for(let tt=0;tt<X;tt++){let ft=tt*q;if(L.addVectors(p.copy(j).multiplyScalar(l*Math.cos(ft)),g.copy(Z).multiplyScalar(l*Math.sin(ft))),R.copy(L).normalize(),U||xe){f||(le=Ye+tt,[0,1,2].forEach(wt=>{Te[le*3+wt]=be.getComponent(wt),Ce[le*3+wt]=Qe.getComponent(wt)}),ye[le*2]=+xe,ye[le*2+1]=tt/c),g.copy(R).multiplyScalar(te),x.addVectors(y,g);for(let wt=0;wt<d;wt++){let Yn=wt*ae+Se;O.addVectors(p.copy(Y).multiplyScalar(V*Math.sin(Yn)),g.copy(R).multiplyScalar(V*Math.cos(Yn))),W.copy(O).normalize(),g.addVectors(x,O),O.normalize(),le=Le+wt*X+tt,[0,1,2].forEach(zo=>{Te[le*3+zo]=g.getComponent(zo),Ce[le*3+zo]=W.getComponent(zo)});let Hu=+U+Math.sin(Yn);ye[le*2]=(Xe+V*Hu)/he,ye[le*2+1]=tt/c}}g.addVectors(y,L),le=de+ve*X+tt,[0,1,2].forEach(wt=>{Te[le*3+wt]=g.getComponent(wt),Ce[le*3+wt]=R.getComponent(wt)}),ye[le*2]=(K+ve*D)/he,ye[le*2+1]=tt/c}}let Fe=B+2*d+ce,re=1,[Be,Ie]=f?[re,re+B-1]:[0,Fe-1];for(let ve=Be;ve<=Ie-1;ve++){let U=f&&ve===Ie-1;for(let xe=0;xe<X-1;xe++)w=ve*X+xe,b=w+1,_=(U?xe:w)+X,A=(U?xe+1:b)+X,ve===0?Ne.push(b,A,_):ve===Fe-2?Ne.push(w,b,_):Ne.push(w,b,_,b,A,_)}this.setIndex(Ne),this.setAttribute("position",new _e(Te,3)),this.setAttribute("normal",new _e(Ce,3)),this.setAttribute("uv",new _e(ye,2))}};var $_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new au(e*.5,s,o):new ya(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"IcosahedronGeometry"}})}},au=class extends Ns{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],o=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(s,o,a,e,t,n),this.type=a}static fromJSON(e){return new au(e.radius,e.corner,e.cornerSides)}};var eS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){(r.parameters?.points??[]).forEach(n=>{Array.isArray(n)&&(n.x=n[0],n.y=n[1])});let t=Object.assign({},e?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{points:e,segments:t,verticalSegments:n}=r.parameters,i=new Nr;i.moveTo(e[0].x,e[0].y),i.bezierCurveTo(e[1].x,e[1].y,e[2].x,e[2].y,e[3].x,e[3].y);let s=new fa(i.extractPoints(n).shape,t);return s.rotateZ(Math.PI),Object.assign(s,{userData:{...r,type:"LatheGeometry"}})}};var hi=new Oe,Zg=new ot,af=new S,Fs=class extends Rt{constructor(){super(),this.uuid=Je.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(e){let t=new Gt().getNormalMatrix(e);for(let n=0,i=this.vertices.length;n<i;n++)this.vertices[n].applyMatrix4(e);for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];s.normal.applyMatrix3(t).normalize();for(let o=0,a=s.vertexNormals.length;o<a;o++)s.vertexNormals[o].applyMatrix3(t).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return hi.makeRotationX(e),this.applyMatrix4(hi),this}rotateY(e){return hi.makeRotationY(e),this.applyMatrix4(hi),this}rotateZ(e){return hi.makeRotationZ(e),this.applyMatrix4(hi),this}translate(e,t,n){return hi.makeTranslation(e,t,n),this.applyMatrix4(hi),this}scale(e,t,n){return hi.makeScale(e,t,n),this.applyMatrix4(hi),this}lookAt(e){return Zg.lookAt(e),Zg.updateMatrix(),this.applyMatrix4(Zg.matrix),this}fromBufferGeometry(e){let t=this,n=e.index!==null?e.index:void 0,i=e.attributes;if(i.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let s=i.position,o=i.normal,a=i.color,l=i.uv,u=i.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<s.count;d++)t.vertices.push(new S().fromBufferAttribute(s,d)),a!==void 0&&t.colors.push(new Re().fromBufferAttribute(a,d));function c(d,f,m,p){let g=a===void 0?[]:[t.colors[d].clone(),t.colors[f].clone(),t.colors[m].clone()],y=o===void 0?[]:[new S().fromBufferAttribute(o,d),new S().fromBufferAttribute(o,f),new S().fromBufferAttribute(o,m)],x=new ml(d,f,m,y,g,p);t.faces.push(x),l!==void 0&&t.faceVertexUvs[0].push([new N().fromBufferAttribute(l,d),new N().fromBufferAttribute(l,f),new N().fromBufferAttribute(l,m)]),u!==void 0&&t.faceVertexUvs[1].push([new N().fromBufferAttribute(u,d),new N().fromBufferAttribute(u,f),new N().fromBufferAttribute(u,m)])}let h=e.groups;if(h.length>0)for(let d=0;d<h.length;d++){let f=h[d],m=f.start,p=f.count;for(let g=m,y=m+p;g<y;g+=3)n!==void 0?c(n.getX(g),n.getX(g+1),n.getX(g+2),f.materialIndex):c(g,g+1,g+2,f.materialIndex)}else if(n!==void 0)for(let d=0;d<n.count;d+=3)c(n.getX(d),n.getX(d+1),n.getX(d+2));else for(let d=0;d<s.count;d+=3)c(d,d+1,d+2);return this.computeFaceNormals(),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(af).negate(),this.translate(af.x,af.y,af.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,n=t===0?1:1/t,i=new Oe;return i.set(n,0,0,-n*e.x,0,n,0,-n*e.y,0,0,n,-n*e.z,0,0,0,1),this.applyMatrix4(i),this}computeFaceNormals(){let e=new S,t=new S;for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=this.vertices[s.a],a=this.vertices[s.b],l=this.vertices[s.c];e.subVectors(l,a),t.subVectors(o,a),e.cross(t),e.normalize(),s.normal.copy(e)}}computeVertexNormals(e=!0){let t=new Array(this.vertices.length);for(let n=0,i=this.vertices.length;n<i;n++)t[n]=new S;if(e){let n=new S,i=new S;for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=this.vertices[a.a],u=this.vertices[a.b],c=this.vertices[a.c];n.subVectors(c,u),i.subVectors(l,u),n.cross(i),t[a.a].add(n),t[a.b].add(n),t[a.c].add(n)}}else{this.computeFaceNormals();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];t[s.a].add(s.normal),t[s.b].add(s.normal),t[s.c].add(s.normal)}}for(let n=0,i=this.vertices.length;n<i;n++)t[n].normalize();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=s.vertexNormals;o.length===3?(o[0].copy(t[s.a]),o[1].copy(t[s.b]),o[2].copy(t[s.c])):(o[0]=t[s.a].clone(),o[1]=t[s.b].clone(),o[2]=t[s.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let n=this.faces[e],i=n.vertexNormals;i.length===3?(i[0].copy(n.normal),i[1].copy(n.normal),i[2].copy(n.normal)):(i[0]=n.normal.clone(),i[1]=n.normal.clone(),i[2]=n.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.__originalFaceNormal?i.__originalFaceNormal.copy(i.normal):i.__originalFaceNormal=i.normal.clone(),i.__originalVertexNormals||(i.__originalVertexNormals=[]);for(let s=0,o=i.vertexNormals.length;s<o;s++)i.__originalVertexNormals[s]?i.__originalVertexNormals[s].copy(i.vertexNormals[s]):i.__originalVertexNormals[s]=i.vertexNormals[s].clone()}let e=new Fs;e.faces=this.faces;for(let t=0,n=this.morphTargets.length;t<n;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let s=this.morphNormals[t].faceNormals,o=this.morphNormals[t].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let u=new S,c={a:new S,b:new S,c:new S};s.push(u),o.push(c)}}let i=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=i.faceNormals[s],u=i.vertexNormals[s];l.copy(a.normal),u.a.copy(a.vertexNormals[0]),u.b.copy(a.vertexNormals[1]),u.c.copy(a.vertexNormals[2])}}for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.normal=i.__originalFaceNormal,i.vertexNormals=i.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new _n),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ln),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,n=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let i,s=this.vertices.length,o=this.vertices,a=e.vertices,l=this.faces,u=e.faces,c=this.colors,h=e.colors;t!==void 0&&(i=new Gt().getNormalMatrix(t));for(let d=0,f=a.length;d<f;d++){let p=a[d].clone();t!==void 0&&p.applyMatrix4(t),o.push(p)}for(let d=0,f=h.length;d<f;d++)c.push(h[d].clone());for(let d=0,f=u.length;d<f;d++){let m=u[d],p,g,y=m.vertexNormals,x=m.vertexColors,w=new ml(m.a+s,m.b+s,m.c+s);w.normal.copy(m.normal),i!==void 0&&w.normal.applyMatrix3(i).normalize();for(let b=0,_=y.length;b<_;b++)p=y[b].clone(),i!==void 0&&p.applyMatrix3(i).normalize(),w.vertexNormals.push(p);w.color.copy(m.color);for(let b=0,_=x.length;b<_;b++)g=x[b],w.vertexColors.push(g.clone());w.materialIndex=m.materialIndex+n,l.push(w)}for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let m=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let p=0,g=m.length;p<g;p++){let y=m[p],x=[];for(let w=0,b=y.length;w<b;w++)x.push(y[w].clone());this.faceVertexUvs[d].push(x)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},n=[],i=[],s=Math.pow(10,e);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],h=Math.round(c.x*s)+"_"+Math.round(c.y*s)+"_"+Math.round(c.z*s);t[h]===void 0?(t[h]=l,n.push(this.vertices[l]),i[l]=n.length-1):i[l]=i[t[h]]}let o=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=i[c.a],c.b=i[c.b],c.c=i[c.c];let h=[c.a,c.b,c.c];for(let d=0;d<3;d++)if(h[d]===h[(d+1)%3]){o.push(l);break}}for(let l=o.length-1;l>=0;l--){let u=o[l];this.faces.splice(u,1);for(let c=0,h=this.faceVertexUvs.length;c<h;c++)this.faceVertexUvs[c].splice(u,1)}let a=this.vertices.length-n.length;return this.vertices=n,a}setFromPoints(e){this.vertices=[];for(let t=0,n=e.length;t<n;t++){let i=e[t];this.vertices.push(new S(i.x,i.y,i.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let l=0;l<t;l++)e[l]._id=l;function n(l,u){return l.materialIndex-u.materialIndex}e.sort(n);let i=this.faceVertexUvs[0],s=this.faceVertexUvs[1],o,a;i&&i.length===t&&(o=[]),s&&s.length===t&&(a=[]);for(let l=0;l<t;l++){let u=e[l]._id;o&&o.push(i[u]),a&&a.push(s[u])}o&&(this.faceVertexUvs[0]=o),a&&(this.faceVertexUvs[1]=a)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let p in m)m[p]!==void 0&&(e[p]=m[p]);return e}let t=[];for(let m=0;m<this.vertices.length;m++){let p=this.vertices[m];t.push(p.x,p.y,p.z)}let n=[],i=[],s={},o=[],a={},l=[],u={};for(let m=0;m<this.faces.length;m++){let p=this.faces[m],g=!0,y=!1,x=this.faceVertexUvs[0][m]!==void 0,w=p.normal.length()>0,b=p.vertexNormals.length>0,_=p.color.r!==1||p.color.g!==1||p.color.b!==1,A=p.vertexColors.length>0,M=0;if(M=c(M,0,0),M=c(M,1,g),M=c(M,2,y),M=c(M,3,x),M=c(M,4,w),M=c(M,5,b),M=c(M,6,_),M=c(M,7,A),n.push(M),n.push(p.a,p.b,p.c),n.push(p.materialIndex),x){let v=this.faceVertexUvs[0][m];n.push(f(v[0]),f(v[1]),f(v[2]))}if(w&&n.push(h(p.normal)),b){let v=p.vertexNormals;n.push(h(v[0]),h(v[1]),h(v[2]))}if(_&&n.push(d(p.color)),A){let v=p.vertexColors;n.push(d(v[0]),d(v[1]),d(v[2]))}}function c(m,p,g){return g?m|1<<p:m&~(1<<p)}function h(m){let p=m.x.toString()+m.y.toString()+m.z.toString();return s[p]!==void 0||(s[p]=i.length/3,i.push(m.x,m.y,m.z)),s[p]}function d(m){let p=m.r.toString()+m.g.toString()+m.b.toString();return a[p]!==void 0||(a[p]=o.length,o.push(m.getHex())),a[p]}function f(m){let p=m.x.toString()+m.y.toString();return u[p]!==void 0||(u[p]=l.length/2,l.push(m.x,m.y)),u[p]}return e.data={},e.data.vertices=t,e.data.normals=i,o.length>0&&(e.data.colors=o),l.length>0&&(e.data.uvs=[l]),e.data.faces=n,e}clone(){return new Fs().copy(this)}copy(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;let t=e.vertices;for(let d=0,f=t.length;d<f;d++)this.vertices.push(t[d].clone());let n=e.colors;for(let d=0,f=n.length;d<f;d++)this.colors.push(n[d].clone());let i=e.faces;for(let d=0,f=i.length;d<f;d++)this.faces.push(i[d].clone());for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let m=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let p=0,g=m.length;p<g;p++){let y=m[p],x=[];for(let w=0,b=y.length;w<b;w++){let _=y[w];x.push(_.clone())}this.faceVertexUvs[d].push(x)}}let s=e.morphTargets;for(let d=0,f=s.length;d<f;d++){let m={};if(m.name=s[d].name,s[d].vertices!==void 0){m.vertices=[];for(let p=0,g=s[d].vertices.length;p<g;p++)m.vertices.push(s[d].vertices[p].clone())}if(s[d].normals!==void 0){m.normals=[];for(let p=0,g=s[d].normals.length;p<g;p++)m.normals.push(s[d].normals[p].clone())}this.morphTargets.push(m)}let o=e.morphNormals;for(let d=0,f=o.length;d<f;d++){let m={};if(o[d].vertexNormals!==void 0){m.vertexNormals=[];for(let p=0,g=o[d].vertexNormals.length;p<g;p++){let y=o[d].vertexNormals[p],x={};x.a=y.a.clone(),x.b=y.b.clone(),x.c=y.c.clone(),m.vertexNormals.push(x)}}if(o[d].faceNormals!==void 0){m.faceNormals=[];for(let p=0,g=o[d].faceNormals.length;p<g;p++)m.faceNormals.push(o[d].faceNormals[p].clone())}this.morphNormals.push(m)}let a=e.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[d].clone());let l=e.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let u=e.lineDistances;for(let d=0,f=u.length;d<f;d++)this.lineDistances.push(u[d]);let c=e.boundingBox;c!==null&&(this.boundingBox=c.clone());let h=e.boundingSphere;return h!==null&&(this.boundingSphere=h.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new Kg().fromGeometry(this),t=new Pe,n=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new je(n,3).copyVector3sArray(e.vertices)),e.normals.length>0){let i=new Float32Array(e.normals.length*3);t.setAttribute("normal",new je(i,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let i=new Float32Array(e.colors.length*3);t.setAttribute("color",new je(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let i=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new je(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new je(i,2).copyVector2sArray(e.uvs2))}t.groups=e.groups;for(let i in e.morphTargets){let s=[],o=e.morphTargets[i];for(let a=0,l=o.length;a<l;a++){let u=o[a],c=new _e(u.data.length*3,3);c.name=u.name,s.push(c.copyVector3sArray(u.data))}t.morphAttributes[i]=s}if(e.skinIndices.length>0){let i=new _e(e.skinIndices.length*4,4);t.setAttribute("skinIndex",i.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let i=new _e(e.skinWeights.length*4,4);t.setAttribute("skinWeight",i.copyVector4sArray(e.skinWeights))}return e.boundingSphere!==null&&(t.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new Pe,n=e.geometry;if(e.isPoints||e.isLine){let i=new _e(n.vertices.length*3,3),s=new _e(n.colors.length*3,3);if(t.setAttribute("position",i.copyVector3sArray(n.vertices)),t.setAttribute("color",s.copyColorsArray(n.colors)),n.lineDistances&&n.lineDistances.length===n.vertices.length){let o=new _e(n.lineDistances.length,1);t.setAttribute("lineDistance",o.copyArray(n.lineDistances))}n.boundingSphere!==null&&(t.boundingSphere=n.boundingSphere.clone()),n.boundingBox!==null&&(t.boundingBox=n.boundingBox.clone())}else e.isMesh&&(t=n.toBufferGeometry());return t}};Fs.prototype.isGeometry=!0;var Kg=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(e){let t=[],n,i,s,o=e.faces;for(i=0;i<o.length;i++){let a=o[i];a.materialIndex!==s&&(s=a.materialIndex,n!==void 0&&(n.count=i*3-n.start,t.push(n)),n={start:i*3,materialIndex:s})}n!==void 0&&(n.count=i*3-n.start,t.push(n)),this.groups=t}fromGeometry(e){let t=e.faces,n=e.vertices,i=e.faceVertexUvs,s=i[0]&&i[0].length>0,o=i[1]&&i[1].length>0,a=e.morphTargets,l=a.length,u;if(l>0){u=[];for(let y=0;y<l;y++)u[y]={name:a[y].name,data:[]};this.morphTargets.position=u}let c=e.morphNormals,h=c.length,d;if(h>0){d=[];for(let y=0;y<h;y++)d[y]={name:c[y].name,data:[]};this.morphTargets.normal=d}let f=e.skinIndices,m=e.skinWeights,p=f.length===n.length,g=m.length===n.length;n.length>0&&t.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<t.length;y++){let x=t[y];this.vertices.push(n[x.a],n[x.b],n[x.c]);let w=x.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let _=x.normal;this.normals.push(_,_,_)}let b=x.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let _=x.color;this.colors.push(_,_,_)}if(s===!0){let _=i[0][y];_!==void 0?this.uvs.push(_[0],_[1],_[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new N,new N,new N))}if(o===!0){let _=i[1][y];_!==void 0?this.uvs2.push(_[0],_[1],_[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new N,new N,new N))}for(let _=0;_<l;_++){let A=a[_].vertices;u[_].data.push(A[x.a],A[x.b],A[x.c])}for(let _=0;_<h;_++){let A=c[_].vertexNormals[y];d[_].data.push(A.a,A.b,A.c)}p&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),g&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),this}},ml=class{constructor(e,t,n,i,s,o=0){this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new S,this.vertexNormals=Array.isArray(i)?i:[],this.color=s&&s.isColor?s:new Re,this.vertexColors=Array.isArray(s)?s:[],this.materialIndex=o}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,n=e.vertexNormals.length;t<n;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,n=e.vertexColors.length;t<n;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}};var wB=["a","b","c"];function _B(r,e){switch(e){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function Jg(r,e,t){let n=Math.min(r,e),i=Math.max(r,e),s=n+"_"+i;return t.get(s)}function $g(r,e,t,n,i,s){let o=Math.min(r,e),a=Math.max(r,e),l=o+"_"+a,u;if(n.has(l))u=n.get(l);else{let c=t[o],h=t[a];u={a:c,b:h,newEdge:null,faces:[]},n.set(l,u)}u.faces.push(i),s[r].edges.push(u),s[e].edges.push(u)}function SB(r,e,t,n){let i,s,o;for(i=0,s=r.length;i<s;i++)t[i]={edges:[]};for(i=0,s=e.length;i<s;i++)o=e[i],$g(o.a,o.b,r,n,o,t),$g(o.b,o.c,r,n,o,t),$g(o.c,o.a,r,n,o,t)}function lf(r,e,t,n,i){r.push(new ml(e,t,n,void 0,void 0,i))}function gl(r,e){return Math.abs(e-r)/2+Math.min(r,e)}function cf(r,e,t,n){r.push([e.clone(),t.clone(),n.clone()])}var uf=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof Pe?e=new Fs().fromBufferGeometry(e):e=e.clone(),e.mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new S,n,i,s,o,a,l=e.vertices,u=e.faces,c=e.faceVertexUvs[0],h=c!==void 0&&c.length>0,d=[],f=new Map;SB(l,u,d,f);let m=[],p,g,y,x,w,b,_;for(let $ of Array.from(f.keys())){for(g=f.get($),y=new S,w=3/8,b=1/8,_=g.faces.length,_!=2&&(w=.5,b=0,_!=1),y.addVectors(g.a,g.b).multiplyScalar(w),t.set(0,0,0),o=0;o<_;o++){for(x=g.faces[o],a=0;a<3&&(p=l[_B(x,wB[a])],!(p!==g.a&&p!==g.b));a++);p&&t.add(p)}t.multiplyScalar(b),y.add(t),g.newEdge=m.length,m.push(y)}let A,M,v,T,E,C,L,R=[];for(i=0,s=l.length;i<s;i++){for(C=l[i],E=d[i].edges,n=E.length,n==3?A=3/16:n>3&&(A=3/(8*n)),M=1-n*Number(A),v=A,n<=2&&(n==2?(M=3/4,v=1/8):n==1||n==0),L=C.clone().multiplyScalar(M),t.set(0,0,0),o=0;o<n;o++)T=E[o],p=T.a!==C?T.a:T.b,t.add(p);t.multiplyScalar(Number(v)),L.add(t),R.push(L)}let O=R.concat(m),W=R.length,j,Z,Y,z=[],F=[],G,B,k,H,X=new N,q=new N,ae=new N;for(i=0,s=u.length;i<s;i++)x=u[i],j=Number(Jg(x.a,x.b,f).newEdge)+W,Z=Number(Jg(x.b,x.c,f).newEdge)+W,Y=Number(Jg(x.c,x.a,f).newEdge)+W,lf(z,j,Z,Y,x.materialIndex),lf(z,x.a,j,Y,x.materialIndex),lf(z,x.b,Z,j,x.materialIndex),lf(z,x.c,Y,Z,x.materialIndex),h&&(G=c[i],B=G[0],k=G[1],H=G[2],X.set(gl(B.x,k.x),gl(B.y,k.y)),q.set(gl(k.x,H.x),gl(k.y,H.y)),ae.set(gl(B.x,H.x),gl(B.y,H.y)),cf(F,X,q,ae),cf(F,B,X,ae),cf(F,k,q,X),cf(F,H,ae,q));e.vertices=O,e.faces=z,h&&(e.faceVertexUvs[0]=F)}};var fn=new S,tS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=r.geometry??e?.geometry??new Pe().copy(new Qn(100,100,100)),n;e===void 0?(t.computeBoundingBox(),t.boundingBox.getSize(fn),n={width:fn.x,height:fn.y,depth:fn.z,subdivisions:0}):n=e.parameters;let i={...n,...r.parameters};return{parameters:{width:Math.abs(i.width),height:Math.abs(i.height),depth:Math.abs(i.depth),subdivisions:Math.abs(i.subdivisions)},geometry:t}}static build(r){let{width:e,height:t,depth:n,subdivisions:i}=r.parameters,s=r.geometry??new Pe().copy(new Qn(100,100,100)),o=s.userData.parameters;o===void 0?(s.computeBoundingBox(),s.boundingBox.getSize(fn)):fn.set(o.width,o.height,o.depth),(e!==fn.x||t!==fn.y||n!==fn.z)&&s.scale(fn.x===0?1:e/fn.x,fn.y===0?1:t/fn.y,fn.z===0?1:n/fn.z);let a=s.originalGeometry;return i>0?(a===void 0||o?.subdivisions!==i)&&(a===void 0&&(a=s),s=new uf(i).modify(a).toBufferGeometry()):(a!==void 0&&(s=a),a=void 0,s.getAttribute("normal")===void 0&&s.computeVertexNormals()),a!==void 0&&Object.assign(s,{originalGeometry:a}),delete r.geometry,Object.assign(s,{userData:{...r,type:"NonParametricGeometry"}})}static loadFromUrl(r,e,t){new _a(t).load(r,i=>{let s=this.normalizeInputs({geometry:i});i.boundingBox.getSize(fn);let o=100/fn.x;Object.assign(s.parameters,{width:100,height:fn.y*o,depth:fn.z*o}),e(this.build(s))})}};var nS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t,spikes:n,cornerRadius:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}=r.parameters,l=r.shape,u=e*.5,c=t*.5,h=0,d=0,f=2*Math.PI/n;for(let p=0;p<n;p++){let g=f*p,y=h+Math.sin(g)*u,x=d+Math.cos(g)*c;l.addPoint(l.createPoint(y,x))}l.isClosed=!0;for(let p=0,g=l.points.length;p<g;p++)l.points[p].roundness=i;l.roundness=i,l.update();let m=qn.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...r,type:"PolygonGeometry"}})}};var rS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,heightSegments:s,openEnded:o,cornerRadius:a,cornerSegments:l}=r.parameters,u=new t0(e*.5,t,i,s,o,a,l);return u.scale(1,1,n/e),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function lu(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function e0(r,e,t,n,i,s){let o=e.clone().sub(r),a=t.clone().sub(r),l=o.angleTo(a);if(o.normalize(),a.normalize(),n===i){let u=o.add(a).normalize();s.copy(r).addScaledVector(u,n/Math.sin(l/2))}else{let u=o.angleTo(a);s.copy(r),s.addScaledVector(o,i/Math.sin(u)),s.addScaledVector(a,n/Math.sin(u))}}function AB(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.projectOnVector(i),n.add(e)}var t0=class extends Pe{constructor(e=.5,t=1,n=4,i=1,s=!1,o=0,a=4){super(),n=Math.floor(Math.max(3,n)),i=Math.floor(i),a=Math.floor(a);let l=[],u=[],c=[],h=[],d=0,f=t/2,m=Math.PI/n,p=e*Math.cos(Math.PI/n),g=2*Math.PI/n,y=(n-2)*Math.PI/n,x=Math.PI-y,w=new S(0,-f,0),b=new S(0,f,0),_=new N(e,-f),A=new N(p,-f),M=new N(0,b.y).sub(A),v=new N(0,b.y).sub(_),T=new N(M.y,-M.x).normalize(),E=new N(v.y,-v.x).normalize(),L=e*Math.cos(Math.PI/n)*Math.tan((Math.PI-M.angle())/2)-1e-8;o=Math.min(o,L);let R;{let F=new S(T.x,T.y,0),G=new S(Math.cos(g)*F.x,F.y,Math.sin(g)*F.x);R=F.angleTo(G)}let O=o/Math.tan((Math.PI-M.angle())/2),W=o/Math.tan((Math.PI-R)/2),j=new S;if(!s){u.push(w.x,w.y,w.z),c.push(0,-1,0),h.push(0,0);let F=d++,G=[],B=_.clone(),k=O/Math.cos(Math.PI/n);B.x-=k;for(let H=0;H<n;H++){let X=H/n*Math.PI*2+m,q=new N(Math.sin(X),Math.cos(X));lu(B,q,j),u.push(j.x,j.y,j.z),c.push(0,-1,0),h.push(0,0),G.push(d++)}for(let H=0;H<G.length;H++)l.push(G[H],F,G[(H+1)%G.length])}let Z=[];{let F=new S,G=new S,B=new S,k=new S,H=new S,X=new S;for(let q=0;q<n;q++){let ae=q/n*Math.PI*2+m,$=(q+.5)/n*Math.PI*2+m,te=(q+1)/n*Math.PI*2+m,V=new N(Math.sin(ae),Math.cos(ae)),le=new N(Math.sin($),Math.cos($)),ce=new N(Math.sin(te),Math.cos(te));lu(_,V,G),lu(_,ce,B),lu(T,le,F),e0(b,G,B,W,W,k),u.push(k.x,k.y,k.z),e0(G,b,B,W,O,H),u.push(H.x,H.y,H.z),e0(B,G,b,O,W,X),u.push(X.x,X.y,X.z),c.push(F.x,F.y,F.z),c.push(F.x,F.y,F.z),c.push(F.x,F.y,F.z),h.push(0,0),h.push(0,0),h.push(0,0);let oe=d++,de=d++,ge=d++;if(l.push(oe,de,ge),o>0){{let Ce=G.clone().add(B).multiplyScalar(.5),ye=b.clone().sub(Ce).normalize(),dt=w.clone().sub(Ce).normalize().add(ye).normalize().multiplyScalar(-1),P=X.clone().sub(H);Y(Ce,P,dt,M.angle())}let fe,Te;{let Ce=new S;lu(E,ce,Ce);let ye=X.clone().add(k).multiplyScalar(.5);ye=AB(ye,B,b);let Ne=X.clone().sub(k);[fe,Te]=Y(ye,Ne,Ce,R,k.y)}{let Ce=fe,ye=Ce.clone().setY(0).normalize(),Ne=new S(0,-1,0),dt=ye.clone().cross(Ne);z(Ce,ye,Ne,dt)}Z.concat(Te);{let Ce=M.angle(),ye=Math.PI-Ce,Ne=b.clone();Ne.y-=o/Math.sin(Ce-Math.PI/2);let dt=new S,P=[];for(let K=0;K<a;K++){let he=[],pe=Math.PI/2-ye*K/a,Ee=Math.cos(pe),Fe=Math.sin(pe),re=$;for(let Be=0;Be<=K;Be++){let Ie=Math.cos(re),ve=Math.sin(re);F.x=Ee*ve,F.y=Fe,F.z=Ee*Ie,dt.copy(Ne).addScaledVector(F,o),u.push(dt.x,dt.y,dt.z),c.push(F.x,F.y,F.z),h.push(0,0),he.push(d++),re+=Math.PI*2/K/n}P.push(he)}Te.reverse(),P.push(Te);let D=P.length-1;for(let K=0;K<D;K++){let he=P[K],pe=P[K+1],Ee=he.length-1;l.push(pe[1],he[0],pe[0]);for(let Fe=1;Fe<=Ee;Fe++)l.push(he[Fe],he[Fe-1],pe[Fe]),l.push(pe[Fe+1],he[Fe],pe[Fe])}}}}}this.setIndex(l),this.setAttribute("position",new _e(u,3)),this.setAttribute("normal",new _e(c,3)),this.setAttribute("uv",new _e(h,2));function Y(F,G,B,k,H){let X=-k/2,q=(Math.PI-k)/2,ae=G.clone().normalize().cross(B);F.addScaledVector(B,-o/Math.sin(q));let $=new S,te=new S,V=1,le=d,ce=[];for(let oe=0;oe<=a;oe++){let de=X+oe/a*k;te.set(0,0,0),te.addScaledVector(ae,Math.sin(de)),te.addScaledVector(B,Math.cos(de));for(let ge=0;ge<=V;ge++){let fe=ge/V-.5;if($.copy(F),$.addScaledVector(G,fe),$.addScaledVector(te,o),H!=null){let Te=Math.max(0,$.y-H);$.addScaledVector(G,-Te/G.y)}u.push($.x,$.y,$.z),c.push(te.x,te.y,te.z),h.push(0,0),ge===0&&ce.push(d),d++}}for(let oe=0;oe<a;oe++)for(let de=0;de<V;de++){let ge=le+de+(V+1)*oe,fe=ge+(V+1),Te=fe+1,Ce=ge+1;l.push(ge,fe,Ce),l.push(fe,Te,Ce)}return[F.clone().addScaledVector(G,.5),ce]}function z(F,G,B,k){let H=Math.PI/2,X=v.angle()-H,q=[],ae=new S,$=new S;for(let V=0;V<=a;V++){let le=[],ce=V/a;for(let oe=0;oe<=V;oe++){let ge=((V?oe/V:0)-.5)*x,fe=Math.cos(ge),Te=Math.sin(ge),Ce=Math.atan(Math.tan(X)*fe),ye=(H+Ce)*ce,Ne=Math.cos(ye),dt=Math.sin(ye);ae.set(0,0,0),ae.addScaledVector(G,dt*fe),ae.addScaledVector(B,Ne),ae.addScaledVector(k,dt*Te),$.copy(F).addScaledVector(ae,o),u.push($.x,$.y,$.z),c.push(ae.x,ae.y,ae.z),h.push(0,0),le.push(d++)}q.push(le)}let te=q.length-1;for(let V=0;V<te;V++){let le=q[V],ce=q[V+1],oe=le.length-1;l.push(le[0],ce[1],ce[0]);for(let de=1;de<=oe;de++)l.push(le[de-1],le[de],ce[de]),l.push(le[de],ce[de+1],ce[de])}}}};var iS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters),n=Object.assign(e?.ui??{enabledIndieCorners:!1},r.ui);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)}),ui:n}}static build(r){let e=r.shape,{width:t,height:n,cornerRadius:i,cornerType:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}=r.parameters,u={x:t*.5,y:n*.5},c={x:-u.x,y:-u.y},h={x:u.x,y:u.y};function d(b,_,A){return _>t&&A>n?Math.min(b*t/_,b*n/A):_>t?b*t/_:A>n?b*n/A:b}let f=[];f[0]=i[0]===0?0:d(i[0],i[0]+i[3],i[0]+i[1]),f[1]=i[1]===0?0:d(i[1],i[1]+i[2],i[1]+i[0]),f[2]=i[2]===0?0:d(i[2],i[2]+i[1],i[2]+i[3]),f[3]=i[3]===0?0:d(i[3],i[3]+i[0],i[3]+i[2]);let m=c.x,p=h.x,g=h.y,y=c.y;e.addPoint(e.createPoint(m,g)),e.addPoint(e.createPoint(p,g)),e.addPoint(e.createPoint(p,y)),e.addPoint(e.createPoint(m,y)),e.isClosed=!0;let x=!0;for(let b=0,_=e.points.length;b<_;b++)e.points[b].roundness=f[b],b>0&&f[b]!==f[b-1]&&(x=!1);x&&(e.roundness=f[0]),e.useCubicForRoundedCorners=s!==1,e.update();let w=qn.create({shape:e,parameters:{depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...r,type:"RectangleGeometry"}})}};var sS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e=100,height:t=e,depth:n=e,widthSegments:i=64,heightSegments:s=64,phiStart:o,phiLength:a,thetaStart:l,thetaLength:u}=r.parameters,c=new po(.5*e,i,s,o,a,l,u);return c.scale(1,t/e,n/e),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};var oS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:0})}}static build(r){let{width:e=100,height:t=e,widthSegments:n=8,heightSegments:i=8}=r.parameters,s=new Gi(e,t,n,i);return s.scale(1,1,1),Object.assign(s,{userData:{...r,type:"PlaneGeometry"}})}};var aS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width)})}}static build(r){let{width:e,height:t,depth:n,angle:i,cornerRadius:s,cornerSegments:o}=r.parameters,a=new n0(e,t,n,i,s,o);return Object.assign(a,{userData:{...r,type:"BackdropGeometry"}})}},n0=class extends Pe{constructor(e=1,t=1,n=1,i=90,s=10,o=24){super(),this.type="BackdropGeometry";let a=[],l=[],u=[],c=.001;s==0&&(o=1),o=Math.max(1,Math.floor(o)),s=Math.min(s,100),i=Math.min(180-c,i),i*=Math.PI/180;let h=[],d=Math.PI/2,f=($=0,te=0,V=0)=>new S($,te,V),m=f(),p=f(),[g,y,x]=[t/2,e/2,n/2],w=-y,b=+y,[_,A,M]=[f(w,-g,+x),f(w,-g,-x),f(w,+g,-x)],v=($,te=!1)=>Math.sin($-Math.PI/(1+ +te)),T=($,te=!1)=>Math.cos($-Math.PI/(1+ +te));M.y=Math.sin(i)*t-g;let E=Math.cos(i)*t-x,C=_.z-c;i<=d?(M.z=Math.min(E,C),M.z==C&&(M.y-=(E-C)/Math.tan(d-i))):A.z=Math.min(A.z-E-x,_.z-c),m.subVectors(_,A),p.subVectors(M,A);let L=Math.min(m.length(),p.length())*s/100,R=L*Math.tan(i/2),O=L/Math.cos(i/2),W=m.clone().normalize().add(p.normalize()).setLength(O).add(A);m.set(0,v(i,!0),T(i,!0)),h.push([M,m.clone()]);let j=(Math.PI-i)/o;for(let $=0;$<=o;$++){let te=d+i+$*j;m.set(0,Math.sin(te)*R,Math.cos(te)*R),m.add(W),p.set(0,v(te),T(te)),h.push([m.clone(),p.clone()])}h.push([_,f(0,1,0)]);let Z=Math.sin(j/2)*R*2,Y=h.length-1,z=h[0][0].distanceTo(h[1][0]),F=h[Y-1][0].distanceTo(h[Y][0]),G=z+Z*o+F;h[0].push(1);for(let $=0;$<=o;$++)h[$+1].push(1-(z+$*Z)/G);h[Y].push(0);let[B,k,H]=h[0],X,q,ae;for(let $=1;$<h.length;$++)[X,q,ae]=h[$],a.push(w,B.y,B.z,w,X.y,X.z,b,B.y,B.z,b,B.y,B.z,w,X.y,X.z,b,X.y,X.z),l.push(0,k.y,k.z,0,q.y,q.z,0,k.y,k.z,0,k.y,k.z,0,q.y,q.z,0,q.y,q.z),u.push(0,H,0,ae,1,H,1,H,0,ae,1,ae),[B,k,H]=[X,q,ae];this.setAttribute("position",new _e(a,3)),this.setAttribute("normal",new _e(l,3)),this.setAttribute("uv",new _e(u,2))}};var lS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t,innerRadiusPercent:n,spikes:i,cornerRadius:s,angle:o,depth:a,extrudeBevelSize:l,extrudeBevelSegments:u}=r.parameters,c=r.shape,h=e*.5,d=t*.5,f=0,m=0,p=o*Math.PI/360/i,g=Math.PI/2*3*-1,y=h*n/100,x=d*n/100;if(i===3&&n===50){p=2*Math.PI/i;for(let b=0;b<i;b++){let _=p*b,A=f+Math.sin(_)*h,M=m+Math.cos(_)*d;c.addPoint(c.createPoint(A,M))}}else for(let b=0;b<i;b++){let _=f+Math.cos(g)*h,A=m+Math.sin(g)*d;c.addPoint(c.createPoint(_,A)),g+=p,_=f+Math.cos(g)*y,A=m+Math.sin(g)*x,b<=i,c.addPoint(c.createPoint(_,A)),g+=p}c.isClosed=!0;for(let b=0,_=c.points.length;b<_;b++)c.points[b].roundness=s;c.roundness=s,c.update();let w=qn.create({shape:c,parameters:{roundness:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...r,type:"StarGeometry"}})}};var hf=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e,height:t}=r.parameters,n=new Gi(e,t);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var cS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},r.parameters),n=Math.abs(t.width),i=Math.abs(t.height??t.width),s=Math.abs(t.depth??t.width*.25);return{parameters:Object.assign(t,{width:n,height:i,depth:s})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,tubularSegments:s,arc:o,cornerRadius:a,cornerSegments:l}=r.parameters,u=MB(e,t,n,e*.5,o,s,0,0,i,a,l);return u.scale(1,t/e,1),Object.assign(u,{userData:{...r,type:"TorusGeometry"}})}};function MB(r,e,t,n,i,s,o,a,l,u,c){return[e,t]=[t,e],o=e/2,i/=2*Math.PI,i==1&&(u=0),new ou(!0,r,e,t,n,i,s,o,a,l,u,c)}var uS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width),depth:Math.abs(t.depth??t.width),tube:t.tube??t.width*.125})}}static build(r){let{width:e,tube:t,tubularSegments:n,radialSegments:i,p:s,q:o}=r.parameters,a=e*.5;a!==t&&(a-=t);let l=new xa(a,t,n,i,s,o);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var hS=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=Object.assign({},e?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},r.parameters);return{shape:r.shape&&r.shape instanceof vt?r.shape:new vt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs(t.height??t.width*(t.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(t.depth??0)})}}static build(r){let{width:e=100,height:t,cornerRadius:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o,isRect:a}=r.parameters,l=r.shape,u=e*.5,c=t*.5;a?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let d=0,f=l.points.length;d<f;d++)l.points[d].roundness=n;l.roundness=n,l.update();let h=qn.create({shape:l,parameters:{roundness:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o}});return Object.assign(h,{userData:{...r,type:"TriangleGeometry"}})}};var TB,df=new Promise(r=>{TB=r});function sn(r,e){return e.color(r)}var Us=r=>"isEntity"in r,Ft=r=>"isAbstractMesh"in r,xt=r=>r!==null&&r.objectType==="BooleanObject",dS=r=>r.objectType==="CombinedCamera",fS=r=>Us(r)&&(r.objectType==="LightDirectional"||r.objectType==="LightSpot"||r.objectType==="LightPoint");var r0=r=>r.objectType==="EmptyObject",ff=r=>"objectHelper"in r;function i0(r,e){let t=!1;e.position&&(r.position.fromArray(e.position),t=!0),e.rotation&&(r.rotation.fromArray(e.rotation),t=!0),e.scale&&(t=!0,r.scale.fromArray(e.scale)),e.hiddenMatrix!==void 0&&"hiddenMatrix"in r&&(t=!0,r.hiddenMatrix.fromArray(e.hiddenMatrix??si.identity)),t&&(r.updateMatrix(),xt(r.parent)&&Ft(r)&&r.invalidateDownstreamBooleanData(!0).recomputeBoolean()),e.position&&e.rotation&&e.scale&&e.hiddenMatrix!==void 0&&r.updateWorldMatrix(!1,!0),r.objectType==="CombinedCamera"&&(e.isUpVectorFlipped!==void 0&&(r.isUpVectorFlipped=e.isUpVectorFlipped),r.updateUp())}function EB(r,e){i0(r,e),e.name!==void 0&&(r.name=e.name),e.visible!==void 0&&(r.visible=e.visible)}function pS(r,e,t){EB(r,e),e.color!==void 0&&(r.color=sn(e.color,t)),e.intensity!==void 0&&(r.intensity=e.intensity),e.shadows!==void 0&&!(r instanceof vo)&&(r.castShadow=e.shadows),r.shadow&&!(r instanceof vo)&&e.depth!==void 0&&(r.shadow.camera.far=e.depth,r.shadow.needsUpdate=!0)}function mS(r,e){r.shadow.camera.right=e/2,r.shadow.camera.left=-e/2,r.shadow.camera.top=e/2,r.shadow.camera.bottom=-e/2,r.shadow.needsUpdate=!0}var pf=r=>class extends r{hasEntityChild(){return this.children.some(t=>Us(t))}isDescendantOf(t){t instanceof ot&&(t=t.uuid);let n=this;for(;n.parent;){if(n.parent.uuid===t)return!0;n=n.parent}return!1}attach(t,n){this.updateWorldMatrix(!0,!1);let i=new Oe().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),Us(t)?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),n!==void 0&&(this.children.pop(),this.children.splice(n,0,t)),this}copy(t,n=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),n===!0)for(let i=0;i<t.children.length;i++){let s=t.children[i];this.add(s.clone())}return this}};var yl=new _n,di=new S,fi=new S,vl=new Oe,yS=[new S(-1,1,1),new S(-1,-1,1),new S(1,-1,1),new S(1,1,1),new S(-1,1,-1),new S(-1,-1,-1),new S(1,-1,-1),new S(1,1,-1)],CB=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],DB=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function PB(r,e,t=0,n=e.count){let i=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,u=-1/0;for(let c=t;c<n;c++){let h=e.getX(c),d=e.getY(c),f=e.getZ(c);h<i&&(i=h),d<s&&(s=d),f<o&&(o=f),h>a&&(a=h),d>l&&(l=d),f>u&&(u=f)}return r.min.set(i,s,o),r.max.set(a,l,u),r}var gS=(r,e,t)=>{if(Ft(r)){let n=r.geometry.userData.parameters,i=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?di.copy(r.originalGeometry.boundingSphere.center):i!==void 0&&(PB(yl,i,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:i.count),yl.getCenter(di)),r.forceComputeSize?yl.getSize(fi).multiplyScalar(.5):fi.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(ff(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");yl.setFromArray(n.array),yl.getCenter(di),yl.getSize(fi).multiplyScalar(.5)}else di.setScalar(0),fi.setScalar(0);vl.copy(e).multiply(r.matrixWorld),fi.x===0&&fi.y===0&&fi.z===0?t.push(new S(di.x,di.y,di.z).applyMatrix4(vl)):yS.forEach(n=>{t.push(n.clone().multiply(fi).add(di).applyMatrix4(vl))})},cu=class extends _n{constructor(){super(...arguments);this.matrix=new Oe;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(t){return super.copy(t),this.matrix.copy(t.matrix),this.vertices=t.vertices.map(n=>n.clone()),this.faces=t.faces.map(n=>n.clone()),this.edges=t.edges.map(n=>n.clone()),this.centerEdges=t.centerEdges.map(n=>n.clone()),this}setFromObjectSize(t,n=!1){t.updateWorldMatrix(!1,n),this.makeEmpty(),this.matrix.copy(t.matrixWorld);let i=new Oe().copy(t.matrixWorld).invert();return this.expandByObjectSize(t,i,n)}expandByObjectSize(t,n,i=!1){let s=[];return i===!0?t.traverseEntity(o=>{o.visible&&gS(o,n,s)}):gS(t,n,s),this.setFromPoints(s)}getCenter(t){return t=super.getCenter(t),t.applyMatrix4(this.matrix),t}getPositionToCenter(t){return t=super.getCenter(t),t.applyMatrix4(vl.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(fi).multiplyScalar(.5),this.getCenter(di),vl.copy(this.matrix).setPosition(di),this.vertices=yS.map(t=>t.clone().multiply(fi).applyMatrix4(vl))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=CB.map(([t,n])=>new Nh(this.vertices[t],this.vertices[n])),this.centerEdges=this.edges.map(t=>t.getCenter(new S))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=DB.map(([t,n])=>this.vertices[t].clone().add(this.vertices[n]).multiplyScalar(.5))}};var pi=r=>"isEntity"in r,vS=r=>"isAbstractMesh"in r,Tr=r=>class extends pf(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Oe;this._singleBBox=new cu;this._recursiveBBox=new cu;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(n=>{pi(n)&&(n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(n=>{n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0})}traverseEntity(n){n(this);for(let i of this.children)pi(i)&&i.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let i of this.children)pi(i)&&i.visible&&i.traverseVisibleEntity(n)}updateMatrixWorld(n){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||n)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,n=!0);for(let i of this.children)i.updateMatrixWorld(n)}updateWorldMatrix(n,i){let s=this.parent;if(n&&s!==null&&s.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),i)for(let o of this.children)o.updateWorldMatrix(!1,!0)}clone(n){return new this.constructor().copy(this,n)}copy(n,i=!0){if(super.copy(n,!1),this.raycastLock=n.raycastLock,this.scaleLock=n.scaleLock,this.hiddenMatrix.copy(n.hiddenMatrix),i===!0)for(let s of n.children)pi(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let n=new Oe,i=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(i);for(let s of this.children)pi(s)&&s.hiddenMatrix.premultiply(n)}toObjectTransformState(n=[]){this.updateWorldMatrix(!0,!1);let i={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ja(i,n)}fromObjectTransformState(n){return n.position&&this.position.fromArray(n.position),n.rotation&&this.rotation.fromArray(n.rotation),n.scale&&this.scale.fromArray(n.scale),n.hiddenMatrix&&this.hiddenMatrix.fromArray(n.hiddenMatrix),this.updateMatrix(),this}toState(n=[]){let i={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(n)};return Ja(i,n)}fromState(n,i){return n.name&&(this.name=n.name),n.raycastLock!==void 0&&(this.raycastLock=n.raycastLock),n.type!=="OrthographicCamera"&&n.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),n.visible!==void 0&&(this.visible=n.visible),this.fromObjectTransformState(n),this}};var s0=class extends ot{},mf=class extends s0{constructor(t){super();this.object=t;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(t){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(t){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(t){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var uu=class extends ot{constructor(t,n={}){super();this.object=t;let i=t.recursiveBBox.getSize(new S),s=.1;this.parameters=Ad.defaultData(i.toArray(),s),So(this.parameters,n),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(t){this.parameters.hideBase=t}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(t=>t.updateMatrix())}_updateCount(){let t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==t)if(this.children.length<t)for(let n=0,i=t-this.children.length;n<i;++n){let s=new mf(this.object);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let n=0,i=this.children.length-t;n<i;++n)this.remove(this.children[0])}_updateRadial(t){let n=t.radial,i=n.start*Je.DEG2RAD,s=n.end*Je.DEG2RAD,o=i-s,a=new yr(n.rotation[0]*Je.DEG2RAD,n.rotation[1]*Je.DEG2RAD,n.rotation[2]*Je.DEG2RAD),l;switch(n.axis){case"z":l=new S(0,0,1);break;case"y":l=new S(0,1,0);break;default:case"x":l=new S(1,0,0);break}for(let[u,c]of this.children.entries()){c.scale.x=n.scale[0],c.scale.y=n.scale[1],c.scale.z=n.scale[2],c.position.setScalar(0);let h=o/t.count*u-i;switch(n.axis){case"x":c.rotation.set(0,h,0);break;case"y":c.rotation.set(0,0,h);break;case"z":c.rotation.set(h,0,0);break}c.translateOnAxis(l,n.radius),c.position.x+=n.position[0],c.position.y+=n.position[1],c.position.z+=n.position[2],n.alignment===!0?(c.rotation.x+=a.x,c.rotation.y+=a.y,c.rotation.z+=a.z):c.rotation.copy(a)}}_updateLinear(t){if(t.type!=="linear")throw new Error;let n=t.linear,i=new yr(n.rotation[0]*Je.DEG2RAD,n.rotation[1]*Je.DEG2RAD,n.rotation[2]*Je.DEG2RAD);for(let[s,o]of this.children.entries())o.scale.x=1+(n.scale[0]-1)*s,o.scale.y=1+(n.scale[1]-1)*s,o.scale.z=1+(n.scale[2]-1)*s,o.rotation.x=i.x*s,o.rotation.y=i.y*s,o.rotation.z=i.z*s,o.position.x=n.position[0]*s,o.position.y=n.position[1]*s,o.position.z=n.position[2]*s}_updateGrid(t){let n=0,i=t.grid;if(i.useCenter===!0){let s={x:i.count[0]%2===0?2:1,y:i.count[1]%2===0?2:1,z:i.count[2]%2===0?2:1},o=new S(i.size[0]*(i.count[0]-s.x)*.5,i.size[1]*(i.count[1]-s.y)*.5,i.size[2]*(i.count[2]-s.z)*.5);for(let a=0;a<i.count[0];a++)for(let l=0;l<i.count[1];l++)for(let u=0;u<i.count[2];u++){let c=this.children[n++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=i.size[0]*a-o.x,c.position.y=i.size[1]*l-o.y,c.position.z=i.size[2]*u-o.z}}else for(let s=0;s<i.count[0];s++)for(let o=0;o<i.count[1];o++)for(let a=0;a<i.count[2];a++){let l=this.children[n++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=i.size[0]*s,l.position.y=-i.size[1]*o,l.position.z=-i.size[2]*a}}fromClonerState(t){return t.hideBase!==void 0&&this.setHideBase(t.hideBase),So(this.parameters,t),this.update(),this}};function IB(r){if(r.geometry.attributes.extrudeNormals||!r.geometry.attributes.position)return;let e=new Map,t=r.geometry.attributes.position.array,n=r.geometry.attributes.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let o=`${t[s]}_${t[s+1]}_${t[s+2]}`,a=new S(n[s],n[s+1],n[s+2]);e.has(o)?e.get(o)?.normals.push(a):e.set(o,{normals:[a],result:new S})}e.forEach((s,o)=>{for(let a of s.normals)s.result.add(a);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let o=`${t[s]}_${t[s+1]}_${t[s+2]}`,a=e.get(o)?.result;a&&(i[s]=a.x,i[s+1]=a.y,i[s+2]=a.z)}r.geometry.setAttribute("extrudeNormal",new _e(i,3))}function LB(r){if(r.geometry.attributes.extrudeNormals||!r.geometry.attributes.position)return;let e=r.geometry.attributes.position.array,t=new Float32Array(e.length),n=new S;for(let i=0;i<e.length;i+=3)n.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=n.x,t[i+1]=n.y,t[i+2]=n.z;r.geometry.setAttribute("extrudeNormal",new _e(t,3))}function zs(r){if(r.objectType!=="TextFrame"){if(Array.isArray(r.material)){for(let e of r.material)if(e.getLayersOfType("outline").length===0)return}else if(r.material.getLayersOfType("outline").length===0)return;r.objectType==="Mesh2D"?LB(r):IB(r)}}function Gs(r){if(!r.geometry.attributes.position)return;let e=r.geometry.attributes.position.array,t=new Float32Array(e.length),n=parseInt(r.uuid.replace(/\D/g,"")),i=[Je.seededRandom(n),Je.seededRandom(n+1e4),Je.seededRandom(n+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];r.geometry.setAttribute("randomColor",new je(t,3))}var Ot=class extends Tr(kt){constructor(t,n){super(t,n);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Oe;this.booleanExclude=null;Array.isArray(n)&&t.groups.length===0&&t.addGroup(0,t.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(t){}get cloner(){return this._cloner}set cloner(t){this._cloner&&this.remove(this._cloner),t&&this.add(t),this._cloner=t}updateGeometry(t){let n=this.geometry,i=o0[n.userData.type],s=this.objectType==="NonParametric"?Object.assign({},n.userData,{geometry:n}):n.userData,o=i.build(i.normalizeInputs(t,s)),a=n.uuid;this.geometry.dispose(),this.geometry=o,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),zs(this),n.getAttribute("randomColor")&&Gs(this)}clone(t){let n=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,i=hu(n),s=this.material;return new this.constructor(i,s).copy(this,t)}copy(t,n=!0){return super.copy(t,n),t.cloner&&(this.cloner=new uu(t,t.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(t){t===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new uu(this)),this.cloner.fromClonerState(t))}fromState(t,n){return super.fromState(t),t.type==="Mesh"&&(this.setFromClonerState(t.cloner),this.castShadow=t.castShadow??!0,this.receiveShadow=t.receiveShadow??!0,this.booleanExclude=t.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Hr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(t=!1){return t?this.booleanWasTransformed=!0:this.freeBooleanPointer(),xt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let t of this.children)Ft(t)&&(t.freeBooleanPointer(),xt(t)&&t.invalidateUpstreamBooleanData())}};var OB=new S(0,0,1),xS=new S,bS=new S,wS=new Gt,xl=class extends Ot{constructor(t=qn.create({}),n){super(t,n);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Rt;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=t.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(t){return super.fromState(t),this.shape.update(),this}setHelperVisibility(){}updateGeometry(t){if(super.updateGeometry(t),"userData"in this.geometry){let n=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:n})}}setShape(t){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=t,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(t,n){super.updateWorldMatrix(t,n),wS.getNormalMatrix(this.matrixWorld),xS.copy(OB).applyMatrix3(wS).normalize(),bS.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(xS,bS)}clone(t){let n=this.shape.clone(),i=this.material,s=this.geometry.userData,o=qn.create(Object.assign({},s,{shape:n})),a=new xl(o,i).copy(this,t);return a.shape=n,n.update(),a}raycast(t,n){Ot.prototype.raycast.call(this,t,n)}};function gf(r,e){return RB(r)}function RB(r){let e={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=vt.createFromState(r.shape,r.width,r.height);e.shape=n}else r.type==="NonParametricGeometry"&&(r.data.groups&&r.data.groups.forEach(n=>n.materialIndex=Math.max(n.materialIndex??0,0)),e.geometry=new _a().parse(r));let t;try{t=hu(e)}catch(n){console.error(n)}if(!t){let n=vt.createFromState(il.defaultData(),100,100);e.shape=n,t=hu(e)}return t}var He;df.then(r=>{He=r});var _S=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),SS=new Uint32Array([0,1,2,3]),AS=new Uint8Array([4]),Er=class{static build(r,e,t,n,i){let s,o,a,l=r?.phongAngle??e?.phongAngle??35;if(n===!1&&(l=-1),r.positionWASM!==void 0){t&&t!==0&&(He.free_bvh(t),He.free_subdivision_surface(t));try{s=Er.allocate(r,i)}catch(u){console.error(u,r),s=Er.allocate({positionWASM:_S,indexWASM:SS,verticesPerFaceWASM:AS},i)}He.set_destination_refinement_level(s,0),o=Er.buildLevel(s,!0,l)}else s=t,r.phongAngle!==void 0&&(o=Er.buildLevel(s,!0,l));return r.subdivisions!==void 0&&(He.set_destination_refinement_level(s,r.subdivisions),r.subdivisions>0?a=Er.buildLevel(s,!1,l):a=null),{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}}static primitiveToQuads(r,e){r.widthSegments>16&&(r.widthSegments=16),r.heightSegments>16&&(r.heightSegments=16),r.depthSegments>16&&(r.depthSegments=16),r.radialSegments>16&&(r.radialSegments=16),r.type==="DodecahedronGeometry"&&(r.detail=0);let t=r.shape!==void 0?e.geometry:gf(r),n,i,s,o;return{positions:n,triIndices:o}=u0(t.getAttribute("position"),t.getIndex()),{indices:i,verticesPerFace:s}=h0(n,o,t),{positions:n,indices:i,verticesPerFace:s}}static allocate(r,e){let t,n,i,s=[],o=[];r.positionWASM&&r.positionWASM.length>0?(t=r.positionWASM,n=r.indexWASM,i=r.verticesPerFaceWASM):(t=_S,n=SS,i=AS);let a=t.length,l=n.length,u=i.length,c=t.length+s.length+o.length,h=n.length+i.length,d=c*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,f=c*Float32Array.BYTES_PER_ELEMENT,m=h*Uint32Array.BYTES_PER_ELEMENT,p=He._malloc(d),g=new Float32Array(He.HEAPF32.buffer,p,c),y=new Uint32Array(He.HEAPU32.buffer,p+f,h);g.set(t,0),g.set(s,t.length),g.set(o,t.length+s.length),y.set(n,0),y.set(i,n.length);let x;r?.scaleBaked?.some(b=>b!==1)&&(x=new Oe().makeScale(...r.scaleBaked)),e&&(x?x.premultiply(e):x=e);let w=x?He.alloc_subdivision_surface2(p,a,p+f,l,p+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u,x.elements):He.alloc_subdivision_surface(p,a,p+f,l,p+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return He._free(p),w}static buildLevel(r,e,t,n,i){let s=i?He.get_mesh_data2(r,e?He.Level.CONTROL:He.Level.REFINED,t,i.elements):He.get_mesh_data(r,e?He.Level.CONTROL:He.Level.REFINED,t),o=8,a=He.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),u=0,c=He.HEAPU32[a[u]>>2],h=He.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let d=He.HEAPU32[a[u]>>2],f=He.HEAPF32.subarray(d>>2,(d>>2)+l[u]);u++;let m=He.HEAPU32[a[u]>>2],p=He.HEAPU32.subarray(m>>2,(m>>2)+l[u]);u++;let g=He.HEAPU32[a[u]>>2],y=He.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let x=new Pe;if(x.setIndex(new hs(y,1)),x.setAttribute("position",new _e(h,3)),x.setAttribute("normal",new _e(f,3)),e){x.setAttribute("faceMap",new hs(p,1));let w=new Float32Array(f.length/3*4).fill(0);x.setAttribute("color",new je(w,4))}return He.free_mesh_data(s),x.userData.type="SubdivGeometry",x}n.getAttribute("position").copyArray(h),n.getAttribute("normal").copyArray(f),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,He.free_mesh_data(s)}static buildControlCageWireframe(r,e,t){let n=He.get_wireframe_data_for_base_level(r),i=4,s=He.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(2,2+2),a=0,l=He.HEAPU32[s[a]>>2],u=He.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let c=He.HEAPU32[s[a]>>2],h=He.HEAPU32.subarray(c>>2,(c>>2)+o[a]);if(e===void 0){let d=new Pe;d.setAttribute("position",new _e(u,3));let f=new Float32Array(u.length);for(let m=0,p=u.length;m<p;)f[m++]=t.r,f[m++]=t.g,f[m++]=t.b;return d.setAttribute("color",new je(f,3)),d.setIndex(new hs(h,1)),He.free_wireframe_data_for_base_level(n),d}e.getAttribute("position").copyArray(u),e.attributes.position.needsUpdate=!0,He.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,e,t){let n=e===0;n||He.set_destination_refinement_level(r,e);let i=t?He.get_topological_data2(r,n?He.Level.CONTROL:He.Level.REFINED,t.elements):He.get_topological_data(r,n?He.Level.CONTROL:He.Level.REFINED),s=6,o=He.HEAPU32.subarray(i>>2,(i>>2)+s),a=o.subarray(3,3+3),l=0,u=He.HEAPU32[o[l]>>2],c=new Float32Array(He.HEAPF32.subarray(u>>2,(u>>2)+a[l]));l++;let h=He.HEAPU32[o[l]>>2],d=new Uint32Array(He.HEAPU32.subarray(h>>2,(h>>2)+a[l]));l++;let f=He.HEAPU32[o[l]>>2],m=new Uint8Array(He.HEAPU32.subarray(f>>2,(f>>2)+a[l]));return He.free_topological_data(i),{positions:c,indices:d,verticesPerFace:m}}};var MS=["getX","getY","getZ"];function u0(r,e){let t={},n=e?e.count:r.count,i=0,s=[],o=[],a=1e4;for(let u=0;u<n;u++){let c=e?e.getX(u):u,h="";for(let d=0;d<3;d++)h+=`${~~(r[MS[d]](c)*a)},`;if(h in t)s.push(t[h]);else{for(let d=0;d<3;d++)o.push(r[MS[d]](c));t[h]=i,s.push(i),i++}}let l=[];for(let u=0;u<s.length;u+=3)s[u]===s[u+1]||s[u]===s[u+2]||s[u+1]===s[u+2]||l.push(s[u],s[u+1],s[u+2]);return{positions:o,triIndices:l}}var yf=new S,a0=new S,l0=new S,c0=new S;function h0(r,e,t){let n=[],i=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0&&t.userData.shape.shapeHoles.length===0){let s=t.userData.shape.extractShapePointsToFlatArray([]),o=0;for(let l=0;l<s.length;l+=2)o+=(s[l]-s[(l===0?s.length:l)-2])*(s[l+1]+s[(l===0?s.length:l)-1]);r.length=0;let a=0;if(o<0)for(let l=0;l<s.length;l+=2)r.push(s[l],s[l+1],0),n.push(a++);else for(let l=s.length-2;l>=0;l-=2)r.push(s[l],s[l+1],0),n.push(a++);return i.push(a),{indices:n,verticesPerFace:i}}for(let s=0,o=t.capStartIndex??e.length;s<o;)if(e[s+1]===e[s+3]&&e[s+2]===e[s+5]||e[s+0]===e[s+3]&&e[s+2]===e[s+4]){yf.set(r[e[s]*3],r[e[s]*3+1],r[e[s]*3+2]),a0.set(r[e[s+1]*3],r[e[s+1]*3+1],r[e[s+1]*3+2]),l0.set(r[e[s+4]*3],r[e[s+4]*3+1],r[e[s+4]*3+2]),c0.set(r[e[s+5]*3],r[e[s+5]*3+1],r[e[s+5]*3+2]),a0.sub(yf).normalize(),l0.sub(yf).normalize(),c0.sub(yf).normalize();let a=a0.cross(l0).dot(c0);Math.abs(a)>.005?(n.push(e[s],e[s+1],e[s+2]),i.push(3),s+=3):(n.push(e[s],e[s+1],e[s+4],e[s+5]),i.push(4),s+=6)}else n.push(e[s],e[s+1],e[s+2]),i.push(3),s+=3;if(t.capStartIndex!==void 0){let s=[],o=[],a=0;for(let l=0,u=0;l<r.length;l+=3,u++)r[l+2]===0&&(s.push(u),a++),r[l+2]===t.userData.parameters.depth&&o.push(u);if(t.userData.parameters.extrudeBevelSize===0){let l=o[0];o[0]=o[1],o[1]=l}s.reverse(),n.push(...s,...o),i.push(a,a)}return{indices:n,verticesPerFace:i}}var Hr={};BA(Hr,{calcBoolean:()=>FB,calcBooleanTopological:()=>BB,freeMeshSet:()=>GB,getMeshSet:()=>UB,transformMeshSet:()=>zB});var ES,CS=new Promise(r=>{ES=r}),TS=!1;async function DS(){if(TS)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.82/build",[t,n]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:n});ES(s),TS=!0}var it,bl;CS.then(r=>it=r);function NB(r,e){let t,{positions:n,triIndices:i}=u0(r.getAttribute("position"),r.getIndex()),s;if(e){let{indices:o,verticesPerFace:a}=h0(n,i,r);s=a.length,t=[];for(let l=0,u=0;l<s;l++){t.push(a[l]);for(let c=0;c<a[l];c++)t.push(o[u++])}}else{let o=i.length;t=Array(o+o/3),s=0;for(let a=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=i[a++],t[l++]=i[a++],t[l++]=i[a++]}return{positions:n,faceIndices:t,nFaces:s}}function PS(r){let e=r.length,t=e*Uint32Array.BYTES_PER_ELEMENT,n=e*Float32Array.BYTES_PER_ELEMENT,i=Number.isInteger(r[0])?t:n,s=it._malloc(i);return(Number.isInteger(r[0])?new Uint32Array(it.HEAPU32.buffer,s,e):new Float32Array(it.HEAPF32.buffer,s,e)).set(r,0),s}function IS(r){switch(r){case 0:return it.OP.UNION;case 1:return it.OP.INTERSECTION;case 2:return it.OP.A_MINUS_B;case 3:return it.OP.B_MINUS_A;case 4:return it.OP.SYMMETRIC_DIFFERENCE;case 5:return it.OP.ALL;default:throw new Error("Unknown boolean operation "+r)}}function BB(r,e){bl===void 0&&(bl=it.init_csg());let t=PS(r),n=it.csg_calc_topological(bl,t,r.length,IS(e));it._free(t);let i=6,s=it.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(3,3+3),a=0,l=it.HEAPU32[s[a]>>2],u=new Float32Array(it.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let c=it.HEAPU32[s[a]>>2],h=new Uint32Array(it.HEAPU32.subarray(c>>2,(c>>2)+o[a]));a++;let d=it.HEAPU32[s[a]>>2],f=new Uint8Array(it.HEAPU32.subarray(d>>2,(d>>2)+o[a]));return it.free_mesh_data(n),{positions:u,indices:h,verticesPerFace:f}}function FB(r,e,t,n){bl===void 0&&(bl=it.init_csg());let i=PS(r),s=it.csg_calc(bl,i,r.length,n,IS(e));it._free(i);let o=5,a=it.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(2,2+3),u=0,c=it.HEAPU32[a[u]>>2],h=it.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let d=it.HEAPU32[a[u]>>2],f=it.HEAPF32.subarray(d>>2,(d>>2)+l[u]);u++;let m=l[u];t.setAttribute("position",new _e(h,3)),t.setAttribute("normal",new _e(f,3));let p=it.HEAPF32.subarray((s>>2)+5,(s>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Ln),t.boundingSphere.center.set(p[0],p[1],p[2]),t.boundingSphere.radius=(p[3]**2+p[4]**2+p[5]**2)**.5,t.userData.parameters={width:p[3]*2,height:p[4]*2,depth:p[5]*2},it.free_mesh_data(s),m}function UB(r,e){if(it===void 0)return-1;let t,n,i;if(e&&r.userData.positions!==void 0){let p=r.userData;i=p.verticesPerFace.length,t=p.positions,n=Array(p.verticesPerFace.reduce((g,y)=>g+y,0)+i);for(let g=0,y=0,x=0;g<p.verticesPerFace.length;g++){n[x++]=p.verticesPerFace[g];for(let w=0;w<p.verticesPerFace[g];w++)n[x++]=p.indices[y++]}}else({positions:t,faceIndices:n,nFaces:i}=NB(r,e));let s=t.length,o=n.length,a=t.length,l=n.length,u=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,c=a*Float32Array.BYTES_PER_ELEMENT,h=l*Uint32Array.BYTES_PER_ELEMENT,d=it._malloc(u),f=new Float32Array(it.HEAPF32.buffer,d,a),m=new Uint32Array(it.HEAPU32.buffer,d+c,l);return f.set(t,0),m.set(n,0),it.get_csg_mesh(d,s,d+c,o,i)}function zB(r,e){it.transform_csg_mesh(r,e.elements)}function GB(r){it.free_csg_mesh(r)}var o0={ConeGeometry:A_,CubeGeometry:M_,CylinderGeometry:S_,DodecahedronGeometry:T_,EllipseGeometry:Y_,HelixGeometry:J_,IcosahedronGeometry:$_,LatheGeometry:eS,NonParametricGeometry:tS,PolygonGeometry:nS,PyramidGeometry:rS,RectangleGeometry:iS,SphereGeometry:sS,PlaneGeometry:oS,BackdropGeometry:aS,StarGeometry:lS,TextFrameGeometry:hf,TorusGeometry:cS,TorusKnotGeometry:uS,TriangleGeometry:hS,VectorGeometry:qn},hu=r=>o0[r.type].create(r);var LS=new Oe;function d0(r){let e=!1;return r.scene.objects.traverse((t,n)=>{n.geometry?.type==="BooleanGeometry"&&(e=!0)}),e}var vf=class extends Ot{constructor(t=new Pe,n){super(t,n);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(t){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];xt(s)&&s.recomputeBoolean(t===!0)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(vS(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Hr.getMeshSet(s.geometry,t===!0),s.booleanMeshSetAddress===-1)return;Hr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else xt(s)&&s.needsTransformForDownstream===!0?(Hr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(LS.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Hr.transformMeshSet(s.booleanMeshSetAddress,LS),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(t===!0)return Hr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let n=this.geometry;n.dispose(),this.geometry=new Pe,this.geometry.userData=n.userData,this.geometry.boundingSphere=n.boundingSphere;try{this.booleanMeshSetAddress=Hr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,zs(this),Gs(this)}updateGeometry(t){let n=t.parameters;n.operation!==void 0&&(this.booleanOp=n.operation),n.phongAngle!==void 0&&(this.phongAngle=n.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var mi=r=>{var e;return e=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new Qn(30,30,30),e};var xf=new zi,f0=new Ln,OS=new Oe,gi=(r,e,t,n,i=!1)=>{let s=e,o=r.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),f0.copy(s.boundingSphere),f0.applyMatrix4(o),t.ray.intersectsSphere(f0)===!1||(OS.copy(o).invert(),xf.copy(t.ray).applyMatrix4(OS),s.boundingBox!==null&&xf.intersectsBox(s.boundingBox)===!1))return;let a,l,u,c,h=s.index,d=s.attributes.position,f=s.drawRange,m,p;if(i===!1){let y=Math.max(0,f.start),x=Math.min(h.count,f.start+f.count);for(m=y,p=x;m<p;m+=3)if(l=h.getX(m),u=h.getX(m+1),c=h.getX(m+2),a=g(r,t,xf,d,l,u,c),a){a.faceIndex=Math.floor(m/3),n.push(a);return}}else{let x=s.attributes.position,w=new S,b=new S,_=new S,A=new S,M=2,T=1/((r.scale.x+r.scale.y+r.scale.z)/3),E=T*T,C=Math.max(0,f.start),L=Math.min(x.count,f.start+f.count);for(let R=C,O=L-1;R<O;R+=M){if(w.fromBufferAttribute(x,R),b.fromBufferAttribute(x,R+1),xf.distanceSqToSegment(w,b,A,_)>E)continue;A.applyMatrix4(r.matrixWorld);let j=t.ray.origin.distanceTo(A);j<t.near||j>t.far||n.push({distance:j,point:_.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(y,x,w,b,_,A,M){let v=new S,T=new S,E=new S,C=new S,L=new S;if(v.fromBufferAttribute(b,_),T.fromBufferAttribute(b,A),E.fromBufferAttribute(b,M),w.intersectTriangle(v,T,E,!1,C)===null)return null;L.copy(C),L.applyMatrix4(y.matrixWorld);let O=x.ray.origin.distanceTo(L);return O<x.near||O>x.far?null:{faceIndex:1,distance:O,point:L.clone(),object:y}}};var bf=new S,Cr=new Br,p0=class extends ds{constructor(t){let n=new Pe,i=new xr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new Re(15711266),u=new Re(15711266),c=new Re(2857471);h("n1","n2",l),h("n2","n4",l),h("n4","n3",l),h("n3","n1",l),h("f1","f2",l),h("f2","f4",l),h("f4","f3",l),h("f3","f1",l),h("n1","f1",l),h("n2","f2",l),h("n3","f3",l),h("n4","f4",l),h("p","n1",u),h("p","n2",u),h("p","n3",u),h("p","n4",u),h("u1","u2",c),h("u2","u3",c),h("u3","u1",c);function h(f,m,p){d(f,p),d(m,p)}function d(f,m){s.push(0,0,0),o.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(s.length/3-1)}n.setAttribute("position",new _e(s,3)),n.setAttribute("color",new _e(o,3));super(n,i);this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let t=this.geometry,n=this.pointMap,i=!0;Cr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let s=1,o=1,a=i?.8:1e-4;Wr("n1",n,t,Cr,-s,-o,a),Wr("n2",n,t,Cr,s,-o,a),Wr("n3",n,t,Cr,-s,o,a),Wr("n4",n,t,Cr,s,o,a);let l=a;Wr("f1",n,t,Cr,-s,-o,l),Wr("f2",n,t,Cr,s,-o,l),Wr("f3",n,t,Cr,-s,o,l),Wr("f4",n,t,Cr,s,o,l);let u=l,c=.5;Wr("u1",n,t,Cr,s*.7*c,o*1.1,u),Wr("u2",n,t,Cr,-s*.7*c,o*1.1,u),Wr("u3",n,t,Cr,0,o*(1.1+.9*c),u),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Wr(r,e,t,n,i,s,o){bf.set(i,s,o).unproject(n);let a=e[r];if(a!==void 0){let l=t.getAttribute("position");for(let u=0,c=a.length;u<c;u++)l.setXYZ(a[u],bf.x,bf.y,bf.z)}}var wf=class extends mi(p0){constructor(t){super(t);this.object=t;this.object=t,this.name=`CombinedCameraHelper: ${t.uuid}`}updateMatrixWorld(t){super.updateMatrixWorld(t),this.updateTarget()}updateTarget(){let t=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(t)}raycast(t,n){gi(this.object,this.geometry,t,n,!0)}};var wl=class extends mi(Uh){constructor(t,n=15,i=10066329){super(t,n,i);this.object=t;this.added=!1;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,n){gi(this.object,wl.geometryHelper,t,n)}};var _l=class extends mi(zh){constructor(t,n=15){super(n);this.object=t;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${t.uuid}`,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}raycast(t,n){gi(this.object,_l.geometryHelper,t,n)}update(){}};var Sl=class extends mi(Fh){constructor(t,n=15,i=6710886){super(t,n,i);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,n){gi(this.object,Sl.geometryHelper,t,n)}};var _f=class extends mi(Bh){constructor(t,n=6710886){super(t,n);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,n){gi(this.object,_f.geometryHelper,t,n)}update(){if(this.object!==void 0){let t=_f._vector,n=this.object.distance?this.object.distance:1e3,i=n*Math.tan(this.object.angle);this.cone.scale.set(i,i,n),t.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(t);let s=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let o=0,a=this.cone.material.length;o<a;o++)this.cone.material[o].color.set(s);else this.cone.material.color.set(s)}}},du=_f;du._vector=new S;var yi=(r,e)=>class extends r{constructor(){super(...arguments);this.objectHelper=new e(this)}get geometryHelper(){return e.geometryHelper}raycast(i,s){this.objectHelper.raycast(i,s)}fromLightState(i,s){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let o=this;i.color!==void 0&&(o.color=sn(i.color,s)),i.intensity!==void 0&&(o.intensity=i.intensity),i.depth!==void 0&&(o.shadow.camera.far=i.depth,o.shadow.needsUpdate=!0),i.shadows!==void 0&&(this.castShadow=i.shadows)}return this}};var Al=new S,m0=new S,pr=class extends yi(Tr(Br),wf){constructor(t=window.innerWidth,n=window.innerHeight,i=45,s,o=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Ao.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=t,this.height=n,this.orthoCamera=new ua(t*-.5,t*.5,n*.5,n*-.5,s??-5e4,o),this.perspCamera=new Zt(i,t/n,s??50,o),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(t,n){let i=new pr().fromState(n);return i.objectHelper.update(),i.uuid=t,i}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(t,n){t==="PerspectiveCamera"?this.perspCamera.near=n:this.orthoCamera.near=n}setZoom(t,n){n>=0&&(t==="PerspectiveCamera"?this.perspCamera.zoom=n:this.orthoCamera.zoom=n)}set cameraType(t){t==="PerspectiveCamera"?this.toPerspective():t==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(t){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(t){t>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}lookAt(t){super.lookAt(t),this.getWorldPosition(Al),this.targetOffset=Al.distanceTo(t)}getTarget(t=new S){return this.getWorldDirection(m0),this.getWorldPosition(Al),m0.multiplyScalar(this.targetOffset),t.copy(Al).add(m0),t}getDistanceToTarget(){let t=this.getTarget();return this.getWorldPosition(Al),Al.distanceTo(t)}updateUp(){let t=this.getWorldQuaternion(new qt),n=new S(0,0,1).applyQuaternion(t),i=new S().copy(ot.DefaultUp);this.isUpVectorFlipped&&i.negate(),i.applyQuaternion(t);let s=new S().copy(ot.DefaultUp).projectOnPlane(n),o=new S().crossVectors(s,i).dot(n)>=0?1:-1;this.angleOffsetFromUp=s.angleTo(i)*o}getViewFrontToObject(t){let n=t.getWorldPosition(new S),s=t.getWorldDirection(new S).multiplyScalar(this.targetOffset);return{position:n.clone().add(s),target:n}}getViewToObject(t){let n=t.getWorldPosition(new S),s=this.getWorldDirection(new S).multiplyScalar(this.targetOffset);return{position:n.clone().sub(s),target:n}}setViewplaneSize(t,n){this.left=-t*.5,this.right=t*.5,this.top=n*.5,this.bottom=-n*.5,this.aspect=t/n,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(t){this.perspCamera.setFocalLength(t),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(t,n,i,s,o,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(t,n,i,s,o,a):this.orthoCamera.setViewOffset(t,n,i,s,o,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,n){super.updateWorldMatrix(t,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(t,n){return super.copy(t,n),this.orthoCamera.copy(t.orthoCamera),this.perspCamera.copy(t.perspCamera),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.far=t.far,this.view=t.view===null?null:Object.assign({},t.view),this._cameraType=t._cameraType,this.aspect=t.aspect,this.fov=t.fov,this.focus=t.focus,this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this.targetOffset=t.targetOffset,this.updateProjectionMatrix(),this}toCameraState(t=[]){let n={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ja(n,t)}fromCameraState(t){let{orthographic:n,perspective:i}=t;return t.type!==void 0&&(this.cameraType=t.type),t.far!==void 0&&(this.far=t.far),n!==void 0&&(n.near!==void 0&&(this.orthoCamera.near=n.near),n.zoom!==void 0&&(this.orthoCamera.zoom=n.zoom)),i!==void 0&&(i.near!==void 0&&(this.perspCamera.near=i.near),i.fov!==void 0&&(this.perspCamera.fov=i.fov),i.zoom!==void 0&&(this.perspCamera.zoom=i.zoom)),t.up!==void 0&&this.up.fromArray(t.up),t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=t.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(t){return{...super.toState(t),...this.toCameraState(t),type:this.cameraType}}fromState(t){return super.fromState(t),this.fromCameraState(t),this}};var Do=class extends yi(Tr(is),_l){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(t,n){let i=new Do().fromState(n);return i.uuid=t,i.objectHelper.update(),i}};var Ml=class extends yi(Tr(Oh),wl){constructor(...t){super(...t);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new wr(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,n,i){let s=new Ml().fromState(n,i);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&n.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(t,n){let i=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;return super.fromLightState(t,n),t.size!==void 0&&mS(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),i&&this.update(),this}fromState(t,n){return super.fromState(t),this.fromDirectionalLightState(t,n),this}};var Tl=class extends yi(Tr(Lh),Sl){constructor(...t){super(...t);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new S(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),o=new S(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),a=new _n(s,o),l=new xo(a,new Re(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(t,n,i){let s=new Tl().fromState(n,i);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof xo&&(n.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof xo&&(n.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let t in this._gizmos){let n=this._gizmos[t];if(n instanceof xo){let i=this.shadow.camera,s=new S(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),o=new S(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z);n.box.set(s,o),n.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}fromPointLightState(t,n){return super.fromLightState(t,n),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,n){return super.fromState(t),this.fromPointLightState(t,n),this}};var RS=new S,NS=new S,BS=new qt,El=class extends yi(Tr(Ih),du){constructor(...t){super(...t);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let i=this.shadow.camera;i.fov=Je.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new wr(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,n,i){let s=new El().fromState(n,i);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let n=this._gizmos[t];n instanceof wr&&n.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),NS.setFromMatrixPosition(this.matrixWorld),BS.setFromRotationMatrix(this.matrixWorld),RS.copy(this.up).applyQuaternion(BS).negate().multiplyScalar(this.distance),this.target.position.copy(NS).add(RS),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(t,n){return super.fromLightState(t,n),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,n){return super.fromState(t),this.fromSpotLightState(t,n),this}};var Tn=class{constructor(e){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Je.generateUUID(),this.type=e,this.name=""}analyze(e,t){t=t??{},e.analyzing=!0,this.build(e.addFlow(t.slot,t.cache,t.context),"v4"),e.clearVertexNodeCode(),e.clearFragmentNodeCode(),e.removeFlow(),e.analyzing=!1}analyzeAndFlow(e,t,n){return n=n??{},this.analyze(e,n),this.flow(e,t,n)}flow(e,t,n){n=n??{},e.addFlow(n.slot,n.cache,n.context);let i={result:this.build(e,t),code:e.clearNodeCode(),extra:e.context.extra};return e.removeFlow(),i}build(e,t,n){t=t??this.getType(e,t);let i=e.getNodeData(n??this);return e.analyzing&&this.appendDepsNode(e,i,t),e.nodes.indexOf(this)===-1&&e.nodes.push(this),this.updateFrame!==void 0&&e.updaters.indexOf(this)===-1&&e.updaters.push(this),this.generate(e,t,n)}updateFrame(e){}generateReadonly(e,t,n,i,s,o){return""}generate(e,t,n,i,s){return""}parse(e,t,n,i){}appendDepsNode(e,t,n){t.deps=(t.deps||0)+1;let i=e.getTypeLength(n);(i>(t.outputMax||0)||this.getType(e,n))&&(t.outputMax=i,t.output=n)}setName(e){this.name=e}getName(){return this.name}getType(e,t){return t==="sampler2D"||t==="samplerCube"?t:this.type}getHash(){let e="{",t,n;for(t in this)n=this[t],n instanceof Tn&&(e+='"'+t+'":'+n.getHash()+",");if(this.hashProperties)for(let i=0;i<this.hashProperties.length;i++)t=this.hashProperties[i],n=this[t],e+='"'+t+'":"'+String(n)+'",';return e+='"id":"'+this.uuid+'"}',e}};var ze=class extends Tn{constructor(t,n){super(t);this.scope="";n=n??{},this.shared=n.shared!==void 0?n.shared:!0,this.unique=n.unique!==void 0?n.unique:!1}build(t,n,i,s){if(n=n??this.getType(t),this.getShared(t,n)){let o=this.getUnique(t,n);o&&this.uuid===void 0&&(this.uuid=Je.generateUUID()),i=t.getUUID(i??this.getUUID(),!o);let a=t.getNodeData(i),l=a.output||this.getType(t);if(t.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(t,a,n),this.generate(t,n,i)):super.build(t,n,i);if(o)return a.name=a.name||super.build(t,n,i),a.name;if(!this.getLabel()&&(!this.getShared(t,l)||t.context.ignoreCache||a.deps===1))return super.build(t,n,i);i=this.getUUID(!1);let u=this.getTemp(t,i);if(u)return t.format(u,l,n);{u=super.generate(t,n,i,a.output,s);let c=this.generate(t,l,i);return t.addNodeCode(u+" = "+c+";"),t.format(u,l,n)}}return super.build(t,n,i)}getShared(t,n){return n!=="sampler2D"&&n!=="samplerCube"&&this.shared}getUnique(t,n){return this.unique}setLabel(t){return this.label=t,this}getLabel(){return this.label}getUUID(t){let n=this.uuid;return typeof this.scope=="string"&&(n=this.scope+"-"+n),n}getTemp(t,n){n=n||this.uuid;let i=t.getVars()[n];return i?i.name:void 0}generate(t,n,i,s,o){return this.getShared(t,n)||console.error("TempNode is not shared"),i=i??this.uuid,t.getTempVar(i,s??this.getType(t),o,this.getLabel()).name}};var Et=class extends ze{constructor(t,n){n=n??{},n.shared=n.shared!==void 0?n.shared:!1;super(t,n);this.readonly=!1}setReadonly(t){return this.readonly=t,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(t,n,i,s,o,a){i=t.getUUID(i??this.getUUID()),s=s??this.getType(t);let l=t.getNodeData(i);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(t,n,i,s,o,a):t.isShader("vertex")?(l.vertex||(l.vertex=t.createVertexUniform(s,this,o,a,this.getLabel())),t.format(l.vertex.name,s,n)):(l.fragment||(l.fragment=t.createFragmentUniform(s,this,o,a,this.getLabel())),t.format(l.fragment.name,s,n))}};var bt=class extends Et{constructor(t=0,n,i,s){super("c");this.nodeType="Color";this.value=t instanceof Cn?t:new Cn(t||0,n,i,s)}setRGBA(t){this.value.setRGBA(t.r,t.g,t.b,t.a)}generate(t,n,i,s,o,a){i=t.getUUID(i??this.getUUID()),s=s??this.getType(t);let l=t.getNodeData(i),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(t,"f");t.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(t,n,i,s,o,a):t.isShader("vertex")?(l.vertex||(l.vertex=t.createVertexUniform(s,this,o,a,this.getLabel())),t.format(l.vertex.name,s,n)):(l.fragment||(l.fragment=t.createFragmentUniform(s,this,o,a,this.getLabel())),t.format(l.fragment.name,s,n))}generateReadonly(t,n,i,s,o,a){return t.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",s,n)}};var Ae=class extends Et{constructor(t){super("f");this.nodeType="Float";this.value=t??0}generateReadonly(t,n,i,s,o,a){return t.format(this.value+(this.value%1?"":".0"),s,n)}};var st=class extends Et{constructor(t){super("i");this.nodeType="Int";this.value=Math.floor(t??0)}generateReadonly(t,n,i,s,o,a){return t.format(this.value.toString(),s,n)}};var ks=class extends Tn{constructor(){super("basic");this.nodeType="Basic";this.color=new bt(5855577),this.shadingAlpha=new Ae(1),this.shadingBlend=new st(0)}generate(t){let n;if(t.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(t,"v3",{cache:"position"}):void 0;t.mergeUniform(zr.merge([me.fog])),t.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
3138
3138
|
`));let s=["#include <beginnormal_vertex>",`
|
|
3139
3139
|
#if !defined( USE_LAYER_DISPLACE )
|
|
3140
3140
|
#include <defaultnormal_vertex>
|
|
@@ -4213,7 +4213,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
4213
4213
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
4214
4214
|
|
|
4215
4215
|
return normal;
|
|
4216
|
-
}`)}}();function zS(r,e){switch(r.type){case"fresnel":return KB(r,e);case"gradient":return JB(r);case"depth":return $B(r);case"normal":return eF(r);case"noise":return tF(r,e);case"rainbow":return nF(r);case"toon":return rF(r,e);case"outline":return iF(r,e);case"transmission":return sF(r,e);case"color":return ZB(r,e)}}function QB(r){return{type:r.type}}function wi(r){let{alpha:e,mode:t}=r;return{...QB(r),alpha:e,mode:t}}function ZB(r,e){return{...wi(r),color:sn(r.color,e)}}function KB(r,e){let{bias:t,scale:n,intensity:i,factor:s,color:o}=r;return{...wi(r),color:sn(o,e),bias:t,scale:n,intensity:i,factor:s}}function JB(r){let{gradientType:e,smooth:t,colors:n,steps:i,angle:s,offset:o,morph:a}=r;return{...wi(r),gradientType:e,smooth:t,colors:n.map(l=>new Ve(l[0],l[1],l[2],l[3])),num:n.length,steps:i,offset:new N(...o),morph:new N(...a),angle:s}}function $B(r){let{gradientType:e,near:t,far:n,isVector:i,isWorldSpace:s,origin:o,direction:a,colors:l,steps:u,smooth:c,num:h}=r;return{...wi(r),gradientType:e,near:t,far:n,isVector:i,isWorldSpace:s,origin:new S(...o),direction:a?new S(...a):new S(1,0,0),num:h,colors:l.map(d=>new Ve(d[0],d[1],d[2],d[3])),steps:u,smooth:c}}function eF(r){let{cnormal:e}=r;return{...wi(r),cnormal:new S(e[0],e[1],e[2])}}function tF(r,e){return{...wi(r),scale:r.scale,move:r.move,fA:new N(...r.fA),fB:new N(...r.fB),size:new S(...r.size),distortion:new N(...r.distortion),colorA:sn(r.colorA,e),colorB:sn(r.colorB,e),colorC:sn(r.colorC,e),colorD:sn(r.colorD,e),noiseType:r.noiseType}}function nF(r){return{...wi(r),filmThickness:r.filmThickness,movement:r.movement,wavelengths:new S(...r.wavelengths),noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,offset:new S(...r.offset)}}function rF(r,e){return{...wi(r),positioning:r.positioning,colors:r.colors.map(t=>new Ve(t[0],t[1],t[2],t[3])),num:r.colors.length,steps:r.steps,source:new S(...r.source),isWorldSpace:r.isWorldSpace,noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,shadowColor:sn(r.shadowColor,e),offset:new S(...r.offset)}}function iF(r,e){return{...wi(r),outlineColor:sn(r.outlineColor,e),contourColor:sn(r.contourColor,e),outlineWidth:r.outlineWidth,contourWidth:r.contourWidth,outlineThreshold:r.outlineThreshold,contourThreshold:r.contourThreshold,outlineSmoothing:r.outlineSmoothing,contourFrequency:r.contourFrequency,contourDirection:r.contourDirection,positionalLines:r.positionalLines,compensation:r.compensation,resolution:e.resolutionNode,normalMap:e.normalMap,depthMap:e.normalRenderTarget.depthTexture,pixelRatio:e.pixelRatioNode}}function sF(r,e){return{...wi(r),thickness:r.thickness,ior:r.ior,roughness:r.roughness,transmissionSamplerMap:e.transmissionSamplerMap,transmissionDepthMap:e.transmissionDepthMap}}var Hs=class extends Cn{};var E0=new Map,Iu={url:"head",time:0,data:null,next:null,prev:null},Rl={url:"tail",time:1/0,data:null,next:null,prev:null};Iu.next=Rl;Rl.prev=Iu;var GS=0;function kS(r){if(typeof r=="string")return r;let e=Date.now(),t=E0.get(r);return t===void 0?(t={url:URL.createObjectURL(new Blob([r])),data:r,time:e,next:null,prev:null},E0.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=Rl.prev,t.next=Rl,Rl.prev.next=t,Rl.prev=t,e-GS>1e3*10&&(GS=e+1e3,setTimeout(()=>{let n=Date.now(),i=Iu.next;for(;i.time<n-1e3*10;)URL.revokeObjectURL(i.url),E0.delete(i.data),i=i.next,i.prev=Iu,Iu.next=i},900)),t.url}var Nl=class{constructor(e,t){this.data=e;this.onImageLoad=t;this.loaded=!1;this.updateSrc(e.data)}updateSrc(e){this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=kS(e),this.img.onload=()=>{this.loaded=!0;let t=[1e3,1001,1002];for(let n of t){let i=this[n];i&&(i.image=this.img,i.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()}}getTexture(e){let t=this[e];if(t)return t;{let n=new It(this.img,void 0,e,e);return this.loaded&&(n.needsUpdate=!0),this[e]=n,n}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var Lo=class extends Nl{};var Ws=class extends Et{};function oF(r,e){switch(r.type){case"noise":return e==="noiseType";case"texture":return e==="projection"||e==="axis"||e==="side";case"displace":return e==="noiseType";case"depth":return e==="num"||e==="smooth"||e==="isWorldSpace"||e==="gradientType"||e==="isVector";default:return!1}}function C0(r,e,t){let n=t.uniforms[`f${t.id}_texture`];if(!n)return!1;let i=!1,s=r;if("image"in s){let o=s.image,a=e.image(o),l=n;l instanceof Lo||l.image.dispose(),l.image=a}if("wrapping"in s){let o=n;o.wrap=s.wrapping}if("repeat"in s||"offset"in s){let o="mat",a=t.uniforms[`f${t.id}_${o}`];"repeat"in s&&(a.repeat=s.repeat),"offset"in s&&(a.offset=s.offset),a.updateMatrix()}return i}function VS(r,e,t,n){let i=!1;for(let[s,o]of Object.entries(r)){if(!s||o===void 0||D0(s,t,n))continue;t.visible=n.visible;let a=t.uniforms[`f${t.id}_${s}`];if(!!a&&!(a instanceof Ws))switch(i=i||oF(t,s),a.constructor){case bt:if(typeof o=="string"){let l=e.getColor(o);l&&(a.value=l);break}else{let l=o;a.value instanceof Hs?a.value=new Cn(l.r,l.g,l.b,l.a):a.setRGBA(l);break}case Dr:if(typeof o=="string"){let l=e.getColor(o);l&&(a.value=l);break}else{let l=o;a.value instanceof Hs?a.value=new Cn(l.r,l.g,l.b,l.a):a.value.setRGBA(l.r,l.g,l.b,l.a);break}case gn:{let l=o;a.value.setX(l[0]),a.value.setY(l[1]);break}case Dn:{let l=o;a.value.setX(l[0]),a.value.setY(l[1]),a.value.setZ(l[2]);break}case er:{C0(o,e,t);break}case qr:{a.value=o.map(l=>new Ve(...l));break}default:{a.value=o;break}}}return i}var P0=class extends ze{constructor(t,n,i){super("v3");this.nodeType="Matcap";this.texture=t,this.alpha=n,this.mode=i,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(t,n){if(t.isShader("fragment")){t.addFragmentVariable(this.calpha,"float");let i=t.include(P0.Nodes.matcap);t.require("normal"),t.requires.normal=!0;let s=[];return s.push(this.texture.generate(t,"t")),s.push("normal"),s.push(this.alpha.build(t,"f")),s.push(this.mode.build(t,"i")),s.push(this.calpha),t.format(i+"("+s.join(",")+")",this.getType(t),n)}else return console.warn("MatcapNode is not compatible with "+t.shader+" shader."),t.format("vec3( 0.0 )",this.getType(t),n)}},Lu=P0;Lu.Nodes=function(){return{matcap:new Me(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
4216
|
+
}`)}}();function zS(r,e){switch(r.type){case"fresnel":return KB(r,e);case"gradient":return JB(r);case"depth":return $B(r);case"normal":return eF(r);case"noise":return tF(r,e);case"rainbow":return nF(r);case"toon":return rF(r,e);case"outline":return iF(r,e);case"transmission":return sF(r,e);case"color":return ZB(r,e)}}function QB(r){return{type:r.type}}function wi(r){let{alpha:e,mode:t}=r;return{...QB(r),alpha:e,mode:t}}function ZB(r,e){return{...wi(r),color:sn(r.color,e)}}function KB(r,e){let{bias:t,scale:n,intensity:i,factor:s,color:o}=r;return{...wi(r),color:sn(o,e),bias:t,scale:n,intensity:i,factor:s}}function JB(r){let{gradientType:e,smooth:t,colors:n,steps:i,angle:s,offset:o,morph:a}=r;return{...wi(r),gradientType:e,smooth:t,colors:n.map(l=>new Ve(l[0],l[1],l[2],l[3])),num:n.length,steps:i,offset:new N(...o),morph:new N(...a),angle:s}}function $B(r){let{gradientType:e,near:t,far:n,isVector:i,isWorldSpace:s,origin:o,direction:a,colors:l,steps:u,smooth:c,num:h}=r;return{...wi(r),gradientType:e,near:t,far:n,isVector:i,isWorldSpace:s,origin:new S(...o),direction:a?new S(...a):new S(1,0,0),num:h,colors:l.map(d=>new Ve(d[0],d[1],d[2],d[3])),steps:u,smooth:c}}function eF(r){let{cnormal:e}=r;return{...wi(r),cnormal:new S(e[0],e[1],e[2])}}function tF(r,e){return{...wi(r),scale:r.scale,move:r.move,fA:new N(...r.fA),fB:new N(...r.fB),size:new S(...r.size),distortion:new N(...r.distortion),colorA:sn(r.colorA,e),colorB:sn(r.colorB,e),colorC:sn(r.colorC,e),colorD:sn(r.colorD,e),noiseType:r.noiseType}}function nF(r){return{...wi(r),filmThickness:r.filmThickness,movement:r.movement,wavelengths:new S(...r.wavelengths),noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,offset:new S(...r.offset)}}function rF(r,e){return{...wi(r),positioning:r.positioning,colors:r.colors.map(t=>new Ve(t[0],t[1],t[2],t[3])),num:r.colors.length,steps:r.steps,source:new S(...r.source),isWorldSpace:r.isWorldSpace,noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,shadowColor:sn(r.shadowColor,e),offset:new S(...r.offset)}}function iF(r,e){return{...wi(r),outlineColor:sn(r.outlineColor,e),contourColor:sn(r.contourColor,e),outlineWidth:r.outlineWidth,contourWidth:r.contourWidth,outlineThreshold:r.outlineThreshold,contourThreshold:r.contourThreshold,outlineSmoothing:r.outlineSmoothing,contourFrequency:r.contourFrequency,contourDirection:r.contourDirection,positionalLines:r.positionalLines,compensation:r.compensation,resolution:e.resolutionNode,normalMap:e.normalMap,depthMap:e.normalRenderTarget.depthTexture,pixelRatio:e.pixelRatioNode}}function sF(r,e){return{...wi(r),thickness:r.thickness,ior:r.ior,roughness:r.roughness,transmissionSamplerMap:e.transmissionSamplerMap,transmissionDepthMap:e.transmissionDepthMap}}var Hs=class extends Cn{};var E0=new Map,Iu={url:"head",time:0,data:null,next:null,prev:null},Rl={url:"tail",time:1/0,data:null,next:null,prev:null};Iu.next=Rl;Rl.prev=Iu;var GS=0;function kS(r){if(typeof r=="string")return r;let e=Date.now(),t=E0.get(r);return t===void 0?(t={url:URL.createObjectURL(new Blob([r])),data:r,time:e,next:null,prev:null},E0.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=Rl.prev,t.next=Rl,Rl.prev.next=t,Rl.prev=t,e-GS>1e3*10&&(GS=e+1e3,setTimeout(()=>{let n=Date.now(),i=Iu.next;for(;i.time<n-1e3*10;)URL.revokeObjectURL(i.url),E0.delete(i.data),i=i.next,i.prev=Iu,Iu.next=i},900)),t.url}var Nl=class{constructor(e,t){this.data=e;this.onImageLoad=t;this.loaded=!1;this.updateSrc(e.data)}updateSrc(e){typeof document>"u"||(this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=kS(e),this.img.onload=()=>{this.loaded=!0;let t=[1e3,1001,1002];for(let n of t){let i=this[n];i&&(i.image=this.img,i.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(e){let t=this[e];if(t)return t;{let n=new It(this.img,void 0,e,e);return this.loaded&&(n.needsUpdate=!0),this[e]=n,n}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var Lo=class extends Nl{};var Ws=class extends Et{};function oF(r,e){switch(r.type){case"noise":return e==="noiseType";case"texture":return e==="projection"||e==="axis"||e==="side";case"displace":return e==="noiseType";case"depth":return e==="num"||e==="smooth"||e==="isWorldSpace"||e==="gradientType"||e==="isVector";default:return!1}}function C0(r,e,t){let n=t.uniforms[`f${t.id}_texture`];if(!n)return!1;let i=!1,s=r;if("image"in s){let o=s.image,a=e.image(o),l=n;l instanceof Lo||l.image.dispose(),l.image=a}if("wrapping"in s){let o=n;o.wrap=s.wrapping}if("repeat"in s||"offset"in s){let o="mat",a=t.uniforms[`f${t.id}_${o}`];"repeat"in s&&(a.repeat=s.repeat),"offset"in s&&(a.offset=s.offset),a.updateMatrix()}return i}function VS(r,e,t,n){let i=!1;for(let[s,o]of Object.entries(r)){if(!s||o===void 0||D0(s,t,n))continue;t.visible=n.visible;let a=t.uniforms[`f${t.id}_${s}`];if(!!a&&!(a instanceof Ws))switch(i=i||oF(t,s),a.constructor){case bt:if(typeof o=="string"){let l=e.getColor(o);l&&(a.value=l);break}else{let l=o;a.value instanceof Hs?a.value=new Cn(l.r,l.g,l.b,l.a):a.setRGBA(l);break}case Dr:if(typeof o=="string"){let l=e.getColor(o);l&&(a.value=l);break}else{let l=o;a.value instanceof Hs?a.value=new Cn(l.r,l.g,l.b,l.a):a.value.setRGBA(l.r,l.g,l.b,l.a);break}case gn:{let l=o;a.value.setX(l[0]),a.value.setY(l[1]);break}case Dn:{let l=o;a.value.setX(l[0]),a.value.setY(l[1]),a.value.setZ(l[2]);break}case er:{C0(o,e,t);break}case qr:{a.value=o.map(l=>new Ve(...l));break}default:{a.value=o;break}}}return i}var P0=class extends ze{constructor(t,n,i){super("v3");this.nodeType="Matcap";this.texture=t,this.alpha=n,this.mode=i,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(t,n){if(t.isShader("fragment")){t.addFragmentVariable(this.calpha,"float");let i=t.include(P0.Nodes.matcap);t.require("normal"),t.requires.normal=!0;let s=[];return s.push(this.texture.generate(t,"t")),s.push("normal"),s.push(this.alpha.build(t,"f")),s.push(this.mode.build(t,"i")),s.push(this.calpha),t.format(i+"("+s.join(",")+")",this.getType(t),n)}else return console.warn("MatcapNode is not compatible with "+t.shader+" shader."),t.format("vec3( 0.0 )",this.getType(t),n)}},Lu=P0;Lu.Nodes=function(){return{matcap:new Me(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
4217
4217
|
vec3 viewDir = normalize( vViewPosition );
|
|
4218
4218
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
4219
4219
|
vec3 y = cross( viewDir, x );
|
|
@@ -4900,8 +4900,8 @@ float contrastDepth = (gl_FragCoord.z - 0.5) * depthContrast + 0.5;
|
|
|
4900
4900
|
vec3 resultColor = mix(mix(vColor, normal, 0.2), vec3(contrastDepth), 0.4);
|
|
4901
4901
|
gl_FragColor = vec4(resultColor, vColor.r);
|
|
4902
4902
|
}
|
|
4903
|
-
`,XS=new yt({vertexShader:mF,fragmentShader:gF,uniforms:{depthContrast:{value:1}}});var No=class extends Yr{};var KS=xy(YS());var QS=new Map;function ZS(r){if(typeof r=="string")return r;let e=QS.get(r);return e||(e={url:URL.createObjectURL(new Blob([r]))},QS.set(r,e)),e.url}var js=class{constructor({src:e,volume:t,delay:n,loop:i}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let s;typeof e=="string"?s={src:e}:s={src:ZS(e),format:"wav"},this.sound=new KS.Howl(s),this.sound.on("end",this.onEnd),this._src=e,t!==void 0&&(this.volume=t),n!==void 0&&(this.delay=n),i!==void 0&&(this.loop=i)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(e){this._volume=e,this.sound.volume(e)}get loop(){return this._loop}set loop(e){this._loop=e,this.loopsRemaining=e}fade(e,t=1e3){e?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,t),this.clearFade()},e)):this.sound.fade(this._volume,0,t)}on(e,t,n){this.sound.on(e,t,n)}off(e,t,n){this.sound.off(e,t,n)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(e=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Bu=class{constructor(e){this.deletedMaterial=new No(fr.defaultTwoLayerData("basic"),this);this.deletedImage=new Lo($d.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new lt(2048,2048,{generateMipmaps:!0,minFilter:gs,magFilter:et,wrapS:xn,wrapT:xn}),this.transmissionRenderTarget.depthTexture=new vr(2048,2048),this.normalRenderTarget=new lt(1024,1024,{generateMipmaps:!1,minFilter:Ut,magFilter:Ut,type:gr}),this.normalRenderTarget.depthTexture=new vr(1024,1024),this.penumbraSizeNode=new pn(5,e.penumbraSize),this.resolutionNode=new gn(1,1),this.pixelRatioNode=new Ae(window.devicePixelRatio),this.reset(e)}setOnImageLoad(e){this._onImageLoad=e}reset(e){for(let[t,n]of Object.entries(e.images))this.addImage(t,n);for(let[t,n]of Object.entries(e.colors))this.addColor(t,n);for(let[t,n]of Object.entries(e.materials))this.addMaterial(t,new No(n,this));for(let[t,n]of Object.entries(e.audios))this.addAudio(t,n.data)}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(e,t){t.uuid=e,this.materials[e]=t}deleteMaterial(e){this.materials[e]&&(this.materials[e].dispose(),delete this.materials[e])}getMaterial(e){let t=this.materials[e];return t}getMaterialOrDeletedPlaceholder(e){return this.materials[e]??this.deletedMaterial}material(e){return typeof e=="string"?this.getMaterialOrDeletedPlaceholder(e):new Yr(e,this)}getMaterials(){return this.materials}addImage(e,t){return this.images[e]?(this.images[e].updateSrc(t.data),!0):(this.images[e]=new Lo(t,this.onImageLoad),!1)}deleteImage(e){this.images[e]&&delete this.images[e]}getDefaultImage(){return this.images.image_0}getImage(e){return this.images[e]??this.deletedImage}image(e){return typeof e=="string"?this.getImage(e):new Nl(e,this.onImageLoad)}getImages(){return this.images}addColor(e,t){return this.colors[e]?("a"in t?this.colors[e].setRGBA(t.r,t.g,t.b,t.a):this.colors[e].setRGBA(t.r,t.g,t.b,1),!0):("a"in t?this.colors[e]=new Hs(t.r,t.g,t.b,t.a):this.colors[e]=new Hs(t.r,t.g,t.b,1),!1)}updateColor(e,t){if(this.colors[e]){let n=this.colors[e];return this.colors[e].r=t.r??n.r,this.colors[e].g=t.g??n.g,this.colors[e].b=t.b??n.b,this.colors[e].a=t.a??n.a,!0}return!1}deleteColor(e){this.colors[e]&&delete this.colors[e]}getColor(e){return this.colors[e]}color(e){let t;if(typeof e=="string"){let n=this.getColor(e);n?t=n:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new Cn(0,0,0,0))}else return"a"in e?new Cn(e.r,e.g,e.b,e.a):new Cn(e.r,e.g,e.b,1);return t}addAudio(e,t){this.audios[e]=t}getAudio(e){let t=this.audios[e];if(t instanceof js)return t;{let n=new js({src:t});return this.audios[e]=n,n}}deleteAudio(e){this.audios[e]&&delete this.audios[e]}dispose(){Object.keys(this.materials).forEach(t=>this.deleteMaterial(t)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0,Object.values(this.audios).forEach(t=>{t instanceof js&&t.dispose()}),this.audios={}}},Vse=new Bu(sl.emptyData());var B0=new WeakMap,Rf=class extends ps{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,i){let s=new ms(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,o=>{let a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(o,a).then(t).catch(i)},n,i)}decodeDracoFile(e,t,n,i){let s={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(e,s).then(t)}decodeGeometry(e,t){for(let l in t.attributeTypes){let u=t.attributeTypes[l];u.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[l]=u.name)}let n=JSON.stringify(t);if(B0.has(e)){let l=B0.get(e);if(l.key===n)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i,s=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(s,o).then(l=>(i=l,new Promise((u,c)=>{i._callbacks[s]={resolve:u,reject:c},i.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return a.catch(()=>!0).then(()=>{i&&s&&this._releaseTask(i,s)}),B0.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new Pe;e.index&&t.setIndex(new je(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let i=e.attributes[n],s=i.name,o=i.array,a=i.itemSize;t.setAttribute(s,new je(o,a))}return t}_loadLibrary(e,t){let n=new ms(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((i,s)=>{n.load(e,i,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(n=>{let i=n[0];e||(this.decoderConfig.wasmBinary=n[1]);let s=yF.toString(),o=["/* draco decoder */",i,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
4904
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(s){let o=s.data;switch(o.type){case"decode":i._callbacks[o.id].resolve(o);break;case"error":i._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,s){return i._taskLoad>s._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}};function yF(){let r,e;onmessage=function(o){let a=o.data;switch(a.type){case"init":r=a.decoderConfig,e=new Promise(function(c){r.onModuleLoaded=function(h){c({draco:h})},DracoDecoderModule(r)});break;case"decode":let l=a.buffer,u=a.taskConfig;e.then(c=>{let h=c.draco,d=new h.Decoder,f=new h.DecoderBuffer;f.Init(new Int8Array(l),l.byteLength);try{let m=t(h,d,f,u),p=m.attributes.map(g=>g.array.buffer);m.index&&p.push(m.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:m},p)}catch(m){console.error(m),self.postMessage({type:"error",id:a.id,error:m.message})}finally{h.destroy(f),h.destroy(d)}});break}};function t(o,a,l,u){let c=u.attributeIDs,h=u.attributeTypes,d,f,m=a.GetEncodedGeometryType(l);if(m===o.TRIANGULAR_MESH)d=new o.Mesh,f=a.DecodeBufferToMesh(l,d);else if(m===o.POINT_CLOUD)d=new o.PointCloud,f=a.DecodeBufferToPointCloud(l,d);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||d.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let p={index:null,attributes:[]};for(let g in c){let y=self[h[g]],x,w;if(u.useUniqueIDs)w=c[g],x=a.GetAttributeByUniqueId(d,w);else{if(w=a.GetAttributeId(d,o[c[g]]),w===-1)continue;x=a.GetAttribute(d,w)}p.attributes.push(i(o,a,d,g,y,x))}return m===o.TRIANGULAR_MESH&&(p.index=n(o,a,d)),o.destroy(d),p}function n(o,a,l){let c=l.num_faces()*3,h=c*4,d=o._malloc(h);a.GetTrianglesUInt32Array(l,h,d);let f=new Uint32Array(o.HEAPF32.buffer,d,c).slice();return o._free(d),{array:f,itemSize:1}}function i(o,a,l,u,c,h){let d=h.num_components(),m=l.num_points()*d,p=m*c.BYTES_PER_ELEMENT,g=s(o,c),y=o._malloc(p);a.GetAttributeDataArrayForAllPoints(l,h,g,p,y);let x=new c(o.HEAPF32.buffer,y,m).slice();return o._free(y),{name:u,array:x,itemSize:d}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}var qs;function vF(){return qs||(qs=new Rf,qs.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qs.decoderPending}async function xF(r){if(qs){let e={attributeIDs:qs.defaultAttributeIDs,attributeTypes:qs.defaultAttributeTypes,useUniqueIDs:!1},t;try{t=await qs.decodeGeometry(new Int8Array(r).buffer,e)}catch(n){console.error(n)}if(t)return{index:t.index?{array:t.index.array}:void 0,attributes:Object.entries(t.attributes).map(([n,i])=>({name:n,itemSize:i.itemSize,array:i.array}))}}return null}async function JS(r,e){let[t,n]=lg(Vd.deserialize(new Uint8Array(r)));f_(t);let i=[];t.scene.objects.traverse((s,o)=>{o.type==="Mesh"&&o.geometry.type==="NonParametricGeometry"&&o.geometry.data.draco!==void 0&&i.push(o)}),i.length&&await vF();for(let s of i){let o=await xF(Cs(s.geometry.data.draco));if(o){o.index&&(s.geometry.data.index={array:o.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};o.attributes.forEach(({name:l,array:u,itemSize:c})=>{a[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),s.geometry.data.attributes=a,s.geometry.data.draco=void 0}}return e&&e(t),n.result().data}var i1={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},G0={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},bF=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],Bf={CSS:{},springs:{}};function Ai(r,e,t){return Math.min(Math.max(r,e),t)}function Fu(r,e){return r.indexOf(e)>-1}function F0(r,e){return r.apply(null,e)}var ke={arr:function(r){return Array.isArray(r)},obj:function(r){return Fu(Object.prototype.toString.call(r),"Object")},pth:function(r){return ke.obj(r)&&r.hasOwnProperty("totalLength")},svg:function(r){return r instanceof SVGElement},inp:function(r){return r instanceof HTMLInputElement},dom:function(r){return!("isNode"in r)&&(r.nodeType||ke.svg(r))},str:function(r){return typeof r=="string"},fnc:function(r){return typeof r=="function"},und:function(r){return typeof r>"u"},hex:function(r){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(r)},rgb:function(r){return/^rgb/.test(r)},hsl:function(r){return/^hsl/.test(r)},col:function(r){return ke.hex(r)||ke.rgb(r)||ke.hsl(r)},key:function(r){return!i1.hasOwnProperty(r)&&!G0.hasOwnProperty(r)&&r!=="targets"&&r!=="keyframes"}};function s1(r){var e=/\(([^)]+)\)/.exec(r);return e?e[1].split(",").map(function(t){return parseFloat(t)}):[]}function o1(r,e){var t=s1(r),n=Ai(ke.und(t[0])?1:t[0],.1,100),i=Ai(ke.und(t[1])?100:t[1],.1,100),s=Ai(ke.und(t[2])?10:t[2],.1,100),o=Ai(ke.und(t[3])?0:t[3],.1,100),a=Math.sqrt(i/n),l=s/(2*Math.sqrt(i*n)),u=l<1?a*Math.sqrt(1-l*l):0,c=1,h=l<1?(l*a+-o)/u:-o+a;function d(m){var p=e?e*m/1e3:m;return l<1?p=Math.exp(-p*l*a)*(c*Math.cos(u*p)+h*Math.sin(u*p)):p=(c+h*p)*Math.exp(-p*a),m===0||m===1?m:1-p}function f(){var m=Bf.springs[r];if(m)return m;for(var p=1/6,g=0,y=0;;)if(g+=p,d(g)===1){if(y++,y>=16)break}else y=0;var x=g*p*1e3;return Bf.springs[r]=x,x}return e?d:f}function wF(r){return r===void 0&&(r=10),function(e){return Math.ceil(Ai(e,1e-6,1)*r)*(1/r)}}var _F=function(){var r=11,e=1/(r-1);function t(c,h){return 1-3*h+3*c}function n(c,h){return 3*h-6*c}function i(c){return 3*c}function s(c,h,d){return((t(h,d)*c+n(h,d))*c+i(h))*c}function o(c,h,d){return 3*t(h,d)*c*c+2*n(h,d)*c+i(h)}function a(c,h,d,f,m){var p,g,y=0;do g=h+(d-h)/2,p=s(g,f,m)-c,p>0?d=g:h=g;while(Math.abs(p)>1e-7&&++y<10);return g}function l(c,h,d,f){for(var m=0;m<4;++m){var p=o(h,d,f);if(p===0)return h;var g=s(h,d,f)-c;h-=g/p}return h}function u(c,h,d,f){if(!(0<=c&&c<=1&&0<=d&&d<=1))return;var m=new Float32Array(r);if(c!==h||d!==f)for(var p=0;p<r;++p)m[p]=s(p*e,c,d);function g(y){for(var x=0,w=1,b=r-1;w!==b&&m[w]<=y;++w)x+=e;--w;var _=(y-m[w])/(m[w+1]-m[w]),A=x+_*e,M=o(A,c,d);return M>=.001?l(y,A,c,d):M===0?A:a(y,x,x+e,c,d)}return function(y){return c===h&&d===f||y===0||y===1?y:s(g(y),h,f)}}return u}(),a1=function(){var r={linear:function(){return function(n){return n}}},e={Sine:function(){return function(n){return 1-Math.cos(n*Math.PI/2)}},Circ:function(){return function(n){return 1-Math.sqrt(1-n*n)}},Back:function(){return function(n){return n*n*(3*n-2)}},Bounce:function(){return function(n){for(var i,s=4;n<((i=Math.pow(2,--s))-1)/11;);return 1/Math.pow(4,3-s)-7.5625*Math.pow((i*3-2)/22-n,2)}},Elastic:function(n,i){n===void 0&&(n=1),i===void 0&&(i=.5);var s=Ai(n,1,10),o=Ai(i,.1,2);return function(a){return a===0||a===1?a:-s*Math.pow(2,10*(a-1))*Math.sin((a-1-o/(Math.PI*2)*Math.asin(1/s))*(Math.PI*2)/o)}}},t=["Quad","Cubic","Quart","Quint","Expo"];return t.forEach(function(n,i){e[n]=function(){return function(s){return Math.pow(s,i+2)}}}),Object.keys(e).forEach(function(n){var i=e[n];r["easeIn"+n]=i,r["easeOut"+n]=function(s,o){return function(a){return 1-i(s,o)(1-a)}},r["easeInOut"+n]=function(s,o){return function(a){return a<.5?i(s,o)(a*2)/2:1-i(s,o)(a*-2+2)/2}}}),r}();function k0(r,e){if(ke.fnc(r))return r;var t=r.split("(")[0],n=a1[t],i=s1(r);switch(t){case"spring":return o1(r,e);case"cubicBezier":return F0(_F,i);case"steps":return F0(wF,i);default:return F0(n,i)}}function l1(r){try{var e=document.querySelectorAll(r);return e}catch{return}}function Ff(r,e){for(var t=r.length,n=arguments.length>=2?arguments[1]:void 0,i=[],s=0;s<t;s++)if(s in r){var o=r[s];e.call(n,o,s,r)&&i.push(o)}return i}function Uf(r){return r.reduce(function(e,t){return e.concat(ke.arr(t)?Uf(t):t)},[])}function $S(r){return ke.arr(r)?r:(ke.str(r)&&(r=l1(r)||r),r instanceof NodeList||r instanceof HTMLCollection?[].slice.call(r):[r])}function V0(r,e){return r.some(function(t){return t===e})}function H0(r){var e={};for(var t in r)e[t]=r[t];return e}function U0(r,e){var t=H0(r);for(var n in r)t[n]=e.hasOwnProperty(n)?e[n]:r[n];return t}function zf(r,e){var t=H0(r);for(var n in e)t[n]=ke.und(r[n])?e[n]:r[n];return t}function SF(r){var e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(r);return e?"rgba("+e[1]+",1)":r}function AF(r){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,t=r.replace(e,function(a,l,u,c){return l+l+u+u+c+c}),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),i=parseInt(n[1],16),s=parseInt(n[2],16),o=parseInt(n[3],16);return"rgba("+i+","+s+","+o+",1)"}function MF(r){var e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(r)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(r),t=parseInt(e[1],10)/360,n=parseInt(e[2],10)/100,i=parseInt(e[3],10)/100,s=e[4]||1;function o(d,f,m){return m<0&&(m+=1),m>1&&(m-=1),m<1/6?d+(f-d)*6*m:m<1/2?f:m<2/3?d+(f-d)*(2/3-m)*6:d}var a,l,u;if(n==0)a=l=u=i;else{var c=i<.5?i*(1+n):i+n-i*n,h=2*i-c;a=o(h,c,t+1/3),l=o(h,c,t),u=o(h,c,t-1/3)}return"rgba("+a*255+","+l*255+","+u*255+","+s+")"}function TF(r){if(ke.rgb(r))return SF(r);if(ke.hex(r))return AF(r);if(ke.hsl(r))return MF(r)}function Yi(r){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(r);if(e)return e[1]}function EF(r){if(Fu(r,"translate")||r==="perspective")return"px";if(Fu(r,"rotate")||Fu(r,"skew"))return"deg"}function z0(r,e){return ke.fnc(r)?r(e.target,e.id,e.total):r}function Mi(r,e){return r.getAttribute(e)}function W0(r,e,t){var n=Yi(e);if(V0([t,"deg","rad","turn"],n))return e;var i=Bf.CSS[e+t];if(!ke.und(i))return i;var s=100,o=document.createElement(r.tagName),a=r.parentNode&&r.parentNode!==document?r.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=s+t;var l=s/o.offsetWidth;a.removeChild(o);var u=l*parseFloat(e);return Bf.CSS[e+t]=u,u}function c1(r,e,t){if(e in r.style){var n=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),i=r.style[e]||getComputedStyle(r).getPropertyValue(n)||"0";return t?W0(r,i,t):i}}function j0(r,e){if(ke.dom(r)&&!ke.inp(r)&&(Mi(r,e)||ke.svg(r)&&r[e]))return"attribute";if(ke.dom(r)&&V0(bF,e))return"transform";if(ke.dom(r)&&e!=="transform"&&c1(r,e))return"css";if(r[e]!=null)return"object"}function u1(r){if(!!ke.dom(r)){for(var e=r.style.transform||"",t=/(\w+)\(([^)]*)\)/g,n=new Map,i;i=t.exec(e);)n.set(i[1],i[2]);return n}}function CF(r,e,t,n){var i=Fu(e,"scale")?1:0+EF(e),s=u1(r).get(e)||i;return t&&(t.transforms.list.set(e,s),t.transforms.last=e),n?W0(r,s,n):s}function q0(r,e,t,n){switch(j0(r,e)){case"transform":return CF(r,e,n,t);case"css":return c1(r,e,t);case"attribute":return Mi(r,e);default:return r[e]||0}}function X0(r,e){var t=/^(\*=|\+=|-=)/.exec(r);if(!t)return r;var n=Yi(r)||0,i=parseFloat(e),s=parseFloat(r.replace(t[0],""));switch(t[0][0]){case"+":return i+s+n;case"-":return i-s+n;case"*":return i*s+n}}function h1(r,e){if(ke.col(r))return TF(r);if(/\s/g.test(r))return r;var t=Yi(r),n=t?r.substr(0,r.length-t.length):r;return e?n+e:n}function Y0(r,e){return Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))}function DF(r){return Math.PI*2*Mi(r,"r")}function PF(r){return Mi(r,"width")*2+Mi(r,"height")*2}function IF(r){return Y0({x:Mi(r,"x1"),y:Mi(r,"y1")},{x:Mi(r,"x2"),y:Mi(r,"y2")})}function d1(r){for(var e=r.points,t=0,n,i=0;i<e.numberOfItems;i++){var s=e.getItem(i);i>0&&(t+=Y0(n,s)),n=s}return t}function LF(r){var e=r.points;return d1(r)+Y0(e.getItem(e.numberOfItems-1),e.getItem(0))}function f1(r){if(r.getTotalLength)return r.getTotalLength();switch(r.tagName.toLowerCase()){case"circle":return DF(r);case"rect":return PF(r);case"line":return IF(r);case"polyline":return d1(r);case"polygon":return LF(r)}}function OF(r){var e=f1(r);return r.setAttribute("stroke-dasharray",e),e}function RF(r){for(var e=r.parentNode;ke.svg(e)&&ke.svg(e.parentNode);)e=e.parentNode;return e}function p1(r,e){var t=e||{},n=t.el||RF(r),i=n.getBoundingClientRect(),s=Mi(n,"viewBox"),o=i.width,a=i.height,l=t.viewBox||(s?s.split(" "):[0,0,o,a]);return{el:n,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function NF(r,e){var t=ke.str(r)?l1(r)[0]:r,n=e||100;return function(i){return{property:i,el:t,svg:p1(t),totalLength:f1(t)*(n/100)}}}function BF(r,e){function t(a){a===void 0&&(a=0);var l=e+a>=1?e+a:0;return r.el.getPointAtLength(l)}var n=p1(r.el,r.svg),i=t(),s=t(-1),o=t(1);switch(r.property){case"x":return(i.x-n.x)*n.w;case"y":return(i.y-n.y)*n.h;case"angle":return Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI}}function e1(r,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,n=h1(ke.pth(r)?r.totalLength:r,e)+"";return{original:n,numbers:n.match(t)?n.match(t).map(Number):[0],strings:ke.str(r)||e?n.split(t):[]}}function m1(r){var e=r?Uf(ke.arr(r)?r.map($S):$S(r)):[];return Ff(e,function(t,n,i){return i.indexOf(t)===n})}function g1(r){var e=m1(r);return e.map(function(t,n){return{target:t,id:n,total:e.length,transforms:{list:u1(t)}}})}function FF(r,e){var t=H0(e);if(/^spring/.test(t.easing)&&(t.duration=o1(t.easing)),ke.arr(r)){var n=r.length,i=n===2&&!ke.obj(r[0]);i?r={value:r}:ke.fnc(e.duration)||(t.duration=e.duration/n)}var s=ke.arr(r)?r:[r];return s.map(function(o,a){var l=ke.obj(o)&&!ke.pth(o)?o:{value:o};return ke.und(l.delay)&&(l.delay=a?0:e.delay),ke.und(l.endDelay)&&(l.endDelay=a===s.length-1?e.endDelay:0),l}).map(function(o){return zf(o,t)})}function UF(r){for(var e=Ff(Uf(r.map(function(s){return Object.keys(s)})),function(s){return ke.key(s)}).reduce(function(s,o){return s.indexOf(o)<0&&s.push(o),s},[]),t={},n=function(s){var o=e[s];t[o]=r.map(function(a){var l={};for(var u in a)ke.key(u)?u==o&&(l.value=a[u]):l[u]=a[u];return l})},i=0;i<e.length;i++)n(i);return t}function zF(r,e){var t=[],n=e.keyframes;n&&(e=zf(UF(n),e));for(var i in e)ke.key(i)&&t.push({name:i,tweens:FF(e[i],r)});return t}function GF(r,e){var t={};for(var n in r){var i=z0(r[n],e);ke.arr(i)&&(i=i.map(function(s){return z0(s,e)}),i.length===1&&(i=i[0])),t[n]=i}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}function kF(r,e){var t;return r.tweens.map(function(n){var i=GF(n,e),s=i.value,o=ke.arr(s)?s[1]:s,a=Yi(o),l=q0(e.target,r.name,a,e),u=t?t.to.original:l,c=ke.arr(s)?s[0]:u,h=Yi(c)||Yi(l),d=a||h;return ke.und(o)&&(o=u),i.from=e1(c,d),i.to=e1(X0(o,c),d),i.start=t?t.end:0,i.end=i.start+i.delay+i.duration+i.endDelay,i.easing=k0(i.easing,i.duration),i.isPath=ke.pth(s),i.isColor=ke.col(i.from.original),i.isColor&&(i.round=1),t=i,i})}var y1={css:function(r,e,t){return r.style[e]=t},attribute:function(r,e,t){return r.setAttribute(e,t)},object:function(r,e,t){return r[e]=t},transform:function(r,e,t,n,i){if(n.list.set(e,t),e===n.last||i){var s="";n.list.forEach(function(o,a){s+=a+"("+o+") "}),r.style.transform=s}}};function v1(r,e){var t=g1(r);t.forEach(function(n){for(var i in e){var s=z0(e[i],n),o=n.target,a=Yi(s),l=q0(o,i,a,n),u=a||Yi(l),c=X0(h1(s,u),l),h=j0(o,i);y1[h](o,i,c,n.transforms,!0)}})}function VF(r,e){var t=j0(r.target,e.name);if(t){var n=kF(e,r),i=n[n.length-1];return{type:t,property:e.name,animatable:r,tweens:n,duration:i.end,delay:n[0].delay,endDelay:i.endDelay}}}function HF(r,e){return Ff(Uf(r.map(function(t){return e.map(function(n){return VF(t,n)})})),function(t){return!ke.und(t)})}function x1(r,e){var t=r.length,n=function(s){return s.timelineOffset?s.timelineOffset:0},i={};return i.duration=t?Math.max.apply(Math,r.map(function(s){return n(s)+s.duration})):e.duration,i.delay=t?Math.min.apply(Math,r.map(function(s){return n(s)+s.delay})):e.delay,i.endDelay=t?i.duration-Math.max.apply(Math,r.map(function(s){return n(s)+s.duration-s.endDelay})):e.endDelay,i}var t1=0;function WF(r){var e=U0(i1,r),t=U0(G0,r),n=zF(t,r),i=g1(r.targets),s=HF(i,n),o=x1(s,t),a=t1;return t1++,zf(e,{id:a,children:[],animatables:i,animations:s,duration:o.duration,delay:o.delay,endDelay:o.endDelay})}var rr=[],n1=[],Nf,jF=function(){function r(){Nf=requestAnimationFrame(e)}function e(t){var n=rr.length;if(n){for(var i=0;i<n;){var s=rr[i];if(!s.paused)s.tick(t);else{var o=rr.indexOf(s);o>-1&&(rr.splice(o,1),n=rr.length)}i++}r()}else Nf=cancelAnimationFrame(Nf)}return r}();function qF(){document.hidden?(rr.forEach(function(r){return r.pause()}),n1=rr.slice(0),on.running=rr=[]):n1.forEach(function(r){return r.play()})}typeof document<"u"&&document.addEventListener("visibilitychange",qF);function on(r){r===void 0&&(r={});var e=0,t=0,n=0,i,s=0,o=null;function a(w){var b=window.Promise&&new Promise(function(_){return o=_});return w.finished=b,b}var l=WF(r),u=a(l);function c(){var w=l.direction;w!=="alternate"&&(l.direction=w!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,i.forEach(function(b){return b.reversed=l.reversed})}function h(w){return l.reversed?l.duration-w:w}function d(){e=0,t=h(l.currentTime)*(1/on.speed)}function f(w,b){b&&b.seek(w-b.timelineOffset)}function m(w){if(l.reversePlayback)for(var _=s;_--;)f(w,i[_]);else for(var b=0;b<s;b++)f(w,i[b])}function p(w){var b=0,_=l.animations,A=_.length;for(l.reversePlayback===!0&&l.rewind===!1&&(w=l.duration+l.delay-l.endDelay-w);b<A;){var M=_[b],v=M.animatable,T=M.tweens,E=T.length-1,C=T[E];E&&(C=Ff(T,function($){return w<$.end})[0]||C);for(var L=Ai(w-C.start-C.delay,0,C.duration)/C.duration,R=isNaN(L)?1:C.easing(L),O=C.to.strings,W=C.round,j=[],Z=C.to.numbers.length,Y=void 0,z=0;z<Z;z++){var F=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var G=C.to.numbers[z],B=C.from.numbers[z]||0;else var B=C.to.numbers[z],G=C.from.numbers[z]||0;C.isPath?F=BF(C.value,R*B):F=G+R*(B-G),W&&(C.isColor&&z>2||(F=Math.round(F*W)/W)),j.push(F)}var k=O.length;if(!k)Y=j[0];else{Y=O[0];for(var H=0;H<k;H++){var X=O[H],q=O[H+1],ae=j[H];isNaN(ae)||(q?Y+=ae+q:Y+=ae+" ")}}y1[M.type](v.target,M.property,Y,v.transforms),M.currentValue=Y,b++}}function g(w){l[w]&&!l.passThrough&&l[w](l)}function y(){l.remaining&&l.remaining!==!0&&l.remaining--}function x(w){var b=l.duration,_=l.delay,A=b-l.endDelay,M=h(w);l.progress=Ai(M/b*100,0,100),l.reversePlayback=M<l.currentTime,i&&m(M),!l.began&&l.currentTime>=0&&(l.began=!0,g("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,g("loopBegin")),M<=_&&l.currentTime!==0&&(p(0),g("change")),(M>=A&&l.currentTime!==b||!b)&&(p(b),g("change")),M>_&&M<A?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,g("changeBegin")),g("change"),p(M)):l.changeBegan?(l.changeCompleted=!0,l.changeBegan=!1,g("change"),g("changeComplete")):l.began&&M>A&&(g("change"),g("changeComplete")),l.currentTime=Ai(M,0,b),l.began&&g("update"),w>=b&&(t=0,y(),l.remaining?(e=n,g("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&c()):(l.paused=!0,l.completed||(l.completed=!0,g("loopComplete"),g("complete"),!l.passThrough&&"Promise"in window&&(o(),u=a(l)))))}return l.reset=function(){var w=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=w==="reverse",l.remaining=l.loop,i=l.children,s=i.length;for(var b=s;b--;)l.children[b].reset();(l.reversed&&l.loop!==!0||w==="alternate"&&l.loop===1)&&l.remaining++,p(l.reversed?l.duration:0)},l.set=function(w,b){return v1(w,b),l},l.tick=function(w){n=w,e||(e=n),x((n+(t-e))*on.speed)},l.seek=function(w){x(h(w))},l.pause=function(){l.paused=!0,d()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,rr.push(l),d(),Nf||jF())},l.reverse=function(){c(),l.completed=!l.reversed,d()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function r1(r,e){for(var t=e.length;t--;)V0(r,e[t].animatable.target)&&e.splice(t,1)}function XF(r){for(var e=m1(r),t=rr.length;t--;){var n=rr[t],i=n.animations,s=n.children;r1(e,i);for(var o=s.length;o--;){var a=s[o],l=a.animations;r1(e,l),!l.length&&!a.children.length&&s.splice(o,1)}!i.length&&!s.length&&n.pause()}}function YF(r,e){e===void 0&&(e={});var t=e.direction||"normal",n=e.easing?k0(e.easing):null,i=e.grid,s=e.axis,o=e.from||0,a=o==="first",l=o==="center",u=o==="last",c=ke.arr(r),h=parseFloat(c?r[0]:r),d=c?parseFloat(r[1]):0,f=Yi(c?r[1]:r)||0,m=e.start||0+(c?h:0),p=[],g=0;return function(y,x,w){if(a&&(o=0),l&&(o=(w-1)/2),u&&(o=w-1),!p.length){for(var b=0;b<w;b++){if(!i)p.push(Math.abs(o-b));else{var _=l?(i[0]-1)/2:o%i[0],A=l?(i[1]-1)/2:Math.floor(o/i[0]),M=b%i[0],v=Math.floor(b/i[0]),T=_-M,E=A-v,C=Math.sqrt(T*T+E*E);s==="x"&&(C=-T),s==="y"&&(C=-E),p.push(C)}g=Math.max.apply(Math,p)}n&&(p=p.map(function(R){return n(R/g)*g})),t==="reverse"&&(p=p.map(function(R){return s?R<0?R*-1:-R:Math.abs(g-R)}))}var L=c?(d-h)/g:h;return m+L*(Math.round(p[x]*100)/100)+f}}function QF(r){r===void 0&&(r={});var e=on(r);return e.duration=0,e.add=function(t,n){var i=rr.indexOf(e),s=e.children;i>-1&&rr.splice(i,1);function o(d){d.passThrough=!0}for(var a=0;a<s.length;a++)o(s[a]);var l=zf(t,U0(G0,r));l.targets=l.targets||r.targets;var u=e.duration;l.autoplay=!1,l.direction=e.direction,l.timelineOffset=ke.und(n)?u:X0(n,u),o(e),l.rewind=e.rewind,e.seek(l.timelineOffset);var c=on(l);o(c),s.push(c);var h=x1(s,r);return e.delay=h.delay,e.endDelay=h.endDelay,e.duration=h.duration,e.seek(0),e.reset(),e.autoplay&&e.play(),e},e}on.version="3.2.0";on.speed=1;on.running=rr;on.remove=XF;on.get=q0;on.set=v1;on.convertPx=W0;on.path=NF;on.setDashoffset=OF;on.stagger=YF;on.timeline=QF;on.easing=k0;on.penner=a1;on.random=function(r,e){return Math.floor(Math.random()*(e-r+1))+r};var b1=on;function w1(r,e,t){let n=r.cameraType==="OrthographicCamera"?e.orthographic?.zoom:e.perspective?.zoom;if(n!==void 0){let i=r.zoom;i!==n&&t.push({change:s=>{r.zoom=Je.lerp(i,n,s),r.updateProjectionMatrix()}})}if(e.targetOffset!==void 0){let i=r.targetOffset,s=e.targetOffset;i!==s&&t.push({change:o=>{r.targetOffset=Je.lerp(i,s,o)}})}}function _1(r,e,t){if(e.width!==void 0&&e.height!==void 0&&e.depth!==void 0){let{width:n,height:i,depth:s}=r.geometry.userData.parameters,o=[n,i,s],a=[e.width,e.height,e.depth];!rn.isEqual(o,a)&&!xt(r)&&t.push({change:l=>{let[u,c,h]=rn.lerp(o,a,l);r.updateGeometry({parameters:{width:u,height:c,depth:h}}),r.invalidateDownstreamBooleanData()}})}}function S1(r,e,t,n){if(e.intensity!==void 0){let i=r.intensity,s=e.intensity;i!==s&&t.push({change:o=>{r.intensity=Je.lerp(i,s,o)}})}if(e.color!==void 0){let i=r.color.clone(),s=typeof e.color=="string"?n.getColor(e.color):e.color;if(!hn.equals(i,s)){let o=i.clone();r.color=o,t.push({change:a=>{let{r:l,g:u,b:c}=hn.lerp(i,s,a);o.setRGB(l,u,c)}})}}}function A1(r,e,t,n){let i=0,s=r.layers[i];for(;s;){let o=e.layers.data(s.uuid);if(o&&(s.visible??!0)&&(o.visible??!0)){let a=s.getNames().filter(l=>!Xd.some(u=>l.includes(u)));for(let l of a)try{let u=s.getValue(l);if(l==="steps")tU(s,o,l,t);else if(l==="colors")nU(s,o,l,t);else if(typeof u=="number")ZF(s,o,l,t);else{if(typeof u=="boolean")continue;"isVector2"in u?KF(s,o,l,t):"isVector3"in u?JF(s,o,l,t):"isColorA"in u?eU(s,o,l,t,n):"isColor"in u?$F(s,o,l,t,n):"isTexture"in u&&rU(s,o,l,t)}}catch(u){console.error(`animateMaterial: unexpected material layer for ${l}`,u)}}i+=1,s=r.layers[i]}}function ZF(r,e,t,n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=e[t];i!==s&&n.push({change:o=>{r.setValue(t,Je.lerp(i,s,o))}})}function KF(r,e,t,n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=i.toArray(),o=e[t];ji.isEqual(s,o)||n.push({change:a=>{i.fromArray(ji.lerp(s,o,a))}})}function JF(r,e,t,n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=i.toArray(),o=e[t];rn.isEqual(s,o)||n.push({change:a=>{i.fromArray(rn.lerp(s,o,a))}})}function $F(r,e,t,n,i){if(!r.hasValue(t)||!(t in e))return;let s=r.getValue(t).clone(),o=e[t],a=typeof o=="string"?i.getColor(o):o;if(hn.equals(s,a))return;let l=s.clone();r.setValue(t,l),n.push({change:u=>{let{r:c,g:h,b:d}=hn.lerp(s,a,u);l.setRGB(c,h,d)}})}function eU(r,e,t,n,i){if(!r.hasValue(t)||!(t in e))return;let s=r.getValue(t).clone(),o=e[t],a=typeof o=="string"?i.getColor(o):o;if(Rn.equals(s,a))return;let l=s.clone();r.setValue(t,l),n.push({change:u=>{let{r:c,g:h,b:d,a:f}=Rn.lerp(s,a,u);l.setRGBA(c,h,d,f)}})}function tU(r,e,t="steps",n){if(!r.hasValue(t)||!(t in e))return;let i=[...r.getValue(t)],s=e[t];for(let o=0;o<i.length;++o){let a=i[o],l=s[o];a!==l&&n.push({change:u=>{i[o]=Je.lerp(a,l,u),r.setValue("steps",i)}})}}function nU(r,e,t="colors",n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=e[t];for(let o=0;o<i.length;++o){let a=i[o].toArray(),l=s[o];Wc.isEqual(a,l)||n.push({change:u=>{i[o].fromArray(Wc.lerp(a,l,u))}})}}function rU(r,e,t="texture",n){if(!r.hasValue(t)||!(t in e))return;let i=r.getNode("mat"),s=e[t],o=i.repeat,a=i.offset,l=s.repeat,u=s.offset;(!ji.isEqual(o,l)||!ji.isEqual(a,u))&&n.push({change:c=>{i.repeat=ji.lerp(o,l,c),i.offset=ji.lerp(a,u,c),i.updateMatrix()}})}function M1(r,e,t,n){if(n===0)return t.copy(r);if(n===1)return t.copy(e);let i=r.w*e.w+r.x*e.x+r.y*e.y+r.z*e.z;if(i>=1)return t.copy(r);let s=1-i*i;if(s<=Number.EPSILON){let c=1-n;return t.w=c*r.w+n*e.w,t.x=c*r.x+n*e.x,t.y=c*r.y+n*e.y,t.z=c*r.z+n*e.z,t.normalize(),t}let o=Math.sqrt(s),a=Math.atan2(o,i),l=Math.sin((1-n)*a)/o,u=Math.sin(n*a)/o;return t.w=r.w*l+e.w*u,t.x=r.x*l+e.x*u,t.y=r.y*l+e.y*u,t.z=r.z*l+e.z*u,t}function T1(r,e,t=0){let n=Array.isArray(r.material)?r.material[t]:r.material,i;return"materials"in e?i=e.materials[t]:"material"in e&&(i=e.material),[n,i]}var Q0=new S,Z0=new S,E1=new qt,iU=new yr,sU=new Oe;function C1(r,e,t,n){if(t.position!==void 0){let i=r.position.toArray(),s=t.position;rn.isEqual(i,s)||n.push({change:o=>{r.position.fromArray(rn.lerp(i,s,o)),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}if(t.scale!==void 0){let i=r.scale.toArray(),s=t.scale;rn.isEqual(i,s)||n.push({change:o=>{r.scale.fromArray(rn.lerp(i,s,o)),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}oU(r,e,t,n),aU(r,t,n)}function oU(r,e,t,n){if(t.rotation===void 0)return;let i=Q0.setFromEuler(r.rotation).toArray(),s=t.rotation;if(rn.isEqual(i,s))return;if(rn.sub(t.rotation,e?e.rotation:r.rotation).every(a=>Math.abs(a)<2*Math.PI)){let a=r.quaternion.clone(),l=new qt().setFromEuler(iU.set(t.rotation[0],t.rotation[1],t.rotation[2]));n.push({change:u=>{M1(a,l,r.quaternion,u),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}else n.push({change:a=>{r.rotation.setFromVector3(Z0.fromArray(rn.lerp(i,s,a))),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}function aU(r,e,t){if(e.hiddenMatrix!==void 0&&!si.isEqual(r.hiddenMatrix.toArray(),e.hiddenMatrix)){let n=new S,i=new qt,s=new S;r.hiddenMatrix.decompose(n,i,s);let o=new S,a=new qt,l=new S;sU.fromArray(e.hiddenMatrix).decompose(o,a,l),t.push({change:u=>{E1.slerpQuaternions(i,a,u),Q0.lerpVectors(n,o,u),Z0.lerpVectors(s,l,u),r.hiddenMatrix.compose(Q0,E1,Z0),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}}function D1(r,e,t,n){let i=[];if((r.visible||xt(r.parent))&&C1(r,e?.objectState,t.objectState,i),Ft(r)){if((r.visible||xt(r.parent))&&"geometry"in t.objectState&&_1(r,t.objectState.geometry,i),r.visible&&("material"in t.objectState||"materials"in t.objectState)){let[s,o]=T1(r,t.objectState,0);s&&o&&typeof o!="string"&&A1(s,o,i,n)}}else r.visible&&fS(r)?S1(r,t.objectState,i,n):dS(r)&&w1(r,t.objectState,i);return i.length?{change:s=>{i.forEach(o=>{o.change&&o.change(s)})}}:void 0}function lU(r,e,t){switch(r){case 0:return"cubicBezier( 0, 0, 1, 1 )";case 1:return"cubicBezier( .25, .1, .25, 1 )";case 2:return"cubicBezier( .42, 0, 1, 1 )";case 3:return"cubicBezier( 0, 0, .58, 1 )";case 4:return"cubicBezier( .42, 0, .58, 1 )";case 5:let{control1:n,control2:i}=e??{...Sd.defaultData};return`cubicBezier( ${n[0]}, ${n[1]}, ${i[0]}, ${i[1]} )`;case 6:let{mass:s,stiffness:o,damping:a,velocity:l}=t??{..._d.defaultData};return`spring( ${s}, ${o}, ${a}, ${l} )`}}var Gf=class{constructor(e,t){this.object=e;this.sharedAssets=t;this.uuid=Je.generateUUID();this.states=[];this.events={};this.animatingState=0;this._scrollCounter=null}get fromState(){return this._fromState}get animation(){return this._animation}start(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._scrollCounter=null),this.states.length>1&&(this.states[0].execute(this.object,this.sharedAssets),this._toState=this.states[0],this._fromState=void 0)}end(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0),this.states.length>1&&this.states[0].execute(this.object,this.sharedAssets),this._toState=void 0,this._fromState=void 0}seek(e,t,n,i,s){this._scrollCounter===null&&(this.animate(e,i,s),this._scrollCounter=0),this._scrollCounter+=t,this._scrollCounter=Math.min(Math.max(this._scrollCounter,0),n),this._animation?.seek(this._scrollCounter/n*(i.duration?i.duration:1))}animate(e,t,n){if(this._fromState===e&&this._animation?.reversed){let i=this._animation?.currentTime??0;this._animation?.reset(),this._animation?.seek(i),this._animation?.play()}else if(this._toState!==e){this._animation!==void 0&&this._animation.pause(),this.animatingState=0,this._fromState=this._toState,this._toState=e;let i=D1(this.object,this._fromState,e,this.sharedAssets);if(!i)return;let s={t:0};this._animation=b1({autoplay:!1,loop:t.repeat?!0:t.cycle?1:!1,direction:t.cycle?"alternate":"normal",rewind:t.rewind,delay:t.startDelay,endDelay:t.endDelay,duration:t.duration,easing:lU(t.easing,t.cubicControls,t.springParameters),targets:s,t:1,change:()=>{i.change&&i.change(s.t),n?.change&&n.change(s.t)},loopBegin:o=>{if(this.animatingState===0){this.animatingState=1;return}o.reversed?(this._toState=this._fromState,this._fromState=e):(this._fromState=this._toState,this._toState=e)}}),t.autoplay?t.startOnceDelay>0?setTimeout(()=>this._animation?.play(),t.startOnceDelay):this._animation?.play():this._animation.finished.then(()=>{this._animation=void 0,this.animatingState=0})}}emitEvent(e,t){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let n=this.events[e];if(n){for(let i of n)if("targets"in i)for(let{object:s,state:o,params:a}of i.targets)s.interaction?.animate(o,a,{change:t})}}}emitEventReverse(e,t){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let n=this.events[e];if(n){for(let i of n)if("targets"in i)for(let{object:s,params:o}of i.targets){let a=s.interaction;a?._fromState!==void 0&&a.animate(a._fromState,o,{change:t})}}}}};var Ul=class{static create(e,t){if(e.object){let n=t.find(e.object);if(n?.interaction){let i=e.state?n.interaction.states.find(s=>s.uuid===e.state):n.interaction.states[0];if(i){let s=e.delay??0,o={cycle:e.cycle??!1,rewind:e.rewind??!1,repeat:e.repeat??!1,duration:e.duration??1e3,startOnceDelay:e.delayDirection==="start-once"?s:0,startDelay:e.delayDirection==="start"||!e.delayDirection?s:0,endDelay:e.delayDirection==="end"||!e.delayDirection?s:0,easing:e.easing??4,autoplay:!0};if(e.easing===5){let a=e;o.cubicControls={control1:[...a.control1],control2:[...a.control2]}}if(e.easing===6){let a=e;o.springParameters={mass:a.mass,stiffness:a.stiffness,damping:a.damping,velocity:a.velocity}}return new Ul(n,i,o)}}}}constructor(e,t,n){this.object=e,this.state=t,this.params=n}};var Bn=class{constructor(e){this.raycastState=e;this.domEventsNeeded=[]}init(e,t){}dispose(){}};var K0=new S,P1=new Gn,I1=new Oe,kf={type:"follow",normal:new S,raycaster:new Os},zl;(t=>{function r(n){if(n.type===10)return{type:"follow"}}t.create=r;function e({target:n,normal:i,raycaster:s,begin:o,change:a}){!n||!i||!s||(o&&o("follow",n.uuid),P1.setFromNormalAndCoplanarPoint(i,n.getWorldPosition(K0)),s.ray.intersectPlane(P1,K0),n.position.copy(K0),n.parent!==null&&n.position.applyMatrix4(I1.copy(n.parent.matrixWorld).invert()),n.position.applyMatrix4(I1.copy(n.hiddenMatrix).invert()),n.updateMatrix(),Ft(n)&&xt(n.parent)&&n.invalidateDownstreamBooleanData(!0),a&&a())}t.listener=e})(zl||(zl={}));var Vf=class extends Bn{constructor(){super(...arguments);this.objects=[];this.onTouchMove=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleFollowEvent())};this.onMouseMove=t=>{this.raycastState.updateRaycaster(t),this.handleFollowEvent()}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],kf.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.follow?.length||(o.addEventListener("follow",zl.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(Kt?(this.domEventsNeeded.push("touchstart","touchmove"),s.addEventListener("touchstart",this.onTouchMove),s.addEventListener("touchmove",this.onTouchMove)):(this.domEventsNeeded.push("pointermove"),s.addEventListener("pointermove",this.onMouseMove)))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("follow",zl.listener)}),this.objects=[],Kt?(t.removeEventListener("touchstart",this.onTouchMove),t.removeEventListener("touchmove",this.onTouchMove)):t.removeEventListener("pointermove",this.onMouseMove),this.domEventsNeeded=[]}handleFollowEvent(){let{normal:t,raycaster:n}=this.raycastState;kf.normal=t,kf.raycaster=n,this.objects.forEach(i=>i.dispatchEvent(kf))}};var J0=new S,L1=new Gn,Hf={type:"lookAt",normal:new S,raycaster:new Os},Gl;(t=>{function r(n){if(n.type===9&&n.distance)return{type:"lookAt",distance:n.distance}}t.create=r;function e({target:n,normal:i,raycaster:s,begin:o,change:a}){if(!n?.interaction?.events.lookAt?.length||!i||!s)return;o&&o("lookAt",n.uuid);let l=n.interaction.events.lookAt[0].distance;L1.set(i,-l),s.ray.intersectPlane(L1,J0),n.lookAt(J0),n.updateMatrix(),n.interaction.animation?.finished.then(()=>{n.lookAt(J0),n.updateMatrix(),Ft(n)&&xt(n.parent)&&n.invalidateDownstreamBooleanData(!0)}),Ft(n)&&xt(n.parent)&&n.invalidateDownstreamBooleanData(!0),a&&a()}t.listener=e})(Gl||(Gl={}));var Wf=class extends Bn{constructor(){super(...arguments);this.objects=[];this.onTouchMove=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this._handleLookAtEvent())};this.onMouseMove=t=>{this.raycastState.updateRaycaster(t),this._handleLookAtEvent()}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],Hf.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.lookAt?.length||(o.addEventListener("lookAt",Gl.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(Kt?(this.domEventsNeeded.push("touchstart","touchmove"),s.addEventListener("touchstart",this.onTouchMove),s.addEventListener("touchmove",this.onTouchMove)):(this.domEventsNeeded.push("pointermove"),s.addEventListener("pointermove",this.onMouseMove)))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("lookAt",Gl.listener)}),this.objects=[],Kt?(t.removeEventListener("touchstart",this.onTouchMove),t.removeEventListener("touchmove",this.onTouchMove)):t.removeEventListener("pointermove",this.onMouseMove),this.domEventsNeeded=[]}_handleLookAtEvent(){let{normal:t,raycaster:n}=this.raycastState;Hf.normal=t,Hf.raycaster=n,this.objects.forEach(i=>{i.dispatchEvent(Hf)})}};var $0={type:"start"},kl;(t=>{function r(n){if(n.type===7)return{type:"start",targets:[]}}t.create=r;function e({target:n,begin:i,change:s}){if(!n?.interaction?.events.start?.length)return;i&&i("start",n.uuid);let o={change:s};n.interaction.events.start.forEach(a=>{a.targets.forEach(({object:l,state:u,params:c})=>l.interaction?.animate(u,c,o))})}t.listener=e})(kl||(kl={}));var jf=class extends Bn{constructor(){super(...arguments);this.objects=[]}init(t,n){let{scene:i}=this.raycastState;this.objects=[],$0.begin=t,$0.change=n,i.traverseEntity(s=>{!s.visible||!s.interaction?.events.start?.length||(s.addEventListener("start",kl.listener),this.objects.push(s))}),this.objects.forEach(s=>{s.dispatchEvent($0)})}dispose(){this.objects.forEach(t=>{t.removeEventListener("start",kl.listener)}),this.objects=[]}};var qf={type:"scroll"},Vl;(t=>{function r(n){if(!(n.type!==11||n.steps===void 0))return{type:"scroll",targets:[],steps:n.steps}}t.create=r;function e({target:n,deltaY:i,begin:s,change:o}){if(!n?.interaction?.events.scroll?.length||!i)return;s&&s("scroll",n.uuid);let a={change:o},l=i>0?1:-1;n.interaction.events.scroll.forEach(u=>{u.targets.forEach(({object:c,state:h,params:d})=>{let f={...d,autoplay:!1};c.interaction?.seek(h,l,u.steps,f,a)})})}t.listener=e})(Vl||(Vl={}));var Xf=class extends Bn{constructor(){super(...arguments);this.objects=[];this.onWheel=t=>{qf.deltaY=t.deltaY,this.objects.forEach(n=>{n.dispatchEvent(qf)})}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],qf.begin=t,qf.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.scroll?.length||(o.addEventListener("scroll",Vl.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(this.domEventsNeeded.push("wheel"),s.addEventListener("wheel",this.onWheel))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("scroll",Vl.listener)}),this.objects=[],t.removeEventListener("wheel",this.onWheel),this.domEventsNeeded=[]}};function cU(r,e){return r.distance-e.distance}function O1(r,e,t){if(Us(e)&&e.visible&&!e.raycastLock)e.raycast(r,t);else return;for(let n of e.children)O1(r,n,t)}function Hl(r,e,t){if(!t.some(i=>Bo(r,i)!==void 0))return[];let n=[];return e.children.forEach(i=>O1(r,i,n)),n.sort(cU),n}function Wl(r,e){let t=[];if(r.length){let n=r[0].object;Us(n)&&n.interaction?.events[e]?.length&&t.push(n);let i=n.parent;for(;i;)r0(i)&&i.interaction?.events[e]?.length&&t.push(i),i=i.parent}return t}function Bo(r,e){if(Ft(e)){if(!e.raycastLock&&e.visible){let t=[];return e.raycast(r,t),t.length?t[0]:void 0}}else if(r0(e))return R1(r,e)}function R1(r,e){if(Ft(e)&&!e.raycastLock&&e.visible){let t=[];if(e.raycast(r,t),t.length)return t[0]}for(let t of e.children)if(Us(t)){let n=R1(r,t);if(n)return n}}function uU(r){if(r.style.transform!==""){let e=getComputedStyle(r).getPropertyValue("transform");if(e!=="none"){let t=e.replace("matrix(","").split(",");return{x:parseFloat(t[0]),y:parseFloat(t[3])}}}return{x:1,y:1}}function ey(r){let e=r.getViewport(new Ve),t=uU(r.domElement);return{left:e.x*t.x,top:e.y*t.y,width:e.z*t.x,height:e.w*t.y}}var Yf=class{constructor(e,t,n,i){this.renderer=e;this.scene=t;this.camera=n;this.stopRaycast=i;this.raycaster=new Os;this.normal=new S;this.raycasterNeedsUpdate=!0;this.domElement=e.domElement,this.domRect=this.domElement.getBoundingClientRect(),this.viewRect=ey(e)}getPointer(e,t){let n=this.domRect,i=this.viewRect,s=n.height-i.height,o=(e-i.left-n.left)*(n.width/i.width),a=(t-s+i.top-n.top)*(n.height/i.height);return{x:o/n.width*2-1,y:-(a/n.height)*2+1}}updateRaycaster(e){if(this.raycasterNeedsUpdate){let{clientX:t,clientY:n}=Kt?e.touches[0]:e;this.raycaster.setFromCamera(this.getPointer(t,n),this.camera),this.camera.getWorldDirection(this.normal),this.normal.negate(),this.raycasterNeedsUpdate=!1}}};var jl={type:"mouseHover"},ql;(t=>{function r(n){if(n.type===2)return{type:"mouseHover",targets:[]}}t.create=r;function e({target:n,begin:i,change:s,enter:o}){if(!n?.interaction?.events.mouseHover?.length||o===void 0)return;i&&i("mouseHover",n.uuid);let a={change:s};o?n.interaction.events.mouseHover.forEach(l=>{l.targets.forEach(({object:u,state:c,params:h})=>{u.interaction?.animate(c,h,a)})}):n.interaction.events.mouseHover.forEach(l=>{l.targets.forEach(({object:u,params:c})=>{let h=u.interaction;h?.fromState!==void 0&&h.animate(h.fromState,c,a)})})}t.listener=e})(ql||(ql={}));var Qf=class extends Bn{constructor(){super(...arguments);this.objects=[];this._prevObjects=[];this.onTouchStart=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleMouseHoverEvent())};this.onTouchEnd=t=>{this.handleMouseHoverEvent(!0)};this.onTouchMove=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleMouseHoverEvent())};this.onMouseMove=t=>{this.raycastState.updateRaycaster(t),this.handleMouseHoverEvent()}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],jl.begin=t,jl.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.mouseHover?.length||(o.addEventListener("mouseHover",ql.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(Kt?(this.domEventsNeeded.push("touchstart","touchend","touchmove"),s.addEventListener("touchstart",this.onTouchStart),s.addEventListener("touchend",this.onTouchEnd),s.addEventListener("touchmove",this.onTouchMove)):(this.domEventsNeeded.push("pointermove"),s.addEventListener("pointermove",this.onMouseMove)))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("mouseHover",ql.listener)}),this.objects=[],Kt?(t.removeEventListener("touchstart",this.onTouchStart),t.removeEventListener("touchend",this.onTouchEnd),t.removeEventListener("touchmove",this.onTouchMove)):t.removeEventListener("pointermove",this.onMouseMove),this.domEventsNeeded=[]}handleMouseHoverEvent(t=!1){let n=[];if(!t){let{stopRaycast:i,raycaster:s,scene:o}=this.raycastState;if(i){let a=Hl(s,o,this.objects);n=Wl(a,"mouseHover")}else this.objects.forEach(a=>{Bo(s,a)&&n.push(a)})}this._prevObjects.length&&(jl.enter=!1,this._prevObjects.forEach(i=>{n.includes(i)||i.dispatchEvent(jl)})),n.length&&(jl.enter=!0,n.forEach(i=>{i.dispatchEvent(jl)})),this._prevObjects=n}};var ty={type:"mouseDown"},ny={type:"mouseUp"},ry={type:"keyDown"},F1={type:"keyUp"},Xs;(t=>{function r(n){let i,s;if(n.type===0)i={type:"mousedown"},s="mouseDown";else if(n.type===1)i={type:"mouseup"},s="mouseUp";else if(n.type===5){if(!n.key)return;i={type:"keydown",key:n.key},s="keyDown"}else if(n.type===6){if(!n.key)return;i={type:"keyup",key:n.key},s="keyUp"}else return;return{type:s,domEvent:i,targets:[],url:n.url??void 0,toggle:n.toggle??!1,enable:!1}}t.create=r;function e({target:n,interactionEvents:i,type:s,begin:o,change:a}){if(!n)return;i||(i=n.interaction?.events[s]),o&&o(s,n.uuid);let l={change:a};i.forEach(u=>{if(u.toggle){u.enable=!u.enable;for(let{object:c,state:h,params:d}of u.targets){let f=c.interaction;if(f!==void 0){let m={...d,cycle:!1,rewind:!1,repeat:!1};u.enable?f.animate(h,m,l):f.fromState!==void 0&&f.animate(f.fromState,m,l)}}}else u.targets.forEach(({object:c,state:h,params:d})=>c.interaction?.animate(h,d,l));u.url&&(Vc?window.location.assign(u.url):window.open(u.url,"_blank"))})}t.listener=e})(Xs||(Xs={}));var N1={keyDown:ry,keyUp:F1,mouseDown:ty,mouseUp:ny},B1={keyDown:Xs.listener,keyUp:Xs.listener,mouseDown:Xs.listener,mouseUp:Xs.listener};var Zf=class extends Bn{constructor(){super(...arguments);this.map={};this.types=["mouseDown","mouseUp","keyDown","keyUp"];this.onTouchStart=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleMouseEvent("mouseDown"))};this.onTouchEnd=t=>{this.handleMouseEvent("mouseUp")};this.onMouseDown=t=>{this.raycastState.updateRaycaster(t),this.handleMouseEvent("mouseDown")};this.onMouseUp=t=>{this.handleMouseEvent("mouseUp")};this.onKeyDown=t=>{this.handleKeyEvent(t,"keyDown","keydown")};this.onKeyUp=t=>{this.handleKeyEvent(t,"keyUp","keyup")}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.map={};for(let o of this.types)N1[o].begin=t,N1[o].change=n;i.traverseEntity(o=>{if(!(!o.visible||!o.interaction))for(let a of this.types)o.interaction.events[a]?.length&&(o.addEventListener(a,B1[a]),this.map[a]?this.map[a].push(o):this.map[a]=[o])}),this.domEventsNeeded=[],Kt?(this.map.mouseDown?.length&&(this.domEventsNeeded.push("touchstart"),s.addEventListener("touchstart",this.onTouchStart)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("touchend"),s.addEventListener("touchend",this.onTouchEnd))):(this.map.mouseDown?.length&&(this.domEventsNeeded.push("pointerdown"),s.addEventListener("pointerdown",this.onMouseDown)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("pointerup"),s.addEventListener("pointerup",this.onMouseUp))),this.map.keyDown?.length&&(this.domEventsNeeded.push("keydown"),document.addEventListener("keydown",this.onKeyDown)),this.map.keyUp?.length&&(this.domEventsNeeded.push("keyup"),document.addEventListener("keyup",this.onKeyUp))}dispose(){let{domElement:t}=this.raycastState;for(let n of this.types)this.map[n]?.forEach(i=>{i.removeEventListener(n,B1[n])});this.map={},Kt?(t.removeEventListener("touchstart",this.onTouchStart),t.removeEventListener("touchend",this.onTouchEnd)):(t.removeEventListener("pointerdown",this.onMouseDown),t.removeEventListener("pointerup",this.onMouseUp)),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),this.domEventsNeeded=[]}handleMouseEvent(t){let{stopRaycast:n,raycaster:i,scene:s}=this.raycastState;if(n){let o=this.map[t];if(o?.length){let a=Hl(i,s,o);Wl(a,t).forEach(l=>l.dispatchEvent(t==="mouseDown"?ty:ny))}}else this.map[t]?.forEach(o=>{Bo(i,o)&&o.dispatchEvent(t==="mouseDown"?ty:ny)})}handleKeyEvent(t,n,i){this.map[n]?.forEach(s=>{ry.interactionEvents=s.interaction?.events?.keyDown?.filter(o=>o.domEvent.type===i&&o.domEvent.key===t.key),s.dispatchEvent(n==="keyDown"?ry:F1)})}};var Xl;(t=>(t.isPlayable=n=>n.type==="audio"&&n.data.interaction==="play",t.create=function(n,i,s,o){if(!((i.trigger==="keyDown"||i.trigger==="keyUp")&&i.key===void 0))if(i.interaction==="play"){if(i.audio){let a=new Ti(n,i,s);return Ti.cache.set(n,a),a}}else return new iy(i,o)}))(Xl||(Xl={}));var Ti=class{constructor(e,t,n){this.id=e;this.type="audio";let{audio:i,volume:s,delay:o,loop:a}=t,l=typeof i=="string"?n.getAudio(i).src:i.data;this.audioPlayer=new js({src:l,volume:s,delay:o,loop:a}),this.data=t}dispatch(){this.data.toggle==="stop"?this.audioPlayer.isStarted?this.audioPlayer.stop():(this.audioPlayer.stop(),this.audioPlayer.play()):this.data.toggle==="pause"?this.audioPlayer.isStarted?this.audioPlayer.pause():this.audioPlayer.play():(this.audioPlayer.stop(),this.audioPlayer.play())}dispose(){this.audioPlayer.dispose()}};Ti.cache=new Map;var iy=class{constructor(e,t){this.type="audio";this.data=e,this.scene=t}dispatch(){this.data.object?this.data.audioEvent?this.pauseAudio(this.data.audioEvent):this.pauseAudiosByObject(this.data.object):this.pauseAudios()}pauseAudio(e){let t=Ti.cache.get(e),n=this.data.interaction;!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.audioPlayer[n](),this.disposeDelay()},this.data.delay)):t.audioPlayer[n]())}pauseAudiosByObject(e){let n=this.scene.find(e)?.interaction?.events.audio,i=this.data.interaction;if(!!n)if(this.data.delay>0)this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{for(let s of n)Xl.isPlayable(s)&&s.audioPlayer[i]();this.disposeDelay()},this.data.delay);else for(let s of n)Xl.isPlayable(s)&&s.audioPlayer[i]()}pauseAudios(){let e=this.data.interaction;if(this.data.delay>0)this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{for(let t of Ti.cache.values())t.audioPlayer[e]();this.disposeDelay()},this.data.delay);else for(let t of Ti.cache.values())t.audioPlayer[e]()}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},Kf=class extends Bn{constructor(){super(...arguments);this.heldKeys={};this.map={};this.startMap={};this.onStartMouseDown=()=>{this.startMap.mouseDown?.forEach(t=>t.dispatch()),this.raycastState.domElement.removeEventListener(Kt?"touchstart":"pointerdown",this.onStartAny)};this.onStartKeyDown=()=>{this.startMap.keyDown?.forEach(t=>t.dispatch()),document.removeEventListener("keydown",this.onStartAny)};this.onStartAny=()=>{this.startMap.any?.forEach(t=>t.dispatch()),this.raycastState.domElement.removeEventListener(Kt?"touchstart":"pointerdown",this.onStartAny),document.removeEventListener("keydown",this.onStartAny)};this.onMouseEvent=(t,n)=>{let i=this.map[n];if(i?.length){let{stopRaycast:s,raycaster:o,scene:a}=this.raycastState;if(this.raycastState.updateRaycaster(t),s){let l=Hl(o,a,i);Wl(l,"audio").forEach(u=>this.dispatch(u,n))}else i.forEach(l=>{Bo(o,l)&&this.dispatch(l,n)})}};this.onMouseDown=t=>{this.onMouseEvent(t,"mouseDown")};this.onMouseUp=t=>{this.onMouseEvent(t,"mouseUp")};this.onKeyDown=t=>{let n=this.heldKeys[t.key];this.map.keyDown?.forEach(i=>{n||this.dispatch(i,"keyDown",t.key)}),this.heldKeys[t.key]=!0};this.onKeyUp=t=>{this.map.keyUp?.forEach(n=>this.dispatch(n,"keyUp",t.key))};this.releaseHeldKey=t=>{delete this.heldKeys[t.key]}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.map={},this.startMap={},this.heldKeys={},Ti.cache=new Map,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.audio||o.interaction.events.audio.forEach(a=>{a.data.trigger==="start"&&(this.startMap[a.data.after]?.length?this.startMap[a.data.after].push(a):this.startMap[a.data.after]=[a]),["mouseDown","mouseUp","keyDown","keyUp"].forEach(l=>{a.data.trigger===l&&(this.map[l]?.length?this.map[l].push(o):this.map[l]=[o])})})}),this.domEventsNeeded=[],Kt?(this.startMap.mouseDown?.length&&s.addEventListener("touchstart",this.onStartMouseDown,{once:!0}),this.startMap.any?.length&&s.addEventListener("touchstart",this.onStartAny,{once:!0}),this.map.mouseDown?.length&&(this.domEventsNeeded.push("touchstart"),s.addEventListener("touchstart",this.onMouseDown)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("touchend"),s.addEventListener("touchend",this.onMouseUp))):(this.startMap.mouseDown?.length&&s.addEventListener("pointerdown",this.onStartMouseDown,{once:!0}),this.startMap.any?.length&&s.addEventListener("pointerdown",this.onStartAny,{once:!0}),this.map.mouseDown?.length&&(this.domEventsNeeded.push("pointerdown"),s.addEventListener("pointerdown",this.onMouseDown)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("pointerup"),s.addEventListener("pointerup",this.onMouseUp))),this.startMap.keyDown?.length&&document.addEventListener("keydown",this.onStartKeyDown,{once:!0}),this.startMap.any?.length&&document.addEventListener("keydown",this.onStartAny,{once:!0}),this.map.keyDown?.length&&(this.domEventsNeeded.push("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.map.keyUp?.length&&(this.domEventsNeeded.push("keyup"),document.addEventListener("keyup",this.onKeyUp))}dispose(){let{scene:t,domElement:n}=this.raycastState;t.traverseEntity(i=>{if(!(!i.visible||!i.interaction?.events.audio))for(let s of i.interaction.events.audio)s.dispose()}),this.map={},this.startMap={},this.heldKeys={},Ti.cache=new Map,Kt?(n.removeEventListener("touchstart",this.onStartMouseDown),n.removeEventListener("touchstart",this.onStartAny),n.removeEventListener("touchstart",this.onMouseDown),n.removeEventListener("touchend",this.onMouseUp)):(n.removeEventListener("pointerdown",this.onStartMouseDown),n.removeEventListener("pointerdown",this.onStartAny),n.removeEventListener("pointerdown",this.onMouseDown),n.removeEventListener("pointerup",this.onMouseUp)),n.removeEventListener("keyDown",this.onStartKeyDown),n.removeEventListener("keyDown",this.onStartAny),n.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.releaseHeldKey),n.removeEventListener("keyup",this.onKeyUp),this.domEventsNeeded=[]}dispatch(t,n,i){let s=t.interaction?.events.audio;if(s)if(n==="keyDown"||n==="keyUp")for(let o of s)o.data.trigger===n&&o.data.key===i&&o.dispatch();else for(let o of s)o.data.trigger===n&&o.dispatch()}};function hU(r,e,t,n){let i,{type:s}=e;return s===10?i=zl.create(e):s===0||s===1||s===5||s===6?i=Xs.create(e):s===9?i=Gl.create(e):s===2?i=ql.create(e):s===11?i=Vl.create(e):s===7?i=kl.create(e):s===12&&(i=Xl.create(r,e,t,n)),i}function z1(r,e,t){let n=[];r.objects.traverse((i,s)=>{let o=e.find(i);if(delete o.interaction,!s.visible&&!xt(o.parent)||s.states===void 0)return;let a=new Gf(o,t),l=a.states;l.push(Fo.create(i,s));for(let c of s.states){let h=Jc.patch(s,c.data);l.push(Fo.create(c.id,h))}let u=a.events;if(s.events)for(let{id:c,data:h}of s.events){let d=hU(c,h,t,e);if(!d)continue;let f=d.type;u[f]?u[f].push(d):u[f]=[d],"targets"in h&&n.push([h,d])}(l.length>0||Object.keys(u).length>0)&&(o.interaction=a)});for(let[i,s]of n)if("targets"in i&&"targets"in s)for(let{data:o}of i.targets){let a=Ul.create(o,e);a&&s.targets.push(a)}}function U1(r,e,t){typeof e!="string"&&r.reset(e,t)}function G1(r,e,t,n,i=!1){if(!i&&e.states.length===0)return;let s=t===null?e:Jc.patch(e,e.states.data(t));if(i0(r,s),r instanceof Ot&&s.type==="Mesh"){if(r instanceof Ys?r.buildFromStore(s.geometry):r.updateGeometry({parameters:s.geometry}),r.freeBooleanPointer(),xt(r.parent)&&r.parent.invalidateDownstreamBooleanData().recomputeBoolean(),"material"in s){if(r.material instanceof Array)return;U1(r.material,s.material,n)}else if("materials"in s){if(!(r.material instanceof Array))return;var o=0;for(let a of s.materials)U1(r.material[o],a,n),o++}}else if(s.type==="DirectionalLight")r.fromDirectionalLightState(s,n);else if(s.type==="PointLight")r.fromPointLightState(s,n);else if(s.type==="SpotLight")r.fromSpotLightState(s,n);else if(r instanceof pr&&Es.is(s.type)){let a=s;r.setZoom("PerspectiveCamera",a.perspective.zoom),r.setZoom("OrthographicCamera",a.orthographic.zoom),r.isUpVectorFlipped=a.isUpVectorFlipped,r.targetOffset=a.targetOffset}}var Fo=class{constructor(e){this.objectState=e;this.uuid=Je.generateUUID()}static create(e,t){let n=new Fo(t);return n.uuid=e,n}execute(e,t){G1(e,this.objectState,null,t,!0)}};var k1=["touchstart","touchend","touchmove","pointerdown","pointerup","pointermove"],Jf=class{constructor(e,t,n,i,s){this.app=s;this.isEnable=!1;this.splineEvents={};this.handlers=[];this.onResetRaycaster=()=>{this.raycastState.raycasterNeedsUpdate=!0};this.begin=(e,t)=>{let n=this.splineEvents[e][t];if(n){let{domElement:i}=this.raycastState;i.dispatchEvent(n)}};this.change=()=>{this.app.requestRender()};this.raycastState=new Yf(e,t,n,i),this.handlers=[new jf(this.raycastState),new Zf(this.raycastState),new Qf(this.raycastState),new Xf(this.raycastState),new Vf(this.raycastState),new Wf(this.raycastState),new Kf(this.raycastState)]}activate(){let{scene:e,domElement:t}=this.raycastState;this.isEnable=!0,e.traverseEntity(n=>{if(!n.interaction)return;n.interaction.start(),["start","keyDown","keyUp","mouseDown","mouseUp","mouseHover","scroll"].forEach(s=>this.addDOMCustomEvent(s,n))}),this.handlers.forEach(n=>n.init(this.begin,this.change)),k1.forEach(n=>{this.handlers.some(i=>i.domEventsNeeded.includes(n))&&t.addEventListener(n,this.onResetRaycaster)}),this.resize()}deactivate(){let{scene:e,domElement:t}=this.raycastState;this.isEnable=!1,e.traverseEntity(n=>{n.interaction?.end()}),this.handlers.forEach(n=>n.dispose()),k1.forEach(n=>{t.removeEventListener(n,this.onResetRaycaster)})}resize(){let{domElement:e,renderer:t}=this.raycastState;this.raycastState.domRect=e.getBoundingClientRect(),this.raycastState.viewRect=ey(t)}addDOMCustomEvent(e,t){let n=new CustomEvent(e,{bubbles:!0});Object.defineProperty(n,"target",{writable:!1,value:{id:t.uuid,name:t.name}}),this.splineEvents[e]?this.splineEvents[e][t.uuid]=n:this.splineEvents[e]={[t.uuid]:n}}};var $f=class{constructor(e,t,n,i,s){this._aspect=1;this._renderer=e,this._camera=t,this._frameSize=new N().copy(n),this._editorSize=new N().copy(i),this._aspect=t.aspect,this._fov=s??t.fov}set frameSize(e){this._frameSize.copy(e)}updateRenderer(){!this._renderer||this._renderer.setSize(this._frameSize.x,this._frameSize.y,!1)}updateViewportForImageExport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,n=this._editorSize.x,i=this._editorSize.y;this._aspect=e/t,this._camera.zoom*=Math.min(n/e,i/t),this._renderer.setViewport(0,0,e,t)}updateViewport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,n=this._editorSize.x,i=this._editorSize.y,s=0,o=0,a=e,l=t;e<n&&(s=(n-e)*.5,s=-s,a=n),t<i&&(o=(i-t)*.5,o=-o,l=i),this._aspect=a/l,this._renderer.setViewport(s,o,a,l)}updateCamera(){if(!!this._camera)if(this._camera.cameraType==="PerspectiveCamera"){let e=this._frameSize.y,t=this._editorSize.y,n=this._fov;if(e>t){let i=dU(e,1080,2160,1,15)/100;n*=e/t,n*=1-i}this._camera.aspect=this._aspect,this._camera.fov=n,this._camera.updateProjectionMatrix()}else this._camera.setViewplaneSize(this._frameSize.x,this._frameSize.y)}revert(){let e=window.innerWidth,t=window.innerHeight;this._renderer&&(this._renderer.setViewport(0,0,e,t),this._renderer.setSize(e,t,!1)),this._camera&&(this._camera.aspect=e/t,this._camera.fov=this._fov,this._camera.setViewplaneSize(e,t),this._camera.updateProjectionMatrix())}};function dU(r,e,t,n,i){return(r-e)/(t-e)*(i-n)+n}var j1=xy(H1());var sy;df.then(r=>{sy=r});var q1=new Oe,fU=new Oe,pU=new Oe,Qr=new _n,Qs=new S,mU=new Oe,gU=new Oe,Ys=class extends Ot{constructor(t,n,i,s){super(i??n,s);this.subdivPointer=t;this.originalGeometry=n;this.subdividedGeometry=i;this.objectType="SubdivObject";this.hiddenMatrixOld=new Oe;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Oe;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(t,n,i){let{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}=Er.build(n.geometry,void 0,void 0,!n.flatShading),l=i.material(n.material),u=new Ys(s,o,a||void 0,l);return n.geometry.phongAngle!==void 0&&(u.phongAngle=n.geometry.phongAngle),u.calcBoundingBox(),u.freeSubdivPointer(),u.uuid=t,u.fromState(n),u}buildFromStore(t,n){let{originalGeometry:i,subdividedGeometry:s,subdivPointer:o}=Er.build(t,n,this.subdivPointer,this.smoothShading,this.shearScale);t.phongAngle!==void 0&&(this.phongAngle=t.phongAngle),this.subdivPointer=o,i!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=i),s!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=s??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,zs(this),Gs(this),t.width&&(this.geometry.userData.parameters={width:t.width,height:t.height,depth:t.depth})}updateMesh(t=!1){Er.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,t?this.shearScaleInv:void 0),this.subdividedGeometry&&Er.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,t?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Er.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Er.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(t,n){this.geometry=this.originalGeometry,Ot.prototype.raycast.call(this,t,n),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,n=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:o}=(0,j1.SVD)(n),a=q1.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),l=fU.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),u=pU.copy(l).transpose();this.shearScale=mU.makeScale(o[0],o[1],o[2]).multiply(u).premultiply(l),this.shearScaleInv=gU.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,u),o.every(c=>Math.abs(o[0]-c)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let t=this.originalGeometry;t.boundingSphere===null&&(t.boundingSphere=new Ln);let n=t.attributes.position,i=t.boundingSphere.center;Qr.setFromBufferAttribute(n),Qr.getCenter(i),t.boundingSphere.radius=i.distanceTo(Qr.max),isNaN(t.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Qr.getSize(Qs);let s={width:Qs.x,height:Qs.y,depth:Qs.z};return this.geometry.userData.parameters=s,s}updateBoundingBox(t){let n=this.originalGeometry;Qr.min.set(t[0],t[2],t[4]),Qr.max.set(t[1],t[3],t[5]),this.shearScaleInv&&(Qr.min.applyMatrix4(this.shearScaleInv),Qr.max.applyMatrix4(this.shearScaleInv)),n.boundingSphere===null&&(n.boundingSphere=new Ln);let i=n.boundingSphere.center;Qr.getCenter(i),n.boundingSphere.radius=i.distanceTo(Qr.max),isNaN(n.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Qr.getSize(Qs);let s={width:Qs.x,height:Qs.y,depth:Qs.z};return this.geometry.userData.parameters=s,s}freeSubdivPointer(){this.subdivPointer&&(sy.free_bvh(this.subdivPointer),sy.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(t){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:t.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:t.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:t.parameters.depth/this.geometry.userData.parameters.depth,W1(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(W1(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...t.parameters}}};function W1(r,e,t,n){let i=r.position.array,s=r.normal.array,o=q1.makeScale(e,t,n).invert().elements,a,l,u;for(var c=0,h=i.length;c<h;c+=3)i[c]*=e,i[c+1]*=t,i[c+2]*=n,a=s[c],l=s[c+1],u=s[c+2],s[c]=o[0]*a+o[4]*l+o[8]*u,s[c+1]=o[1]*a+o[5]*l+o[9]*u,s[c+2]=o[2]*a+o[6]*l+o[10]*u}function X1(r,e){e.flatShading!==void 0&&(r.flatShading=e.flatShading,r.needsUpdate=!0),e.wireframe!==void 0&&(r.wireframe=e.wireframe),e.side!==void 0&&(e.side===0?r.side=Ui:e.side===1?r.side=bn:r.side=wn)}function yU(r,e){if(Array.isArray(r.material))for(let t of r.material)X1(t,e);else{let t=r.material;X1(t,e)}r.objectType==="SubdivObject"&&e.flatShading!==void 0&&(r.material.flatShading=!1,r.smoothShading=!e.flatShading,r.updateMesh())}function Y1(r,e,t){let n;if(e.geometry.type==="SubdivGeometry")n=Ys.createFromState(r,e,t);else{let i=e.geometry.type==="BooleanGeometry"?new Pe:gf(e.geometry,t),s="materials"in e?e.materials.map(o=>t.material(o)):t.material(e.material);Yd.is2DParametricMesh(i.userData.type)?n=new Df(i,s):i?.userData.type==="VectorGeometry"?n=new xl(i,s):e.geometry.type==="NonParametricGeometry"?n=new Pf(i,s):e.geometry.type==="BooleanGeometry"?(n=new vf(void 0,s),n.booleanOp=e.geometry.operation,e.geometry.phongAngle!==void 0&&(n.phongAngle=e.geometry.phongAngle)):n=new Fl(i,s),n.uuid=r,n.fromState(e,t)}return yU(n,e),n}function Q1(r,e,t){return e.type==="Mesh"?Y1(r,e,t):e.type==="TextFrame"?Ro.createFromState(r,e,t):e.type==="Empty"?Do.createFromState(r,e):e.type==="PointLight"?Tl.createFromState(r,e,t):e.type==="SpotLight"?El.createFromState(r,e,t):e.type==="DirectionalLight"?Ml.createFromState(r,e,t):Es.is(e.type)?pr.createFromState(r,e):(console.error(e),new Do)}function vU(r,e){e.uniforms[`f${e.id}_transmissionSamplerMap`].value=r.texture,e.uniforms[`f${e.id}_transmissionDepthMap`].value=r.depthTexture}function xU(r,e){e.uniforms[`f${e.id}_normalMap`].value=r.texture,e.uniforms[`f${e.id}_depthMap`].value=r.depthTexture}function Z1(r,e,t){let n=!1,i=t.getLayersOfType("transmission"),s=t.getLayersOfType("outline");return s.length>0&&(e.layers.set(8),i.length===0&&e.layers.enable(3),n=!0,r!==void 0&&s.forEach(o=>xU(r,o)),Gs(e),zs(e)),i.length===0&&s.length===0&&e.layers.set(0),n}function K1(r,e,t){if(!t.layers)return!1;let n=!1,i=t.getLayersOfType("transmission"),s=t.getLayersOfType("outline");return i.length>0&&(e.layers.set(3),s.length>0&&e.layers.enable(8),n=!0,r!==void 0&&i.forEach(o=>vU(r,o))),i.length===0&&s.length===0&&e.layers.set(0),n}function J1(r,e){let t=!1;return e.traverseEntity(n=>{if(n instanceof kt&&n.objectType!=="TextFrame")if(Array.isArray(n.material))for(let i=0;i<n.material.length;i++)Z1(r,n,n.material[i])&&(t=!0);else Z1(r,n,n.material)&&(t=!0)}),t}function $1(r,e){let t=!1;return e.traverseEntity(n=>{if(n instanceof kt)if(Array.isArray(n.material))for(let i=0;i<n.material.length;i++)K1(r,n,n.material[i])&&(t=!0);else K1(r,n,n.material)&&(t=!0)}),t}function eA(r){"material"in r&&bU(r.material),"geometry"in r&&r.geometry.dispose()}function bU(r){Lw(r).forEach(e=>{e instanceof No||e.dispose()})}var wU=new Sa,_U=new Oe,SU=new zi;function tA(r,e,t){let n=r.cloner;if(n)for(let i of n.children){let s=_U.copy(i.matrixWorld).invert(),o=SU.copy(e.ray).applyMatrix4(s),a=r.matrixWorld;o.applyMatrix4(a);let l=wU;l.set(o.origin,o.direction),l.near=e.near,l.far=e.far,l.intersectObject(r,!1).length>0&&t.push({object:r})}}var nA=new S,oy=class extends pf(lr){constructor(t,n){super();this.objectType="Scene";this.alpha=1;this.backupFog=new ha(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Re(1,0,0);this.bgColor=new Re(1,1,1);this.entityByUuid={};this.ambientLight=new vo(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(t,n)}needsTransmission(t){return this.needsTransmissionDirty&&(this._needsTransmission=$1(t,this),t!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(t){return this.needsNormalDirty&&(this._needsNormal=J1(t,this),t!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(t){if(t===""||t===void 0)return;let n=this.entityByUuid[t];return n===void 0?this.getObjectByProperty("uuid",t):n}get color(){return this._color}set color(t){this.fogUseBGColor===!0&&this.backupFog.color.copy(t),this._color.copy(t)}get enableFog(){return this.fog!==null}set enableFog(t){this.fog=t===!0?this.backupFog:null}init(t,n){if(this.createChildrenObjects(t.objects,this,n),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(sn(t.backgroundColor,n)),this.updateFog(t.fog,n),this.updateAmbientLight(t.environment.ambientLight,n),this.activeCamera=this.personalCamera,t.publish.playCamera!==null){let i=this.find(t.publish.playCamera);i instanceof pr&&this.switchActiveCamera(i)}this.traverse(i=>{xt(i)&&i.recomputeBoolean()})}clearScene(){this.traverseEntity(t=>{eA(t)});for(let t of this.children)pi(t)&&t.removeFromParent()}resetAfterClear(t,n){this.init(t,n)}createPersonalCamera(){let t=pr.createFromState(oy.PERSONAL_CAMERA_ID,{...Zd.defaultData,name:"Personal Camera"});return t.objectHelper.visible=!1,delete t.isEntity,this.registerObjectCreatedInLegacy(t),t}raycast(t){let n=[],i=s=>{for(let o of s.children)pi(o)&&!o.raycastLock&&o.visible&&((Ft(o)||ff(o)&&this.enableHelpers&&o.objectHelper.visible)&&(t.intersectObject(o,!1,n),tA(o,t,n)),i(o))};return i(this),n}traverseEntity(t){for(let n of this.children)pi(n)&&n.traverseEntity(t)}traverseVisibleEntity(t){for(let n of this.children)pi(n)&&n.visible&&n.traverseVisibleEntity(t)}updateFog(t,n){this.enableFog=t.enabled,this.fogUseBGColor=t.useBackgroundColor,t.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=sn(t.color,n),this.backupFog.near=t.near,this.backupFog.far=t.far}dispose(){this.clearScene()}updateAmbientLight(t,n){pS(this.ambientLight,t,n),t.groundColor!==void 0&&(this.ambientLight.groundColor=sn(t.groundColor,n)),t.enabled!==void 0&&(this.ambientLight.visible=t.enabled)}switchActiveCamera(t){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=t,t.objectHelper.visible=!1}setBackgroundColor(t){this.bgColor=t,this.alpha=t.a}createChildrenObjects(t,n,i){for(let s of t)this.createChildObject(s.id,s.data,s.children,n,i)}registerObjectCreatedInLegacy(t){this.entityByUuid[t.uuid]=t}unregisterObject(t){delete this.entityByUuid[t.uuid];for(let n of t.children)this.unregisterObject(n)}createChildObject(t,n,i,s,o){let a=Q1(t,n,o);return a&&(this.entityByUuid[t]=a,s.add(a),xt(s)&&Ft(a)&&(a.prevBooleanObjectParent=s),this.createChildrenObjects(i,a,o)),a}getCenter(t){let n=[];for(let s=0,o=t.length;s<o;++s){let{id:a,recursive:l}=t[s],u=this.find(a),c=l?u.recursiveBBox:u.singleBBox;n.push(...c.vertices)}let i=new _n;return i.setFromPoints(n),i.getCenter(nA),nA}copyMatrixWorld(t,n){if(t===null){n.identity();return}let i=this.find(t);i?n.copy(i.matrixWorld):n.identity()}copyParentMatrixWorld(t,n){if(t===null){n.identity();return}let i=this.find(t)?.parent;i?n.copy(i.matrixWorld):n.identity()}traverseMaterial(t){this.traverseEntity(n=>{if(n instanceof Ot)if(Array.isArray(n.material))for(let i=0;i<n.material.length;i++)n.material[i]instanceof Yr&&t(n.material[i]);else n.material instanceof Yr&&t(n.material)})}updateCanvasSize(t,n){this.activeCamera.setViewplaneSize(t,n);let i,s;t>=n?(i=n/t,s=1):(i=1,s=t/n),this.traverseMaterial(o=>{o.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=i,l.uniforms[`f${l.id}_aspectRatio`].value.y=s})})}},Uu=oy;Uu.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var cA={RED:0,GREEN:1,BLUE:2,ALPHA:3};var zu="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}";var AU=`#ifdef FRAMEBUFFER_PRECISION_HIGH
|
|
4903
|
+
`,XS=new yt({vertexShader:mF,fragmentShader:gF,uniforms:{depthContrast:{value:1}}});var No=class extends Yr{};var KS=xy(YS());var QS=new Map;function ZS(r){if(typeof r=="string")return r;let e=QS.get(r);return e||(e={url:URL.createObjectURL(new Blob([r]))},QS.set(r,e)),e.url}var js=class{constructor({src:e,volume:t,delay:n,loop:i}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let s;typeof e=="string"?s={src:e}:s={src:ZS(e),format:"wav"},this.sound=new KS.Howl(s),this.sound.on("end",this.onEnd),this._src=e,t!==void 0&&(this.volume=t),n!==void 0&&(this.delay=n),i!==void 0&&(this.loop=i)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(e){this._volume=e,this.sound.volume(e)}get loop(){return this._loop}set loop(e){this._loop=e,this.loopsRemaining=e}fade(e,t=1e3){e?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,t),this.clearFade()},e)):this.sound.fade(this._volume,0,t)}on(e,t,n){this.sound.on(e,t,n)}off(e,t,n){this.sound.off(e,t,n)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(e=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Bu=class{constructor(e){this.deletedMaterial=new No(fr.defaultTwoLayerData("basic"),this);this.deletedImage=new Lo($d.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new lt(2048,2048,{generateMipmaps:!0,minFilter:gs,magFilter:et,wrapS:xn,wrapT:xn}),this.transmissionRenderTarget.depthTexture=new vr(2048,2048),this.normalRenderTarget=new lt(1024,1024,{generateMipmaps:!1,minFilter:Ut,magFilter:Ut,type:gr}),this.normalRenderTarget.depthTexture=new vr(1024,1024),this.penumbraSizeNode=new pn(5,e.penumbraSize),this.resolutionNode=new gn(1,1),this.pixelRatioNode=new Ae(typeof document<"u"?window.devicePixelRatio:1),this.reset(e)}setOnImageLoad(e){this._onImageLoad=e}reset(e){for(let[t,n]of Object.entries(e.images))this.addImage(t,n);for(let[t,n]of Object.entries(e.colors))this.addColor(t,n);for(let[t,n]of Object.entries(e.materials))this.addMaterial(t,new No(n,this));for(let[t,n]of Object.entries(e.audios))this.addAudio(t,n.data)}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(e,t){t.uuid=e,this.materials[e]=t}deleteMaterial(e){this.materials[e]&&(this.materials[e].dispose(),delete this.materials[e])}getMaterial(e){let t=this.materials[e];return t}getMaterialOrDeletedPlaceholder(e){return this.materials[e]??this.deletedMaterial}material(e){return typeof e=="string"?this.getMaterialOrDeletedPlaceholder(e):new Yr(e,this)}getMaterials(){return this.materials}addImage(e,t){return this.images[e]?(this.images[e].updateSrc(t.data),!0):(this.images[e]=new Lo(t,this.onImageLoad),!1)}deleteImage(e){this.images[e]&&delete this.images[e]}getDefaultImage(){return this.images.image_0}getImage(e){return this.images[e]??this.deletedImage}image(e){return typeof e=="string"?this.getImage(e):new Nl(e,this.onImageLoad)}getImages(){return this.images}addColor(e,t){return this.colors[e]?("a"in t?this.colors[e].setRGBA(t.r,t.g,t.b,t.a):this.colors[e].setRGBA(t.r,t.g,t.b,1),!0):("a"in t?this.colors[e]=new Hs(t.r,t.g,t.b,t.a):this.colors[e]=new Hs(t.r,t.g,t.b,1),!1)}updateColor(e,t){if(this.colors[e]){let n=this.colors[e];return this.colors[e].r=t.r??n.r,this.colors[e].g=t.g??n.g,this.colors[e].b=t.b??n.b,this.colors[e].a=t.a??n.a,!0}return!1}deleteColor(e){this.colors[e]&&delete this.colors[e]}getColor(e){return this.colors[e]}color(e){let t;if(typeof e=="string"){let n=this.getColor(e);n?t=n:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new Cn(0,0,0,0))}else return"a"in e?new Cn(e.r,e.g,e.b,e.a):new Cn(e.r,e.g,e.b,1);return t}addAudio(e,t){this.audios[e]=t}getAudio(e){let t=this.audios[e];if(t instanceof js)return t;{let n=new js({src:t});return this.audios[e]=n,n}}deleteAudio(e){this.audios[e]&&delete this.audios[e]}dispose(){Object.keys(this.materials).forEach(t=>this.deleteMaterial(t)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0,Object.values(this.audios).forEach(t=>{t instanceof js&&t.dispose()}),this.audios={}}},Vse=new Bu(sl.emptyData());var B0=new WeakMap,Rf=class extends ps{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,i){let s=new ms(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,o=>{let a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(o,a).then(t).catch(i)},n,i)}decodeDracoFile(e,t,n,i){let s={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(e,s).then(t)}decodeGeometry(e,t){for(let l in t.attributeTypes){let u=t.attributeTypes[l];u.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[l]=u.name)}let n=JSON.stringify(t);if(B0.has(e)){let l=B0.get(e);if(l.key===n)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i,s=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(s,o).then(l=>(i=l,new Promise((u,c)=>{i._callbacks[s]={resolve:u,reject:c},i.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return a.catch(()=>!0).then(()=>{i&&s&&this._releaseTask(i,s)}),B0.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new Pe;e.index&&t.setIndex(new je(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let i=e.attributes[n],s=i.name,o=i.array,a=i.itemSize;t.setAttribute(s,new je(o,a))}return t}_loadLibrary(e,t){let n=new ms(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((i,s)=>{n.load(e,i,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(n=>{let i=n[0];e||(this.decoderConfig.wasmBinary=n[1]);let s=yF.toString(),o=["/* draco decoder */",i,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
4904
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(s){let o=s.data;switch(o.type){case"decode":i._callbacks[o.id].resolve(o);break;case"error":i._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,s){return i._taskLoad>s._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}};function yF(){let r,e;onmessage=function(o){let a=o.data;switch(a.type){case"init":r=a.decoderConfig,e=new Promise(function(c){r.onModuleLoaded=function(h){c({draco:h})},DracoDecoderModule(r)});break;case"decode":let l=a.buffer,u=a.taskConfig;e.then(c=>{let h=c.draco,d=new h.Decoder,f=new h.DecoderBuffer;f.Init(new Int8Array(l),l.byteLength);try{let m=t(h,d,f,u),p=m.attributes.map(g=>g.array.buffer);m.index&&p.push(m.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:m},p)}catch(m){console.error(m),self.postMessage({type:"error",id:a.id,error:m.message})}finally{h.destroy(f),h.destroy(d)}});break}};function t(o,a,l,u){let c=u.attributeIDs,h=u.attributeTypes,d,f,m=a.GetEncodedGeometryType(l);if(m===o.TRIANGULAR_MESH)d=new o.Mesh,f=a.DecodeBufferToMesh(l,d);else if(m===o.POINT_CLOUD)d=new o.PointCloud,f=a.DecodeBufferToPointCloud(l,d);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||d.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let p={index:null,attributes:[]};for(let g in c){let y=self[h[g]],x,w;if(u.useUniqueIDs)w=c[g],x=a.GetAttributeByUniqueId(d,w);else{if(w=a.GetAttributeId(d,o[c[g]]),w===-1)continue;x=a.GetAttribute(d,w)}p.attributes.push(i(o,a,d,g,y,x))}return m===o.TRIANGULAR_MESH&&(p.index=n(o,a,d)),o.destroy(d),p}function n(o,a,l){let c=l.num_faces()*3,h=c*4,d=o._malloc(h);a.GetTrianglesUInt32Array(l,h,d);let f=new Uint32Array(o.HEAPF32.buffer,d,c).slice();return o._free(d),{array:f,itemSize:1}}function i(o,a,l,u,c,h){let d=h.num_components(),m=l.num_points()*d,p=m*c.BYTES_PER_ELEMENT,g=s(o,c),y=o._malloc(p);a.GetAttributeDataArrayForAllPoints(l,h,g,p,y);let x=new c(o.HEAPF32.buffer,y,m).slice();return o._free(y),{name:u,array:x,itemSize:d}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}var qs;function vF(){return qs||(qs=new Rf,qs.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qs.decoderPending}async function xF(r){if(qs){let e={attributeIDs:qs.defaultAttributeIDs,attributeTypes:qs.defaultAttributeTypes,useUniqueIDs:!1},t;try{t=await qs.decodeGeometry(new Int8Array(r).buffer,e)}catch(n){console.error(n)}if(t)return{index:t.index?{array:t.index.array}:void 0,attributes:Object.entries(t.attributes).map(([n,i])=>({name:n,itemSize:i.itemSize,array:i.array}))}}return null}async function JS(r,e){let[t,n]=lg(Vd.deserialize(new Uint8Array(r)));f_(t);let i=[];t.scene.objects.traverse((s,o)=>{o.type==="Mesh"&&o.geometry.type==="NonParametricGeometry"&&o.geometry.data.draco!==void 0&&i.push(o)}),i.length&&await vF();for(let s of i){let o=await xF(Cs(s.geometry.data.draco));if(o){o.index&&(s.geometry.data.index={array:o.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};o.attributes.forEach(({name:l,array:u,itemSize:c})=>{a[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),s.geometry.data.attributes=a,s.geometry.data.draco=void 0}}return e&&e(t),n.result().data}var i1={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},G0={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},bF=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],Bf={CSS:{},springs:{}};function Ai(r,e,t){return Math.min(Math.max(r,e),t)}function Fu(r,e){return r.indexOf(e)>-1}function F0(r,e){return r.apply(null,e)}var ke={arr:function(r){return Array.isArray(r)},obj:function(r){return Fu(Object.prototype.toString.call(r),"Object")},pth:function(r){return ke.obj(r)&&r.hasOwnProperty("totalLength")},svg:function(r){return r instanceof SVGElement},inp:function(r){return r instanceof HTMLInputElement},dom:function(r){return!("isNode"in r)&&(r.nodeType||ke.svg(r))},str:function(r){return typeof r=="string"},fnc:function(r){return typeof r=="function"},und:function(r){return typeof r>"u"},hex:function(r){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(r)},rgb:function(r){return/^rgb/.test(r)},hsl:function(r){return/^hsl/.test(r)},col:function(r){return ke.hex(r)||ke.rgb(r)||ke.hsl(r)},key:function(r){return!i1.hasOwnProperty(r)&&!G0.hasOwnProperty(r)&&r!=="targets"&&r!=="keyframes"}};function s1(r){var e=/\(([^)]+)\)/.exec(r);return e?e[1].split(",").map(function(t){return parseFloat(t)}):[]}function o1(r,e){var t=s1(r),n=Ai(ke.und(t[0])?1:t[0],.1,100),i=Ai(ke.und(t[1])?100:t[1],.1,100),s=Ai(ke.und(t[2])?10:t[2],.1,100),o=Ai(ke.und(t[3])?0:t[3],.1,100),a=Math.sqrt(i/n),l=s/(2*Math.sqrt(i*n)),u=l<1?a*Math.sqrt(1-l*l):0,c=1,h=l<1?(l*a+-o)/u:-o+a;function d(m){var p=e?e*m/1e3:m;return l<1?p=Math.exp(-p*l*a)*(c*Math.cos(u*p)+h*Math.sin(u*p)):p=(c+h*p)*Math.exp(-p*a),m===0||m===1?m:1-p}function f(){var m=Bf.springs[r];if(m)return m;for(var p=1/6,g=0,y=0;;)if(g+=p,d(g)===1){if(y++,y>=16)break}else y=0;var x=g*p*1e3;return Bf.springs[r]=x,x}return e?d:f}function wF(r){return r===void 0&&(r=10),function(e){return Math.ceil(Ai(e,1e-6,1)*r)*(1/r)}}var _F=function(){var r=11,e=1/(r-1);function t(c,h){return 1-3*h+3*c}function n(c,h){return 3*h-6*c}function i(c){return 3*c}function s(c,h,d){return((t(h,d)*c+n(h,d))*c+i(h))*c}function o(c,h,d){return 3*t(h,d)*c*c+2*n(h,d)*c+i(h)}function a(c,h,d,f,m){var p,g,y=0;do g=h+(d-h)/2,p=s(g,f,m)-c,p>0?d=g:h=g;while(Math.abs(p)>1e-7&&++y<10);return g}function l(c,h,d,f){for(var m=0;m<4;++m){var p=o(h,d,f);if(p===0)return h;var g=s(h,d,f)-c;h-=g/p}return h}function u(c,h,d,f){if(!(0<=c&&c<=1&&0<=d&&d<=1))return;var m=new Float32Array(r);if(c!==h||d!==f)for(var p=0;p<r;++p)m[p]=s(p*e,c,d);function g(y){for(var x=0,w=1,b=r-1;w!==b&&m[w]<=y;++w)x+=e;--w;var _=(y-m[w])/(m[w+1]-m[w]),A=x+_*e,M=o(A,c,d);return M>=.001?l(y,A,c,d):M===0?A:a(y,x,x+e,c,d)}return function(y){return c===h&&d===f||y===0||y===1?y:s(g(y),h,f)}}return u}(),a1=function(){var r={linear:function(){return function(n){return n}}},e={Sine:function(){return function(n){return 1-Math.cos(n*Math.PI/2)}},Circ:function(){return function(n){return 1-Math.sqrt(1-n*n)}},Back:function(){return function(n){return n*n*(3*n-2)}},Bounce:function(){return function(n){for(var i,s=4;n<((i=Math.pow(2,--s))-1)/11;);return 1/Math.pow(4,3-s)-7.5625*Math.pow((i*3-2)/22-n,2)}},Elastic:function(n,i){n===void 0&&(n=1),i===void 0&&(i=.5);var s=Ai(n,1,10),o=Ai(i,.1,2);return function(a){return a===0||a===1?a:-s*Math.pow(2,10*(a-1))*Math.sin((a-1-o/(Math.PI*2)*Math.asin(1/s))*(Math.PI*2)/o)}}},t=["Quad","Cubic","Quart","Quint","Expo"];return t.forEach(function(n,i){e[n]=function(){return function(s){return Math.pow(s,i+2)}}}),Object.keys(e).forEach(function(n){var i=e[n];r["easeIn"+n]=i,r["easeOut"+n]=function(s,o){return function(a){return 1-i(s,o)(1-a)}},r["easeInOut"+n]=function(s,o){return function(a){return a<.5?i(s,o)(a*2)/2:1-i(s,o)(a*-2+2)/2}}}),r}();function k0(r,e){if(ke.fnc(r))return r;var t=r.split("(")[0],n=a1[t],i=s1(r);switch(t){case"spring":return o1(r,e);case"cubicBezier":return F0(_F,i);case"steps":return F0(wF,i);default:return F0(n,i)}}function l1(r){try{var e=document.querySelectorAll(r);return e}catch{return}}function Ff(r,e){for(var t=r.length,n=arguments.length>=2?arguments[1]:void 0,i=[],s=0;s<t;s++)if(s in r){var o=r[s];e.call(n,o,s,r)&&i.push(o)}return i}function Uf(r){return r.reduce(function(e,t){return e.concat(ke.arr(t)?Uf(t):t)},[])}function $S(r){return ke.arr(r)?r:(ke.str(r)&&(r=l1(r)||r),r instanceof NodeList||r instanceof HTMLCollection?[].slice.call(r):[r])}function V0(r,e){return r.some(function(t){return t===e})}function H0(r){var e={};for(var t in r)e[t]=r[t];return e}function U0(r,e){var t=H0(r);for(var n in r)t[n]=e.hasOwnProperty(n)?e[n]:r[n];return t}function zf(r,e){var t=H0(r);for(var n in e)t[n]=ke.und(r[n])?e[n]:r[n];return t}function SF(r){var e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(r);return e?"rgba("+e[1]+",1)":r}function AF(r){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,t=r.replace(e,function(a,l,u,c){return l+l+u+u+c+c}),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),i=parseInt(n[1],16),s=parseInt(n[2],16),o=parseInt(n[3],16);return"rgba("+i+","+s+","+o+",1)"}function MF(r){var e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(r)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(r),t=parseInt(e[1],10)/360,n=parseInt(e[2],10)/100,i=parseInt(e[3],10)/100,s=e[4]||1;function o(d,f,m){return m<0&&(m+=1),m>1&&(m-=1),m<1/6?d+(f-d)*6*m:m<1/2?f:m<2/3?d+(f-d)*(2/3-m)*6:d}var a,l,u;if(n==0)a=l=u=i;else{var c=i<.5?i*(1+n):i+n-i*n,h=2*i-c;a=o(h,c,t+1/3),l=o(h,c,t),u=o(h,c,t-1/3)}return"rgba("+a*255+","+l*255+","+u*255+","+s+")"}function TF(r){if(ke.rgb(r))return SF(r);if(ke.hex(r))return AF(r);if(ke.hsl(r))return MF(r)}function Yi(r){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(r);if(e)return e[1]}function EF(r){if(Fu(r,"translate")||r==="perspective")return"px";if(Fu(r,"rotate")||Fu(r,"skew"))return"deg"}function z0(r,e){return ke.fnc(r)?r(e.target,e.id,e.total):r}function Mi(r,e){return r.getAttribute(e)}function W0(r,e,t){var n=Yi(e);if(V0([t,"deg","rad","turn"],n))return e;var i=Bf.CSS[e+t];if(!ke.und(i))return i;var s=100,o=document.createElement(r.tagName),a=r.parentNode&&r.parentNode!==document?r.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=s+t;var l=s/o.offsetWidth;a.removeChild(o);var u=l*parseFloat(e);return Bf.CSS[e+t]=u,u}function c1(r,e,t){if(e in r.style){var n=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),i=r.style[e]||getComputedStyle(r).getPropertyValue(n)||"0";return t?W0(r,i,t):i}}function j0(r,e){if(ke.dom(r)&&!ke.inp(r)&&(Mi(r,e)||ke.svg(r)&&r[e]))return"attribute";if(ke.dom(r)&&V0(bF,e))return"transform";if(ke.dom(r)&&e!=="transform"&&c1(r,e))return"css";if(r[e]!=null)return"object"}function u1(r){if(!!ke.dom(r)){for(var e=r.style.transform||"",t=/(\w+)\(([^)]*)\)/g,n=new Map,i;i=t.exec(e);)n.set(i[1],i[2]);return n}}function CF(r,e,t,n){var i=Fu(e,"scale")?1:0+EF(e),s=u1(r).get(e)||i;return t&&(t.transforms.list.set(e,s),t.transforms.last=e),n?W0(r,s,n):s}function q0(r,e,t,n){switch(j0(r,e)){case"transform":return CF(r,e,n,t);case"css":return c1(r,e,t);case"attribute":return Mi(r,e);default:return r[e]||0}}function X0(r,e){var t=/^(\*=|\+=|-=)/.exec(r);if(!t)return r;var n=Yi(r)||0,i=parseFloat(e),s=parseFloat(r.replace(t[0],""));switch(t[0][0]){case"+":return i+s+n;case"-":return i-s+n;case"*":return i*s+n}}function h1(r,e){if(ke.col(r))return TF(r);if(/\s/g.test(r))return r;var t=Yi(r),n=t?r.substr(0,r.length-t.length):r;return e?n+e:n}function Y0(r,e){return Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))}function DF(r){return Math.PI*2*Mi(r,"r")}function PF(r){return Mi(r,"width")*2+Mi(r,"height")*2}function IF(r){return Y0({x:Mi(r,"x1"),y:Mi(r,"y1")},{x:Mi(r,"x2"),y:Mi(r,"y2")})}function d1(r){for(var e=r.points,t=0,n,i=0;i<e.numberOfItems;i++){var s=e.getItem(i);i>0&&(t+=Y0(n,s)),n=s}return t}function LF(r){var e=r.points;return d1(r)+Y0(e.getItem(e.numberOfItems-1),e.getItem(0))}function f1(r){if(r.getTotalLength)return r.getTotalLength();switch(r.tagName.toLowerCase()){case"circle":return DF(r);case"rect":return PF(r);case"line":return IF(r);case"polyline":return d1(r);case"polygon":return LF(r)}}function OF(r){var e=f1(r);return r.setAttribute("stroke-dasharray",e),e}function RF(r){for(var e=r.parentNode;ke.svg(e)&&ke.svg(e.parentNode);)e=e.parentNode;return e}function p1(r,e){var t=e||{},n=t.el||RF(r),i=n.getBoundingClientRect(),s=Mi(n,"viewBox"),o=i.width,a=i.height,l=t.viewBox||(s?s.split(" "):[0,0,o,a]);return{el:n,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function NF(r,e){var t=ke.str(r)?l1(r)[0]:r,n=e||100;return function(i){return{property:i,el:t,svg:p1(t),totalLength:f1(t)*(n/100)}}}function BF(r,e){function t(a){a===void 0&&(a=0);var l=e+a>=1?e+a:0;return r.el.getPointAtLength(l)}var n=p1(r.el,r.svg),i=t(),s=t(-1),o=t(1);switch(r.property){case"x":return(i.x-n.x)*n.w;case"y":return(i.y-n.y)*n.h;case"angle":return Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI}}function e1(r,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,n=h1(ke.pth(r)?r.totalLength:r,e)+"";return{original:n,numbers:n.match(t)?n.match(t).map(Number):[0],strings:ke.str(r)||e?n.split(t):[]}}function m1(r){var e=r?Uf(ke.arr(r)?r.map($S):$S(r)):[];return Ff(e,function(t,n,i){return i.indexOf(t)===n})}function g1(r){var e=m1(r);return e.map(function(t,n){return{target:t,id:n,total:e.length,transforms:{list:u1(t)}}})}function FF(r,e){var t=H0(e);if(/^spring/.test(t.easing)&&(t.duration=o1(t.easing)),ke.arr(r)){var n=r.length,i=n===2&&!ke.obj(r[0]);i?r={value:r}:ke.fnc(e.duration)||(t.duration=e.duration/n)}var s=ke.arr(r)?r:[r];return s.map(function(o,a){var l=ke.obj(o)&&!ke.pth(o)?o:{value:o};return ke.und(l.delay)&&(l.delay=a?0:e.delay),ke.und(l.endDelay)&&(l.endDelay=a===s.length-1?e.endDelay:0),l}).map(function(o){return zf(o,t)})}function UF(r){for(var e=Ff(Uf(r.map(function(s){return Object.keys(s)})),function(s){return ke.key(s)}).reduce(function(s,o){return s.indexOf(o)<0&&s.push(o),s},[]),t={},n=function(s){var o=e[s];t[o]=r.map(function(a){var l={};for(var u in a)ke.key(u)?u==o&&(l.value=a[u]):l[u]=a[u];return l})},i=0;i<e.length;i++)n(i);return t}function zF(r,e){var t=[],n=e.keyframes;n&&(e=zf(UF(n),e));for(var i in e)ke.key(i)&&t.push({name:i,tweens:FF(e[i],r)});return t}function GF(r,e){var t={};for(var n in r){var i=z0(r[n],e);ke.arr(i)&&(i=i.map(function(s){return z0(s,e)}),i.length===1&&(i=i[0])),t[n]=i}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}function kF(r,e){var t;return r.tweens.map(function(n){var i=GF(n,e),s=i.value,o=ke.arr(s)?s[1]:s,a=Yi(o),l=q0(e.target,r.name,a,e),u=t?t.to.original:l,c=ke.arr(s)?s[0]:u,h=Yi(c)||Yi(l),d=a||h;return ke.und(o)&&(o=u),i.from=e1(c,d),i.to=e1(X0(o,c),d),i.start=t?t.end:0,i.end=i.start+i.delay+i.duration+i.endDelay,i.easing=k0(i.easing,i.duration),i.isPath=ke.pth(s),i.isColor=ke.col(i.from.original),i.isColor&&(i.round=1),t=i,i})}var y1={css:function(r,e,t){return r.style[e]=t},attribute:function(r,e,t){return r.setAttribute(e,t)},object:function(r,e,t){return r[e]=t},transform:function(r,e,t,n,i){if(n.list.set(e,t),e===n.last||i){var s="";n.list.forEach(function(o,a){s+=a+"("+o+") "}),r.style.transform=s}}};function v1(r,e){var t=g1(r);t.forEach(function(n){for(var i in e){var s=z0(e[i],n),o=n.target,a=Yi(s),l=q0(o,i,a,n),u=a||Yi(l),c=X0(h1(s,u),l),h=j0(o,i);y1[h](o,i,c,n.transforms,!0)}})}function VF(r,e){var t=j0(r.target,e.name);if(t){var n=kF(e,r),i=n[n.length-1];return{type:t,property:e.name,animatable:r,tweens:n,duration:i.end,delay:n[0].delay,endDelay:i.endDelay}}}function HF(r,e){return Ff(Uf(r.map(function(t){return e.map(function(n){return VF(t,n)})})),function(t){return!ke.und(t)})}function x1(r,e){var t=r.length,n=function(s){return s.timelineOffset?s.timelineOffset:0},i={};return i.duration=t?Math.max.apply(Math,r.map(function(s){return n(s)+s.duration})):e.duration,i.delay=t?Math.min.apply(Math,r.map(function(s){return n(s)+s.delay})):e.delay,i.endDelay=t?i.duration-Math.max.apply(Math,r.map(function(s){return n(s)+s.duration-s.endDelay})):e.endDelay,i}var t1=0;function WF(r){var e=U0(i1,r),t=U0(G0,r),n=zF(t,r),i=g1(r.targets),s=HF(i,n),o=x1(s,t),a=t1;return t1++,zf(e,{id:a,children:[],animatables:i,animations:s,duration:o.duration,delay:o.delay,endDelay:o.endDelay})}var rr=[],n1=[],Nf,jF=function(){function r(){Nf=requestAnimationFrame(e)}function e(t){var n=rr.length;if(n){for(var i=0;i<n;){var s=rr[i];if(!s.paused)s.tick(t);else{var o=rr.indexOf(s);o>-1&&(rr.splice(o,1),n=rr.length)}i++}r()}else Nf=cancelAnimationFrame(Nf)}return r}();function qF(){document.hidden?(rr.forEach(function(r){return r.pause()}),n1=rr.slice(0),on.running=rr=[]):n1.forEach(function(r){return r.play()})}typeof document<"u"&&document.addEventListener("visibilitychange",qF);function on(r){r===void 0&&(r={});var e=0,t=0,n=0,i,s=0,o=null;function a(w){var b=window.Promise&&new Promise(function(_){return o=_});return w.finished=b,b}var l=WF(r),u=a(l);function c(){var w=l.direction;w!=="alternate"&&(l.direction=w!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,i.forEach(function(b){return b.reversed=l.reversed})}function h(w){return l.reversed?l.duration-w:w}function d(){e=0,t=h(l.currentTime)*(1/on.speed)}function f(w,b){b&&b.seek(w-b.timelineOffset)}function m(w){if(l.reversePlayback)for(var _=s;_--;)f(w,i[_]);else for(var b=0;b<s;b++)f(w,i[b])}function p(w){var b=0,_=l.animations,A=_.length;for(l.reversePlayback===!0&&l.rewind===!1&&(w=l.duration+l.delay-l.endDelay-w);b<A;){var M=_[b],v=M.animatable,T=M.tweens,E=T.length-1,C=T[E];E&&(C=Ff(T,function($){return w<$.end})[0]||C);for(var L=Ai(w-C.start-C.delay,0,C.duration)/C.duration,R=isNaN(L)?1:C.easing(L),O=C.to.strings,W=C.round,j=[],Z=C.to.numbers.length,Y=void 0,z=0;z<Z;z++){var F=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var G=C.to.numbers[z],B=C.from.numbers[z]||0;else var B=C.to.numbers[z],G=C.from.numbers[z]||0;C.isPath?F=BF(C.value,R*B):F=G+R*(B-G),W&&(C.isColor&&z>2||(F=Math.round(F*W)/W)),j.push(F)}var k=O.length;if(!k)Y=j[0];else{Y=O[0];for(var H=0;H<k;H++){var X=O[H],q=O[H+1],ae=j[H];isNaN(ae)||(q?Y+=ae+q:Y+=ae+" ")}}y1[M.type](v.target,M.property,Y,v.transforms),M.currentValue=Y,b++}}function g(w){l[w]&&!l.passThrough&&l[w](l)}function y(){l.remaining&&l.remaining!==!0&&l.remaining--}function x(w){var b=l.duration,_=l.delay,A=b-l.endDelay,M=h(w);l.progress=Ai(M/b*100,0,100),l.reversePlayback=M<l.currentTime,i&&m(M),!l.began&&l.currentTime>=0&&(l.began=!0,g("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,g("loopBegin")),M<=_&&l.currentTime!==0&&(p(0),g("change")),(M>=A&&l.currentTime!==b||!b)&&(p(b),g("change")),M>_&&M<A?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,g("changeBegin")),g("change"),p(M)):l.changeBegan?(l.changeCompleted=!0,l.changeBegan=!1,g("change"),g("changeComplete")):l.began&&M>A&&(g("change"),g("changeComplete")),l.currentTime=Ai(M,0,b),l.began&&g("update"),w>=b&&(t=0,y(),l.remaining?(e=n,g("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&c()):(l.paused=!0,l.completed||(l.completed=!0,g("loopComplete"),g("complete"),!l.passThrough&&"Promise"in window&&(o(),u=a(l)))))}return l.reset=function(){var w=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=w==="reverse",l.remaining=l.loop,i=l.children,s=i.length;for(var b=s;b--;)l.children[b].reset();(l.reversed&&l.loop!==!0||w==="alternate"&&l.loop===1)&&l.remaining++,p(l.reversed?l.duration:0)},l.set=function(w,b){return v1(w,b),l},l.tick=function(w){n=w,e||(e=n),x((n+(t-e))*on.speed)},l.seek=function(w){x(h(w))},l.pause=function(){l.paused=!0,d()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,rr.push(l),d(),Nf||jF())},l.reverse=function(){c(),l.completed=!l.reversed,d()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function r1(r,e){for(var t=e.length;t--;)V0(r,e[t].animatable.target)&&e.splice(t,1)}function XF(r){for(var e=m1(r),t=rr.length;t--;){var n=rr[t],i=n.animations,s=n.children;r1(e,i);for(var o=s.length;o--;){var a=s[o],l=a.animations;r1(e,l),!l.length&&!a.children.length&&s.splice(o,1)}!i.length&&!s.length&&n.pause()}}function YF(r,e){e===void 0&&(e={});var t=e.direction||"normal",n=e.easing?k0(e.easing):null,i=e.grid,s=e.axis,o=e.from||0,a=o==="first",l=o==="center",u=o==="last",c=ke.arr(r),h=parseFloat(c?r[0]:r),d=c?parseFloat(r[1]):0,f=Yi(c?r[1]:r)||0,m=e.start||0+(c?h:0),p=[],g=0;return function(y,x,w){if(a&&(o=0),l&&(o=(w-1)/2),u&&(o=w-1),!p.length){for(var b=0;b<w;b++){if(!i)p.push(Math.abs(o-b));else{var _=l?(i[0]-1)/2:o%i[0],A=l?(i[1]-1)/2:Math.floor(o/i[0]),M=b%i[0],v=Math.floor(b/i[0]),T=_-M,E=A-v,C=Math.sqrt(T*T+E*E);s==="x"&&(C=-T),s==="y"&&(C=-E),p.push(C)}g=Math.max.apply(Math,p)}n&&(p=p.map(function(R){return n(R/g)*g})),t==="reverse"&&(p=p.map(function(R){return s?R<0?R*-1:-R:Math.abs(g-R)}))}var L=c?(d-h)/g:h;return m+L*(Math.round(p[x]*100)/100)+f}}function QF(r){r===void 0&&(r={});var e=on(r);return e.duration=0,e.add=function(t,n){var i=rr.indexOf(e),s=e.children;i>-1&&rr.splice(i,1);function o(d){d.passThrough=!0}for(var a=0;a<s.length;a++)o(s[a]);var l=zf(t,U0(G0,r));l.targets=l.targets||r.targets;var u=e.duration;l.autoplay=!1,l.direction=e.direction,l.timelineOffset=ke.und(n)?u:X0(n,u),o(e),l.rewind=e.rewind,e.seek(l.timelineOffset);var c=on(l);o(c),s.push(c);var h=x1(s,r);return e.delay=h.delay,e.endDelay=h.endDelay,e.duration=h.duration,e.seek(0),e.reset(),e.autoplay&&e.play(),e},e}on.version="3.2.0";on.speed=1;on.running=rr;on.remove=XF;on.get=q0;on.set=v1;on.convertPx=W0;on.path=NF;on.setDashoffset=OF;on.stagger=YF;on.timeline=QF;on.easing=k0;on.penner=a1;on.random=function(r,e){return Math.floor(Math.random()*(e-r+1))+r};var b1=on;function w1(r,e,t){let n=r.cameraType==="OrthographicCamera"?e.orthographic?.zoom:e.perspective?.zoom;if(n!==void 0){let i=r.zoom;i!==n&&t.push({change:s=>{r.zoom=Je.lerp(i,n,s),r.updateProjectionMatrix()}})}if(e.targetOffset!==void 0){let i=r.targetOffset,s=e.targetOffset;i!==s&&t.push({change:o=>{r.targetOffset=Je.lerp(i,s,o)}})}}function _1(r,e,t){if(e.width!==void 0&&e.height!==void 0&&e.depth!==void 0){let{width:n,height:i,depth:s}=r.geometry.userData.parameters,o=[n,i,s],a=[e.width,e.height,e.depth];!rn.isEqual(o,a)&&!xt(r)&&t.push({change:l=>{let[u,c,h]=rn.lerp(o,a,l);r.updateGeometry({parameters:{width:u,height:c,depth:h}}),r.invalidateDownstreamBooleanData()}})}}function S1(r,e,t,n){if(e.intensity!==void 0){let i=r.intensity,s=e.intensity;i!==s&&t.push({change:o=>{r.intensity=Je.lerp(i,s,o)}})}if(e.color!==void 0){let i=r.color.clone(),s=typeof e.color=="string"?n.getColor(e.color):e.color;if(!hn.equals(i,s)){let o=i.clone();r.color=o,t.push({change:a=>{let{r:l,g:u,b:c}=hn.lerp(i,s,a);o.setRGB(l,u,c)}})}}}function A1(r,e,t,n){let i=0,s=r.layers[i];for(;s;){let o=e.layers.data(s.uuid);if(o&&(s.visible??!0)&&(o.visible??!0)){let a=s.getNames().filter(l=>!Xd.some(u=>l.includes(u)));for(let l of a)try{let u=s.getValue(l);if(l==="steps")tU(s,o,l,t);else if(l==="colors")nU(s,o,l,t);else if(typeof u=="number")ZF(s,o,l,t);else{if(typeof u=="boolean")continue;"isVector2"in u?KF(s,o,l,t):"isVector3"in u?JF(s,o,l,t):"isColorA"in u?eU(s,o,l,t,n):"isColor"in u?$F(s,o,l,t,n):"isTexture"in u&&rU(s,o,l,t)}}catch(u){console.error(`animateMaterial: unexpected material layer for ${l}`,u)}}i+=1,s=r.layers[i]}}function ZF(r,e,t,n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=e[t];i!==s&&n.push({change:o=>{r.setValue(t,Je.lerp(i,s,o))}})}function KF(r,e,t,n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=i.toArray(),o=e[t];ji.isEqual(s,o)||n.push({change:a=>{i.fromArray(ji.lerp(s,o,a))}})}function JF(r,e,t,n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=i.toArray(),o=e[t];rn.isEqual(s,o)||n.push({change:a=>{i.fromArray(rn.lerp(s,o,a))}})}function $F(r,e,t,n,i){if(!r.hasValue(t)||!(t in e))return;let s=r.getValue(t).clone(),o=e[t],a=typeof o=="string"?i.getColor(o):o;if(hn.equals(s,a))return;let l=s.clone();r.setValue(t,l),n.push({change:u=>{let{r:c,g:h,b:d}=hn.lerp(s,a,u);l.setRGB(c,h,d)}})}function eU(r,e,t,n,i){if(!r.hasValue(t)||!(t in e))return;let s=r.getValue(t).clone(),o=e[t],a=typeof o=="string"?i.getColor(o):o;if(Rn.equals(s,a))return;let l=s.clone();r.setValue(t,l),n.push({change:u=>{let{r:c,g:h,b:d,a:f}=Rn.lerp(s,a,u);l.setRGBA(c,h,d,f)}})}function tU(r,e,t="steps",n){if(!r.hasValue(t)||!(t in e))return;let i=[...r.getValue(t)],s=e[t];for(let o=0;o<i.length;++o){let a=i[o],l=s[o];a!==l&&n.push({change:u=>{i[o]=Je.lerp(a,l,u),r.setValue("steps",i)}})}}function nU(r,e,t="colors",n){if(!r.hasValue(t)||!(t in e))return;let i=r.getValue(t),s=e[t];for(let o=0;o<i.length;++o){let a=i[o].toArray(),l=s[o];Wc.isEqual(a,l)||n.push({change:u=>{i[o].fromArray(Wc.lerp(a,l,u))}})}}function rU(r,e,t="texture",n){if(!r.hasValue(t)||!(t in e))return;let i=r.getNode("mat"),s=e[t],o=i.repeat,a=i.offset,l=s.repeat,u=s.offset;(!ji.isEqual(o,l)||!ji.isEqual(a,u))&&n.push({change:c=>{i.repeat=ji.lerp(o,l,c),i.offset=ji.lerp(a,u,c),i.updateMatrix()}})}function M1(r,e,t,n){if(n===0)return t.copy(r);if(n===1)return t.copy(e);let i=r.w*e.w+r.x*e.x+r.y*e.y+r.z*e.z;if(i>=1)return t.copy(r);let s=1-i*i;if(s<=Number.EPSILON){let c=1-n;return t.w=c*r.w+n*e.w,t.x=c*r.x+n*e.x,t.y=c*r.y+n*e.y,t.z=c*r.z+n*e.z,t.normalize(),t}let o=Math.sqrt(s),a=Math.atan2(o,i),l=Math.sin((1-n)*a)/o,u=Math.sin(n*a)/o;return t.w=r.w*l+e.w*u,t.x=r.x*l+e.x*u,t.y=r.y*l+e.y*u,t.z=r.z*l+e.z*u,t}function T1(r,e,t=0){let n=Array.isArray(r.material)?r.material[t]:r.material,i;return"materials"in e?i=e.materials[t]:"material"in e&&(i=e.material),[n,i]}var Q0=new S,Z0=new S,E1=new qt,iU=new yr,sU=new Oe;function C1(r,e,t,n){if(t.position!==void 0){let i=r.position.toArray(),s=t.position;rn.isEqual(i,s)||n.push({change:o=>{r.position.fromArray(rn.lerp(i,s,o)),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}if(t.scale!==void 0){let i=r.scale.toArray(),s=t.scale;rn.isEqual(i,s)||n.push({change:o=>{r.scale.fromArray(rn.lerp(i,s,o)),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}oU(r,e,t,n),aU(r,t,n)}function oU(r,e,t,n){if(t.rotation===void 0)return;let i=Q0.setFromEuler(r.rotation).toArray(),s=t.rotation;if(rn.isEqual(i,s))return;if(rn.sub(t.rotation,e?e.rotation:r.rotation).every(a=>Math.abs(a)<2*Math.PI)){let a=r.quaternion.clone(),l=new qt().setFromEuler(iU.set(t.rotation[0],t.rotation[1],t.rotation[2]));n.push({change:u=>{M1(a,l,r.quaternion,u),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}else n.push({change:a=>{r.rotation.setFromVector3(Z0.fromArray(rn.lerp(i,s,a))),r.updateMatrix(),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}function aU(r,e,t){if(e.hiddenMatrix!==void 0&&!si.isEqual(r.hiddenMatrix.toArray(),e.hiddenMatrix)){let n=new S,i=new qt,s=new S;r.hiddenMatrix.decompose(n,i,s);let o=new S,a=new qt,l=new S;sU.fromArray(e.hiddenMatrix).decompose(o,a,l),t.push({change:u=>{E1.slerpQuaternions(i,a,u),Q0.lerpVectors(n,o,u),Z0.lerpVectors(s,l,u),r.hiddenMatrix.compose(Q0,E1,Z0),Ft(r)&&xt(r.parent)&&r.invalidateDownstreamBooleanData(!0)}})}}function D1(r,e,t,n){let i=[];if((r.visible||xt(r.parent))&&C1(r,e?.objectState,t.objectState,i),Ft(r)){if((r.visible||xt(r.parent))&&"geometry"in t.objectState&&_1(r,t.objectState.geometry,i),r.visible&&("material"in t.objectState||"materials"in t.objectState)){let[s,o]=T1(r,t.objectState,0);s&&o&&typeof o!="string"&&A1(s,o,i,n)}}else r.visible&&fS(r)?S1(r,t.objectState,i,n):dS(r)&&w1(r,t.objectState,i);return i.length?{change:s=>{i.forEach(o=>{o.change&&o.change(s)})}}:void 0}function lU(r,e,t){switch(r){case 0:return"cubicBezier( 0, 0, 1, 1 )";case 1:return"cubicBezier( .25, .1, .25, 1 )";case 2:return"cubicBezier( .42, 0, 1, 1 )";case 3:return"cubicBezier( 0, 0, .58, 1 )";case 4:return"cubicBezier( .42, 0, .58, 1 )";case 5:let{control1:n,control2:i}=e??{...Sd.defaultData};return`cubicBezier( ${n[0]}, ${n[1]}, ${i[0]}, ${i[1]} )`;case 6:let{mass:s,stiffness:o,damping:a,velocity:l}=t??{..._d.defaultData};return`spring( ${s}, ${o}, ${a}, ${l} )`}}var Gf=class{constructor(e,t){this.object=e;this.sharedAssets=t;this.uuid=Je.generateUUID();this.states=[];this.events={};this.animatingState=0;this._scrollCounter=null}get fromState(){return this._fromState}get animation(){return this._animation}start(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._scrollCounter=null),this.states.length>1&&(this.states[0].execute(this.object,this.sharedAssets),this._toState=this.states[0],this._fromState=void 0)}end(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0),this.states.length>1&&this.states[0].execute(this.object,this.sharedAssets),this._toState=void 0,this._fromState=void 0}seek(e,t,n,i,s){this._scrollCounter===null&&(this.animate(e,i,s),this._scrollCounter=0),this._scrollCounter+=t,this._scrollCounter=Math.min(Math.max(this._scrollCounter,0),n),this._animation?.seek(this._scrollCounter/n*(i.duration?i.duration:1))}animate(e,t,n){if(this._fromState===e&&this._animation?.reversed){let i=this._animation?.currentTime??0;this._animation?.reset(),this._animation?.seek(i),this._animation?.play()}else if(this._toState!==e){this._animation!==void 0&&this._animation.pause(),this.animatingState=0,this._fromState=this._toState,this._toState=e;let i=D1(this.object,this._fromState,e,this.sharedAssets);if(!i)return;let s={t:0};this._animation=b1({autoplay:!1,loop:t.repeat?!0:t.cycle?1:!1,direction:t.cycle?"alternate":"normal",rewind:t.rewind,delay:t.startDelay,endDelay:t.endDelay,duration:t.duration,easing:lU(t.easing,t.cubicControls,t.springParameters),targets:s,t:1,change:()=>{i.change&&i.change(s.t),n?.change&&n.change(s.t)},loopBegin:o=>{if(this.animatingState===0){this.animatingState=1;return}o.reversed?(this._toState=this._fromState,this._fromState=e):(this._fromState=this._toState,this._toState=e)}}),t.autoplay?t.startOnceDelay>0?setTimeout(()=>this._animation?.play(),t.startOnceDelay):this._animation?.play():this._animation.finished.then(()=>{this.animatingState=0})}}emitEvent(e,t){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let n=this.events[e];if(n){for(let i of n)if("targets"in i)for(let{object:s,state:o,params:a}of i.targets)s.interaction?.animate(o,a,{change:t})}}}emitEventReverse(e,t){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let n=this.events[e];if(n){for(let i of n)if("targets"in i)for(let{object:s,params:o}of i.targets){let a=s.interaction;a?._fromState!==void 0&&a.animate(a._fromState,o,{change:t})}}}}};var Ul=class{static create(e,t){if(e.object){let n=t.find(e.object);if(n?.interaction){let i=e.state?n.interaction.states.find(s=>s.uuid===e.state):n.interaction.states[0];if(i){let s=e.delay??0,o={cycle:e.cycle??!1,rewind:e.rewind??!1,repeat:e.repeat??!1,duration:e.duration??1e3,startOnceDelay:e.delayDirection==="start-once"?s:0,startDelay:e.delayDirection==="start"||!e.delayDirection?s:0,endDelay:e.delayDirection==="end"||!e.delayDirection?s:0,easing:e.easing??4,autoplay:!0};if(e.easing===5){let a=e;o.cubicControls={control1:[...a.control1],control2:[...a.control2]}}if(e.easing===6){let a=e;o.springParameters={mass:a.mass,stiffness:a.stiffness,damping:a.damping,velocity:a.velocity}}return new Ul(n,i,o)}}}}constructor(e,t,n){this.object=e,this.state=t,this.params=n}};var Bn=class{constructor(e){this.raycastState=e;this.domEventsNeeded=[]}init(e,t){}dispose(){}};var K0=new S,P1=new Gn,I1=new Oe,kf={type:"follow",normal:new S,raycaster:new Os},zl;(t=>{function r(n){if(n.type===10)return{type:"follow"}}t.create=r;function e({target:n,normal:i,raycaster:s,begin:o,change:a}){!n||!i||!s||(o&&o("follow",n.uuid),P1.setFromNormalAndCoplanarPoint(i,n.getWorldPosition(K0)),s.ray.intersectPlane(P1,K0),n.position.copy(K0),n.parent!==null&&n.position.applyMatrix4(I1.copy(n.parent.matrixWorld).invert()),n.position.applyMatrix4(I1.copy(n.hiddenMatrix).invert()),n.updateMatrix(),Ft(n)&&xt(n.parent)&&n.invalidateDownstreamBooleanData(!0),a&&a())}t.listener=e})(zl||(zl={}));var Vf=class extends Bn{constructor(){super(...arguments);this.objects=[];this.onTouchMove=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleFollowEvent())};this.onMouseMove=t=>{this.raycastState.updateRaycaster(t),this.handleFollowEvent()}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],kf.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.follow?.length||(o.addEventListener("follow",zl.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(Kt?(this.domEventsNeeded.push("touchstart","touchmove"),s.addEventListener("touchstart",this.onTouchMove),s.addEventListener("touchmove",this.onTouchMove)):(this.domEventsNeeded.push("pointermove"),s.addEventListener("pointermove",this.onMouseMove)))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("follow",zl.listener)}),this.objects=[],Kt?(t.removeEventListener("touchstart",this.onTouchMove),t.removeEventListener("touchmove",this.onTouchMove)):t.removeEventListener("pointermove",this.onMouseMove),this.domEventsNeeded=[]}handleFollowEvent(){let{normal:t,raycaster:n}=this.raycastState;kf.normal=t,kf.raycaster=n,this.objects.forEach(i=>i.dispatchEvent(kf))}};var J0=new S,L1=new Gn,Hf={type:"lookAt",normal:new S,raycaster:new Os},Gl;(t=>{function r(n){if(n.type===9&&n.distance)return{type:"lookAt",distance:n.distance}}t.create=r;function e({target:n,normal:i,raycaster:s,begin:o,change:a}){if(!n?.interaction?.events.lookAt?.length||!i||!s)return;o&&o("lookAt",n.uuid);let l=n.interaction.events.lookAt[0].distance;L1.set(i,-l),s.ray.intersectPlane(L1,J0),n.lookAt(J0),n.updateMatrix(),n.interaction.animation?.finished.then(()=>{n.lookAt(J0),n.updateMatrix(),Ft(n)&&xt(n.parent)&&n.invalidateDownstreamBooleanData(!0)}),Ft(n)&&xt(n.parent)&&n.invalidateDownstreamBooleanData(!0),a&&a()}t.listener=e})(Gl||(Gl={}));var Wf=class extends Bn{constructor(){super(...arguments);this.objects=[];this.onTouchMove=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this._handleLookAtEvent())};this.onMouseMove=t=>{this.raycastState.updateRaycaster(t),this._handleLookAtEvent()}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],Hf.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.lookAt?.length||(o.addEventListener("lookAt",Gl.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(Kt?(this.domEventsNeeded.push("touchstart","touchmove"),s.addEventListener("touchstart",this.onTouchMove),s.addEventListener("touchmove",this.onTouchMove)):(this.domEventsNeeded.push("pointermove"),s.addEventListener("pointermove",this.onMouseMove)))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("lookAt",Gl.listener)}),this.objects=[],Kt?(t.removeEventListener("touchstart",this.onTouchMove),t.removeEventListener("touchmove",this.onTouchMove)):t.removeEventListener("pointermove",this.onMouseMove),this.domEventsNeeded=[]}_handleLookAtEvent(){let{normal:t,raycaster:n}=this.raycastState;Hf.normal=t,Hf.raycaster=n,this.objects.forEach(i=>{i.dispatchEvent(Hf)})}};var $0={type:"start"},kl;(t=>{function r(n){if(n.type===7)return{type:"start",targets:[]}}t.create=r;function e({target:n,begin:i,change:s}){if(!n?.interaction?.events.start?.length)return;i&&i("start",n.uuid);let o={change:s};n.interaction.events.start.forEach(a=>{a.targets.forEach(({object:l,state:u,params:c})=>l.interaction?.animate(u,c,o))})}t.listener=e})(kl||(kl={}));var jf=class extends Bn{constructor(){super(...arguments);this.objects=[]}init(t,n){let{scene:i}=this.raycastState;this.objects=[],$0.begin=t,$0.change=n,i.traverseEntity(s=>{!s.visible||!s.interaction?.events.start?.length||(s.addEventListener("start",kl.listener),this.objects.push(s))}),this.objects.forEach(s=>{s.dispatchEvent($0)})}dispose(){this.objects.forEach(t=>{t.removeEventListener("start",kl.listener)}),this.objects=[]}};var qf={type:"scroll"},Vl;(t=>{function r(n){if(!(n.type!==11||n.steps===void 0))return{type:"scroll",targets:[],steps:n.steps}}t.create=r;function e({target:n,deltaY:i,begin:s,change:o}){if(!n?.interaction?.events.scroll?.length||!i)return;s&&s("scroll",n.uuid);let a={change:o},l=i>0?1:-1;n.interaction.events.scroll.forEach(u=>{u.targets.forEach(({object:c,state:h,params:d})=>{let f={...d,autoplay:!1};c.interaction?.seek(h,l,u.steps,f,a)})})}t.listener=e})(Vl||(Vl={}));var Xf=class extends Bn{constructor(){super(...arguments);this.objects=[];this.onWheel=t=>{qf.deltaY=t.deltaY,this.objects.forEach(n=>{n.dispatchEvent(qf)})}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],qf.begin=t,qf.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.scroll?.length||(o.addEventListener("scroll",Vl.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(this.domEventsNeeded.push("wheel"),s.addEventListener("wheel",this.onWheel))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("scroll",Vl.listener)}),this.objects=[],t.removeEventListener("wheel",this.onWheel),this.domEventsNeeded=[]}};function cU(r,e){return r.distance-e.distance}function O1(r,e,t){if(Us(e)&&e.visible&&!e.raycastLock)e.raycast(r,t);else return;for(let n of e.children)O1(r,n,t)}function Hl(r,e,t){if(!t.some(i=>Bo(r,i)!==void 0))return[];let n=[];return e.children.forEach(i=>O1(r,i,n)),n.sort(cU),n}function Wl(r,e){let t=[];if(r.length){let n=r[0].object;Us(n)&&n.interaction?.events[e]?.length&&t.push(n);let i=n.parent;for(;i;)r0(i)&&i.interaction?.events[e]?.length&&t.push(i),i=i.parent}return t}function Bo(r,e){if(Ft(e)){if(!e.raycastLock&&e.visible){let t=[];return e.raycast(r,t),t.length?t[0]:void 0}}else if(r0(e))return R1(r,e)}function R1(r,e){if(Ft(e)&&!e.raycastLock&&e.visible){let t=[];if(e.raycast(r,t),t.length)return t[0]}for(let t of e.children)if(Us(t)){let n=R1(r,t);if(n)return n}}function uU(r){if(r.style.transform!==""){let e=getComputedStyle(r).getPropertyValue("transform");if(e!=="none"){let t=e.replace("matrix(","").split(",");return{x:parseFloat(t[0]),y:parseFloat(t[3])}}}return{x:1,y:1}}function ey(r){let e=r.getViewport(new Ve),t=uU(r.domElement);return{left:e.x*t.x,top:e.y*t.y,width:e.z*t.x,height:e.w*t.y}}var Yf=class{constructor(e,t,n,i){this.renderer=e;this.scene=t;this.camera=n;this.stopRaycast=i;this.raycaster=new Os;this.normal=new S;this.raycasterNeedsUpdate=!0;this.domElement=e.domElement,this.domRect=this.domElement.getBoundingClientRect(),this.viewRect=ey(e)}getPointer(e,t){let n=this.domRect,i=this.viewRect,s=n.height-i.height,o=(e-i.left-n.left)*(n.width/i.width),a=(t-s+i.top-n.top)*(n.height/i.height);return{x:o/n.width*2-1,y:-(a/n.height)*2+1}}updateRaycaster(e){if(this.raycasterNeedsUpdate){let{clientX:t,clientY:n}=Kt?e.touches[0]:e;this.raycaster.setFromCamera(this.getPointer(t,n),this.camera),this.camera.getWorldDirection(this.normal),this.normal.negate(),this.raycasterNeedsUpdate=!1}}};var jl={type:"mouseHover"},ql;(t=>{function r(n){if(n.type===2)return{type:"mouseHover",targets:[]}}t.create=r;function e({target:n,begin:i,change:s,enter:o}){if(!n?.interaction?.events.mouseHover?.length||o===void 0)return;i&&i("mouseHover",n.uuid);let a={change:s};o?n.interaction.events.mouseHover.forEach(l=>{l.targets.forEach(({object:u,state:c,params:h})=>{u.interaction?.animate(c,h,a)})}):n.interaction.events.mouseHover.forEach(l=>{l.targets.forEach(({object:u,params:c})=>{let h=u.interaction;h?.fromState!==void 0&&h.animate(h.fromState,c,a)})})}t.listener=e})(ql||(ql={}));var Qf=class extends Bn{constructor(){super(...arguments);this.objects=[];this._prevObjects=[];this.onTouchStart=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleMouseHoverEvent())};this.onTouchEnd=t=>{this.handleMouseHoverEvent(!0)};this.onTouchMove=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleMouseHoverEvent())};this.onMouseMove=t=>{this.raycastState.updateRaycaster(t),this.handleMouseHoverEvent()}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.objects=[],jl.begin=t,jl.change=n,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.mouseHover?.length||(o.addEventListener("mouseHover",ql.listener),this.objects.push(o))}),this.domEventsNeeded=[],this.objects.length&&(Kt?(this.domEventsNeeded.push("touchstart","touchend","touchmove"),s.addEventListener("touchstart",this.onTouchStart),s.addEventListener("touchend",this.onTouchEnd),s.addEventListener("touchmove",this.onTouchMove)):(this.domEventsNeeded.push("pointermove"),s.addEventListener("pointermove",this.onMouseMove)))}dispose(){let{domElement:t}=this.raycastState;this.objects.forEach(n=>{n.removeEventListener("mouseHover",ql.listener)}),this.objects=[],Kt?(t.removeEventListener("touchstart",this.onTouchStart),t.removeEventListener("touchend",this.onTouchEnd),t.removeEventListener("touchmove",this.onTouchMove)):t.removeEventListener("pointermove",this.onMouseMove),this.domEventsNeeded=[]}handleMouseHoverEvent(t=!1){let n=[];if(!t){let{stopRaycast:i,raycaster:s,scene:o}=this.raycastState;if(i){let a=Hl(s,o,this.objects);n=Wl(a,"mouseHover")}else this.objects.forEach(a=>{Bo(s,a)&&n.push(a)})}this._prevObjects.length&&(jl.enter=!1,this._prevObjects.forEach(i=>{n.includes(i)||i.dispatchEvent(jl)})),n.length&&(jl.enter=!0,n.forEach(i=>{i.dispatchEvent(jl)})),this._prevObjects=n}};var ty={type:"mouseDown"},ny={type:"mouseUp"},ry={type:"keyDown"},F1={type:"keyUp"},Xs;(t=>{function r(n){let i,s;if(n.type===0)i={type:"mousedown"},s="mouseDown";else if(n.type===1)i={type:"mouseup"},s="mouseUp";else if(n.type===5){if(!n.key)return;i={type:"keydown",key:n.key},s="keyDown"}else if(n.type===6){if(!n.key)return;i={type:"keyup",key:n.key},s="keyUp"}else return;return{type:s,domEvent:i,targets:[],url:n.url??void 0,toggle:n.toggle??!1,enable:!1}}t.create=r;function e({target:n,interactionEvents:i,type:s,begin:o,change:a}){if(!n)return;i||(i=n.interaction?.events[s]),o&&o(s,n.uuid);let l={change:a};i.forEach(u=>{if(u.toggle){u.enable=!u.enable;for(let{object:c,state:h,params:d}of u.targets){let f=c.interaction;if(f!==void 0){let m={...d,cycle:!1,rewind:!1,repeat:!1};u.enable?f.animate(h,m,l):f.fromState!==void 0&&f.animate(f.fromState,m,l)}}}else u.targets.forEach(({object:c,state:h,params:d})=>c.interaction?.animate(h,d,l));u.url&&(Vc?window.location.assign(u.url):window.open(u.url,"_blank"))})}t.listener=e})(Xs||(Xs={}));var N1={keyDown:ry,keyUp:F1,mouseDown:ty,mouseUp:ny},B1={keyDown:Xs.listener,keyUp:Xs.listener,mouseDown:Xs.listener,mouseUp:Xs.listener};var Zf=class extends Bn{constructor(){super(...arguments);this.map={};this.types=["mouseDown","mouseUp","keyDown","keyUp"];this.onTouchStart=t=>{t.touches.length===1&&(this.raycastState.updateRaycaster(t),this.handleMouseEvent("mouseDown"))};this.onTouchEnd=t=>{this.raycastState.updateRaycaster(t),this.handleMouseEvent("mouseUp")};this.onMouseDown=t=>{this.raycastState.updateRaycaster(t),this.handleMouseEvent("mouseDown")};this.onMouseUp=t=>{this.raycastState.updateRaycaster(t),this.handleMouseEvent("mouseUp")};this.onKeyDown=t=>{this.handleKeyEvent(t,"keyDown","keydown")};this.onKeyUp=t=>{this.handleKeyEvent(t,"keyUp","keyup")}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.map={};for(let o of this.types)N1[o].begin=t,N1[o].change=n;i.traverseEntity(o=>{if(!(!o.visible||!o.interaction))for(let a of this.types)o.interaction.events[a]?.length&&(o.addEventListener(a,B1[a]),this.map[a]?this.map[a].push(o):this.map[a]=[o])}),this.domEventsNeeded=[],Kt?(this.map.mouseDown?.length&&(this.domEventsNeeded.push("touchstart"),s.addEventListener("touchstart",this.onTouchStart)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("touchend"),s.addEventListener("touchend",this.onTouchEnd))):(this.map.mouseDown?.length&&(this.domEventsNeeded.push("pointerdown"),s.addEventListener("pointerdown",this.onMouseDown)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("pointerup"),s.addEventListener("pointerup",this.onMouseUp))),this.map.keyDown?.length&&(this.domEventsNeeded.push("keydown"),document.addEventListener("keydown",this.onKeyDown)),this.map.keyUp?.length&&(this.domEventsNeeded.push("keyup"),document.addEventListener("keyup",this.onKeyUp))}dispose(){let{domElement:t}=this.raycastState;for(let n of this.types)this.map[n]?.forEach(i=>{i.removeEventListener(n,B1[n])});this.map={},Kt?(t.removeEventListener("touchstart",this.onTouchStart),t.removeEventListener("touchend",this.onTouchEnd)):(t.removeEventListener("pointerdown",this.onMouseDown),t.removeEventListener("pointerup",this.onMouseUp)),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),this.domEventsNeeded=[]}handleMouseEvent(t){let{stopRaycast:n,raycaster:i,scene:s}=this.raycastState;if(n){let o=this.map[t];if(o?.length){let a=Hl(i,s,o);Wl(a,t).forEach(l=>l.dispatchEvent(t==="mouseDown"?ty:ny))}}else this.map[t]?.forEach(o=>{Bo(i,o)&&o.dispatchEvent(t==="mouseDown"?ty:ny)})}handleKeyEvent(t,n,i){this.map[n]?.forEach(s=>{ry.interactionEvents=s.interaction?.events?.keyDown?.filter(o=>o.domEvent.type===i&&o.domEvent.key===t.key),s.dispatchEvent(n==="keyDown"?ry:F1)})}};var Xl;(t=>(t.isPlayable=n=>n.type==="audio"&&n.data.interaction==="play",t.create=function(n,i,s,o){if(!((i.trigger==="keyDown"||i.trigger==="keyUp")&&i.key===void 0))if(i.interaction==="play"){if(i.audio){let a=new Ti(n,i,s);return Ti.cache.set(n,a),a}}else return new iy(i,o)}))(Xl||(Xl={}));var Ti=class{constructor(e,t,n){this.id=e;this.type="audio";let{audio:i,volume:s,delay:o,loop:a}=t,l=typeof i=="string"?n.getAudio(i).src:i.data;this.audioPlayer=new js({src:l,volume:s,delay:o,loop:a}),this.data=t}dispatch(){this.data.toggle==="stop"?this.audioPlayer.isStarted?this.audioPlayer.stop():(this.audioPlayer.stop(),this.audioPlayer.play()):this.data.toggle==="pause"?this.audioPlayer.isStarted?this.audioPlayer.pause():this.audioPlayer.play():(this.audioPlayer.stop(),this.audioPlayer.play())}dispose(){this.audioPlayer.dispose()}};Ti.cache=new Map;var iy=class{constructor(e,t){this.type="audio";this.data=e,this.scene=t}dispatch(){this.data.object?this.data.audioEvent?this.pauseAudio(this.data.audioEvent):this.pauseAudiosByObject(this.data.object):this.pauseAudios()}pauseAudio(e){let t=Ti.cache.get(e),n=this.data.interaction;!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.audioPlayer[n](),this.disposeDelay()},this.data.delay)):t.audioPlayer[n]())}pauseAudiosByObject(e){let n=this.scene.find(e)?.interaction?.events.audio,i=this.data.interaction;if(!!n)if(this.data.delay>0)this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{for(let s of n)Xl.isPlayable(s)&&s.audioPlayer[i]();this.disposeDelay()},this.data.delay);else for(let s of n)Xl.isPlayable(s)&&s.audioPlayer[i]()}pauseAudios(){let e=this.data.interaction;if(this.data.delay>0)this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{for(let t of Ti.cache.values())t.audioPlayer[e]();this.disposeDelay()},this.data.delay);else for(let t of Ti.cache.values())t.audioPlayer[e]()}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},Kf=class extends Bn{constructor(){super(...arguments);this.heldKeys={};this.map={};this.startMap={};this.onStartMouseDown=()=>{this.startMap.mouseDown?.forEach(t=>t.dispatch()),this.raycastState.domElement.removeEventListener(Kt?"touchstart":"pointerdown",this.onStartAny)};this.onStartKeyDown=()=>{this.startMap.keyDown?.forEach(t=>t.dispatch()),document.removeEventListener("keydown",this.onStartAny)};this.onStartAny=()=>{this.startMap.any?.forEach(t=>t.dispatch()),this.raycastState.domElement.removeEventListener(Kt?"touchstart":"pointerdown",this.onStartAny),document.removeEventListener("keydown",this.onStartAny)};this.onMouseEvent=(t,n)=>{let i=this.map[n];if(i?.length){let{stopRaycast:s,raycaster:o,scene:a}=this.raycastState;if(this.raycastState.updateRaycaster(t),s){let l=Hl(o,a,i);Wl(l,"audio").forEach(u=>this.dispatch(u,n))}else i.forEach(l=>{Bo(o,l)&&this.dispatch(l,n)})}};this.onMouseDown=t=>{this.onMouseEvent(t,"mouseDown")};this.onMouseUp=t=>{this.onMouseEvent(t,"mouseUp")};this.onKeyDown=t=>{let n=this.heldKeys[t.key];this.map.keyDown?.forEach(i=>{n||this.dispatch(i,"keyDown",t.key)}),this.heldKeys[t.key]=!0};this.onKeyUp=t=>{this.map.keyUp?.forEach(n=>this.dispatch(n,"keyUp",t.key))};this.releaseHeldKey=t=>{delete this.heldKeys[t.key]}}init(t,n){let{scene:i,domElement:s}=this.raycastState;this.map={},this.startMap={},this.heldKeys={},Ti.cache=new Map,i.traverseEntity(o=>{!o.visible||!o.interaction?.events.audio||o.interaction.events.audio.forEach(a=>{a.data.trigger==="start"&&(this.startMap[a.data.after]?.length?this.startMap[a.data.after].push(a):this.startMap[a.data.after]=[a]),["mouseDown","mouseUp","keyDown","keyUp"].forEach(l=>{a.data.trigger===l&&(this.map[l]?.length?this.map[l].push(o):this.map[l]=[o])})})}),this.domEventsNeeded=[],Kt?(this.startMap.mouseDown?.length&&s.addEventListener("touchstart",this.onStartMouseDown,{once:!0}),this.startMap.any?.length&&s.addEventListener("touchstart",this.onStartAny,{once:!0}),this.map.mouseDown?.length&&(this.domEventsNeeded.push("touchstart"),s.addEventListener("touchstart",this.onMouseDown)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("touchend"),s.addEventListener("touchend",this.onMouseUp))):(this.startMap.mouseDown?.length&&s.addEventListener("pointerdown",this.onStartMouseDown,{once:!0}),this.startMap.any?.length&&s.addEventListener("pointerdown",this.onStartAny,{once:!0}),this.map.mouseDown?.length&&(this.domEventsNeeded.push("pointerdown"),s.addEventListener("pointerdown",this.onMouseDown)),this.map.mouseUp?.length&&(this.domEventsNeeded.push("pointerup"),s.addEventListener("pointerup",this.onMouseUp))),this.startMap.keyDown?.length&&document.addEventListener("keydown",this.onStartKeyDown,{once:!0}),this.startMap.any?.length&&document.addEventListener("keydown",this.onStartAny,{once:!0}),this.map.keyDown?.length&&(this.domEventsNeeded.push("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.map.keyUp?.length&&(this.domEventsNeeded.push("keyup"),document.addEventListener("keyup",this.onKeyUp))}dispose(){let{scene:t,domElement:n}=this.raycastState;t.traverseEntity(i=>{if(!(!i.visible||!i.interaction?.events.audio))for(let s of i.interaction.events.audio)s.dispose()}),this.map={},this.startMap={},this.heldKeys={},Ti.cache=new Map,Kt?(n.removeEventListener("touchstart",this.onStartMouseDown),n.removeEventListener("touchstart",this.onStartAny),n.removeEventListener("touchstart",this.onMouseDown),n.removeEventListener("touchend",this.onMouseUp)):(n.removeEventListener("pointerdown",this.onStartMouseDown),n.removeEventListener("pointerdown",this.onStartAny),n.removeEventListener("pointerdown",this.onMouseDown),n.removeEventListener("pointerup",this.onMouseUp)),n.removeEventListener("keyDown",this.onStartKeyDown),n.removeEventListener("keyDown",this.onStartAny),n.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.releaseHeldKey),n.removeEventListener("keyup",this.onKeyUp),this.domEventsNeeded=[]}dispatch(t,n,i){let s=t.interaction?.events.audio;if(s)if(n==="keyDown"||n==="keyUp")for(let o of s)o.data.trigger===n&&o.data.key===i&&o.dispatch();else for(let o of s)o.data.trigger===n&&o.dispatch()}};function hU(r,e,t,n){let i,{type:s}=e;return s===10?i=zl.create(e):s===0||s===1||s===5||s===6?i=Xs.create(e):s===9?i=Gl.create(e):s===2?i=ql.create(e):s===11?i=Vl.create(e):s===7?i=kl.create(e):s===12&&(i=Xl.create(r,e,t,n)),i}function z1(r,e,t){let n=[];r.objects.traverse((i,s)=>{let o=e.find(i);if(delete o.interaction,!s.visible&&!xt(o.parent)||s.states===void 0)return;let a=new Gf(o,t),l=a.states;l.push(Fo.create(i,s));for(let c of s.states){let h=Jc.patch(s,c.data);l.push(Fo.create(c.id,h))}let u=a.events;if(s.events)for(let{id:c,data:h}of s.events){let d=hU(c,h,t,e);if(!d)continue;let f=d.type;u[f]?u[f].push(d):u[f]=[d],"targets"in h&&n.push([h,d])}(l.length>0||Object.keys(u).length>0)&&(o.interaction=a)});for(let[i,s]of n)if("targets"in i&&"targets"in s)for(let{data:o}of i.targets){let a=Ul.create(o,e);a&&s.targets.push(a)}}function U1(r,e,t){typeof e!="string"&&r.reset(e,t)}function G1(r,e,t,n,i=!1){if(!i&&e.states.length===0)return;let s=t===null?e:Jc.patch(e,e.states.data(t));if(i0(r,s),r instanceof Ot&&s.type==="Mesh"){if(r instanceof Ys?r.buildFromStore(s.geometry):r.updateGeometry({parameters:s.geometry}),r.freeBooleanPointer(),xt(r.parent)&&r.parent.invalidateDownstreamBooleanData().recomputeBoolean(),"material"in s){if(r.material instanceof Array)return;U1(r.material,s.material,n)}else if("materials"in s){if(!(r.material instanceof Array))return;var o=0;for(let a of s.materials)U1(r.material[o],a,n),o++}}else if(s.type==="DirectionalLight")r.fromDirectionalLightState(s,n);else if(s.type==="PointLight")r.fromPointLightState(s,n);else if(s.type==="SpotLight")r.fromSpotLightState(s,n);else if(r instanceof pr&&Es.is(s.type)){let a=s;r.setZoom("PerspectiveCamera",a.perspective.zoom),r.setZoom("OrthographicCamera",a.orthographic.zoom),r.isUpVectorFlipped=a.isUpVectorFlipped,r.targetOffset=a.targetOffset}}var Fo=class{constructor(e){this.objectState=e;this.uuid=Je.generateUUID()}static create(e,t){let n=new Fo(t);return n.uuid=e,n}execute(e,t){G1(e,this.objectState,null,t,!0)}};var k1=["touchstart","touchend","touchmove","pointerdown","pointerup","pointermove"],Jf=class{constructor(e,t,n,i,s){this.app=s;this.isEnable=!1;this.splineEvents={};this.handlers=[];this.onResetRaycaster=()=>{this.raycastState.raycasterNeedsUpdate=!0};this.begin=(e,t)=>{let n=this.splineEvents[e][t];if(n){let{domElement:i}=this.raycastState;i.dispatchEvent(n)}};this.change=()=>{this.app.requestRender()};this.raycastState=new Yf(e,t,n,i),this.handlers=[new jf(this.raycastState),new Zf(this.raycastState),new Qf(this.raycastState),new Xf(this.raycastState),new Vf(this.raycastState),new Wf(this.raycastState),new Kf(this.raycastState)]}activate(){let{scene:e,domElement:t}=this.raycastState;this.isEnable=!0,e.traverseEntity(n=>{if(!n.interaction)return;n.interaction.start(),["start","keyDown","keyUp","mouseDown","mouseUp","mouseHover","scroll"].forEach(s=>this.addDOMCustomEvent(s,n))}),this.handlers.forEach(n=>n.init(this.begin,this.change)),k1.forEach(n=>{this.handlers.some(i=>i.domEventsNeeded.includes(n))&&t.addEventListener(n,this.onResetRaycaster)}),this.resize()}deactivate(){let{scene:e,domElement:t}=this.raycastState;this.isEnable=!1,e.traverseEntity(n=>{n.interaction?.end()}),this.handlers.forEach(n=>n.dispose()),k1.forEach(n=>{t.removeEventListener(n,this.onResetRaycaster)})}resize(){let{domElement:e,renderer:t}=this.raycastState;this.raycastState.domRect=e.getBoundingClientRect(),this.raycastState.viewRect=ey(t)}addDOMCustomEvent(e,t){let n=new CustomEvent(e,{bubbles:!0});Object.defineProperty(n,"target",{writable:!1,value:{id:t.uuid,name:t.name}}),this.splineEvents[e]?this.splineEvents[e][t.uuid]=n:this.splineEvents[e]={[t.uuid]:n}}};var $f=class{constructor(e,t,n,i,s){this._aspect=1;this._renderer=e,this._camera=t,this._frameSize=new N().copy(n),this._editorSize=new N().copy(i),this._aspect=t.aspect,this._fov=s??t.fov}set frameSize(e){this._frameSize.copy(e)}updateRenderer(){!this._renderer||this._renderer.setSize(this._frameSize.x,this._frameSize.y,!1)}updateViewportForImageExport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,n=this._editorSize.x,i=this._editorSize.y;this._aspect=e/t,this._camera.zoom*=Math.min(n/e,i/t),this._renderer.setViewport(0,0,e,t)}updateViewport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,n=this._editorSize.x,i=this._editorSize.y,s=0,o=0,a=e,l=t;e<n&&(s=(n-e)*.5,s=-s,a=n),t<i&&(o=(i-t)*.5,o=-o,l=i),this._aspect=a/l,this._renderer.setViewport(s,o,a,l)}updateCamera(){if(!!this._camera)if(this._camera.cameraType==="PerspectiveCamera"){let e=this._frameSize.y,t=this._editorSize.y,n=this._fov;if(e>t){let i=dU(e,1080,2160,1,15)/100;n*=e/t,n*=1-i}this._camera.aspect=this._aspect,this._camera.fov=n,this._camera.updateProjectionMatrix()}else this._camera.setViewplaneSize(this._frameSize.x,this._frameSize.y)}revert(){let e=window.innerWidth,t=window.innerHeight;this._renderer&&(this._renderer.setViewport(0,0,e,t),this._renderer.setSize(e,t,!1)),this._camera&&(this._camera.aspect=e/t,this._camera.fov=this._fov,this._camera.setViewplaneSize(e,t),this._camera.updateProjectionMatrix())}};function dU(r,e,t,n,i){return(r-e)/(t-e)*(i-n)+n}var j1=xy(H1());var sy;df.then(r=>{sy=r});var q1=new Oe,fU=new Oe,pU=new Oe,Qr=new _n,Qs=new S,mU=new Oe,gU=new Oe,Ys=class extends Ot{constructor(t,n,i,s){super(i??n,s);this.subdivPointer=t;this.originalGeometry=n;this.subdividedGeometry=i;this.objectType="SubdivObject";this.hiddenMatrixOld=new Oe;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Oe;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(t,n,i){let{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}=Er.build(n.geometry,void 0,void 0,!n.flatShading),l=i.material(n.material),u=new Ys(s,o,a||void 0,l);return n.geometry.phongAngle!==void 0&&(u.phongAngle=n.geometry.phongAngle),u.calcBoundingBox(),u.freeSubdivPointer(),u.uuid=t,u.fromState(n),u}buildFromStore(t,n){let{originalGeometry:i,subdividedGeometry:s,subdivPointer:o}=Er.build(t,n,this.subdivPointer,this.smoothShading,this.shearScale);t.phongAngle!==void 0&&(this.phongAngle=t.phongAngle),this.subdivPointer=o,i!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=i),s!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=s??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,zs(this),Gs(this),t.width&&(this.geometry.userData.parameters={width:t.width,height:t.height,depth:t.depth})}updateMesh(t=!1){Er.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,t?this.shearScaleInv:void 0),this.subdividedGeometry&&Er.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,t?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Er.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Er.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(t,n){this.geometry=this.originalGeometry,Ot.prototype.raycast.call(this,t,n),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,n=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:o}=(0,j1.SVD)(n),a=q1.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),l=fU.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),u=pU.copy(l).transpose();this.shearScale=mU.makeScale(o[0],o[1],o[2]).multiply(u).premultiply(l),this.shearScaleInv=gU.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,u),o.every(c=>Math.abs(o[0]-c)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let t=this.originalGeometry;t.boundingSphere===null&&(t.boundingSphere=new Ln);let n=t.attributes.position,i=t.boundingSphere.center;Qr.setFromBufferAttribute(n),Qr.getCenter(i),t.boundingSphere.radius=i.distanceTo(Qr.max),isNaN(t.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Qr.getSize(Qs);let s={width:Qs.x,height:Qs.y,depth:Qs.z};return this.geometry.userData.parameters=s,s}updateBoundingBox(t){let n=this.originalGeometry;Qr.min.set(t[0],t[2],t[4]),Qr.max.set(t[1],t[3],t[5]),this.shearScaleInv&&(Qr.min.applyMatrix4(this.shearScaleInv),Qr.max.applyMatrix4(this.shearScaleInv)),n.boundingSphere===null&&(n.boundingSphere=new Ln);let i=n.boundingSphere.center;Qr.getCenter(i),n.boundingSphere.radius=i.distanceTo(Qr.max),isNaN(n.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Qr.getSize(Qs);let s={width:Qs.x,height:Qs.y,depth:Qs.z};return this.geometry.userData.parameters=s,s}freeSubdivPointer(){this.subdivPointer&&(sy.free_bvh(this.subdivPointer),sy.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(t){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:t.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:t.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:t.parameters.depth/this.geometry.userData.parameters.depth,W1(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(W1(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...t.parameters}}};function W1(r,e,t,n){let i=r.position.array,s=r.normal.array,o=q1.makeScale(e,t,n).invert().elements,a,l,u;for(var c=0,h=i.length;c<h;c+=3)i[c]*=e,i[c+1]*=t,i[c+2]*=n,a=s[c],l=s[c+1],u=s[c+2],s[c]=o[0]*a+o[4]*l+o[8]*u,s[c+1]=o[1]*a+o[5]*l+o[9]*u,s[c+2]=o[2]*a+o[6]*l+o[10]*u}function X1(r,e){e.flatShading!==void 0&&(r.flatShading=e.flatShading,r.needsUpdate=!0),e.wireframe!==void 0&&(r.wireframe=e.wireframe),e.side!==void 0&&(e.side===0?r.side=Ui:e.side===1?r.side=bn:r.side=wn)}function yU(r,e){if(Array.isArray(r.material))for(let t of r.material)X1(t,e);else{let t=r.material;X1(t,e)}r.objectType==="SubdivObject"&&e.flatShading!==void 0&&(r.material.flatShading=!1,r.smoothShading=!e.flatShading,r.updateMesh())}function Y1(r,e,t){let n;if(e.geometry.type==="SubdivGeometry")n=Ys.createFromState(r,e,t);else{let i=e.geometry.type==="BooleanGeometry"?new Pe:gf(e.geometry,t),s="materials"in e?e.materials.map(o=>t.material(o)):t.material(e.material);Yd.is2DParametricMesh(i.userData.type)?n=new Df(i,s):i?.userData.type==="VectorGeometry"?n=new xl(i,s):e.geometry.type==="NonParametricGeometry"?n=new Pf(i,s):e.geometry.type==="BooleanGeometry"?(n=new vf(void 0,s),n.booleanOp=e.geometry.operation,e.geometry.phongAngle!==void 0&&(n.phongAngle=e.geometry.phongAngle)):n=new Fl(i,s),n.uuid=r,n.fromState(e,t)}return yU(n,e),n}function Q1(r,e,t){return e.type==="Mesh"?Y1(r,e,t):e.type==="TextFrame"?Ro.createFromState(r,e,t):e.type==="Empty"?Do.createFromState(r,e):e.type==="PointLight"?Tl.createFromState(r,e,t):e.type==="SpotLight"?El.createFromState(r,e,t):e.type==="DirectionalLight"?Ml.createFromState(r,e,t):Es.is(e.type)?pr.createFromState(r,e):(console.error(e),new Do)}function vU(r,e){e.uniforms[`f${e.id}_transmissionSamplerMap`].value=r.texture,e.uniforms[`f${e.id}_transmissionDepthMap`].value=r.depthTexture}function xU(r,e){e.uniforms[`f${e.id}_normalMap`].value=r.texture,e.uniforms[`f${e.id}_depthMap`].value=r.depthTexture}function Z1(r,e,t){let n=!1,i=t.getLayersOfType("transmission"),s=t.getLayersOfType("outline");return s.length>0&&(e.layers.set(8),i.length===0&&e.layers.enable(3),n=!0,r!==void 0&&s.forEach(o=>xU(r,o)),Gs(e),zs(e)),i.length===0&&s.length===0&&e.layers.set(0),n}function K1(r,e,t){if(!t.layers)return!1;let n=!1,i=t.getLayersOfType("transmission"),s=t.getLayersOfType("outline");return i.length>0&&(e.layers.set(3),s.length>0&&e.layers.enable(8),n=!0,r!==void 0&&i.forEach(o=>vU(r,o))),i.length===0&&s.length===0&&e.layers.set(0),n}function J1(r,e){let t=!1;return e.traverseEntity(n=>{if(n instanceof kt&&n.objectType!=="TextFrame")if(Array.isArray(n.material))for(let i=0;i<n.material.length;i++)Z1(r,n,n.material[i])&&(t=!0);else Z1(r,n,n.material)&&(t=!0)}),t}function $1(r,e){let t=!1;return e.traverseEntity(n=>{if(n instanceof kt)if(Array.isArray(n.material))for(let i=0;i<n.material.length;i++)K1(r,n,n.material[i])&&(t=!0);else K1(r,n,n.material)&&(t=!0)}),t}function eA(r){"material"in r&&bU(r.material),"geometry"in r&&r.geometry.dispose()}function bU(r){Lw(r).forEach(e=>{e instanceof No||e.dispose()})}var wU=new Sa,_U=new Oe,SU=new zi;function tA(r,e,t){let n=r.cloner;if(n)for(let i of n.children){let s=_U.copy(i.matrixWorld).invert(),o=SU.copy(e.ray).applyMatrix4(s),a=r.matrixWorld;o.applyMatrix4(a);let l=wU;l.set(o.origin,o.direction),l.near=e.near,l.far=e.far,l.intersectObject(r,!1).length>0&&t.push({object:r})}}var nA=new S,oy=class extends pf(lr){constructor(t,n){super();this.objectType="Scene";this.alpha=1;this.backupFog=new ha(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Re(1,0,0);this.bgColor=new Re(1,1,1);this.entityByUuid={};this.ambientLight=new vo(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(t,n)}needsTransmission(t){return this.needsTransmissionDirty&&(this._needsTransmission=$1(t,this),t!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(t){return this.needsNormalDirty&&(this._needsNormal=J1(t,this),t!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(t){if(t===""||t===void 0)return;let n=this.entityByUuid[t];return n===void 0?this.getObjectByProperty("uuid",t):n}get color(){return this._color}set color(t){this.fogUseBGColor===!0&&this.backupFog.color.copy(t),this._color.copy(t)}get enableFog(){return this.fog!==null}set enableFog(t){this.fog=t===!0?this.backupFog:null}init(t,n){if(this.createChildrenObjects(t.objects,this,n),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(sn(t.backgroundColor,n)),this.updateFog(t.fog,n),this.updateAmbientLight(t.environment.ambientLight,n),this.activeCamera=this.personalCamera,t.publish.playCamera!==null){let i=this.find(t.publish.playCamera);i instanceof pr&&this.switchActiveCamera(i)}this.traverse(i=>{xt(i)&&i.recomputeBoolean()})}clearScene(){this.traverseEntity(t=>{eA(t)});for(let t of this.children)pi(t)&&t.removeFromParent()}resetAfterClear(t,n){this.init(t,n)}createPersonalCamera(){let t=pr.createFromState(oy.PERSONAL_CAMERA_ID,{...Zd.defaultData,name:"Personal Camera"});return t.objectHelper.visible=!1,delete t.isEntity,this.registerObjectCreatedInLegacy(t),t}raycast(t){let n=[],i=s=>{for(let o of s.children)pi(o)&&!o.raycastLock&&o.visible&&((Ft(o)||ff(o)&&this.enableHelpers&&o.objectHelper.visible)&&(t.intersectObject(o,!1,n),tA(o,t,n)),i(o))};return i(this),n}traverseEntity(t){for(let n of this.children)pi(n)&&n.traverseEntity(t)}traverseVisibleEntity(t){for(let n of this.children)pi(n)&&n.visible&&n.traverseVisibleEntity(t)}updateFog(t,n){this.enableFog=t.enabled,this.fogUseBGColor=t.useBackgroundColor,t.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=sn(t.color,n),this.backupFog.near=t.near,this.backupFog.far=t.far}dispose(){this.clearScene()}updateAmbientLight(t,n){pS(this.ambientLight,t,n),t.groundColor!==void 0&&(this.ambientLight.groundColor=sn(t.groundColor,n)),t.enabled!==void 0&&(this.ambientLight.visible=t.enabled)}switchActiveCamera(t){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=t,t.objectHelper.visible=!1}setBackgroundColor(t){this.bgColor=t,this.alpha=t.a}createChildrenObjects(t,n,i){for(let s of t)this.createChildObject(s.id,s.data,s.children,n,i)}registerObjectCreatedInLegacy(t){this.entityByUuid[t.uuid]=t}unregisterObject(t){delete this.entityByUuid[t.uuid];for(let n of t.children)this.unregisterObject(n)}createChildObject(t,n,i,s,o){let a=Q1(t,n,o);return a&&(this.entityByUuid[t]=a,s.add(a),xt(s)&&Ft(a)&&(a.prevBooleanObjectParent=s),this.createChildrenObjects(i,a,o)),a}getCenter(t){let n=[];for(let s=0,o=t.length;s<o;++s){let{id:a,recursive:l}=t[s],u=this.find(a),c=l?u.recursiveBBox:u.singleBBox;n.push(...c.vertices)}let i=new _n;return i.setFromPoints(n),i.getCenter(nA),nA}copyMatrixWorld(t,n){if(t===null){n.identity();return}let i=this.find(t);i?n.copy(i.matrixWorld):n.identity()}copyParentMatrixWorld(t,n){if(t===null){n.identity();return}let i=this.find(t)?.parent;i?n.copy(i.matrixWorld):n.identity()}traverseMaterial(t){this.traverseEntity(n=>{if(n instanceof Ot)if(Array.isArray(n.material))for(let i=0;i<n.material.length;i++)n.material[i]instanceof Yr&&t(n.material[i]);else n.material instanceof Yr&&t(n.material)})}updateCanvasSize(t,n){this.activeCamera.setViewplaneSize(t,n);let i,s;t>=n?(i=n/t,s=1):(i=1,s=t/n),this.traverseMaterial(o=>{o.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=i,l.uniforms[`f${l.id}_aspectRatio`].value.y=s})})}},Uu=oy;Uu.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var cA={RED:0,GREEN:1,BLUE:2,ALPHA:3};var zu="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}";var AU=`#ifdef FRAMEBUFFER_PRECISION_HIGH
|
|
4905
4905
|
uniform mediump sampler2D inputBuffer;
|
|
4906
4906
|
#else
|
|
4907
4907
|
uniform lowp sampler2D inputBuffer;
|
|
@@ -5140,7 +5140,7 @@ vec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOf
|
|
|
5140
5140
|
#if !defined(DISABLE_DIAG_DETECTION)
|
|
5141
5141
|
}else{e.r=0.0;}
|
|
5142
5142
|
#endif
|
|
5143
|
-
}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,kU="uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}",VU=class extends yt{constructor(r=new N,e=new N){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new we(null),searchTexture:new we(null),areaTexture:new we(null),resolution:new we(e),texelSize:new we(r)},blending:Ct,depthWrite:!1,depthTest:!1,fragmentShader:GU,vertexShader:kU}),this.toneMapped=!1}set inputBuffer(r){this.uniforms.inputBuffer.value=r}setInputBuffer(r){this.uniforms.inputBuffer.value=r}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(r){this.uniforms.searchTexture.value=r}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(r){this.uniforms.areaTexture.value=r}setLookupTextures(r,e){this.searchTexture=r,this.areaTexture=e}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(r){let e=Math.min(Math.max(r,0),112);this.defines.MAX_SEARCH_STEPS_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(r){this.orthogonalSearchSteps=r}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(r){let e=Math.min(Math.max(r,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(r){this.diagonalSearchSteps=r}get diagonalDetection(){return this.defines.DISABLE_DIAG_DETECTION===void 0}set diagonalDetection(r){r?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(r){this.diagonalDetection=r}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(r){let e=Math.min(Math.max(r,0),100);this.defines.CORNER_ROUNDING=e.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(e/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(r){this.cornerRounding=r}get cornerDetection(){return this.defines.DISABLE_CORNER_DETECTION===void 0}set cornerDetection(r){r?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(r){this.cornerDetection=r}setSize(r,e){let t=this.uniforms;t.texelSize.value.set(1/r,1/e),t.resolution.value.set(r,e)}};var HU=new Br,Zs=null;function WU(){if(Zs===null){let r=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),e=new Float32Array([0,0,2,0,0,2]);Zs=new Pe,Zs.setAttribute!==void 0?(Zs.setAttribute("position",new je(r,3)),Zs.setAttribute("uv",new je(e,2))):(Zs.addAttribute("position",new je(r,3)),Zs.addAttribute("uv",new je(e,2)))}return Zs}var Qi=class{constructor(r="Pass",e=new lr,t=HU){this.name=r,this.renderer=null,this.scene=e,this.camera=t,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(r){if(this.rtt===r){let e=this.getFullscreenMaterial();e!==null&&(e.needsUpdate=!0),this.rtt=!r}}setRenderer(r){this.renderer=r}isEnabled(){return this.enabled}setEnabled(r){this.enabled=r}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(r){let e=this.screen;e!==null?e.material=r:(e=new kt(WU(),r),e.frustumCulled=!1,this.scene===null&&(this.scene=new lr),this.scene.add(e),this.screen=e)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(r){this.fullscreenMaterial=r}getDepthTexture(){return null}setDepthTexture(r,e=Sn){}render(r,e,t,n,i){throw new Error("Render method not implemented!")}setSize(r,e){}initialize(r,e,t){}dispose(){for(let r of Object.keys(this)){let e=this[r];if(e!==null&&typeof e.dispose=="function"){if(e instanceof lr||e===this.renderer)continue;this[r].dispose()}}}},py=class extends Qi{constructor(r,e=!0){super("CopyPass"),this.fullscreenMaterial=new PU,this.needsSwap=!1,this.renderTarget=r,r===void 0&&(this.renderTarget=new lt(1,1,{minFilter:et,magFilter:et,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=e}get resize(){return this.autoResize}set resize(r){this.autoResize=r}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(r){this.autoResize=r}render(r,e,t,n,i){this.fullscreenMaterial.inputBuffer=e.texture,r.setRenderTarget(this.renderToScreen?null:this.renderTarget),r.render(this.scene,this.camera)}setSize(r,e){this.autoResize&&this.renderTarget.setSize(r,e)}initialize(r,e,t){t!==void 0&&(this.renderTarget.texture.type=t,t!==Pt?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":r.outputEncoding===We&&(this.renderTarget.texture.encoding=We))}};var jU=class extends Qi{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(r,e,t,n,i){let s=r.state.buffers.stencil;s.setLocked(!1),s.setTest(!1)}},ay=new Re,Gu=class extends Qi{constructor(r=!0,e=!0,t=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=r,this.depth=e,this.stencil=t,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(r,e,t){this.color=r,this.depth=e,this.stencil=t}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(r){this.overrideClearColor=r}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(r){this.overrideClearAlpha=r}render(r,e,t,n,i){let s=this.overrideClearColor,o=this.overrideClearAlpha,a=r.getClearAlpha(),l=s!==null,u=o>=0;l?(ay.copy(r.getClearColor(ay)),r.setClearColor(s,u?o:a)):u&&r.setClearAlpha(o),r.setRenderTarget(this.renderToScreen?null:e),r.clear(this.color,this.depth,this.stencil),l?r.setClearColor(ay,a):u&&r.setClearAlpha(a)}},Ks=-1,Kr=class extends Rt{constructor(r,e=Ks,t=Ks,n=1){super(),this.resizable=r,this.base=new N(1,1),this.preferred=new N(e,t),this.target=this.preferred,this.s=n}get width(){let{base:r,preferred:e,scale:t}=this,n;return e.width!==Ks?n=e.width:e.height!==Ks?n=Math.round(e.height*(r.width/Math.max(r.height,1))):n=Math.round(r.width*t),n}set width(r){this.preferredWidth=r}get height(){let{base:r,preferred:e,scale:t}=this,n;return e.height!==Ks?n=e.height:e.width!==Ks?n=Math.round(e.width/Math.max(r.width/Math.max(r.height,1),1)):n=Math.round(r.height*t),n}set height(r){this.preferredHeight=r}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(r){this.s!==r&&(this.s=r,this.preferred.setScalar(Ks),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getScale(){return this.scale}setScale(r){this.scale=r}get baseWidth(){return this.base.width}set baseWidth(r){this.base.width!==r&&(this.base.width=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getBaseWidth(){return this.base.width}setBaseWidth(r){this.base.width!==r&&(this.base.width=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}get baseHeight(){return this.base.height}set baseHeight(r){this.base.height!==r&&(this.base.height=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(r){this.baseHeight=r}setBaseSize(r,e){(this.base.width!==r||this.base.height!==e)&&(this.base.set(r,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}get preferredWidth(){return this.preferred.width}set preferredWidth(r){this.preferred.width!==r&&(this.preferred.width=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(r){this.preferredWidth=r}get preferredHeight(){return this.preferred.height}set preferredHeight(r){this.preferred.height!==r&&(this.preferred.height=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(r){this.preferredHeight=r}setPreferredSize(r,e){(this.preferred.width!==r||this.preferred.height!==e)&&(this.preferred.set(r,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}copy(r){this.base.set(r.getBaseWidth(),r.getBaseHeight()),this.preferred.set(r.getPreferredWidth(),r.getPreferredHeight()),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height)}static get AUTO_SIZE(){return Ks}},ly=!1,sA=class{constructor(r=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(r),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case wn:t=this.materialsFlatShadedDoubleSide;break;case bn:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded;break}else switch(e.material.side){case wn:t=this.materialsDoubleSide;break;case bn:t=this.materialsBackSide;break;default:t=this.materials;break}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}setMaterial(r){if(this.disposeMaterials(),this.material=r,r!==null){let e=this.materials=[r.clone(),r.clone(),r.clone()];for(let t of e)t.uniforms=Object.assign({},r.uniforms),t.side=Ui;e[2].skinning=!0,this.materialsBackSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.side=bn,n}),this.materialsDoubleSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.side=wn,n}),this.materialsFlatShaded=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.flatShading=!0,n}),this.materialsFlatShadedBackSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.flatShading=!0,n.side=bn,n}),this.materialsFlatShadedDoubleSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.flatShading=!0,n.side=wn,n})}}render(r,e,t){let n=r.shadowMap.enabled;if(r.shadowMap.enabled=!1,ly){let i=this.originalMaterials;this.meshCount=0,e.traverse(this.replaceMaterial),r.render(e,t);for(let s of i)s[0].material=s[1];this.meshCount!==i.size&&i.clear()}else{let i=e.overrideMaterial;e.overrideMaterial=this.material,r.render(e,t),e.overrideMaterial=i}r.shadowMap.enabled=n}disposeMaterials(){if(this.material!==null){let r=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(let e of r)e.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return ly}static set workaroundEnabled(r){ly=r}},ku=class extends Qi{constructor(r,e,t=null){super("RenderPass",r,e),this.needsSwap=!1,this.clearPass=new Gu,this.overrideMaterialManager=t===null?null:new sA(t),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}get renderToScreen(){return super.renderToScreen}set renderToScreen(r){super.renderToScreen=r,this.clearPass.renderToScreen=r}get overrideMaterial(){let r=this.overrideMaterialManager;return r!==null?r.material:null}set overrideMaterial(r){let e=this.overrideMaterialManager;r!==null?e!==null?e.setMaterial(r):this.overrideMaterialManager=new sA(r):e!==null&&(e.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(r){this.overrideMaterial=r}get clear(){return this.clearPass.enabled}set clear(r){this.clearPass.enabled=r}getSelection(){return this.selection}setSelection(r){this.selection=r}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(r){this.ignoreBackground=r}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(r){this.skipShadowMapUpdate=r}getClearPass(){return this.clearPass}render(r,e,t,n,i){let s=this.scene,o=this.camera,a=this.selection,l=o.layers.mask,u=s.background,c=r.shadowMap.autoUpdate,h=this.renderToScreen?null:e;a!==null&&o.layers.set(a.getLayer()),this.skipShadowMapUpdate&&(r.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(s.background=null),this.clearPass.enabled&&this.clearPass.render(r,e),r.setRenderTarget(h),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(r,s,o):r.render(s,o),o.layers.mask=l,s.background=u,r.shadowMap.autoUpdate=c}};var Jce=new Float32Array([255/256/256**3,255/256/256**2,255/256/256,255/256]);var at={SKIP:0,ADD:1,ALPHA:2,AVERAGE:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,EXCLUSION:8,LIGHTEN:9,MULTIPLY:10,DIVIDE:11,NEGATION:12,NORMAL:13,OVERLAY:14,REFLECT:15,SCREEN:16,SOFT_LIGHT:17,SUBTRACT:18},qU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x+y,1.0)*opacity+x*(1.0-opacity);}",XU="vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){float a=min(y.a,opacity);return vec4(blend(x.rgb,y.rgb,a),max(x.a,a));}",YU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y)*0.5*opacity+x*(1.0-opacity);}",QU="float blend(const in float x,const in float y){return(y==0.0)? y : max(1.0-(1.0-x)/y,0.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",ZU="float blend(const in float x,const in float y){return(y==1.0)? y : min(x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",KU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x,y)*opacity+x*(1.0-opacity);}",JU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return abs(x-y)*opacity+x*(1.0-opacity);}",$U="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y-2.0*x*y)*opacity+x*(1.0-opacity);}",ez="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x,y)*opacity+x*(1.0-opacity);}",tz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return x*y*opacity+x*(1.0-opacity);}",nz="float blend(const in float x,const in float y){return(y>0.0)? min(x/y,1.0): 1.0;}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",rz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-abs(1.0-x-y))*opacity+x*(1.0-opacity);}",iz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y*opacity+x*(1.0-opacity);}",sz="float blend(const in float x,const in float y){return(x<0.5)?(2.0*x*y):(1.0-2.0*(1.0-x)*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",oz="float blend(const in float x,const in float y){return(y==1.0)? y : min(x*x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",az="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-(1.0-x)*(1.0-y))*opacity+x*(1.0-opacity);}",lz="float blend(const in float x,const in float y){return(y<0.5)?(2.0*x*y+x*x*(1.0-2.0*y)):(sqrt(x)*(2.0*y-1.0)+2.0*x*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",cz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x+y-1.0,0.0)*opacity+x*(1.0-opacity);}",uz=new Map([[at.SKIP,null],[at.ADD,qU],[at.ALPHA,XU],[at.AVERAGE,YU],[at.COLOR_BURN,QU],[at.COLOR_DODGE,ZU],[at.DARKEN,KU],[at.DIFFERENCE,JU],[at.EXCLUSION,$U],[at.LIGHTEN,ez],[at.MULTIPLY,tz],[at.DIVIDE,nz],[at.NEGATION,rz],[at.NORMAL,iz],[at.OVERLAY,sz],[at.REFLECT,oz],[at.SCREEN,az],[at.SOFT_LIGHT,lz],[at.SUBTRACT,cz]]),hz=class extends Rt{constructor(r,e=1){super(),this.f=r,this.opacity=new we(e)}getOpacity(){return this.opacity.value}setOpacity(r){this.opacity.value=r}get blendFunction(){return this.f}set blendFunction(r){this.f=r,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(r){this.blendFunction=r}getShaderCode(){return uz.get(this.blendFunction)}},Ei={NONE:0,DEPTH:1,CONVOLUTION:2};var Ci=class extends Rt{constructor(r,e,{attributes:t=Ei.NONE,blendFunction:n=at.SCREEN,defines:i=new Map,uniforms:s=new Map,extensions:o=null,vertexShader:a=null}={}){super(),this.name=r,this.renderer=null,this.attributes=t,this.fragmentShader=e,this.vertexShader=a,this.defines=i,this.uniforms=s,this.extensions=o,this.blendMode=new hz(n),this.blendMode.addEventListener("change",l=>this.setChanged())}getName(){return this.name}setRenderer(r){this.renderer=r}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(r){this.attributes=r,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(r){this.fragmentShader=r,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(r){this.vertexShader=r,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(r,e=Sn){}update(r,e,t){}setSize(r,e){}initialize(r,e,t){}dispose(){for(let r of Object.keys(this)){let e=this[r];if(e!==null&&typeof e.dispose=="function"){if(e instanceof lr||e===this.renderer)continue;this[r].dispose()}}}};function oA(r,e,t){for(let n of e){let i="$1"+r+n.charAt(0).toUpperCase()+n.slice(1),s=new RegExp("([^\\.])(\\b"+n+"\\b)","g");for(let o of t.entries())o[1]!==null&&t.set(o[0],o[1].replace(s,i))}}function dz(r,e,t,n,i,s,o){let a=new Map([["fragment",e.getFragmentShader()],["vertex",e.getVertexShader()]]),l=a.get("fragment")!==void 0&&/mainImage/.test(a.get("fragment")),u=a.get("fragment")!==void 0&&/mainUv/.test(a.get("fragment")),c=[],h=[],d=!1,f=!1;if(a.get("fragment")===void 0)console.error("Missing fragment shader",e);else if(u&&(o&Ei.CONVOLUTION)!==0)console.error("Effects that transform UV coordinates are incompatible with convolution effects",e);else if(!l&&!u)console.error("The fragment shader contains neither a mainImage nor a mainUv function",e);else{let m=/(?:\w+\s+(\w+)\([\w\s,]*\)\s*{[^}]+})/g,p=dy.Section;if(u){let y=` ${r}MainUv(UV);
|
|
5143
|
+
}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,kU="uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}",VU=class extends yt{constructor(r=new N,e=new N){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new we(null),searchTexture:new we(null),areaTexture:new we(null),resolution:new we(e),texelSize:new we(r)},blending:Ct,depthWrite:!1,depthTest:!1,fragmentShader:GU,vertexShader:kU}),this.toneMapped=!1}set inputBuffer(r){this.uniforms.inputBuffer.value=r}setInputBuffer(r){this.uniforms.inputBuffer.value=r}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(r){this.uniforms.searchTexture.value=r}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(r){this.uniforms.areaTexture.value=r}setLookupTextures(r,e){this.searchTexture=r,this.areaTexture=e}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(r){let e=Math.min(Math.max(r,0),112);this.defines.MAX_SEARCH_STEPS_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(r){this.orthogonalSearchSteps=r}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(r){let e=Math.min(Math.max(r,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(r){this.diagonalSearchSteps=r}get diagonalDetection(){return this.defines.DISABLE_DIAG_DETECTION===void 0}set diagonalDetection(r){r?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(r){this.diagonalDetection=r}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(r){let e=Math.min(Math.max(r,0),100);this.defines.CORNER_ROUNDING=e.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(e/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(r){this.cornerRounding=r}get cornerDetection(){return this.defines.DISABLE_CORNER_DETECTION===void 0}set cornerDetection(r){r?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(r){this.cornerDetection=r}setSize(r,e){let t=this.uniforms;t.texelSize.value.set(1/r,1/e),t.resolution.value.set(r,e)}};var HU=new Br,Zs=null;function WU(){if(Zs===null){let r=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),e=new Float32Array([0,0,2,0,0,2]);Zs=new Pe,Zs.setAttribute!==void 0?(Zs.setAttribute("position",new je(r,3)),Zs.setAttribute("uv",new je(e,2))):(Zs.addAttribute("position",new je(r,3)),Zs.addAttribute("uv",new je(e,2)))}return Zs}var Qi=class{constructor(r="Pass",e=new lr,t=HU){this.name=r,this.renderer=null,this.scene=e,this.camera=t,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(r){if(this.rtt===r){let e=this.getFullscreenMaterial();e!==null&&(e.needsUpdate=!0),this.rtt=!r}}setRenderer(r){this.renderer=r}isEnabled(){return this.enabled}setEnabled(r){this.enabled=r}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(r){let e=this.screen;e!==null?e.material=r:(e=new kt(WU(),r),e.frustumCulled=!1,this.scene===null&&(this.scene=new lr),this.scene.add(e),this.screen=e)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(r){this.fullscreenMaterial=r}getDepthTexture(){return null}setDepthTexture(r,e=Sn){}render(r,e,t,n,i){throw new Error("Render method not implemented!")}setSize(r,e){}initialize(r,e,t){}dispose(){for(let r of Object.keys(this)){let e=this[r];if(e!==null&&typeof e.dispose=="function"){if(e instanceof lr||e===this.renderer)continue;this[r].dispose()}}}},py=class extends Qi{constructor(r,e=!0){super("CopyPass"),this.fullscreenMaterial=new PU,this.needsSwap=!1,this.renderTarget=r,r===void 0&&(this.renderTarget=new lt(1,1,{minFilter:et,magFilter:et,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=e}get resize(){return this.autoResize}set resize(r){this.autoResize=r}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(r){this.autoResize=r}render(r,e,t,n,i){this.fullscreenMaterial.inputBuffer=e.texture,r.setRenderTarget(this.renderToScreen?null:this.renderTarget),r.render(this.scene,this.camera)}setSize(r,e){this.autoResize&&this.renderTarget.setSize(r,e)}initialize(r,e,t){t!==void 0&&(this.renderTarget.texture.type=t,t!==Pt?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":r.outputEncoding===We&&(this.renderTarget.texture.encoding=We))}};var jU=class extends Qi{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(r,e,t,n,i){let s=r.state.buffers.stencil;s.setLocked(!1),s.setTest(!1)}},ay=new Re,Gu=class extends Qi{constructor(r=!0,e=!0,t=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=r,this.depth=e,this.stencil=t,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(r,e,t){this.color=r,this.depth=e,this.stencil=t}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(r){this.overrideClearColor=r}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(r){this.overrideClearAlpha=r}render(r,e,t,n,i){let s=this.overrideClearColor,o=this.overrideClearAlpha,a=r.getClearAlpha(),l=s!==null,u=o>=0;l?(ay.copy(r.getClearColor(ay)),r.setClearColor(s,u?o:a)):u&&r.setClearAlpha(o),r.setRenderTarget(this.renderToScreen?null:e),r.clear(this.color,this.depth,this.stencil),l?r.setClearColor(ay,a):u&&r.setClearAlpha(a)}},Ks=-1,Kr=class extends Rt{constructor(r,e=Ks,t=Ks,n=1){super(),this.resizable=r,this.base=new N(1,1),this.preferred=new N(e,t),this.target=this.preferred,this.s=n}get width(){let{base:r,preferred:e,scale:t}=this,n;return e.width!==Ks?n=e.width:e.height!==Ks?n=Math.round(e.height*(r.width/Math.max(r.height,1))):n=Math.round(r.width*t),n}set width(r){this.preferredWidth=r}get height(){let{base:r,preferred:e,scale:t}=this,n;return e.height!==Ks?n=e.height:e.width!==Ks?n=Math.round(e.width/Math.max(r.width/Math.max(r.height,1),1)):n=Math.round(r.height*t),n}set height(r){this.preferredHeight=r}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(r){this.s!==r&&(this.s=r,this.preferred.setScalar(Ks),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getScale(){return this.scale}setScale(r){this.scale=r}get baseWidth(){return this.base.width}set baseWidth(r){this.base.width!==r&&(this.base.width=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getBaseWidth(){return this.base.width}setBaseWidth(r){this.base.width!==r&&(this.base.width=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}get baseHeight(){return this.base.height}set baseHeight(r){this.base.height!==r&&(this.base.height=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(r){this.baseHeight=r}setBaseSize(r,e){(this.base.width!==r||this.base.height!==e)&&(this.base.set(r,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}get preferredWidth(){return this.preferred.width}set preferredWidth(r){this.preferred.width!==r&&(this.preferred.width=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(r){this.preferredWidth=r}get preferredHeight(){return this.preferred.height}set preferredHeight(r){this.preferred.height!==r&&(this.preferred.height=r,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(r){this.preferredHeight=r}setPreferredSize(r,e){(this.preferred.width!==r||this.preferred.height!==e)&&(this.preferred.set(r,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}copy(r){this.base.set(r.getBaseWidth(),r.getBaseHeight()),this.preferred.set(r.getPreferredWidth(),r.getPreferredHeight()),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height)}static get AUTO_SIZE(){return Ks}},ly=!1,sA=class{constructor(r=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(r),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case wn:t=this.materialsFlatShadedDoubleSide;break;case bn:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded;break}else switch(e.material.side){case wn:t=this.materialsDoubleSide;break;case bn:t=this.materialsBackSide;break;default:t=this.materials;break}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}setMaterial(r){if(this.disposeMaterials(),this.material=r,r!==null){let e=this.materials=[r.clone(),r.clone(),r.clone()];for(let t of e)t.uniforms=Object.assign({},r.uniforms),t.side=Ui;e[2].skinning=!0,this.materialsBackSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.side=bn,n}),this.materialsDoubleSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.side=wn,n}),this.materialsFlatShaded=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.flatShading=!0,n}),this.materialsFlatShadedBackSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.flatShading=!0,n.side=bn,n}),this.materialsFlatShadedDoubleSide=e.map(t=>{let n=t.clone();return n.uniforms=Object.assign({},r.uniforms),n.flatShading=!0,n.side=wn,n})}}render(r,e,t){let n=r.shadowMap.enabled;if(r.shadowMap.enabled=!1,ly){let i=this.originalMaterials;this.meshCount=0,e.traverse(this.replaceMaterial),r.render(e,t);for(let s of i)s[0].material=s[1];this.meshCount!==i.size&&i.clear()}else{let i=e.overrideMaterial;e.overrideMaterial=this.material,r.render(e,t),e.overrideMaterial=i}r.shadowMap.enabled=n}disposeMaterials(){if(this.material!==null){let r=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(let e of r)e.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return ly}static set workaroundEnabled(r){ly=r}},ku=class extends Qi{constructor(r,e,t=null){super("RenderPass",r,e),this.needsSwap=!1,this.clearPass=new Gu,this.overrideMaterialManager=t===null?null:new sA(t),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}get renderToScreen(){return super.renderToScreen}set renderToScreen(r){super.renderToScreen=r,this.clearPass.renderToScreen=r}get overrideMaterial(){let r=this.overrideMaterialManager;return r!==null?r.material:null}set overrideMaterial(r){let e=this.overrideMaterialManager;r!==null?e!==null?e.setMaterial(r):this.overrideMaterialManager=new sA(r):e!==null&&(e.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(r){this.overrideMaterial=r}get clear(){return this.clearPass.enabled}set clear(r){this.clearPass.enabled=r}getSelection(){return this.selection}setSelection(r){this.selection=r}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(r){this.ignoreBackground=r}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(r){this.skipShadowMapUpdate=r}getClearPass(){return this.clearPass}render(r,e,t,n,i){let s=this.scene,o=this.camera,a=this.selection,l=o.layers.mask,u=s.background,c=r.shadowMap.autoUpdate,h=this.renderToScreen?null:e;a!==null&&o.layers.set(a.getLayer()),this.skipShadowMapUpdate&&(r.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(s.background=null),this.clearPass.enabled&&this.clearPass.render(r,e),r.setRenderTarget(h),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(r,s,o):r.render(s,o),o.layers.mask=l,s.background=u,r.shadowMap.autoUpdate=c}};var Kce=new Float32Array([255/256/256**3,255/256/256**2,255/256/256,255/256]);var at={SKIP:0,ADD:1,ALPHA:2,AVERAGE:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,EXCLUSION:8,LIGHTEN:9,MULTIPLY:10,DIVIDE:11,NEGATION:12,NORMAL:13,OVERLAY:14,REFLECT:15,SCREEN:16,SOFT_LIGHT:17,SUBTRACT:18},qU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x+y,1.0)*opacity+x*(1.0-opacity);}",XU="vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){float a=min(y.a,opacity);return vec4(blend(x.rgb,y.rgb,a),max(x.a,a));}",YU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y)*0.5*opacity+x*(1.0-opacity);}",QU="float blend(const in float x,const in float y){return(y==0.0)? y : max(1.0-(1.0-x)/y,0.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",ZU="float blend(const in float x,const in float y){return(y==1.0)? y : min(x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",KU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x,y)*opacity+x*(1.0-opacity);}",JU="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return abs(x-y)*opacity+x*(1.0-opacity);}",$U="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y-2.0*x*y)*opacity+x*(1.0-opacity);}",ez="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x,y)*opacity+x*(1.0-opacity);}",tz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return x*y*opacity+x*(1.0-opacity);}",nz="float blend(const in float x,const in float y){return(y>0.0)? min(x/y,1.0): 1.0;}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",rz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-abs(1.0-x-y))*opacity+x*(1.0-opacity);}",iz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y*opacity+x*(1.0-opacity);}",sz="float blend(const in float x,const in float y){return(x<0.5)?(2.0*x*y):(1.0-2.0*(1.0-x)*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",oz="float blend(const in float x,const in float y){return(y==1.0)? y : min(x*x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",az="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-(1.0-x)*(1.0-y))*opacity+x*(1.0-opacity);}",lz="float blend(const in float x,const in float y){return(y<0.5)?(2.0*x*y+x*x*(1.0-2.0*y)):(sqrt(x)*(2.0*y-1.0)+2.0*x*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}",cz="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x+y-1.0,0.0)*opacity+x*(1.0-opacity);}",uz=new Map([[at.SKIP,null],[at.ADD,qU],[at.ALPHA,XU],[at.AVERAGE,YU],[at.COLOR_BURN,QU],[at.COLOR_DODGE,ZU],[at.DARKEN,KU],[at.DIFFERENCE,JU],[at.EXCLUSION,$U],[at.LIGHTEN,ez],[at.MULTIPLY,tz],[at.DIVIDE,nz],[at.NEGATION,rz],[at.NORMAL,iz],[at.OVERLAY,sz],[at.REFLECT,oz],[at.SCREEN,az],[at.SOFT_LIGHT,lz],[at.SUBTRACT,cz]]),hz=class extends Rt{constructor(r,e=1){super(),this.f=r,this.opacity=new we(e)}getOpacity(){return this.opacity.value}setOpacity(r){this.opacity.value=r}get blendFunction(){return this.f}set blendFunction(r){this.f=r,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(r){this.blendFunction=r}getShaderCode(){return uz.get(this.blendFunction)}},Ei={NONE:0,DEPTH:1,CONVOLUTION:2};var Ci=class extends Rt{constructor(r,e,{attributes:t=Ei.NONE,blendFunction:n=at.SCREEN,defines:i=new Map,uniforms:s=new Map,extensions:o=null,vertexShader:a=null}={}){super(),this.name=r,this.renderer=null,this.attributes=t,this.fragmentShader=e,this.vertexShader=a,this.defines=i,this.uniforms=s,this.extensions=o,this.blendMode=new hz(n),this.blendMode.addEventListener("change",l=>this.setChanged())}getName(){return this.name}setRenderer(r){this.renderer=r}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(r){this.attributes=r,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(r){this.fragmentShader=r,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(r){this.vertexShader=r,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(r,e=Sn){}update(r,e,t){}setSize(r,e){}initialize(r,e,t){}dispose(){for(let r of Object.keys(this)){let e=this[r];if(e!==null&&typeof e.dispose=="function"){if(e instanceof lr||e===this.renderer)continue;this[r].dispose()}}}};function oA(r,e,t){for(let n of e){let i="$1"+r+n.charAt(0).toUpperCase()+n.slice(1),s=new RegExp("([^\\.])(\\b"+n+"\\b)","g");for(let o of t.entries())o[1]!==null&&t.set(o[0],o[1].replace(s,i))}}function dz(r,e,t,n,i,s,o){let a=new Map([["fragment",e.getFragmentShader()],["vertex",e.getVertexShader()]]),l=a.get("fragment")!==void 0&&/mainImage/.test(a.get("fragment")),u=a.get("fragment")!==void 0&&/mainUv/.test(a.get("fragment")),c=[],h=[],d=!1,f=!1;if(a.get("fragment")===void 0)console.error("Missing fragment shader",e);else if(u&&(o&Ei.CONVOLUTION)!==0)console.error("Effects that transform UV coordinates are incompatible with convolution effects",e);else if(!l&&!u)console.error("The fragment shader contains neither a mainImage nor a mainUv function",e);else{let m=/(?:\w+\s+(\w+)\([\w\s,]*\)\s*{[^}]+})/g,p=dy.Section;if(u){let y=` ${r}MainUv(UV);
|
|
5144
5144
|
`;t.set(p.FRAGMENT_MAIN_UV,t.get(p.FRAGMENT_MAIN_UV)+y),d=!0}if(a.get("vertex")!==null&&/mainSupport/.test(a.get("vertex"))){let y=` ${r}MainSupport(`;y+=/mainSupport *\([\w\s]*?uv\s*?\)/.test(a.get("vertex"))?`vUv);
|
|
5145
5145
|
`:`);
|
|
5146
5146
|
`,t.set(p.VERTEX_MAIN_SUPPORT,t.get(p.VERTEX_MAIN_SUPPORT)+y),c=c.concat([...a.get("vertex").matchAll(/(?:varying\s+\w+\s+(\w*))/g)].map(x=>x[1])),h=h.concat(c).concat([...a.get("vertex").matchAll(m)].map(x=>x[1]))}h=h.concat([...a.get("fragment").matchAll(m)].map(y=>y[1])),h=h.concat([...e.defines.keys()].map(y=>y.replace(/\([\w\s,]*\)/g,""))),h=h.concat([...e.uniforms.keys()]),e.uniforms.forEach((y,x)=>s.set(r+x.charAt(0).toUpperCase()+x.slice(1),y)),e.defines.forEach((y,x)=>i.set(r+x.charAt(0).toUpperCase()+x.slice(1),y)),oA(r,h,i),oA(r,h,a);let g=e.blendMode;if(n.set(g.blendFunction,g),l){let y=/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/,x=`${r}MainImage(color0, UV, `;(o&Ei.DEPTH)!==0&&y.test(a.get("fragment"))&&(x+="depth, ",f=!0),x+=`color1);
|
|
@@ -5165,16 +5165,16 @@ uniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuff
|
|
|
5165
5165
|
#else
|
|
5166
5166
|
uniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer;
|
|
5167
5167
|
#endif
|
|
5168
|
-
uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);float CoCNear=texture2D(nearCoCBuffer,uv).r;CoCNear=min(CoCNear*scale,1.0);vec4 result=inputColor*(1.0-colorFar.a)+colorFar;result=mix(result,colorNear,CoCNear);outputColor=result;}`,yA=class extends Ci{constructor(r,{blendFunction:e=at.NORMAL,worldFocusDistance:t,worldFocusRange:n,focusDistance:i=0,focalLength:s=.1,focusRange:o=s,bokehScale:a=1,width:l=Kr.AUTO_SIZE,height:u=Kr.AUTO_SIZE}={}){super("DepthOfFieldEffect",Sz,{blendFunction:e,attributes:Ei.DEPTH,uniforms:new Map([["nearColorBuffer",new we(null)],["farColorBuffer",new we(null)],["nearCoCBuffer",new we(null)],["scale",new we(1)]])}),this.camera=r,this.renderTarget=new lt(1,1,{minFilter:et,magFilter:et,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTarget.texture.generateMipmaps=!1,this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new Js(new TU(r));let c=this.cocMaterial;c.focusDistance=i,c.focusRange=o,t!==void 0&&(c.worldFocusDistance=t),n!==void 0&&(c.worldFocusRange=n),this.blurPass=new hA({kernelSize:my.MEDIUM,width:l,height:u});let h=this.blurPass.getResolution();h.addEventListener("change",f=>this.setSize(h.getBaseWidth(),h.getBaseHeight())),this.maskPass=new Js(new zU(this.renderTargetCoC.texture));let d=this.maskPass.fullscreenMaterial;d.maskFunction=uA.MULTIPLY,d.colorChannel=cA.GREEN,this.bokehNearBasePass=new Js(new tp(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new Js(new tp(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new Js(new tp(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new Js(new tp(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null,this.bokehScale=a}get cocTexture(){return this.renderTargetCoC.texture}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.circleOfConfusionMaterial}getBlurPass(){return this.blurPass}get resolution(){return this.blurPass.getResolution()}getResolution(){return this.blurPass.getResolution()}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(r){let e=[this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass];for(let t of e)t.fullscreenMaterial.setScale(r);this.maskPass.fullscreenMaterial.setStrength(r),this.uniforms.get("scale").value=r}getBokehScale(){return this.bokehScale}setBokehScale(r){this.bokehScale=r}getTarget(){return this.target}setTarget(r){this.target=r}calculateFocusDistance(r){let e=this.camera,t=e.position.distanceTo(r);return hy(-t,e.near,e.far)}setDepthTexture(r,e=Sn){this.circleOfConfusionMaterial.depthBuffer=r,this.circleOfConfusionMaterial.depthPacking=e}update(r,e,t){let n=this.renderTarget,i=this.renderTargetCoC,s=this.renderTargetCoCBlurred,o=this.renderTargetMasked;if(this.target!==null){let a=this.calculateFocusDistance(this.target);this.circleOfConfusionMaterial.focusDistance=a}this.cocPass.render(r,null,i),this.blurPass.render(r,i,s),this.maskPass.render(r,e,o),this.bokehFarBasePass.render(r,o,n),this.bokehFarFillPass.render(r,n,this.renderTargetFar),this.bokehNearBasePass.render(r,e,n),this.bokehNearFillPass.render(r,n,this.renderTargetNear)}setSize(r,e){let t=this.resolution;t.setBaseSize(r,e);let n=t.width,i=t.height,s=[this.cocPass,this.blurPass,this.maskPass,this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass];s.push(this.renderTargetCoC,this.renderTargetMasked),s.forEach(a=>a.setSize(r,e)),s=[this.renderTarget,this.renderTargetNear,this.renderTargetFar,this.renderTargetCoCBlurred],s.forEach(a=>a.setSize(n,i)),[this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass].forEach(a=>a.fullscreenMaterial.setSize(n,i))}initialize(r,e,t){[this.cocPass,this.maskPass,this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass].forEach(i=>i.initialize(r,e,t)),this.blurPass.initialize(r,e,Pt),t!==void 0&&(this.renderTarget.texture.type=t,this.renderTargetNear.texture.type=t,this.renderTargetFar.texture.type=t,this.renderTargetMasked.texture.type=t,r.outputEncoding===We&&(this.renderTarget.texture.encoding=We,this.renderTargetNear.texture.encoding=We,this.renderTargetFar.texture.encoding=We,this.renderTargetMasked.texture.encoding=We))}};var
|
|
5168
|
+
uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);float CoCNear=texture2D(nearCoCBuffer,uv).r;CoCNear=min(CoCNear*scale,1.0);vec4 result=inputColor*(1.0-colorFar.a)+colorFar;result=mix(result,colorNear,CoCNear);outputColor=result;}`,yA=class extends Ci{constructor(r,{blendFunction:e=at.NORMAL,worldFocusDistance:t,worldFocusRange:n,focusDistance:i=0,focalLength:s=.1,focusRange:o=s,bokehScale:a=1,width:l=Kr.AUTO_SIZE,height:u=Kr.AUTO_SIZE}={}){super("DepthOfFieldEffect",Sz,{blendFunction:e,attributes:Ei.DEPTH,uniforms:new Map([["nearColorBuffer",new we(null)],["farColorBuffer",new we(null)],["nearCoCBuffer",new we(null)],["scale",new we(1)]])}),this.camera=r,this.renderTarget=new lt(1,1,{minFilter:et,magFilter:et,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTarget.texture.generateMipmaps=!1,this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new Js(new TU(r));let c=this.cocMaterial;c.focusDistance=i,c.focusRange=o,t!==void 0&&(c.worldFocusDistance=t),n!==void 0&&(c.worldFocusRange=n),this.blurPass=new hA({kernelSize:my.MEDIUM,width:l,height:u});let h=this.blurPass.getResolution();h.addEventListener("change",f=>this.setSize(h.getBaseWidth(),h.getBaseHeight())),this.maskPass=new Js(new zU(this.renderTargetCoC.texture));let d=this.maskPass.fullscreenMaterial;d.maskFunction=uA.MULTIPLY,d.colorChannel=cA.GREEN,this.bokehNearBasePass=new Js(new tp(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new Js(new tp(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new Js(new tp(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new Js(new tp(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null,this.bokehScale=a}get cocTexture(){return this.renderTargetCoC.texture}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.circleOfConfusionMaterial}getBlurPass(){return this.blurPass}get resolution(){return this.blurPass.getResolution()}getResolution(){return this.blurPass.getResolution()}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(r){let e=[this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass];for(let t of e)t.fullscreenMaterial.setScale(r);this.maskPass.fullscreenMaterial.setStrength(r),this.uniforms.get("scale").value=r}getBokehScale(){return this.bokehScale}setBokehScale(r){this.bokehScale=r}getTarget(){return this.target}setTarget(r){this.target=r}calculateFocusDistance(r){let e=this.camera,t=e.position.distanceTo(r);return hy(-t,e.near,e.far)}setDepthTexture(r,e=Sn){this.circleOfConfusionMaterial.depthBuffer=r,this.circleOfConfusionMaterial.depthPacking=e}update(r,e,t){let n=this.renderTarget,i=this.renderTargetCoC,s=this.renderTargetCoCBlurred,o=this.renderTargetMasked;if(this.target!==null){let a=this.calculateFocusDistance(this.target);this.circleOfConfusionMaterial.focusDistance=a}this.cocPass.render(r,null,i),this.blurPass.render(r,i,s),this.maskPass.render(r,e,o),this.bokehFarBasePass.render(r,o,n),this.bokehFarFillPass.render(r,n,this.renderTargetFar),this.bokehNearBasePass.render(r,e,n),this.bokehNearFillPass.render(r,n,this.renderTargetNear)}setSize(r,e){let t=this.resolution;t.setBaseSize(r,e);let n=t.width,i=t.height,s=[this.cocPass,this.blurPass,this.maskPass,this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass];s.push(this.renderTargetCoC,this.renderTargetMasked),s.forEach(a=>a.setSize(r,e)),s=[this.renderTarget,this.renderTargetNear,this.renderTargetFar,this.renderTargetCoCBlurred],s.forEach(a=>a.setSize(n,i)),[this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass].forEach(a=>a.fullscreenMaterial.setSize(n,i))}initialize(r,e,t){[this.cocPass,this.maskPass,this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass].forEach(i=>i.initialize(r,e,t)),this.blurPass.initialize(r,e,Pt),t!==void 0&&(this.renderTarget.texture.type=t,this.renderTargetNear.texture.type=t,this.renderTargetFar.texture.type=t,this.renderTargetMasked.texture.type=t,r.outputEncoding===We&&(this.renderTarget.texture.encoding=We,this.renderTargetNear.texture.encoding=We,this.renderTargetFar.texture.encoding=We,this.renderTargetMasked.texture.encoding=We))}};var cue=new S,uue=new Oe;var Az="uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}",vA=class extends Ci{constructor({blendFunction:r=at.NORMAL,hue:e=0,saturation:t=0}={}){super("HueSaturationEffect",Az,{blendFunction:r,uniforms:new Map([["hue",new we(new S)],["saturation",new we(t)]])}),this.hue=e}get saturation(){return this.uniforms.get("saturation").value}set saturation(r){this.uniforms.get("saturation").value=r}getSaturation(){return this.saturation}setSaturation(r){this.saturation=r}get hue(){let r=this.uniforms.get("hue").value;return Math.acos((r.x*3-1)/2)}set hue(r){let e=Math.sin(r),t=Math.cos(r);this.uniforms.get("hue").value.set((2*t+1)/3,(-Math.sqrt(3)*e-t+1)/3,(Math.sqrt(3)*e-t+1)/3)}getHue(){return this.hue}setHue(r){this.hue=r}};var fue=new Re;var Mz=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*time));
|
|
5169
5169
|
#ifdef PREMULTIPLY
|
|
5170
5170
|
outputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a);
|
|
5171
5171
|
#else
|
|
5172
5172
|
outputColor=vec4(noise,inputColor.a);
|
|
5173
5173
|
#endif
|
|
5174
|
-
}`,xA=class extends Ci{constructor({blendFunction:r=at.SCREEN,premultiply:e=!1}={}){super("NoiseEffect",Mz,{blendFunction:r}),this.premultiply=e}get premultiply(){return this.defines.has("PREMULTIPLY")}set premultiply(r){this.premultiply!==r&&(r?this.defines.set("PREMULTIPLY","1"):this.defines.delete("PREMULTIPLY"),this.setChanged())}isPremultiplied(){return this.premultiply}setPremultiplied(r){this.premultiply=r}};var Tz="uniform bool active;uniform vec2 d;void mainUv(inout vec2 uv){if(active){uv=vec2(d.x*(floor(uv.x/d.x)+0.5),d.y*(floor(uv.y/d.y)+0.5));}}",bA=class extends Ci{constructor(r=30){super("PixelationEffect",Tz,{uniforms:new Map([["active",new we(!1)],["d",new we(new N)]])}),this.resolution=new N,this.d=0,this.granularity=r}get granularity(){return this.d}set granularity(r){let e=Math.floor(r);e%2>0&&(e+=1),this.d=e,this.uniforms.get("active").value=e>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(r){this.granularity=r}setSize(r,e){this.resolution.set(r,e),this.uniforms.get("d").value.setScalar(this.d).divide(this.resolution)}};var yue=Math.PI*.5,vue=new S,xue=new S;var aA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC",lA="data:image/png;base64,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",Ez="uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}",Cz="varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}",Uo={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},wA=class extends Ci{constructor({preset:r=Uo.MEDIUM,edgeDetectionMode:e=rp.COLOR,predicationMode:t=fy.DISABLED}={}){super("SMAAEffect",Ez,{vertexShader:Cz,blendFunction:at.NORMAL,attributes:Ei.CONVOLUTION|Ei.DEPTH,uniforms:new Map([["weightMap",new we(null)]])});let n,i;arguments.length>1&&(n=arguments[0],i=arguments[1],arguments.length>2&&(r=arguments[2]),arguments.length>3&&(e=arguments[3])),this.renderTargetEdges=new lt(1,1,{minFilter:et,stencilBuffer:!1,depthBuffer:!1}),this.renderTargetEdges.texture.name="SMAA.Edges",this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name="SMAA.Weights",this.uniforms.get("weightMap").value=this.renderTargetWeights.texture,this.clearPass=new Gu(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new Js(new OU),this.edgeDetectionMaterial.edgeDetectionMode=e,this.edgeDetectionMaterial.predicationMode=t,this.weightsPass=new Js(new VU);let s=new yo;s.onLoad=()=>{let o=new It(n);o.name="SMAA.Search",o.magFilter=Ut,o.minFilter=Ut,o.generateMipmaps=!1,o.needsUpdate=!0,o.flipY=!0,this.weightsMaterial.searchTexture=o;let a=new It(i);a.name="SMAA.Area",a.magFilter=et,a.minFilter=et,a.generateMipmaps=!1,a.needsUpdate=!0,a.flipY=!1,this.weightsMaterial.areaTexture=a,this.dispatchEvent({type:"load"})},s.itemStart("search"),s.itemStart("area"),n!==void 0&&i!==void 0?(s.itemEnd("search"),s.itemEnd("area")):typeof Image<"u"&&(n=new Image,i=new Image,n.addEventListener("load",()=>s.itemEnd("search")),i.addEventListener("load",()=>s.itemEnd("area")),n.src=aA,i.src=lA),this.applyPreset(r)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(r){this.edgeDetectionMaterial.edgeDetectionThreshold=r}setOrthogonalSearchSteps(r){this.weightsMaterial.orthogonalSearchSteps=r}applyPreset(r){let e=this.edgeDetectionMaterial,t=this.weightsMaterial;switch(r){case Uo.LOW:e.edgeDetectionThreshold=.15,t.orthogonalSearchSteps=4,t.diagonalDetection=!1,t.cornerDetection=!1;break;case Uo.MEDIUM:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=8,t.diagonalDetection=!1,t.cornerDetection=!1;break;case Uo.HIGH:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=16,t.diagonalSearchSteps=8,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break;case Uo.ULTRA:e.edgeDetectionThreshold=.05,t.orthogonalSearchSteps=32,t.diagonalSearchSteps=16,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break}}setDepthTexture(r,e=Sn){this.edgeDetectionMaterial.depthBuffer=r,this.edgeDetectionMaterial.depthPacking=e}update(r,e,t){this.clearPass.render(r,this.renderTargetEdges),this.edgeDetectionPass.render(r,e,this.renderTargetEdges),this.weightsPass.render(r,this.renderTargetEdges,this.renderTargetWeights)}setSize(r,e){this.edgeDetectionMaterial.setSize(r,e),this.weightsMaterial.setSize(r,e),this.renderTargetEdges.setSize(r,e),this.renderTargetWeights.setSize(r,e)}dispose(){let{searchTexture:r,areaTexture:e}=this.weightsMaterial;r!==null&&e!==null&&(r.dispose(),e.dispose()),super.dispose()}static get searchImageDataURL(){return aA}static get areaImageDataURL(){return lA}};var Dz=`uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb;
|
|
5174
|
+
}`,xA=class extends Ci{constructor({blendFunction:r=at.SCREEN,premultiply:e=!1}={}){super("NoiseEffect",Mz,{blendFunction:r}),this.premultiply=e}get premultiply(){return this.defines.has("PREMULTIPLY")}set premultiply(r){this.premultiply!==r&&(r?this.defines.set("PREMULTIPLY","1"):this.defines.delete("PREMULTIPLY"),this.setChanged())}isPremultiplied(){return this.premultiply}setPremultiplied(r){this.premultiply=r}};var Tz="uniform bool active;uniform vec2 d;void mainUv(inout vec2 uv){if(active){uv=vec2(d.x*(floor(uv.x/d.x)+0.5),d.y*(floor(uv.y/d.y)+0.5));}}",bA=class extends Ci{constructor(r=30){super("PixelationEffect",Tz,{uniforms:new Map([["active",new we(!1)],["d",new we(new N)]])}),this.resolution=new N,this.d=0,this.granularity=r}get granularity(){return this.d}set granularity(r){let e=Math.floor(r);e%2>0&&(e+=1),this.d=e,this.uniforms.get("active").value=e>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(r){this.granularity=r}setSize(r,e){this.resolution.set(r,e),this.uniforms.get("d").value.setScalar(this.d).divide(this.resolution)}};var gue=Math.PI*.5,yue=new S,vue=new S;var aA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC",lA="data:image/png;base64,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",Ez="uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}",Cz="varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}",Uo={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},wA=class extends Ci{constructor({preset:r=Uo.MEDIUM,edgeDetectionMode:e=rp.COLOR,predicationMode:t=fy.DISABLED}={}){super("SMAAEffect",Ez,{vertexShader:Cz,blendFunction:at.NORMAL,attributes:Ei.CONVOLUTION|Ei.DEPTH,uniforms:new Map([["weightMap",new we(null)]])});let n,i;arguments.length>1&&(n=arguments[0],i=arguments[1],arguments.length>2&&(r=arguments[2]),arguments.length>3&&(e=arguments[3])),this.renderTargetEdges=new lt(1,1,{minFilter:et,stencilBuffer:!1,depthBuffer:!1}),this.renderTargetEdges.texture.name="SMAA.Edges",this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name="SMAA.Weights",this.uniforms.get("weightMap").value=this.renderTargetWeights.texture,this.clearPass=new Gu(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new Js(new OU),this.edgeDetectionMaterial.edgeDetectionMode=e,this.edgeDetectionMaterial.predicationMode=t,this.weightsPass=new Js(new VU);let s=new yo;s.onLoad=()=>{let o=new It(n);o.name="SMAA.Search",o.magFilter=Ut,o.minFilter=Ut,o.generateMipmaps=!1,o.needsUpdate=!0,o.flipY=!0,this.weightsMaterial.searchTexture=o;let a=new It(i);a.name="SMAA.Area",a.magFilter=et,a.minFilter=et,a.generateMipmaps=!1,a.needsUpdate=!0,a.flipY=!1,this.weightsMaterial.areaTexture=a,this.dispatchEvent({type:"load"})},s.itemStart("search"),s.itemStart("area"),n!==void 0&&i!==void 0?(s.itemEnd("search"),s.itemEnd("area")):typeof Image<"u"&&(n=new Image,i=new Image,n.addEventListener("load",()=>s.itemEnd("search")),i.addEventListener("load",()=>s.itemEnd("area")),n.src=aA,i.src=lA),this.applyPreset(r)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(r){this.edgeDetectionMaterial.edgeDetectionThreshold=r}setOrthogonalSearchSteps(r){this.weightsMaterial.orthogonalSearchSteps=r}applyPreset(r){let e=this.edgeDetectionMaterial,t=this.weightsMaterial;switch(r){case Uo.LOW:e.edgeDetectionThreshold=.15,t.orthogonalSearchSteps=4,t.diagonalDetection=!1,t.cornerDetection=!1;break;case Uo.MEDIUM:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=8,t.diagonalDetection=!1,t.cornerDetection=!1;break;case Uo.HIGH:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=16,t.diagonalSearchSteps=8,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break;case Uo.ULTRA:e.edgeDetectionThreshold=.05,t.orthogonalSearchSteps=32,t.diagonalSearchSteps=16,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break}}setDepthTexture(r,e=Sn){this.edgeDetectionMaterial.depthBuffer=r,this.edgeDetectionMaterial.depthPacking=e}update(r,e,t){this.clearPass.render(r,this.renderTargetEdges),this.edgeDetectionPass.render(r,e,this.renderTargetEdges),this.weightsPass.render(r,this.renderTargetEdges,this.renderTargetWeights)}setSize(r,e){this.edgeDetectionMaterial.setSize(r,e),this.weightsMaterial.setSize(r,e),this.renderTargetEdges.setSize(r,e),this.renderTargetWeights.setSize(r,e)}dispose(){let{searchTexture:r,areaTexture:e}=this.weightsMaterial;r!==null&&e!==null&&(r.dispose(),e.dispose()),super.dispose()}static get searchImageDataURL(){return aA}static get areaImageDataURL(){return lA}};var Dz=`uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb;
|
|
5175
5175
|
#if VIGNETTE_TECHNIQUE == 0
|
|
5176
5176
|
float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset));
|
|
5177
5177
|
#else
|
|
5178
5178
|
vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord));
|
|
5179
5179
|
#endif
|
|
5180
|
-
outputColor=vec4(color,inputColor.a);}`,np={DEFAULT:0,ESKIL:1},_A=class extends Ci{constructor({blendFunction:r=at.NORMAL,technique:e=np.DEFAULT,eskil:t=!1,offset:n=.5,darkness:i=.5}={}){super("VignetteEffect",Dz,{blendFunction:r,defines:new Map([["VIGNETTE_TECHNIQUE",e.toFixed(0)]]),uniforms:new Map([["offset",new we(n)],["darkness",new we(i)]])})}get technique(){return Number(this.defines.get("VIGNETTE_TECHNIQUE"))}set technique(r){this.technique!==r&&(this.defines.set("VIGNETTE_TECHNIQUE",r.toFixed(0)),this.setChanged())}get eskil(){return this.technique===np.ESKIL}set eskil(r){this.technique=r?np.ESKIL:np.DEFAULT}getTechnique(){return this.technique}setTechnique(r){this.technique=r}get offset(){return this.uniforms.get("offset").value}set offset(r){this.uniforms.get("offset").value=r}getOffset(){return this.offset}setOffset(r){this.offset=r}get darkness(){return this.uniforms.get("darkness").value}set darkness(r){this.uniforms.get("darkness").value=r}getDarkness(){return this.darkness}setDarkness(r){this.darkness=r}},_ue=[new Float32Array(3),new Float32Array(3)],Sue=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Aue=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];var Mue=[new Float32Array(2),new Float32Array(2)];var Tue=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),Eue=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],Cue=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],Due=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];var Pue=new Map([[Fn(0,0,0,0),new Float32Array([0,0,0,0])],[Fn(0,0,0,1),new Float32Array([0,0,0,1])],[Fn(0,0,1,0),new Float32Array([0,0,1,0])],[Fn(0,0,1,1),new Float32Array([0,0,1,1])],[Fn(0,1,0,0),new Float32Array([0,1,0,0])],[Fn(0,1,0,1),new Float32Array([0,1,0,1])],[Fn(0,1,1,0),new Float32Array([0,1,1,0])],[Fn(0,1,1,1),new Float32Array([0,1,1,1])],[Fn(1,0,0,0),new Float32Array([1,0,0,0])],[Fn(1,0,0,1),new Float32Array([1,0,0,1])],[Fn(1,0,1,0),new Float32Array([1,0,1,0])],[Fn(1,0,1,1),new Float32Array([1,0,1,1])],[Fn(1,1,0,0),new Float32Array([1,1,0,0])],[Fn(1,1,0,1),new Float32Array([1,1,0,1])],[Fn(1,1,1,0),new Float32Array([1,1,1,0])],[Fn(1,1,1,1),new Float32Array([1,1,1,1])]]);function uy(r,e,t){return r+(e-r)*t}function Fn(r,e,t,n){let i=uy(r,e,.75),s=uy(t,n,1-.25);return uy(i,s,1-.125)}var en=class{constructor(e,t){this.enabled=!1;this.effect=new e(t),Object.defineProperty(this,"opacity",{enumerable:!0,set(n){this.effect.blendMode.opacity.value=n},get(){return this.effect.blendMode.opacity.value}}),Object.defineProperty(this,"blendFunction",{enumerable:!0,set(n){this.effect.blendMode.setBlendFunction(Number(n))},get(){return this.effect.blendMode.blendFunction}}),this.blendFunction=at.NORMAL}toJSON(){let e=["constructor","effect","subscriptions"],t={...this},n=Object.getPrototypeOf(this),i=Object.getOwnPropertyNames(n);for(let s of i){let o=Object.getOwnPropertyDescriptor(n,s);o&&typeof o.get=="function"&&(t[s]=this[s])}return e.forEach(s=>delete t[s]),t}};var Yl=class extends en{constructor(){super(fA),this.blendFunction=at.SCREEN}set intensity(e){this.effect.intensity=e}get intensity(){return this.effect.intensity}set luminanceThreshold(e){this.effect.luminanceMaterial.threshold=e}get luminanceThreshold(){return this.effect.luminanceMaterial.threshold}set luminanceSmoothing(e){this.effect.luminanceMaterial.smoothing=e}get luminanceSmoothing(){return this.effect.luminanceMaterial.smoothing}set blurScale(e){this.effect.blurPass.scale=e}get blurScale(){return this.effect.blurPass.scale}set kernelSize(e){this.effect.blurPass.kernelSize=e}get kernelSize(){return this.effect.blurPass.kernelSize}};var Ql=class extends en{constructor(){super(pA)}set contrast(e){this.effect.uniforms.get("contrast").value=e}get contrast(){return this.effect.uniforms.get("contrast").value}set brightness(e){this.effect.uniforms.get("brightness").value=e}get brightness(){return this.effect.uniforms.get("brightness").value}};var Zl=class extends en{constructor(){super(gA),this.effect.offset=new N(.01,.01)}set offset(e){this.effect.offset.set(e[0]/1e3,e[1]/1e3)}get offset(){return[this.effect.offset.x*1e3,this.effect.offset.y*1e3]}};var Kl=class extends en{constructor(){super(mA)}};var Jl=class extends en{constructor(){super(vA);this._hue=0}set hue(t){this._hue=t,this.effect.setHue(t)}get hue(){return this._hue}set saturation(t){this.effect.uniforms.get("saturation").value=t}get saturation(){return this.effect.uniforms.get("saturation").value}};var $l=class extends en{constructor(){super(xA),this.blendFunction=at.OVERLAY}};var ec=class extends en{constructor(){super(_A)}get eskil(){return this.effect.eskil}set eskil(e){this.effect.eskil=e}get darkness(){return this.effect.uniforms.get("darkness").value}set darkness(e){this.effect.uniforms.get("darkness").value=e}get offset(){return this.effect.uniforms.get("offset").value}set offset(e){this.effect.uniforms.get("offset").value=e}};var tc=class extends en{constructor(e){super(yA,e)}set focalLength(e){this.effect.circleOfConfusionMaterial.uniforms.focalLength.value=e}get focalLength(){return this.effect.circleOfConfusionMaterial.uniforms.focalLength.value}set focusDistance(e){this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value=e}get focusDistance(){return this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value}get bokehScale(){return this.effect.bokehScale}set bokehScale(e){this.effect.bokehScale=e}};var nc=class extends en{constructor(){super(bA)}get granularity(){return this.effect.getGranularity()}set granularity(e){this.effect.setGranularity(e)}};function SA(r,e){return e&&e.enabled&&r.push(e.effect),r}var Vu=class extends Rt{constructor(){super();this._scene=new lr;this._camera=new pr;this.effects=new Map;this.loadingManager=new yo;this.renderPass=new ku;this._renderToScreen=!0;this._hasSmaa=!1;this._helperPasses=[];this._areHelpersEnabled=!0;this.clock=new Rh,this.enabled=!1,this.debug=!1,this.effects.set("bloom",new Yl),this.effects.set("chromaticAberration",new Zl),this.effects.set("vignette",new ec),this.effects.set("noise",new $l),this.effects.set("colorAverage",new Kl),this.effects.set("hueSaturation",new Jl),this.effects.set("brightnessContrast",new Ql),this.effects.set("depthOfField",new tc),this.effects.set("pixelation",new nc)}get scene(){return this._scene}set scene(t){this._scene=t}get camera(){return this._camera}set camera(t){this._camera=t}disableHelpers(){this._areHelpersEnabled=!1,this._helperPasses.forEach(t=>t.enabled=!1)}enableHelpers(){this._areHelpersEnabled=!0,this._helperPasses.forEach(t=>t.enabled=!0)}_initSmaa(){if(!this.effectComposer)return;let t=this.effectComposer.passes.length,n=new wA({preset:Uo.ULTRA,edgeDetectionMode:rp.COLOR}),i=()=>{n.removeEventListener("load",i),this.dispatchEvent({type:"smaaloaded"})};n.addEventListener("load",i),n.edgeDetectionMaterial.predicationMode=fy.DEPTH,n.edgeDetectionMaterial.edgeDetectionThreshold=.05,n.edgeDetectionMaterial.predicationThreshold=.002,n.edgeDetectionMaterial.predicationScale=1,this.effectComposer.addPass(new ip(this.camera,n),t),this._hasSmaa=!0}_initPasses(){if(!this.effectComposer||!this.renderer)return;let t;this.effectComposer.removeAllPasses(),this._hasSmaa=!1,this.renderPass=new ku(this.scene,this.camera);let n,i;if(this.sceneHelpers&&(n=new ku(this.sceneHelpers,this.camera)),this.sceneHelpersOnTop&&(i=new ku(this.sceneHelpersOnTop,this.camera)),this.enabled){this.effectComposer.addPass(this.renderPass);let s=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(SA,[]),o=[this.effects.get("pixelation")].reduce(SA,[]);o.length>0&&this.effectComposer.addPass(new ip(this.camera,...o)),this.effectComposer.addPass(new ip(this.camera,...s))}else this.effectComposer.addPass(this.renderPass);if(this._helperPasses=[],n&&i&&(n.clear=!1,i.clear=!1,this._helperPasses.push(n,new Gu(!1,!0,!1),i)),this._helperPasses.forEach(s=>this.effectComposer.addPass(s)),this._areHelpersEnabled||this.disableHelpers(),this._initSmaa(),t)return t}reinit(){if(!this.renderer)return Promise.all([]);this.effectComposer=new dA(this.renderer),this._initPasses()}init({renderer:t,camera:n,scene:i,sceneHelpers:s,sceneHelpersOnTop:o}){this.renderer=t,this.scene=i,this.sceneHelpers=s,this.sceneHelpersOnTop=o,this.camera=n,this._initCopyPass(),this.reinit()}_initCopyPass(){if(this._savePass)return;let t=new N;this.renderer.getDrawingBufferSize(t),this._rt=new lt(t.x,t.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:aa,wrapT:aa}),this._rt.samples=0,this._savePass=new py(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(t){let n=this.effectComposer;!n||(t===!0?(n.removePass(this._savePass),n.passes[n.passes.length-1].renderToScreen=!0,n.autoRenderToScreen=!0):(n.autoRenderToScreen=!1,n.passes[n.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.enabled||(this._savePass.needsDepthTexture=!0),n.addPass(this._savePass)),this._renderToScreen=t)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}fromJSON(t){t&&(Object.keys(t).forEach(n=>{let i=t[n],s=this.effects.get(n);Object.keys(i).forEach(o=>{s[o]=i[o]})}),this.enabled=t.enabled)}toJSON(){let t={};return this.effects.forEach((n,i)=>{t[i]=n.toJSON()},t),{enabled:this.enabled,...t}}render(){this.effectComposer?.render(this.clock.getDelta())}setScissor(t,n,i,s){if(!this.effectComposer||!this.renderer)return;t instanceof Ve?(this.effectComposer.inputBuffer.scissor.set(t.x,t.y,t.z,t.w),this.effectComposer.outputBuffer.scissor.set(t.x,t.y,t.z,t.w)):(this.effectComposer.inputBuffer.scissor.set(t,n,i,s),this.effectComposer.outputBuffer.scissor.set(t,n,i,s));let o=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(o),this.effectComposer.outputBuffer.scissor.multiplyScalar(o),this.renderer.setScissor(t,n,i,s)}setScissorTest(t){!this.effectComposer||!this.renderer||(this.effectComposer.inputBuffer.scissorTest=t,this.effectComposer.outputBuffer.scissorTest=t,this.renderer.setScissorTest(t))}setViewport(t,n,i,s){!this.effectComposer||(t instanceof Ve?(this.effectComposer.inputBuffer.viewport.copy(t),this.effectComposer.outputBuffer.viewport.copy(t)):(this.effectComposer.inputBuffer.viewport.set(t,n,i,s),this.effectComposer.outputBuffer.viewport.set(t,n,i,s)))}resize(t,n,i){if(this.effectComposer?.setSize(t,n,i),this._rt){let s=this.renderer?.getPixelRatio()||window.devicePixelRatio;this._rt.setSize(t*s,n*s)}}dispose(){this._listeners=void 0,this.effectComposer?.dispose()}};var sp=class extends Uu{constructor(t,n){super(t,n);this.postprocessing=new Vu;this.initPostprocessing(t.postprocessing)}resetAfterClear(t,n){super.resetAfterClear(t,n),this.initPostprocessing(t.postprocessing)}initPostprocessing(t){let{enabled:n,...i}=t;for(let s of Object.entries(i)){let o=s[1],a=this.postprocessing.effects.get(s[0]);if(a){a.enabled=o.enabled;for(let[l,u]of Object.entries(o))a[l]=u}}this.postprocessing.enabled=n,this.postprocessing.reinit()}dispose(){super.dispose(),this.postprocessing.dispose()}switchActiveCamera(t){super.switchActiveCamera(t),this.postprocessing&&(this.postprocessing.camera=t)}};var op=class{constructor(e){this.sharedAssets=new Bu(e.shared),this.scene=new sp(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose()}};var ap=class{constructor({x:e=10,y:t=10}){this._startTime=0;let n=document.getElementById("spe-perfs");n?this.element=n:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let t=performance.now()-this._startTime;this.element.innerHTML=t.toFixed(3)+" ms"}};function Iz(r){let e;if(!!r.index)for(let t=0;t<r.index.array.length;t+=3)e=r.index.array[t],r.index.array[t]=r.index.array[t+2],r.index.array[t+2]=e}function gy(r){return r==="SubdivObject"||r==="NonParametric"?r:"Mesh"}function Lz(r,e){let t={};return r.traverseEntity(n=>{if(n.type!=="Mesh"||!("material"in n)||!n.visible||!(n instanceof Ot)||Array.isArray(n.material)||n&&n.interaction&&n.interaction.states.length>0)return;let i=n.parent;for(;i;){if(i instanceof Ot&&i.interaction&&i.interaction.states.length>1)return;i=i.parent}let s=n.material.uuid,o=e.shared.materials[s];if(o){if(!fr.isMergable(o))return}else{let u=e.scene.objects.get(n.uuid)?.data;if(u&&"material"in u&&typeof u.material!="string"){if(!fr.isMergable(u.material))return;s=fr.getHash(u.material)}}t[s]||(t[s]={});let l=t[s][gy(n.objectType)];if(l){if(l.push(n),n.cloner)for(let u of n.cloner.children)l.push(u)}else if(t[s][gy(n.objectType)]=[n],n.cloner)for(let u of n.cloner.children)t[s][gy(n.objectType)].push(u)}),t}function Oz(r){let e=0;return Object.values(r).forEach(t=>{Object.values(t).forEach(n=>{let i=n.length;i>e&&(e=i)})}),e}function AA(r,e){let t=Lz(e,r),n=Oz(t),i=new Array(n),s=0,o=new Array(n),a=0,l=new Array(n),u=0,c=new Array(n),h=0;for(let d of Object.values(t))for(let f of Object.values(d)){if(a=0,u=0,f.forEach(p=>{p instanceof Ot&&(o[a++]=p.geometry.clone(),l[u++]=p)}),u<2)continue;for(let p=0;p<u;p++)l[p].updateWorldMatrix(!0,!1),o[p].applyMatrix4(l[p].matrixWorld),l[p].matrixWorld.determinant()<0&&Iz(o[p]);let m=m_(o.slice(0,a),!1);if(m){let p;switch(f[0].objectType){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),p=new kt(m,l[0].material);break}default:{p=new kt(m,l[0].material);break}}p.castShadow=l[0].castShadow,p.receiveShadow=l[0].receiveShadow,e.add(p);let g=y=>{h=0;for(let x of y)x.children&&g(x.children),x instanceof Ot&&(Array.isArray(x.material)||t[x.material.uuid]&&t[x.material.uuid][x.objectType]&&t[x.material.uuid][x.objectType].length>1||(c[h++]=x));for(let x=0;x<h;x++)e.attach(c[x])};for(let y=0;y<u;y++){let x=l[y];g(x.children),i[s++]=x}}}for(let d=0;d<s;d++)i[d].removeFromParent()}var Rz=new N,MA="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.",TA=class{constructor(e,{autoRender:t=!1}={}){this._viewportMode=1;this._viewportWidth=window.innerWidth;this._viewportHeight=window.innerHeight;this._devicePixelRatio=window.devicePixelRatio;this._proxyObjectCache=new Map;this._skipRender=!0;this.autoRender=!1;this.disposed=!1;this.requestRender=()=>{this._skipRender=!1};this.render=()=>{!this._renderer||(this._rafId=requestAnimationFrame(this.render),this._perfs?.start(),!(!this.autoRender&&this._skipRender)&&(this._controls&&(this._controls.enableDamping||this._controls.autoRotate)?this._skipRender=!this._controls.update():this._skipRender=!0,this._playmode&&!this._playmode.isEnable&&this._playmode.activate(),this._scene&&this._camera&&(this._renderer.autoClear=!1,this._normalRenderTarget&&(this._renderer.setClearColor(0),this._renderer.setClearAlpha(0),this._camera.layers.enable(8),this._camera.layers.disable(0),this._camera.layers.disable(3),this._renderer.setRenderTarget(this._normalRenderTarget),this._renderer.clear(),this._scene.overrideMaterial=this._normalMaterial,this._renderer.render(this._scene,this._camera),this._renderer.setClearColor(this._scene.bgColor,this._scene.alpha),this._renderer.setRenderTarget(null),this._scene.overrideMaterial=null,this._camera.layers.enable(0),this._camera.layers.enable(3)),this._transmissionRenderTarget&&(this._renderer.setRenderTarget(this._transmissionRenderTarget),this._renderer.clear(),this._camera.layers.enable(0),this._camera.layers.disable(3),this._renderer.render(this._scene,this._camera),this._renderer.setRenderTarget(null),this._camera.layers.enable(3)),this._renderer.autoClear=!1,this._scene.postprocessing.render()),this._perfs?.end()))};this.resize=Uc(()=>{!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=Rz.set(this._viewportWidth,this._viewportHeight)),this._frameView?.updateRenderer(),this._scene?.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._sharedAssetsManager?.resolutionNode.value.set(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._normalRenderTarget?.setSize(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*window.devicePixelRatio),this._transmissionRenderTarget?.setSize(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._viewportMode!==1&&this._frameView?.updateViewport(),this._camera&&(this._frameView?.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),this._playmode?.resize(),this.requestRender())},10);this.canvas=e,this.autoRender=t,N0(),window.location.search.includes("perfs")&&(this._perfs=new ap({x:10,y:10}))}async load(e){e.endsWith(".spline")?console.warn(MA+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(MA);let n=await(await fetch(e)).arrayBuffer();await this.start(n)}async start(e){if(this.disposed)return;let t=await JS(e);d0(t)&&await DS();let n=new op(t);if(window.location.search.includes("merge-geometries")){let d=performance.now();AA(t,n.scene);let f=performance.now();console.log("Merged geometries in ",f-d," ms")}this._scene=n.scene,d0(t)&&this._scene.traverse(d=>{xt(d)&&d.recomputeBoolean()}),this._sharedAssetsManager=n.sharedAssets,this._sharedAssetsManager.onImageLoad=()=>{this.requestRender()},z1(t.scene,this._scene,this._sharedAssetsManager),this._camera=this._scene.activeCamera;let i=Object.values(t.frames)[0],s,o;if(i)if(i.preset==="fullscreen"){this._viewportMode=1;let{width:d,height:f}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(d==="300px"||d==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%",s=this.canvas.style.width):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(f==="150px"||f==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%",o=this.canvas.style.height):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=i.size[0],this._viewportHeight=i.size[1],s=this._viewportWidth+"px",o=this._viewportHeight+"px";this._renderer=new Um({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._scene.postprocessing.init({renderer:this._renderer,camera:this._camera,scene:this._scene}),this._scene.postprocessing.addEventListener("smaaloaded",this.requestRender),s&&(this.canvas.style.width=s),o&&(this.canvas.style.height=o),this._scene.needsTransmission(void 0)&&(this._transmissionRenderTarget=new lt(2048,2048,{generateMipmaps:!0,minFilter:gs,magFilter:et,wrapS:xn,wrapT:xn}),this._transmissionRenderTarget.depthTexture=new vr(2048,2048),this._scene.needsTransmission(this._transmissionRenderTarget)),this._scene.needsNormal(void 0)&&(this._normalRenderTarget=new lt(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio,{generateMipmaps:!1,minFilter:Ut,magFilter:Ut,type:gr}),this._normalMaterial=XS,this._normalRenderTarget.depthTexture=new vr(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._scene.needsNormal(this._normalRenderTarget)),this._renderer.setPixelRatio(this._devicePixelRatio),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._scene.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=t.scene.environment.ambientLight.softShadows?Vh:Nm,qS(t.scene.environment.ambientLight.softShadowQuality),this._renderer.setClearColor(this._scene.bgColor,this._scene.alpha),this._frameView=new $f(this._renderer,this._camera,new N(this._viewportWidth,this._viewportHeight),new N(window.innerWidth,window.innerHeight)),this._publishData=t.scene.publish;let{enableRotate:a,enablePan:l,enableZoom:u,autoRotate:c,hoverRotatePanMode:h}=this._publishData.orbitControls;if((a||l||u||c||h!==0)&&(this._camera.interaction===void 0||this._camera.interaction.states.length<=1)&&(this._controls=new ef(this._camera,this._renderer.domElement),this._controls.fromJSON(this._publishData.orbitControls),this._controls.useKeyEvents=!1,this._controls.addEventListener("change",this.requestRender),this._controls.addEventListener("start",this.requestRender)),this._playmode=new Jf(this._renderer,this._scene,this._camera,this._publishData.stopRaycast,this),this._sharedAssetsManager.resolutionNode.value.set(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._sharedAssetsManager.pixelRatioNode.value=this._devicePixelRatio,this.resize(),this.render(),this.canvas.parentElement){let d=!0;this._resizeObserver=new ResizeObserver(()=>{if(d){d=!1;return}this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this.resize()}),this._resizeObserver.observe(this.canvas.parentElement)}}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){return this._playmode?.splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this._renderer?.domElement.addEventListener(e,t)}removeEventListener(e,t){this._renderer?.domElement.removeEventListener(e,t)}setZoom(e){this._controls?.zoomOut(e)}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this.resize()}dispose(){this.disposed=!0,this._playmode?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(e=>{Km.unsubscribe(e)}),this._renderer?.dispose(),this._transmissionRenderTarget?.dispose(),this._transmissionRenderTarget?.depthTexture?.dispose(),this._normalRenderTarget?.dispose(),this._normalRenderTarget?.depthTexture?.dispose(),this._sharedAssetsManager?.dispose(),this._resizeObserver&&this._resizeObserver.disconnect(),this.canvas.style.width="",this.canvas.style.height=""}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let{requestRender:t}=this,n={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(s){e.interaction?.emitEvent(s,t)},emitEventReverse(s){e.interaction?.emitEventReverse(s,t)}},i=Km(n,(s,o)=>{typeof e[s]!="object"&&Object.getOwnPropertyDescriptor(e,s)?.writable&&(e[s]=o),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,i),i}};export{TA as Application};
|
|
5180
|
+
outputColor=vec4(color,inputColor.a);}`,np={DEFAULT:0,ESKIL:1},_A=class extends Ci{constructor({blendFunction:r=at.NORMAL,technique:e=np.DEFAULT,eskil:t=!1,offset:n=.5,darkness:i=.5}={}){super("VignetteEffect",Dz,{blendFunction:r,defines:new Map([["VIGNETTE_TECHNIQUE",e.toFixed(0)]]),uniforms:new Map([["offset",new we(n)],["darkness",new we(i)]])})}get technique(){return Number(this.defines.get("VIGNETTE_TECHNIQUE"))}set technique(r){this.technique!==r&&(this.defines.set("VIGNETTE_TECHNIQUE",r.toFixed(0)),this.setChanged())}get eskil(){return this.technique===np.ESKIL}set eskil(r){this.technique=r?np.ESKIL:np.DEFAULT}getTechnique(){return this.technique}setTechnique(r){this.technique=r}get offset(){return this.uniforms.get("offset").value}set offset(r){this.uniforms.get("offset").value=r}getOffset(){return this.offset}setOffset(r){this.offset=r}get darkness(){return this.uniforms.get("darkness").value}set darkness(r){this.uniforms.get("darkness").value=r}getDarkness(){return this.darkness}setDarkness(r){this.darkness=r}},wue=[new Float32Array(3),new Float32Array(3)],_ue=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Sue=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];var Aue=[new Float32Array(2),new Float32Array(2)];var Mue=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),Tue=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],Eue=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],Cue=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];var Due=new Map([[Fn(0,0,0,0),new Float32Array([0,0,0,0])],[Fn(0,0,0,1),new Float32Array([0,0,0,1])],[Fn(0,0,1,0),new Float32Array([0,0,1,0])],[Fn(0,0,1,1),new Float32Array([0,0,1,1])],[Fn(0,1,0,0),new Float32Array([0,1,0,0])],[Fn(0,1,0,1),new Float32Array([0,1,0,1])],[Fn(0,1,1,0),new Float32Array([0,1,1,0])],[Fn(0,1,1,1),new Float32Array([0,1,1,1])],[Fn(1,0,0,0),new Float32Array([1,0,0,0])],[Fn(1,0,0,1),new Float32Array([1,0,0,1])],[Fn(1,0,1,0),new Float32Array([1,0,1,0])],[Fn(1,0,1,1),new Float32Array([1,0,1,1])],[Fn(1,1,0,0),new Float32Array([1,1,0,0])],[Fn(1,1,0,1),new Float32Array([1,1,0,1])],[Fn(1,1,1,0),new Float32Array([1,1,1,0])],[Fn(1,1,1,1),new Float32Array([1,1,1,1])]]);function uy(r,e,t){return r+(e-r)*t}function Fn(r,e,t,n){let i=uy(r,e,.75),s=uy(t,n,1-.25);return uy(i,s,1-.125)}var en=class{constructor(e,t){this.enabled=!1;this.effect=new e(t),Object.defineProperty(this,"opacity",{enumerable:!0,set(n){this.effect.blendMode.opacity.value=n},get(){return this.effect.blendMode.opacity.value}}),Object.defineProperty(this,"blendFunction",{enumerable:!0,set(n){this.effect.blendMode.setBlendFunction(Number(n))},get(){return this.effect.blendMode.blendFunction}}),this.blendFunction=at.NORMAL}toJSON(){let e=["constructor","effect","subscriptions"],t={...this},n=Object.getPrototypeOf(this),i=Object.getOwnPropertyNames(n);for(let s of i){let o=Object.getOwnPropertyDescriptor(n,s);o&&typeof o.get=="function"&&(t[s]=this[s])}return e.forEach(s=>delete t[s]),t}};var Yl=class extends en{constructor(){super(fA),this.blendFunction=at.SCREEN}set intensity(e){this.effect.intensity=e}get intensity(){return this.effect.intensity}set luminanceThreshold(e){this.effect.luminanceMaterial.threshold=e}get luminanceThreshold(){return this.effect.luminanceMaterial.threshold}set luminanceSmoothing(e){this.effect.luminanceMaterial.smoothing=e}get luminanceSmoothing(){return this.effect.luminanceMaterial.smoothing}set blurScale(e){this.effect.blurPass.scale=e}get blurScale(){return this.effect.blurPass.scale}set kernelSize(e){this.effect.blurPass.kernelSize=e}get kernelSize(){return this.effect.blurPass.kernelSize}};var Ql=class extends en{constructor(){super(pA)}set contrast(e){this.effect.uniforms.get("contrast").value=e}get contrast(){return this.effect.uniforms.get("contrast").value}set brightness(e){this.effect.uniforms.get("brightness").value=e}get brightness(){return this.effect.uniforms.get("brightness").value}};var Zl=class extends en{constructor(){super(gA),this.effect.offset=new N(.01,.01)}set offset(e){this.effect.offset.set(e[0]/1e3,e[1]/1e3)}get offset(){return[this.effect.offset.x*1e3,this.effect.offset.y*1e3]}};var Kl=class extends en{constructor(){super(mA)}};var Jl=class extends en{constructor(){super(vA);this._hue=0}set hue(t){this._hue=t,this.effect.setHue(t)}get hue(){return this._hue}set saturation(t){this.effect.uniforms.get("saturation").value=t}get saturation(){return this.effect.uniforms.get("saturation").value}};var $l=class extends en{constructor(){super(xA),this.blendFunction=at.OVERLAY}};var ec=class extends en{constructor(){super(_A)}get eskil(){return this.effect.eskil}set eskil(e){this.effect.eskil=e}get darkness(){return this.effect.uniforms.get("darkness").value}set darkness(e){this.effect.uniforms.get("darkness").value=e}get offset(){return this.effect.uniforms.get("offset").value}set offset(e){this.effect.uniforms.get("offset").value=e}};var tc=class extends en{constructor(e){super(yA,e)}set focalLength(e){this.effect.circleOfConfusionMaterial.uniforms.focalLength.value=e}get focalLength(){return this.effect.circleOfConfusionMaterial.uniforms.focalLength.value}set focusDistance(e){this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value=e}get focusDistance(){return this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value}get bokehScale(){return this.effect.bokehScale}set bokehScale(e){this.effect.bokehScale=e}};var nc=class extends en{constructor(){super(bA)}get granularity(){return this.effect.getGranularity()}set granularity(e){this.effect.setGranularity(e)}};function SA(r,e){return e&&e.enabled&&r.push(e.effect),r}var Vu=class extends Rt{constructor(){super();this._scene=new lr;this._camera=new pr;this.effects=new Map;this.loadingManager=new yo;this.renderPass=new ku;this._renderToScreen=!0;this._hasSmaa=!1;this._helperPasses=[];this._areHelpersEnabled=!0;this.clock=new Rh,this.enabled=!1,this.debug=!1,this.effects.set("bloom",new Yl),this.effects.set("chromaticAberration",new Zl),this.effects.set("vignette",new ec),this.effects.set("noise",new $l),this.effects.set("colorAverage",new Kl),this.effects.set("hueSaturation",new Jl),this.effects.set("brightnessContrast",new Ql),this.effects.set("depthOfField",new tc),this.effects.set("pixelation",new nc)}get scene(){return this._scene}set scene(t){this._scene=t}get camera(){return this._camera}set camera(t){this._camera=t}disableHelpers(){this._areHelpersEnabled=!1,this._helperPasses.forEach(t=>t.enabled=!1)}enableHelpers(){this._areHelpersEnabled=!0,this._helperPasses.forEach(t=>t.enabled=!0)}_initSmaa(){if(!this.effectComposer)return;let t=this.effectComposer.passes.length,n=new wA({preset:Uo.ULTRA,edgeDetectionMode:rp.COLOR}),i=()=>{n.removeEventListener("load",i),this.dispatchEvent({type:"smaaloaded"})};n.addEventListener("load",i),n.edgeDetectionMaterial.predicationMode=fy.DEPTH,n.edgeDetectionMaterial.edgeDetectionThreshold=.05,n.edgeDetectionMaterial.predicationThreshold=.002,n.edgeDetectionMaterial.predicationScale=1,this.effectComposer.addPass(new ip(this.camera,n),t),this._hasSmaa=!0}_initPasses(){if(!this.effectComposer||!this.renderer)return;let t;this.effectComposer.removeAllPasses(),this._hasSmaa=!1,this.renderPass=new ku(this.scene,this.camera);let n,i;if(this.sceneHelpers&&(n=new ku(this.sceneHelpers,this.camera)),this.sceneHelpersOnTop&&(i=new ku(this.sceneHelpersOnTop,this.camera)),this.enabled){this.effectComposer.addPass(this.renderPass);let s=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(SA,[]),o=[this.effects.get("pixelation")].reduce(SA,[]);o.length>0&&this.effectComposer.addPass(new ip(this.camera,...o)),this.effectComposer.addPass(new ip(this.camera,...s))}else this.effectComposer.addPass(this.renderPass);if(this._helperPasses=[],n&&i&&(n.clear=!1,i.clear=!1,this._helperPasses.push(n,new Gu(!1,!0,!1),i)),this._helperPasses.forEach(s=>this.effectComposer.addPass(s)),this._areHelpersEnabled||this.disableHelpers(),this._initSmaa(),t)return t}reinit(){if(!this.renderer)return Promise.all([]);this.effectComposer=new dA(this.renderer),this._initPasses()}init({renderer:t,camera:n,scene:i,sceneHelpers:s,sceneHelpersOnTop:o}){this.renderer=t,this.scene=i,this.sceneHelpers=s,this.sceneHelpersOnTop=o,this.camera=n,this._initCopyPass(),this.reinit()}_initCopyPass(){if(this._savePass)return;let t=new N;this.renderer.getDrawingBufferSize(t),this._rt=new lt(t.x,t.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:aa,wrapT:aa}),this._rt.samples=0,this._savePass=new py(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(t){let n=this.effectComposer;!n||(t===!0?(n.removePass(this._savePass),n.passes[n.passes.length-1].renderToScreen=!0,n.autoRenderToScreen=!0):(n.autoRenderToScreen=!1,n.passes[n.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.enabled||(this._savePass.needsDepthTexture=!0),n.addPass(this._savePass)),this._renderToScreen=t)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}fromJSON(t){t&&(Object.keys(t).forEach(n=>{let i=t[n],s=this.effects.get(n);Object.keys(i).forEach(o=>{s[o]=i[o]})}),this.enabled=t.enabled)}toJSON(){let t={};return this.effects.forEach((n,i)=>{t[i]=n.toJSON()},t),{enabled:this.enabled,...t}}render(){this.effectComposer?.render(this.clock.getDelta())}setScissor(t,n,i,s){if(!this.effectComposer||!this.renderer)return;t instanceof Ve?(this.effectComposer.inputBuffer.scissor.set(t.x,t.y,t.z,t.w),this.effectComposer.outputBuffer.scissor.set(t.x,t.y,t.z,t.w)):(this.effectComposer.inputBuffer.scissor.set(t,n,i,s),this.effectComposer.outputBuffer.scissor.set(t,n,i,s));let o=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(o),this.effectComposer.outputBuffer.scissor.multiplyScalar(o),this.renderer.setScissor(t,n,i,s)}setScissorTest(t){!this.effectComposer||!this.renderer||(this.effectComposer.inputBuffer.scissorTest=t,this.effectComposer.outputBuffer.scissorTest=t,this.renderer.setScissorTest(t))}setViewport(t,n,i,s){!this.effectComposer||(t instanceof Ve?(this.effectComposer.inputBuffer.viewport.copy(t),this.effectComposer.outputBuffer.viewport.copy(t)):(this.effectComposer.inputBuffer.viewport.set(t,n,i,s),this.effectComposer.outputBuffer.viewport.set(t,n,i,s)))}resize(t,n,i){if(this.effectComposer?.setSize(t,n,i),this._rt){let s=this.renderer?.getPixelRatio()||window.devicePixelRatio;this._rt.setSize(t*s,n*s)}}dispose(){this._listeners=void 0,this.effectComposer?.dispose()}};var sp=class extends Uu{constructor(t,n){super(t,n);this.postprocessing=new Vu;this.initPostprocessing(t.postprocessing)}resetAfterClear(t,n){super.resetAfterClear(t,n),this.initPostprocessing(t.postprocessing)}initPostprocessing(t){let{enabled:n,...i}=t;for(let s of Object.entries(i)){let o=s[1],a=this.postprocessing.effects.get(s[0]);if(a){a.enabled=o.enabled;for(let[l,u]of Object.entries(o))a[l]=u}}this.postprocessing.enabled=n,this.postprocessing.reinit()}dispose(){super.dispose(),this.postprocessing.dispose()}switchActiveCamera(t){super.switchActiveCamera(t),this.postprocessing&&(this.postprocessing.camera=t)}};var op=class{constructor(e){this.sharedAssets=new Bu(e.shared),this.scene=new sp(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose()}};var ap=class{constructor({x:e=10,y:t=10}){this._startTime=0;let n=document.getElementById("spe-perfs");n?this.element=n:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let t=performance.now()-this._startTime;this.element.innerHTML=t.toFixed(3)+" ms"}};function Iz(r){let e;if(!!r.index)for(let t=0;t<r.index.array.length;t+=3)e=r.index.array[t],r.index.array[t]=r.index.array[t+2],r.index.array[t+2]=e}function gy(r){return r==="SubdivObject"||r==="NonParametric"?r:"Mesh"}function Lz(r,e){let t={};return r.traverseEntity(n=>{if(n.type!=="Mesh"||!("material"in n)||!n.visible||!(n instanceof Ot)||Array.isArray(n.material)||n&&n.interaction&&n.interaction.states.length>0)return;let i=n.parent;for(;i;){if(i instanceof Ot&&i.interaction&&i.interaction.states.length>1)return;i=i.parent}let s=n.material.uuid,o=e.shared.materials[s];if(o){if(!fr.isMergable(o))return}else{let u=e.scene.objects.get(n.uuid)?.data;if(u&&"material"in u&&typeof u.material!="string"){if(!fr.isMergable(u.material))return;s=fr.getHash(u.material)}}t[s]||(t[s]={});let l=t[s][gy(n.objectType)];if(l){if(l.push(n),n.cloner)for(let u of n.cloner.children)l.push(u)}else if(t[s][gy(n.objectType)]=[n],n.cloner)for(let u of n.cloner.children)t[s][gy(n.objectType)].push(u)}),t}function Oz(r){let e=0;return Object.values(r).forEach(t=>{Object.values(t).forEach(n=>{let i=n.length;i>e&&(e=i)})}),e}function AA(r,e){let t=Lz(e,r),n=Oz(t),i=new Array(n),s=0,o=new Array(n),a=0,l=new Array(n),u=0,c=new Array(n),h=0;for(let d of Object.values(t))for(let f of Object.values(d)){if(a=0,u=0,f.forEach(p=>{p instanceof Ot&&(o[a++]=p.geometry.clone(),l[u++]=p)}),u<2)continue;for(let p=0;p<u;p++)l[p].updateWorldMatrix(!0,!1),o[p].applyMatrix4(l[p].matrixWorld),l[p].matrixWorld.determinant()<0&&Iz(o[p]);let m=m_(o.slice(0,a),!1);if(m){let p;switch(f[0].objectType){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),p=new kt(m,l[0].material);break}default:{p=new kt(m,l[0].material);break}}p.castShadow=l[0].castShadow,p.receiveShadow=l[0].receiveShadow,e.add(p);let g=y=>{h=0;for(let x of y)x.children&&g(x.children),x instanceof Ot&&(Array.isArray(x.material)||t[x.material.uuid]&&t[x.material.uuid][x.objectType]&&t[x.material.uuid][x.objectType].length>1||(c[h++]=x));for(let x=0;x<h;x++)e.attach(c[x])};for(let y=0;y<u;y++){let x=l[y];g(x.children),i[s++]=x}}}for(let d=0;d<s;d++)i[d].removeFromParent()}var Rz=new N,MA="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.",TA=class{constructor(e,{autoRender:t=!1}={}){this._viewportMode=1;this._viewportWidth=window.innerWidth;this._viewportHeight=window.innerHeight;this._devicePixelRatio=window.devicePixelRatio;this._proxyObjectCache=new Map;this._skipRender=!0;this.autoRender=!1;this.disposed=!1;this.requestRender=()=>{this._skipRender=!1};this.render=()=>{!this._renderer||(this._rafId=requestAnimationFrame(this.render),this._perfs?.start(),!(!this.autoRender&&this._skipRender)&&(this._controls&&(this._controls.enableDamping||this._controls.autoRotate)?this._skipRender=!this._controls.update():this._skipRender=!0,this._playmode&&!this._playmode.isEnable&&this._playmode.activate(),this._scene&&this._camera&&(this._renderer.autoClear=!1,this._normalRenderTarget&&(this._renderer.setClearColor(0),this._renderer.setClearAlpha(0),this._camera.layers.enable(8),this._camera.layers.disable(0),this._camera.layers.disable(3),this._renderer.setRenderTarget(this._normalRenderTarget),this._renderer.clear(),this._scene.overrideMaterial=this._normalMaterial,this._renderer.render(this._scene,this._camera),this._renderer.setClearColor(this._scene.bgColor,this._scene.alpha),this._renderer.setRenderTarget(null),this._scene.overrideMaterial=null,this._camera.layers.enable(0),this._camera.layers.enable(3)),this._transmissionRenderTarget&&(this._renderer.setRenderTarget(this._transmissionRenderTarget),this._renderer.clear(),this._camera.layers.enable(0),this._camera.layers.disable(3),this._renderer.render(this._scene,this._camera),this._renderer.setRenderTarget(null),this._camera.layers.enable(3)),this._renderer.autoClear=!1,this._scene.postprocessing.render()),this._perfs?.end()))};this.resize=Uc(()=>{!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=Rz.set(this._viewportWidth,this._viewportHeight)),this._frameView?.updateRenderer(),this._scene?.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._sharedAssetsManager?.resolutionNode.value.set(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._normalRenderTarget?.setSize(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*window.devicePixelRatio),this._transmissionRenderTarget?.setSize(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._viewportMode!==1&&this._frameView?.updateViewport(),this._camera&&(this._frameView?.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),this._playmode?.resize(),this.requestRender())},10);this.canvas=e,this.autoRender=t,N0(),window.location.search.includes("perfs")&&(this._perfs=new ap({x:10,y:10}))}async load(e){e.endsWith(".spline")?console.warn(MA+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(MA);let n=await(await fetch(e)).arrayBuffer();await this.start(n)}async start(e){if(this.disposed)return;let t=await JS(e);d0(t)&&await DS();let n=new op(t);if(window.location.search.includes("merge-geometries")){let d=performance.now();AA(t,n.scene);let f=performance.now();console.log("Merged geometries in ",f-d," ms")}this._scene=n.scene,d0(t)&&this._scene.traverse(d=>{xt(d)&&d.recomputeBoolean()}),this._sharedAssetsManager=n.sharedAssets,this._sharedAssetsManager.onImageLoad=()=>{this.requestRender()},z1(t.scene,this._scene,this._sharedAssetsManager),this._camera=this._scene.activeCamera;let i=Object.values(t.frames)[0],s,o;if(i)if(i.preset==="fullscreen"){this._viewportMode=1;let{width:d,height:f}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(d==="300px"||d==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%",s=this.canvas.style.width):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(f==="150px"||f==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%",o=this.canvas.style.height):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=i.size[0],this._viewportHeight=i.size[1],s=this._viewportWidth+"px",o=this._viewportHeight+"px";this._renderer=new Um({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._scene.postprocessing.init({renderer:this._renderer,camera:this._camera,scene:this._scene}),this._scene.postprocessing.addEventListener("smaaloaded",this.requestRender),s&&(this.canvas.style.width=s),o&&(this.canvas.style.height=o),this._scene.needsTransmission(void 0)&&(this._transmissionRenderTarget=new lt(2048,2048,{generateMipmaps:!0,minFilter:gs,magFilter:et,wrapS:xn,wrapT:xn}),this._transmissionRenderTarget.depthTexture=new vr(2048,2048),this._scene.needsTransmission(this._transmissionRenderTarget)),this._scene.needsNormal(void 0)&&(this._normalRenderTarget=new lt(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio,{generateMipmaps:!1,minFilter:Ut,magFilter:Ut,type:gr}),this._normalMaterial=XS,this._normalRenderTarget.depthTexture=new vr(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._scene.needsNormal(this._normalRenderTarget)),this._renderer.setPixelRatio(this._devicePixelRatio),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._scene.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=t.scene.environment.ambientLight.softShadows?Vh:Nm,qS(t.scene.environment.ambientLight.softShadowQuality),this._renderer.setClearColor(this._scene.bgColor,this._scene.alpha),this._frameView=new $f(this._renderer,this._camera,new N(this._viewportWidth,this._viewportHeight),new N(window.innerWidth,window.innerHeight)),this._publishData=t.scene.publish;let{enableRotate:a,enablePan:l,enableZoom:u,autoRotate:c,hoverRotatePanMode:h}=this._publishData.orbitControls;if((a||l||u||c||h!==0)&&(this._camera.interaction===void 0||this._camera.interaction.states.length<=1)&&(this._controls=new ef(this._camera,this._renderer.domElement),this._controls.fromJSON(this._publishData.orbitControls),this._controls.useKeyEvents=!1,this._controls.addEventListener("change",this.requestRender),this._controls.addEventListener("start",this.requestRender)),this._playmode=new Jf(this._renderer,this._scene,this._camera,this._publishData.stopRaycast,this),this._sharedAssetsManager.resolutionNode.value.set(this._viewportWidth*this._devicePixelRatio,this._viewportHeight*this._devicePixelRatio),this._sharedAssetsManager.pixelRatioNode.value=this._devicePixelRatio,this.resize(),this.render(),this.canvas.parentElement){let d=!0;this._resizeObserver=new ResizeObserver(()=>{if(d){d=!1;return}this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this.resize()}),this._resizeObserver.observe(this.canvas.parentElement)}}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){return this._playmode?.splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this._renderer?.domElement.addEventListener(e,t)}removeEventListener(e,t){this._renderer?.domElement.removeEventListener(e,t)}setZoom(e){this._controls?.zoomOut(e)}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this.resize()}dispose(){this.disposed=!0,this._playmode?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(e=>{Km.unsubscribe(e)}),this._renderer?.dispose(),this._transmissionRenderTarget?.dispose(),this._transmissionRenderTarget?.depthTexture?.dispose(),this._normalRenderTarget?.dispose(),this._normalRenderTarget?.depthTexture?.dispose(),this._sharedAssetsManager?.dispose(),this._resizeObserver&&this._resizeObserver.disconnect(),this.canvas.style.width="",this.canvas.style.height=""}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let{requestRender:t}=this,n={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(s){e.interaction?.emitEvent(s,t)},emitEventReverse(s){e.interaction?.emitEventReverse(s,t)}},i=Km(n,(s,o)=>{typeof e[s]!="object"&&Object.getOwnPropertyDescriptor(e,s)?.writable&&(e[s]=o),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,i),i}};export{TA as Application};
|