@splinetool/runtime 0.9.112 → 0.9.113
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/physics.js +2 -2
- package/build/runtime.cjs +1 -1
- package/build/runtime.js +1 -1
- package/package.json +1 -1
package/build/runtime.cjs
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 _L(r,e,t){let n=new vu,i=new N,s=new N,o=new Ve,a=new xu({depthPacking:_y}),l=new $g,u={},c=t.maxTextureSize,h={0:cn,1:Br,2:un},d=new ft({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new N},radius:{value:4}},vertexShader:SL,fragmentShader:AL}),f=d.clone();f.defines.HORIZONTAL_PASS=1;let p=new Ie;p.setAttribute("position",new Ge(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new jt(p,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=cf,this.render=function(b,S,_){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||b.length===0)return;let M=r.getRenderTarget(),x=r.getActiveCubeFace(),T=r.getActiveMipmapLevel(),E=r.state;E.setBlending(Ot),E.buffers.color.setClear(1,1,1,1),E.buffers.depth.setTest(!0),E.setScissorTest(!1);for(let C=0,D=b.length;C<D;C++){let I=b[C],R=I.shadow;if(R===void 0){console.warn("THREE.WebGLShadowMap:",I,"has no shadow.");continue}if(R.autoUpdate===!1&&R.needsUpdate===!1)continue;i.copy(R.mapSize);let F=R.getFrameExtents();if(i.multiply(F),s.copy(R.mapSize),(i.x>c||i.y>c)&&(i.x>c&&(s.x=Math.floor(c/F.x),i.x=s.x*F.x,R.mapSize.x=s.x),i.y>c&&(s.y=Math.floor(c/F.y),i.y=s.y*F.y,R.mapSize.y=s.y)),R.map===null){let X=this.type!==lu?{minFilter:Ft,magFilter:Ft}:{};R.map=new ut(i.x,i.y,X),R.map.texture.name=I.name+".shadowMap",R.camera.updateProjectionMatrix()}r.setRenderTarget(R.map),r.clear();let B=R.getViewportCount();for(let X=0;X<B;X++){let Y=R.getViewport(X);o.set(s.x*Y.x,s.y*Y.y,s.x*Y.z,s.y*Y.w),E.viewport(o),R.updateMatrices(I,X),n=R.getFrustum(),w(S,_,R.camera,I,this.type)}R.isPointLightShadow!==!0&&this.type===lu&&y(R,_),R.needsUpdate=!1}g.needsUpdate=!1,r.setRenderTarget(M,x,T)};function y(b,S){let _=e.update(m);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 ut(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(S,null,_,d,m,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(S,null,_,f,m,null)}function v(b,S,_,M,x,T){let E=null,C=_.isPointLight===!0?b.customDistanceMaterial:b.customDepthMaterial;if(C!==void 0?E=C:E=_.isPointLight===!0?l:a,r.localClippingEnabled&&S.clipShadows===!0&&Array.isArray(S.clippingPlanes)&&S.clippingPlanes.length!==0||S.displacementMap&&S.displacementScale!==0||S.alphaMap&&S.alphaTest>0){let D=E.uuid,I=S.uuid,R=u[D];R===void 0&&(R={},u[D]=R);let F=R[I];F===void 0&&(F=E.clone(),R[I]=F),E=F}return E.visible=S.visible,E.wireframe=S.wireframe,T===lu?E.side=S.shadowSide!==null?S.shadowSide:S.side:E.side=S.shadowSide!==null?S.shadowSide:h[S.side],E.alphaMap=S.alphaMap,E.alphaTest=S.alphaTest,E.clipShadows=S.clipShadows,E.clippingPlanes=S.clippingPlanes,E.clipIntersection=S.clipIntersection,E.displacementMap=S.displacementMap,E.displacementScale=S.displacementScale,E.displacementBias=S.displacementBias,E.wireframeLinewidth=S.wireframeLinewidth,E.linewidth=S.linewidth,_.isPointLight===!0&&E.isMeshDistanceMaterial===!0&&(E.referencePosition.setFromMatrixPosition(_.matrixWorld),E.nearDistance=M,E.farDistance=x),E}function w(b,S,_,M,x){if(b.visible===!1)return;if(b.layers.test(S.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&x===lu)&&(!b.frustumCulled||n.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(_.matrixWorldInverse,b.matrixWorld);let C=e.update(b),D=b.material;if(Array.isArray(D)){let I=C.groups;for(let R=0,F=I.length;R<F;R++){let B=I[R],X=D[B.materialIndex];if(X&&X.visible){let Y=v(b,X,M,_.near,_.far,x);r.renderBufferDirect(_,null,C,Y,b,B)}}}else if(D.visible){let I=v(b,D,M,_.near,_.far,x);r.renderBufferDirect(_,null,C,I,b,null)}}let E=b.children;for(let C=0,D=E.length;C<D;C++)w(E[C],S,_,M,x)}}function ML(r,e,t){let n=t.isWebGL2;function i(){let k=!1,xe=new Ve,Ae=null,Ye=new Ve(0,0,0,0);return{setMask:function(Re){Ae!==Re&&!k&&(r.colorMask(Re,Re,Re,Re),Ae=Re)},setLocked:function(Re){k=Re},setClear:function(Re,Qe,be,Ze,et){et===!0&&(Re*=Ze,Qe*=Ze,be*=Ze),xe.set(Re,Qe,be,Ze),Ye.equals(xe)===!1&&(r.clearColor(Re,Qe,be,Ze),Ye.copy(xe))},reset:function(){k=!1,Ae=null,Ye.set(-1,0,0,0)}}}function s(){let k=!1,xe=null,Ae=null,Ye=null;return{setTest:function(Re){Re?Q(2929):q(2929)},setMask:function(Re){xe!==Re&&!k&&(r.depthMask(Re),xe=Re)},setFunc:function(Re){if(Ae!==Re){if(Re)switch(Re){case eC:r.depthFunc(512);break;case tC:r.depthFunc(519);break;case nC:r.depthFunc(513);break;case Fg:r.depthFunc(515);break;case rC:r.depthFunc(514);break;case iC:r.depthFunc(518);break;case sC:r.depthFunc(516);break;case oC:r.depthFunc(517);break;default:r.depthFunc(515)}else r.depthFunc(515);Ae=Re}},setLocked:function(Re){k=Re},setClear:function(Re){Ye!==Re&&(r.clearDepth(Re),Ye=Re)},reset:function(){k=!1,xe=null,Ae=null,Ye=null}}}function o(){let k=!1,xe=null,Ae=null,Ye=null,Re=null,Qe=null,be=null,Ze=null,et=null;return{setTest:function(mt){k||(mt?Q(2960):q(2960))},setMask:function(mt){xe!==mt&&!k&&(r.stencilMask(mt),xe=mt)},setFunc:function(mt,St,cr){(Ae!==mt||Ye!==St||Re!==cr)&&(r.stencilFunc(mt,St,cr),Ae=mt,Ye=St,Re=cr)},setOp:function(mt,St,cr){(Qe!==mt||be!==St||Ze!==cr)&&(r.stencilOp(mt,St,cr),Qe=mt,be=St,Ze=cr)},setLocked:function(mt){k=mt},setClear:function(mt){et!==mt&&(r.clearStencil(mt),et=mt)},reset:function(){k=!1,xe=null,Ae=null,Ye=null,Re=null,Qe=null,be=null,Ze=null,et=null}}}let a=new i,l=new s,u=new o,c={},h={},d=new WeakMap,f=[],p=null,m=!1,g=null,y=null,v=null,w=null,b=null,S=null,_=null,M=!1,x=null,T=null,E=null,C=null,D=null,I=r.getParameter(35661),R=!1,F=0,B=r.getParameter(7938);B.indexOf("WebGL")!==-1?(F=parseFloat(/^WebGL (\d)/.exec(B)[1]),R=F>=1):B.indexOf("OpenGL ES")!==-1&&(F=parseFloat(/^OpenGL ES (\d)/.exec(B)[1]),R=F>=2);let X=null,Y={},G=r.getParameter(3088),z=r.getParameter(2978),V=new Ve().fromArray(G),U=new Ve().fromArray(z);function H(k,xe,Ae){let Ye=new Uint8Array(4),Re=r.createTexture();r.bindTexture(k,Re),r.texParameteri(k,10241,9728),r.texParameteri(k,10240,9728);for(let Qe=0;Qe<Ae;Qe++)r.texImage2D(xe+Qe,0,6408,1,1,0,6408,5121,Ye);return Re}let j={};j[3553]=H(3553,3553,1),j[34067]=H(34067,34069,6),a.setClear(0,0,0,1),l.setClear(1),u.setClear(0),Q(2929),l.setFunc(Fg),de(!1),ge(Ex),Q(2884),ce(Ot);function Q(k){c[k]!==!0&&(r.enable(k),c[k]=!0)}function q(k){c[k]!==!1&&(r.disable(k),c[k]=!1)}function ae(k,xe){return h[k]!==xe?(r.bindFramebuffer(k,xe),h[k]=xe,n&&(k===36009&&(h[36160]=xe),k===36160&&(h[36009]=xe)),!0):!1}function $(k,xe){let Ae=f,Ye=!1;if(k)if(Ae=d.get(xe),Ae===void 0&&(Ae=[],d.set(xe,Ae)),k.isWebGLMultipleRenderTargets){let Re=k.texture;if(Ae.length!==Re.length||Ae[0]!==36064){for(let Qe=0,be=Re.length;Qe<be;Qe++)Ae[Qe]=36064+Qe;Ae.length=Re.length,Ye=!0}}else Ae[0]!==36064&&(Ae[0]=36064,Ye=!0);else Ae[0]!==1029&&(Ae[0]=1029,Ye=!0);Ye&&(t.isWebGL2?r.drawBuffers(Ae):e.get("WEBGL_draw_buffers").drawBuffersWEBGL(Ae))}function te(k){return p!==k?(r.useProgram(k),p=k,!0):!1}let W={[Va]:32774,[HE]:32778,[WE]:32779};if(n)W[Ix]=32775,W[Lx]=32776;else{let k=e.get("EXT_blend_minmax");k!==null&&(W[Ix]=k.MIN_EXT,W[Lx]=k.MAX_EXT)}let le={[jE]:0,[qE]:1,[XE]:768,[sw]:770,[$E]:776,[KE]:774,[QE]:772,[YE]:769,[ow]:771,[JE]:775,[ZE]:773};function ce(k,xe,Ae,Ye,Re,Qe,be,Ze){if(k===Ot){m===!0&&(q(3042),m=!1);return}if(m===!1&&(Q(3042),m=!0),k!==VE){if(k!==g||Ze!==M){if((y!==Va||b!==Va)&&(r.blendEquation(32774),y=Va,b=Va),Ze)switch(k){case Rs:r.blendFuncSeparate(1,771,1,771);break;case Cx:r.blendFunc(1,1);break;case Px:r.blendFuncSeparate(0,769,0,1);break;case Dx:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}else switch(k){case Rs:r.blendFuncSeparate(770,771,1,771);break;case Cx:r.blendFunc(770,1);break;case Px:r.blendFuncSeparate(0,769,0,1);break;case Dx:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}v=null,w=null,S=null,_=null,g=k,M=Ze}return}Re=Re||xe,Qe=Qe||Ae,be=be||Ye,(xe!==y||Re!==b)&&(r.blendEquationSeparate(W[xe],W[Re]),y=xe,b=Re),(Ae!==v||Ye!==w||Qe!==S||be!==_)&&(r.blendFuncSeparate(le[Ae],le[Ye],le[Qe],le[be]),v=Ae,w=Ye,S=Qe,_=be),g=k,M=null}function oe(k,xe){k.side===un?q(2884):Q(2884);let Ae=k.side===cn;xe&&(Ae=!Ae),de(Ae),k.blending===Rs&&k.transparent===!1?ce(Ot):ce(k.blending,k.blendEquation,k.blendSrc,k.blendDst,k.blendEquationAlpha,k.blendSrcAlpha,k.blendDstAlpha,k.premultipliedAlpha),l.setFunc(k.depthFunc),l.setTest(k.depthTest),l.setMask(k.depthWrite),a.setMask(k.colorWrite);let Ye=k.stencilWrite;u.setTest(Ye),Ye&&(u.setMask(k.stencilWriteMask),u.setFunc(k.stencilFunc,k.stencilRef,k.stencilFuncMask),u.setOp(k.stencilFail,k.stencilZFail,k.stencilZPass)),Ee(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits),k.alphaToCoverage===!0?Q(32926):q(32926)}function de(k){x!==k&&(k?r.frontFace(2304):r.frontFace(2305),x=k)}function ge(k){k!==zE?(Q(2884),k!==T&&(k===Ex?r.cullFace(1029):k===GE?r.cullFace(1028):r.cullFace(1032))):q(2884),T=k}function fe(k){k!==E&&(R&&r.lineWidth(k),E=k)}function Ee(k,xe,Ae){k?(Q(32823),(C!==xe||D!==Ae)&&(r.polygonOffset(xe,Ae),C=xe,D=Ae)):q(32823)}function Pe(k){k?Q(3089):q(3089)}function ye(k){k===void 0&&(k=33984+I-1),X!==k&&(r.activeTexture(k),X=k)}function Oe(k,xe){X===null&&ye();let Ae=Y[X];Ae===void 0&&(Ae={type:void 0,texture:void 0},Y[X]=Ae),(Ae.type!==k||Ae.texture!==xe)&&(r.bindTexture(k,xe||j[k]),Ae.type=k,Ae.texture=xe)}function pt(){let k=Y[X];k!==void 0&&k.type!==void 0&&(r.bindTexture(k.type,null),k.type=void 0,k.texture=void 0)}function L(){try{r.compressedTexImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function P(){try{r.texSubImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function K(){try{r.texSubImage3D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function he(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function pe(){try{r.texStorage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Ce(){try{r.texStorage3D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Fe(){try{r.texImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function re(){try{r.texImage3D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Be(k){V.equals(k)===!1&&(r.scissor(k.x,k.y,k.z,k.w),V.copy(k))}function Le(k){U.equals(k)===!1&&(r.viewport(k.x,k.y,k.z,k.w),U.copy(k))}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={},X=null,Y={},h={},d=new WeakMap,f=[],p=null,m=!1,g=null,y=null,v=null,w=null,b=null,S=null,_=null,M=!1,x=null,T=null,E=null,C=null,D=null,V.set(0,0,r.canvas.width,r.canvas.height),U.set(0,0,r.canvas.width,r.canvas.height),a.reset(),l.reset(),u.reset()}return{buffers:{color:a,depth:l,stencil:u},enable:Q,disable:q,bindFramebuffer:ae,drawBuffers:$,useProgram:te,setBlending:ce,setMaterial:oe,setFlipSided:de,setCullFace:ge,setLineWidth:fe,setPolygonOffset:Ee,setScissorTest:Pe,activeTexture:ye,bindTexture:Oe,unbindTexture:pt,compressedTexImage2D:L,texImage2D:Fe,texImage3D:re,texStorage2D:pe,texStorage3D:Ce,texSubImage2D:P,texSubImage3D:K,compressedTexSubImage2D:he,scissor:Be,viewport:Le,reset:ve}}function TL(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),p=new WeakMap,m,g=new WeakMap,y=!1;try{y=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function v(L,P){return y?new OffscreenCanvas(L,P):Wd("canvas")}function w(L,P,K,he){let pe=1;if((L.width>he||L.height>he)&&(pe=he/Math.max(L.width,L.height)),pe<1||P===!0)if(typeof HTMLImageElement<"u"&&L instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&L instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&L instanceof ImageBitmap){let Ce=P?Hd:Math.floor,Fe=Ce(pe*L.width),re=Ce(pe*L.height);m===void 0&&(m=v(Fe,re));let Be=K?v(Fe,re):m;return Be.width=Fe,Be.height=re,Be.getContext("2d").drawImage(L,0,0,Fe,re),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+L.width+"x"+L.height+") to ("+Fe+"x"+re+")."),Be}else return"data"in L&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+L.width+"x"+L.height+")."),L;return L}function b(L){return Hg(L.width)&&Hg(L.height)}function S(L){return a?!1:L.wrapS!==Jn||L.wrapT!==Jn||L.minFilter!==Ft&&L.minFilter!==rt}function _(L,P){return L.generateMipmaps&&P&&L.minFilter!==Ft&&L.minFilter!==rt}function M(L){r.generateMipmap(L)}function x(L,P,K,he,pe=!1){if(a===!1)return P;if(L!==null){if(r[L]!==void 0)return r[L];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+L+"'")}let Ce=P;return P===6403&&(K===5126&&(Ce=33326),K===5131&&(Ce=33325),K===5121&&(Ce=33321)),P===33319&&(K===5126&&(Ce=33328),K===5131&&(Ce=33327),K===5121&&(Ce=33323)),P===6408&&(K===5126&&(Ce=34836),K===5131&&(Ce=34842),K===5121&&(Ce=he===qe&&pe===!1?35907:32856),K===32819&&(Ce=32854),K===32820&&(Ce=32855)),(Ce===33325||Ce===33326||Ce===33327||Ce===33328||Ce===34842||Ce===34836)&&e.get("EXT_color_buffer_float"),Ce}function T(L,P,K){return _(L,K)===!0||L.isFramebufferTexture&&L.minFilter!==Ft&&L.minFilter!==rt?Math.log2(Math.max(P.width,P.height))+1:L.mipmaps!==void 0&&L.mipmaps.length>0?L.mipmaps.length:L.isCompressedTexture&&Array.isArray(L.image)?P.mipmaps.length:1}function E(L){return L===Ft||L===Rx||L===Ox?9728:9729}function C(L){let P=L.target;P.removeEventListener("dispose",C),I(P),P.isVideoTexture&&p.delete(P)}function D(L){let P=L.target;P.removeEventListener("dispose",D),F(P)}function I(L){let P=n.get(L);if(P.__webglInit===void 0)return;let K=L.source,he=g.get(K);if(he){let pe=he[P.__cacheKey];pe.usedTimes--,pe.usedTimes===0&&R(L),Object.keys(he).length===0&&g.delete(K)}n.remove(L)}function R(L){let P=n.get(L);r.deleteTexture(P.__webglTexture);let K=L.source,he=g.get(K);delete he[P.__cacheKey],o.memory.textures--}function F(L){let P=L.texture,K=n.get(L),he=n.get(P);if(he.__webglTexture!==void 0&&(r.deleteTexture(he.__webglTexture),o.memory.textures--),L.depthTexture&&L.depthTexture.dispose(),L.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(L.isWebGLMultipleRenderTargets)for(let pe=0,Ce=P.length;pe<Ce;pe++){let Fe=n.get(P[pe]);Fe.__webglTexture&&(r.deleteTexture(Fe.__webglTexture),o.memory.textures--),n.remove(P[pe])}n.remove(P),n.remove(L)}let B=0;function X(){B=0}function Y(){let L=B;return L>=l&&console.warn("THREE.WebGLTextures: Trying to use "+L+" texture units while this GPU supports only "+l),B+=1,L}function G(L){let P=[];return P.push(L.wrapS),P.push(L.wrapT),P.push(L.magFilter),P.push(L.minFilter),P.push(L.anisotropy),P.push(L.internalFormat),P.push(L.format),P.push(L.type),P.push(L.generateMipmaps),P.push(L.premultiplyAlpha),P.push(L.flipY),P.push(L.unpackAlignment),P.push(L.encoding),P.join()}function z(L,P){let K=n.get(L);if(L.isVideoTexture&&Oe(L),L.isRenderTargetTexture===!1&&L.version>0&&K.__version!==L.version){let he=L.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,L,P);return}}t.activeTexture(33984+P),t.bindTexture(3553,K.__webglTexture)}function V(L,P){let K=n.get(L);if(L.version>0&&K.__version!==L.version){$(K,L,P);return}t.activeTexture(33984+P),t.bindTexture(35866,K.__webglTexture)}function U(L,P){let K=n.get(L);if(L.version>0&&K.__version!==L.version){$(K,L,P);return}t.activeTexture(33984+P),t.bindTexture(32879,K.__webglTexture)}function H(L,P){let K=n.get(L);if(L.version>0&&K.__version!==L.version){te(K,L,P);return}t.activeTexture(33984+P),t.bindTexture(34067,K.__webglTexture)}let j={[qa]:10497,[Jn]:33071,[Gg]:33648},Q={[Ft]:9728,[Rx]:9984,[Ox]:9986,[rt]:9729,[pC]:9985,[ul]:9987};function q(L,P,K){if(K?(r.texParameteri(L,10242,j[P.wrapS]),r.texParameteri(L,10243,j[P.wrapT]),(L===32879||L===35866)&&r.texParameteri(L,32882,j[P.wrapR]),r.texParameteri(L,10240,Q[P.magFilter]),r.texParameteri(L,10241,Q[P.minFilter])):(r.texParameteri(L,10242,33071),r.texParameteri(L,10243,33071),(L===32879||L===35866)&&r.texParameteri(L,32882,33071),(P.wrapS!==Jn||P.wrapT!==Jn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(L,10240,E(P.magFilter)),r.texParameteri(L,10241,E(P.minFilter)),P.minFilter!==Ft&&P.minFilter!==rt&&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(P.type===_i&&e.has("OES_texture_float_linear")===!1||a===!1&&P.type===mu&&e.has("OES_texture_half_float_linear")===!1)return;(P.anisotropy>1||n.get(P).__currentAnisotropy)&&(r.texParameterf(L,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(P.anisotropy,i.getMaxAnisotropy())),n.get(P).__currentAnisotropy=P.anisotropy)}}function ae(L,P){let K=!1;L.__webglInit===void 0&&(L.__webglInit=!0,P.addEventListener("dispose",C));let he=P.source,pe=g.get(he);pe===void 0&&(pe={},g.set(he,pe));let Ce=G(P);if(Ce!==L.__cacheKey){pe[Ce]===void 0&&(pe[Ce]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,K=!0),pe[Ce].usedTimes++;let Fe=pe[L.__cacheKey];Fe!==void 0&&(pe[L.__cacheKey].usedTimes--,Fe.usedTimes===0&&R(P)),L.__cacheKey=Ce,L.__webglTexture=pe[Ce].texture}return K}function $(L,P,K){let he=3553;P.isDataArrayTexture&&(he=35866),P.isData3DTexture&&(he=32879);let pe=ae(L,P),Ce=P.source;if(t.activeTexture(33984+K),t.bindTexture(he,L.__webglTexture),Ce.version!==Ce.__currentVersion||pe===!0){r.pixelStorei(37440,P.flipY),r.pixelStorei(37441,P.premultiplyAlpha),r.pixelStorei(3317,P.unpackAlignment),r.pixelStorei(37443,0);let Fe=S(P)&&b(P.image)===!1,re=w(P.image,Fe,!1,c);re=pt(P,re);let Be=b(re)||a,Le=s.convert(P.format,P.encoding),ve=s.convert(P.type),k=x(P.internalFormat,Le,ve,P.encoding,P.isVideoTexture);q(he,P,Be);let xe,Ae=P.mipmaps,Ye=a&&P.isVideoTexture!==!0,Re=Ce.__currentVersion===void 0||pe===!0,Qe=T(P,re,Be);if(P.isDepthTexture)k=6402,a?P.type===_i?k=36012:P.type===as?k=33190:P.type===Os?k=35056:k=33189:P.type===_i&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),P.format===Oo&&k===6402&&P.type!==cw&&P.type!==as&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),P.type=as,ve=s.convert(P.type)),P.format===Us&&k===6402&&(k=34041,P.type!==Os&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),P.type=Os,ve=s.convert(P.type))),Re&&(Ye?t.texStorage2D(3553,1,k,re.width,re.height):t.texImage2D(3553,0,k,re.width,re.height,0,Le,ve,null));else if(P.isDataTexture)if(Ae.length>0&&Be){Ye&&Re&&t.texStorage2D(3553,Qe,k,Ae[0].width,Ae[0].height);for(let be=0,Ze=Ae.length;be<Ze;be++)xe=Ae[be],Ye?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Le,ve,xe.data):t.texImage2D(3553,be,k,xe.width,xe.height,0,Le,ve,xe.data);P.generateMipmaps=!1}else Ye?(Re&&t.texStorage2D(3553,Qe,k,re.width,re.height),t.texSubImage2D(3553,0,0,0,re.width,re.height,Le,ve,re.data)):t.texImage2D(3553,0,k,re.width,re.height,0,Le,ve,re.data);else if(P.isCompressedTexture){Ye&&Re&&t.texStorage2D(3553,Qe,k,Ae[0].width,Ae[0].height);for(let be=0,Ze=Ae.length;be<Ze;be++)xe=Ae[be],P.format!==ni?Le!==null?Ye?t.compressedTexSubImage2D(3553,be,0,0,xe.width,xe.height,Le,xe.data):t.compressedTexImage2D(3553,be,k,xe.width,xe.height,0,xe.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ye?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Le,ve,xe.data):t.texImage2D(3553,be,k,xe.width,xe.height,0,Le,ve,xe.data)}else if(P.isDataArrayTexture)Ye?(Re&&t.texStorage3D(35866,Qe,k,re.width,re.height,re.depth),t.texSubImage3D(35866,0,0,0,0,re.width,re.height,re.depth,Le,ve,re.data)):t.texImage3D(35866,0,k,re.width,re.height,re.depth,0,Le,ve,re.data);else if(P.isData3DTexture)Ye?(Re&&t.texStorage3D(32879,Qe,k,re.width,re.height,re.depth),t.texSubImage3D(32879,0,0,0,0,re.width,re.height,re.depth,Le,ve,re.data)):t.texImage3D(32879,0,k,re.width,re.height,re.depth,0,Le,ve,re.data);else if(P.isFramebufferTexture){if(Re)if(Ye)t.texStorage2D(3553,Qe,k,re.width,re.height);else{let be=re.width,Ze=re.height;for(let et=0;et<Qe;et++)t.texImage2D(3553,et,k,be,Ze,0,Le,ve,null),be>>=1,Ze>>=1}}else if(Ae.length>0&&Be){Ye&&Re&&t.texStorage2D(3553,Qe,k,Ae[0].width,Ae[0].height);for(let be=0,Ze=Ae.length;be<Ze;be++)xe=Ae[be],Ye?t.texSubImage2D(3553,be,0,0,Le,ve,xe):t.texImage2D(3553,be,k,Le,ve,xe);P.generateMipmaps=!1}else Ye?(Re&&t.texStorage2D(3553,Qe,k,re.width,re.height),t.texSubImage2D(3553,0,0,0,Le,ve,re)):t.texImage2D(3553,0,k,Le,ve,re);_(P,Be)&&M(he),Ce.__currentVersion=Ce.version,P.onUpdate&&P.onUpdate(P)}L.__version=P.version}function te(L,P,K){if(P.image.length!==6)return;let he=ae(L,P),pe=P.source;if(t.activeTexture(33984+K),t.bindTexture(34067,L.__webglTexture),pe.version!==pe.__currentVersion||he===!0){r.pixelStorei(37440,P.flipY),r.pixelStorei(37441,P.premultiplyAlpha),r.pixelStorei(3317,P.unpackAlignment),r.pixelStorei(37443,0);let Ce=P.isCompressedTexture||P.image[0].isCompressedTexture,Fe=P.image[0]&&P.image[0].isDataTexture,re=[];for(let be=0;be<6;be++)!Ce&&!Fe?re[be]=w(P.image[be],!1,!0,u):re[be]=Fe?P.image[be].image:P.image[be],re[be]=pt(P,re[be]);let Be=re[0],Le=b(Be)||a,ve=s.convert(P.format,P.encoding),k=s.convert(P.type),xe=x(P.internalFormat,ve,k,P.encoding),Ae=a&&P.isVideoTexture!==!0,Ye=pe.__currentVersion===void 0||he===!0,Re=T(P,Be,Le);q(34067,P,Le);let Qe;if(Ce){Ae&&Ye&&t.texStorage2D(34067,Re,xe,Be.width,Be.height);for(let be=0;be<6;be++){Qe=re[be].mipmaps;for(let Ze=0;Ze<Qe.length;Ze++){let et=Qe[Ze];P.format!==ni?ve!==null?Ae?t.compressedTexSubImage2D(34069+be,Ze,0,0,et.width,et.height,ve,et.data):t.compressedTexImage2D(34069+be,Ze,xe,et.width,et.height,0,et.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Ae?t.texSubImage2D(34069+be,Ze,0,0,et.width,et.height,ve,k,et.data):t.texImage2D(34069+be,Ze,xe,et.width,et.height,0,ve,k,et.data)}}}else{Qe=P.mipmaps,Ae&&Ye&&(Qe.length>0&&Re++,t.texStorage2D(34067,Re,xe,re[0].width,re[0].height));for(let be=0;be<6;be++)if(Fe){Ae?t.texSubImage2D(34069+be,0,0,0,re[be].width,re[be].height,ve,k,re[be].data):t.texImage2D(34069+be,0,xe,re[be].width,re[be].height,0,ve,k,re[be].data);for(let Ze=0;Ze<Qe.length;Ze++){let mt=Qe[Ze].image[be].image;Ae?t.texSubImage2D(34069+be,Ze+1,0,0,mt.width,mt.height,ve,k,mt.data):t.texImage2D(34069+be,Ze+1,xe,mt.width,mt.height,0,ve,k,mt.data)}}else{Ae?t.texSubImage2D(34069+be,0,0,0,ve,k,re[be]):t.texImage2D(34069+be,0,xe,ve,k,re[be]);for(let Ze=0;Ze<Qe.length;Ze++){let et=Qe[Ze];Ae?t.texSubImage2D(34069+be,Ze+1,0,0,ve,k,et.image[be]):t.texImage2D(34069+be,Ze+1,xe,ve,k,et.image[be])}}}_(P,Le)&&M(34067),pe.__currentVersion=pe.version,P.onUpdate&&P.onUpdate(P)}L.__version=P.version}function W(L,P,K,he,pe){let Ce=s.convert(K.format,K.encoding),Fe=s.convert(K.type),re=x(K.internalFormat,Ce,Fe,K.encoding);n.get(P).__hasExternalTextures||(pe===32879||pe===35866?t.texImage3D(pe,0,re,P.width,P.height,P.depth,0,Ce,Fe,null):t.texImage2D(pe,0,re,P.width,P.height,0,Ce,Fe,null)),t.bindFramebuffer(36160,L),ye(P)?d.framebufferTexture2DMultisampleEXT(36160,he,pe,n.get(K).__webglTexture,0,Pe(P)):r.framebufferTexture2D(36160,he,pe,n.get(K).__webglTexture,0),t.bindFramebuffer(36160,null)}function le(L,P,K){if(r.bindRenderbuffer(36161,L),P.depthBuffer&&!P.stencilBuffer){let he=33189;if(K||ye(P)){let pe=P.depthTexture;pe&&pe.isDepthTexture&&(pe.type===_i?he=36012:pe.type===as&&(he=33190));let Ce=Pe(P);ye(P)?d.renderbufferStorageMultisampleEXT(36161,Ce,he,P.width,P.height):r.renderbufferStorageMultisample(36161,Ce,he,P.width,P.height)}else r.renderbufferStorage(36161,he,P.width,P.height);r.framebufferRenderbuffer(36160,36096,36161,L)}else if(P.depthBuffer&&P.stencilBuffer){let he=Pe(P);K&&ye(P)===!1?r.renderbufferStorageMultisample(36161,he,35056,P.width,P.height):ye(P)?d.renderbufferStorageMultisampleEXT(36161,he,35056,P.width,P.height):r.renderbufferStorage(36161,34041,P.width,P.height),r.framebufferRenderbuffer(36160,33306,36161,L)}else{let he=P.isWebGLMultipleRenderTargets===!0?P.texture:[P.texture];for(let pe=0;pe<he.length;pe++){let Ce=he[pe],Fe=s.convert(Ce.format,Ce.encoding),re=s.convert(Ce.type),Be=x(Ce.internalFormat,Fe,re,Ce.encoding),Le=Pe(P);K&&ye(P)===!1?r.renderbufferStorageMultisample(36161,Le,Be,P.width,P.height):ye(P)?d.renderbufferStorageMultisampleEXT(36161,Le,Be,P.width,P.height):r.renderbufferStorage(36161,Be,P.width,P.height)}}r.bindRenderbuffer(36161,null)}function ce(L,P){if(P&&P.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(36160,L),!(P.depthTexture&&P.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(P.depthTexture).__webglTexture||P.depthTexture.image.width!==P.width||P.depthTexture.image.height!==P.height)&&(P.depthTexture.image.width=P.width,P.depthTexture.image.height=P.height,P.depthTexture.needsUpdate=!0),z(P.depthTexture,0);let he=n.get(P.depthTexture).__webglTexture,pe=Pe(P);if(P.depthTexture.format===Oo)ye(P)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,he,0,pe):r.framebufferTexture2D(36160,36096,3553,he,0);else if(P.depthTexture.format===Us)ye(P)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,he,0,pe):r.framebufferTexture2D(36160,33306,3553,he,0);else throw new Error("Unknown depthTexture format")}function oe(L){let P=n.get(L),K=L.isWebGLCubeRenderTarget===!0;if(L.depthTexture&&!P.__autoAllocateDepthBuffer){if(K)throw new Error("target.depthTexture not supported in Cube render targets");ce(P.__webglFramebuffer,L)}else if(K){P.__webglDepthbuffer=[];for(let he=0;he<6;he++)t.bindFramebuffer(36160,P.__webglFramebuffer[he]),P.__webglDepthbuffer[he]=r.createRenderbuffer(),le(P.__webglDepthbuffer[he],L,!1)}else t.bindFramebuffer(36160,P.__webglFramebuffer),P.__webglDepthbuffer=r.createRenderbuffer(),le(P.__webglDepthbuffer,L,!1);t.bindFramebuffer(36160,null)}function de(L,P,K){let he=n.get(L);P!==void 0&&W(he.__webglFramebuffer,L,L.texture,36064,3553),K!==void 0&&oe(L)}function ge(L){let P=L.texture,K=n.get(L),he=n.get(P);L.addEventListener("dispose",D),L.isWebGLMultipleRenderTargets!==!0&&(he.__webglTexture===void 0&&(he.__webglTexture=r.createTexture()),he.__version=P.version,o.memory.textures++);let pe=L.isWebGLCubeRenderTarget===!0,Ce=L.isWebGLMultipleRenderTargets===!0,Fe=b(L)||a;if(pe){K.__webglFramebuffer=[];for(let re=0;re<6;re++)K.__webglFramebuffer[re]=r.createFramebuffer()}else{if(K.__webglFramebuffer=r.createFramebuffer(),Ce)if(i.drawBuffers){let re=L.texture;for(let Be=0,Le=re.length;Be<Le;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&&L.samples>0&&ye(L)===!1){let re=Ce?P:[P];K.__webglMultisampledFramebuffer=r.createFramebuffer(),K.__webglColorRenderbuffer=[],t.bindFramebuffer(36160,K.__webglMultisampledFramebuffer);for(let Be=0;Be<re.length;Be++){let Le=re[Be];K.__webglColorRenderbuffer[Be]=r.createRenderbuffer(),r.bindRenderbuffer(36161,K.__webglColorRenderbuffer[Be]);let ve=s.convert(Le.format,Le.encoding),k=s.convert(Le.type),xe=x(Le.internalFormat,ve,k,Le.encoding),Ae=Pe(L);r.renderbufferStorageMultisample(36161,Ae,xe,L.width,L.height),r.framebufferRenderbuffer(36160,36064+Be,36161,K.__webglColorRenderbuffer[Be])}r.bindRenderbuffer(36161,null),L.depthBuffer&&(K.__webglDepthRenderbuffer=r.createRenderbuffer(),le(K.__webglDepthRenderbuffer,L,!0)),t.bindFramebuffer(36160,null)}}if(pe){t.bindTexture(34067,he.__webglTexture),q(34067,P,Fe);for(let re=0;re<6;re++)W(K.__webglFramebuffer[re],L,P,36064,34069+re);_(P,Fe)&&M(34067),t.unbindTexture()}else if(Ce){let re=L.texture;for(let Be=0,Le=re.length;Be<Le;Be++){let ve=re[Be],k=n.get(ve);t.bindTexture(3553,k.__webglTexture),q(3553,ve,Fe),W(K.__webglFramebuffer,L,ve,36064+Be,3553),_(ve,Fe)&&M(3553)}t.unbindTexture()}else{let re=3553;(L.isWebGL3DRenderTarget||L.isWebGLArrayRenderTarget)&&(a?re=L.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),t.bindTexture(re,he.__webglTexture),q(re,P,Fe),W(K.__webglFramebuffer,L,P,36064,re),_(P,Fe)&&M(re),t.unbindTexture()}L.depthBuffer&&oe(L)}function fe(L){let P=b(L)||a,K=L.isWebGLMultipleRenderTargets===!0?L.texture:[L.texture];for(let he=0,pe=K.length;he<pe;he++){let Ce=K[he];if(_(Ce,P)){let Fe=L.isWebGLCubeRenderTarget?34067:3553,re=n.get(Ce).__webglTexture;t.bindTexture(Fe,re),M(Fe),t.unbindTexture()}}}function Ee(L){if(a&&L.samples>0&&ye(L)===!1){let P=L.isWebGLMultipleRenderTargets?L.texture:[L.texture],K=L.width,he=L.height,pe=16384,Ce=[],Fe=L.stencilBuffer?33306:36096,re=n.get(L),Be=L.isWebGLMultipleRenderTargets===!0;if(Be)for(let Le=0;Le<P.length;Le++)t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Le,36161,null),t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Le,3553,null,0);t.bindFramebuffer(36008,re.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,re.__webglFramebuffer);for(let Le=0;Le<P.length;Le++){Ce.push(36064+Le),L.depthBuffer&&Ce.push(Fe);let ve=re.__ignoreDepthValues!==void 0?re.__ignoreDepthValues:!1;if(ve===!1&&(L.depthBuffer&&(pe|=256),L.stencilBuffer&&(pe|=1024)),Be&&r.framebufferRenderbuffer(36008,36064,36161,re.__webglColorRenderbuffer[Le]),ve===!0&&(r.invalidateFramebuffer(36008,[Fe]),r.invalidateFramebuffer(36009,[Fe])),Be){let k=n.get(P[Le]).__webglTexture;r.framebufferTexture2D(36009,36064,3553,k,0)}r.blitFramebuffer(0,0,K,he,0,0,K,he,pe,9728),f&&r.invalidateFramebuffer(36008,Ce)}if(t.bindFramebuffer(36008,null),t.bindFramebuffer(36009,null),Be)for(let Le=0;Le<P.length;Le++){t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Le,36161,re.__webglColorRenderbuffer[Le]);let ve=n.get(P[Le]).__webglTexture;t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Le,3553,ve,0)}t.bindFramebuffer(36009,re.__webglMultisampledFramebuffer)}}function Pe(L){return Math.min(h,L.samples)}function ye(L){let P=n.get(L);return a&&L.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&P.__useRenderToTexture!==!1}function Oe(L){let P=o.render.frame;p.get(L)!==P&&(p.set(L,P),L.update())}function pt(L,P){let K=L.encoding,he=L.format,pe=L.type;return L.isCompressedTexture===!0||L.isVideoTexture===!0||L.format===Vg||K!==Er&&(K===qe?a===!1?e.has("EXT_sRGB")===!0&&he===ni?(L.format=Vg,L.minFilter=rt,L.generateMipmaps=!1):P=jd.sRGBToLinear(P):(he!==ni||pe!==Ut)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",K)),P}this.allocateTextureUnit=Y,this.resetTextureUnits=X,this.setTexture2D=z,this.setTexture2DArray=V,this.setTexture3D=U,this.setTextureCube=H,this.rebindTextures=de,this.setupRenderTarget=ge,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=Ee,this.setupDepthRenderbuffer=oe,this.setupFrameBufferTexture=W,this.useMultisampledRTT=ye}function EL(r,e,t){let n=t.isWebGL2;function i(s,o=null){let a;if(s===Ut)return 5121;if(s===vC)return 32819;if(s===xC)return 32820;if(s===mC)return 5120;if(s===gC)return 5122;if(s===cw)return 5123;if(s===yC)return 5124;if(s===as)return 5125;if(s===_i)return 5126;if(s===mu)return n?5131:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===bC)return 6406;if(s===ni)return 6408;if(s===SC)return 6409;if(s===AC)return 6410;if(s===Oo)return 6402;if(s===Us)return 34041;if(s===_C)return 6403;if(s===wC)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===Vg)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===MC)return 36244;if(s===TC)return 33319;if(s===EC)return 33320;if(s===CC)return 36249;if(s===tg||s===ng||s===rg||s===ig)if(o===qe)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===tg)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===ng)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===rg)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===ig)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===tg)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===ng)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===rg)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===ig)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Bx||s===Nx||s===Fx||s===Ux)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Bx)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Nx)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Fx)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Ux)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===PC)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===zx||s===Gx)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===zx)return o===qe?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Gx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===kx||s===Vx||s===Hx||s===Wx||s===jx||s===qx||s===Xx||s===Yx||s===Qx||s===Zx||s===Kx||s===Jx||s===$x||s===eb)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===kx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Vx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Hx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Wx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===jx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===qx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Xx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Yx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===Qx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Zx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===Kx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Jx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===$x)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===eb)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===tb)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===tb)return o===qe?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 ey=class extends tn{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},Ls=class extends ot{constructor(){super(),this.isGroup=!0,this.type="Group"}},CL={type:"move"},du=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ls,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 Ls,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new A,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new A),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ls,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new A,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new A),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 m of e.hand.values()){let g=t.getJointPose(m,n);if(u.joints[m.jointName]===void 0){let v=new Ls;v.matrixAutoUpdate=!1,v.visible=!1,u.joints[m.jointName]=v,u.add(v)}let y=u.joints[m.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,p=.005;u.inputState.pinching&&d>f+p?(u.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!u.inputState.pinching&&d<=f-p&&(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(CL)))}return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=s!==null),u!==null&&(u.visible=o!==null),this}},Gs=class extends Yt{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=as),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:Ft,this.minFilter=l!==void 0?l:Ft,this.flipY=!1,this.generateMipmaps=!1}},ty=class extends Bt{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,p=t.getContextAttributes(),m=null,g=null,y=[],v=[],w=new tn;w.layers.enable(1),w.viewport=new Ve;let b=new tn;b.layers.enable(2),b.viewport=new Ve;let S=[w,b],_=new ey;_.layers.enable(1),_.layers.enable(2);let M=null,x=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(G){let z=y[G];return z===void 0&&(z=new du,y[G]=z),z.getTargetRaySpace()},this.getControllerGrip=function(G){let z=y[G];return z===void 0&&(z=new du,y[G]=z),z.getGripSpace()},this.getHand=function(G){let z=y[G];return z===void 0&&(z=new du,y[G]=z),z.getHandSpace()};function T(G){let z=v.indexOf(G.inputSource);if(z===-1)return;let V=y[z];V!==void 0&&V.dispatchEvent({type:G.type,data:G.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 G=0;G<y.length;G++){let z=v[G];z!==null&&(v[G]=null,y[G].disconnect(z))}M=null,x=null,e.setRenderTarget(m),d=null,h=null,c=null,i=null,g=null,Y.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(G){s=G,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(G){a=G,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||o},this.setReferenceSpace=function(G){l=G},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(G){if(i=G,i!==null){if(m=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),p.xrCompatible!==!0&&await t.makeXRCompatible(),i.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let z={antialias:i.renderState.layers===void 0?p.antialias:!0,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(i,t,z),i.updateRenderState({baseLayer:d}),g=new ut(d.framebufferWidth,d.framebufferHeight,{format:ni,type:Ut,encoding:e.outputEncoding})}else{let z=null,V=null,U=null;p.depth&&(U=p.stencil?35056:33190,z=p.stencil?Us:Oo,V=p.stencil?Os:as);let H={colorFormat:32856,depthFormat:U,scaleFactor:s};c=new XRWebGLBinding(i,t),h=c.createProjectionLayer(H),i.updateRenderState({layers:[h]}),g=new ut(h.textureWidth,h.textureHeight,{format:ni,type:Ut,depthTexture:new Gs(h.textureWidth,h.textureHeight,V,void 0,void 0,void 0,void 0,void 0,void 0,z),stencilBuffer:p.stencil,encoding:e.outputEncoding,samples:p.antialias?4:0});let j=e.properties.get(g);j.__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(G){for(let z=0;z<G.removed.length;z++){let V=G.removed[z],U=v.indexOf(V);U>=0&&(v[U]=null,y[U].dispatchEvent({type:"disconnected",data:V}))}for(let z=0;z<G.added.length;z++){let V=G.added[z],U=v.indexOf(V);if(U===-1){for(let j=0;j<y.length;j++)if(j>=v.length){v.push(V),U=j;break}else if(v[j]===null){v[j]=V,U=j;break}if(U===-1)break}let H=y[U];H&&H.dispatchEvent({type:"connected",data:V})}}let D=new A,I=new A;function R(G,z,V){D.setFromMatrixPosition(z.matrixWorld),I.setFromMatrixPosition(V.matrixWorld);let U=D.distanceTo(I),H=z.projectionMatrix.elements,j=V.projectionMatrix.elements,Q=H[14]/(H[10]-1),q=H[14]/(H[10]+1),ae=(H[9]+1)/H[5],$=(H[9]-1)/H[5],te=(H[8]-1)/H[0],W=(j[8]+1)/j[0],le=Q*te,ce=Q*W,oe=U/(-te+W),de=oe*-te;z.matrixWorld.decompose(G.position,G.quaternion,G.scale),G.translateX(de),G.translateZ(oe),G.matrixWorld.compose(G.position,G.quaternion,G.scale),G.matrixWorldInverse.copy(G.matrixWorld).invert();let ge=Q+oe,fe=q+oe,Ee=le-de,Pe=ce+(U-de),ye=ae*q/fe*ge,Oe=$*q/fe*ge;G.projectionMatrix.makePerspective(Ee,Pe,ye,Oe,ge,fe)}function F(G,z){z===null?G.matrixWorld.copy(G.matrix):G.matrixWorld.multiplyMatrices(z.matrixWorld,G.matrix),G.matrixWorldInverse.copy(G.matrixWorld).invert()}this.updateCamera=function(G){if(i===null)return;_.near=b.near=w.near=G.near,_.far=b.far=w.far=G.far,(M!==_.near||x!==_.far)&&(i.updateRenderState({depthNear:_.near,depthFar:_.far}),M=_.near,x=_.far);let z=G.parent,V=_.cameras;F(_,z);for(let H=0;H<V.length;H++)F(V[H],z);_.matrixWorld.decompose(_.position,_.quaternion,_.scale),G.position.copy(_.position),G.quaternion.copy(_.quaternion),G.scale.copy(_.scale),G.matrix.copy(_.matrix),G.matrixWorld.copy(_.matrixWorld);let U=G.children;for(let H=0,j=U.length;H<j;H++)U[H].updateMatrixWorld(!0);V.length===2?R(_,w,b):_.projectionMatrix.copy(w.projectionMatrix)},this.getCamera=function(){return _},this.getFoveation=function(){if(h!==null)return h.fixedFoveation;if(d!==null)return d.fixedFoveation},this.setFoveation=function(G){h!==null&&(h.fixedFoveation=G),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=G)};let B=null;function X(G,z){if(u=z.getViewerPose(l||o),f=z,u!==null){let V=u.views;d!==null&&(e.setRenderTargetFramebuffer(g,d.framebuffer),e.setRenderTarget(g));let U=!1;V.length!==_.cameras.length&&(_.cameras.length=0,U=!0);for(let H=0;H<V.length;H++){let j=V[H],Q=null;if(d!==null)Q=d.getViewport(j);else{let ae=c.getViewSubImage(h,j);Q=ae.viewport,H===0&&(e.setRenderTargetTextures(g,ae.colorTexture,h.ignoreDepthValues?void 0:ae.depthStencilTexture),e.setRenderTarget(g))}let q=S[H];q===void 0&&(q=new tn,q.layers.enable(H),q.viewport=new Ve,S[H]=q),q.matrix.fromArray(j.transform.matrix),q.projectionMatrix.fromArray(j.projectionMatrix),q.viewport.set(Q.x,Q.y,Q.width,Q.height),H===0&&_.matrix.copy(q.matrix),U===!0&&_.cameras.push(q)}}for(let V=0;V<y.length;V++){let U=v[V],H=y[V];U!==null&&H!==void 0&&H.update(U,z,l||o)}B&&B(G,z),f=null}let Y=new dw;Y.setAnimationLoop(X),this.setAnimationLoop=function(G){B=G},this.dispose=function(){}}};function PL(r,e){function t(m,g){m.fogColor.value.copy(g.color),g.isFog?(m.fogNear.value=g.near,m.fogFar.value=g.far):g.isFogExp2&&(m.fogDensity.value=g.density)}function n(m,g,y,v,w){g.isMeshBasicMaterial||g.isMeshLambertMaterial?i(m,g):g.isMeshToonMaterial?(i(m,g),c(m,g)):g.isMeshPhongMaterial?(i(m,g),u(m,g)):g.isMeshStandardMaterial?(i(m,g),h(m,g),g.isMeshPhysicalMaterial&&d(m,g,w)):g.isMeshMatcapMaterial?(i(m,g),f(m,g)):g.isMeshDepthMaterial?i(m,g):g.isMeshDistanceMaterial?(i(m,g),p(m,g)):g.isMeshNormalMaterial?i(m,g):g.isLineBasicMaterial?(s(m,g),g.isLineDashedMaterial&&o(m,g)):g.isPointsMaterial?a(m,g,y,v):g.isSpriteMaterial?l(m,g):g.isShadowMaterial?(m.color.value.copy(g.color),m.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function i(m,g){m.opacity.value=g.opacity,g.color&&m.diffuse.value.copy(g.color),g.emissive&&m.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.bumpMap&&(m.bumpMap.value=g.bumpMap,m.bumpScale.value=g.bumpScale,g.side===cn&&(m.bumpScale.value*=-1)),g.displacementMap&&(m.displacementMap.value=g.displacementMap,m.displacementScale.value=g.displacementScale,m.displacementBias.value=g.displacementBias),g.emissiveMap&&(m.emissiveMap.value=g.emissiveMap),g.normalMap&&(m.normalMap.value=g.normalMap,m.normalScale.value.copy(g.normalScale),g.side===cn&&m.normalScale.value.negate()),g.specularMap&&(m.specularMap.value=g.specularMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let y=e.get(g).envMap;if(y&&(m.envMap.value=y,m.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,m.reflectivity.value=g.reflectivity,m.ior.value=g.ior,m.refractionRatio.value=g.refractionRatio),g.lightMap){m.lightMap.value=g.lightMap;let b=r.physicallyCorrectLights!==!0?Math.PI:1;m.lightMapIntensity.value=g.lightMapIntensity*b}g.aoMap&&(m.aoMap.value=g.aoMap,m.aoMapIntensity.value=g.aoMapIntensity);let v;g.map?v=g.map:g.specularMap?v=g.specularMap:g.displacementMap?v=g.displacementMap:g.normalMap?v=g.normalMap:g.bumpMap?v=g.bumpMap:g.roughnessMap?v=g.roughnessMap:g.metalnessMap?v=g.metalnessMap:g.alphaMap?v=g.alphaMap:g.emissiveMap?v=g.emissiveMap:g.clearcoatMap?v=g.clearcoatMap:g.clearcoatNormalMap?v=g.clearcoatNormalMap:g.clearcoatRoughnessMap?v=g.clearcoatRoughnessMap:g.iridescenceMap?v=g.iridescenceMap:g.iridescenceThicknessMap?v=g.iridescenceThicknessMap:g.specularIntensityMap?v=g.specularIntensityMap:g.specularColorMap?v=g.specularColorMap:g.transmissionMap?v=g.transmissionMap:g.thicknessMap?v=g.thicknessMap:g.sheenColorMap?v=g.sheenColorMap:g.sheenRoughnessMap&&(v=g.sheenRoughnessMap),v!==void 0&&(v.isWebGLRenderTarget&&(v=v.texture),v.matrixAutoUpdate===!0&&v.updateMatrix(),m.uvTransform.value.copy(v.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(),m.uv2Transform.value.copy(w.matrix))}function s(m,g){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity}function o(m,g){m.dashSize.value=g.dashSize,m.totalSize.value=g.dashSize+g.gapSize,m.scale.value=g.scale}function a(m,g,y,v){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity,m.size.value=g.size*y,m.scale.value=v*.5,g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let w;g.map?w=g.map:g.alphaMap&&(w=g.alphaMap),w!==void 0&&(w.matrixAutoUpdate===!0&&w.updateMatrix(),m.uvTransform.value.copy(w.matrix))}function l(m,g){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity,m.rotation.value=g.rotation,g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let y;g.map?y=g.map:g.alphaMap&&(y=g.alphaMap),y!==void 0&&(y.matrixAutoUpdate===!0&&y.updateMatrix(),m.uvTransform.value.copy(y.matrix))}function u(m,g){m.specular.value.copy(g.specular),m.shininess.value=Math.max(g.shininess,1e-4)}function c(m,g){g.gradientMap&&(m.gradientMap.value=g.gradientMap)}function h(m,g){m.roughness.value=g.roughness,m.metalness.value=g.metalness,g.roughnessMap&&(m.roughnessMap.value=g.roughnessMap),g.metalnessMap&&(m.metalnessMap.value=g.metalnessMap),e.get(g).envMap&&(m.envMapIntensity.value=g.envMapIntensity)}function d(m,g,y){m.ior.value=g.ior,g.sheen>0&&(m.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),m.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(m.sheenColorMap.value=g.sheenColorMap),g.sheenRoughnessMap&&(m.sheenRoughnessMap.value=g.sheenRoughnessMap)),g.clearcoat>0&&(m.clearcoat.value=g.clearcoat,m.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(m.clearcoatMap.value=g.clearcoatMap),g.clearcoatRoughnessMap&&(m.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap),g.clearcoatNormalMap&&(m.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),m.clearcoatNormalMap.value=g.clearcoatNormalMap,g.side===cn&&m.clearcoatNormalScale.value.negate())),g.iridescence>0&&(m.iridescence.value=g.iridescence,m.iridescenceIOR.value=g.iridescenceIOR,m.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],m.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(m.iridescenceMap.value=g.iridescenceMap),g.iridescenceThicknessMap&&(m.iridescenceThicknessMap.value=g.iridescenceThicknessMap)),g.transmission>0&&(m.transmission.value=g.transmission,m.transmissionSamplerMap.value=y.texture,m.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(m.transmissionMap.value=g.transmissionMap),m.thickness.value=g.thickness,g.thicknessMap&&(m.thicknessMap.value=g.thicknessMap),m.attenuationDistance.value=g.attenuationDistance,m.attenuationColor.value.copy(g.attenuationColor)),m.specularIntensity.value=g.specularIntensity,m.specularColor.value.copy(g.specularColor),g.specularIntensityMap&&(m.specularIntensityMap.value=g.specularIntensityMap),g.specularColorMap&&(m.specularColorMap.value=g.specularColorMap)}function f(m,g){g.matcap&&(m.matcap.value=g.matcap)}function p(m,g){m.referencePosition.value.copy(g.referencePosition),m.nearDistance.value=g.nearDistance,m.farDistance.value=g.farDistance}return{refreshFogUniforms:t,refreshMaterialUniforms:n}}function DL(){let r=Wd("canvas");return r.style.display="block",r}function Ey(r={}){this.isWebGLRenderer=!0;let e=r.canvas!==void 0?r.canvas:DL(),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=[],p=[];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=Er,this.physicallyCorrectLights=!1,this.toneMapping=ls,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 m=this,g=!1,y=0,v=0,w=null,b=-1,S=null,_=new Ve,M=new Ve,x=null,T=e.width,E=e.height,C=1,D=null,I=null,R=new Ve(0,0,T,E),F=new Ve(0,0,T,E),B=!1,X=new vu,Y=!1,G=!1,z=null,V=new _e,U=new N,H=new A,j={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Q(){return w===null?C:1}let q=t;function ae(O,J){for(let ie=0;ie<O.length;ie++){let ne=O[ie],ue=e.getContext(ne,J);if(ue!==null)return ue}return null}try{let O={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${qo}`),e.addEventListener("webglcontextlost",k,!1),e.addEventListener("webglcontextrestored",xe,!1),e.addEventListener("webglcontextcreationerror",Ae,!1),q===null){let J=["webgl2","webgl","experimental-webgl"];if(m.isWebGL1Renderer===!0&&J.shift(),q=ae(J,O),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(O){throw console.error("THREE.WebGLRenderer: "+O.message),O}let $,te,W,le,ce,oe,de,ge,fe,Ee,Pe,ye,Oe,pt,L,P,K,he,pe,Ce,Fe,re,Be;function Le(){$=new KD(q),te=new jD(q,$,r),$.init(te),re=new EL(q,$,te),W=new ML(q,$,te),le=new eI,ce=new fL,oe=new TL(q,$,W,ce,te,re,le),de=new XD(m),ge=new ZD(m),fe=new dP(q,te),Be=new HD(q,$,fe,te),Ee=new JD(q,fe,le,Be),Pe=new iI(q,Ee,fe,le),pe=new rI(q,te,oe),P=new qD(ce),ye=new dL(m,de,ge,$,te,Be,P),Oe=new PL(m,ce),pt=new mL,L=new wL($,te),he=new VD(m,de,W,Pe,c,o),K=new _L(m,Pe,te),Ce=new WD(q,$,le,te),Fe=new $D(q,$,le,te),le.programs=ye.programs,m.capabilities=te,m.extensions=$,m.properties=ce,m.renderLists=pt,m.shadowMap=K,m.state=W,m.info=le}Le();let ve=new ty(m,q);this.xr=ve,this.getContext=function(){return q},this.getContextAttributes=function(){return q.getContextAttributes()},this.forceContextLoss=function(){let O=$.get("WEBGL_lose_context");O&&O.loseContext()},this.forceContextRestore=function(){let O=$.get("WEBGL_lose_context");O&&O.restoreContext()},this.getPixelRatio=function(){return C},this.setPixelRatio=function(O){O!==void 0&&(C=O,this.setSize(T,E,!1))},this.getSize=function(O){return O.set(T,E)},this.setSize=function(O,J,ie){if(ve.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}T=O,E=J,e.width=Math.floor(O*C),e.height=Math.floor(J*C),ie!==!1&&(e.style.width=O+"px",e.style.height=J+"px"),this.setViewport(0,0,O,J)},this.getDrawingBufferSize=function(O){return O.set(T*C,E*C).floor()},this.setDrawingBufferSize=function(O,J,ie){T=O,E=J,C=ie,e.width=Math.floor(O*ie),e.height=Math.floor(J*ie),this.setViewport(0,0,O,J)},this.getCurrentViewport=function(O){return O.copy(_)},this.getViewport=function(O){return O.copy(R)},this.setViewport=function(O,J,ie,ne){O.isVector4?R.set(O.x,O.y,O.z,O.w):R.set(O,J,ie,ne),W.viewport(_.copy(R).multiplyScalar(C).floor())},this.getScissor=function(O){return O.copy(F)},this.setScissor=function(O,J,ie,ne){O.isVector4?F.set(O.x,O.y,O.z,O.w):F.set(O,J,ie,ne),W.scissor(M.copy(F).multiplyScalar(C).floor())},this.getScissorTest=function(){return B},this.setScissorTest=function(O){W.setScissorTest(B=O)},this.setOpaqueSort=function(O){D=O},this.setTransparentSort=function(O){I=O},this.getClearColor=function(O){return O.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(O=!0,J=!0,ie=!0){let ne=0;O&&(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",k,!1),e.removeEventListener("webglcontextrestored",xe,!1),e.removeEventListener("webglcontextcreationerror",Ae,!1),pt.dispose(),L.dispose(),ce.dispose(),de.dispose(),ge.dispose(),Pe.dispose(),Be.dispose(),ye.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",et),ve.removeEventListener("sessionend",mt),z&&(z.dispose(),z=null),St.stop()};function k(O){O.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),g=!0}function xe(){console.log("THREE.WebGLRenderer: Context Restored."),g=!1;let O=le.autoReset,J=K.enabled,ie=K.autoUpdate,ne=K.needsUpdate,ue=K.type;Le(),le.autoReset=O,K.enabled=J,K.autoUpdate=ie,K.needsUpdate=ne,K.type=ue}function Ae(O){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",O.statusMessage)}function Ye(O){let J=O.target;J.removeEventListener("dispose",Ye),Re(J)}function Re(O){Qe(O),ce.remove(O)}function Qe(O){let J=ce.get(O).programs;J!==void 0&&(J.forEach(function(ie){ye.releaseProgram(ie)}),O.isShaderMaterial&&ye.releaseShaderCache(O))}this.renderBufferDirect=function(O,J,ie,ne,ue,Ke){J===null&&(J=j);let $e=ue.isMesh&&ue.matrixWorld.determinant()<0,nt=DE(O,J,ie,ne,ue);W.setMaterial(ne,$e);let tt=ie.index,Dt=ie.attributes.position;if(tt===null){if(Dt===void 0||Dt.count===0)return}else if(tt.count===0)return;let dt=1;ne.wireframe===!0&&(tt=Ee.getWireframeAttribute(ie),dt=2),Be.setup(ue,ne,nt,ie,tt);let gt,qt=Ce;tt!==null&&(gt=fe.get(tt),qt=Fe,qt.setIndex(gt));let Eo=tt!==null?tt.count:Dt.count,Ma=ie.drawRange.start*dt,Ta=ie.drawRange.count*dt,bi=Ke!==null?Ke.start*dt:0,At=Ke!==null?Ke.count*dt:1/0,Ea=Math.max(Ma,bi),an=Math.min(Eo,Ma+Ta,bi+At)-1,wi=Math.max(0,an-Ea+1);if(wi!==0){if(ue.isMesh)ne.wireframe===!0?(W.setLineWidth(ne.wireframeLinewidth*Q()),qt.setMode(1)):qt.setMode(4);else if(ue.isLine){let _s=ne.linewidth;_s===void 0&&(_s=1),W.setLineWidth(_s*Q()),ue.isLineSegments?qt.setMode(1):ue.isLineLoop?qt.setMode(2):qt.setMode(3)}else ue.isPoints?qt.setMode(0):ue.isSprite&&qt.setMode(4);if(ue.isInstancedMesh)qt.renderInstances(Ea,wi,ue.count);else if(ie.isInstancedBufferGeometry){let _s=Math.min(ie.instanceCount,ie._maxInstanceCount);qt.renderInstances(Ea,wi,_s)}else qt.render(Ea,wi)}},this.compile=function(O,J){d=L.get(O),d.init(),p.push(d),O.traverseVisible(function(ie){ie.isLight&&ie.layers.test(J.layers)&&(d.pushLight(ie),ie.castShadow&&d.pushShadow(ie))}),d.setupLights(m.physicallyCorrectLights),O.traverse(function(ie){let ne=ie.material;if(ne)if(Array.isArray(ne))for(let ue=0;ue<ne.length;ue++){let Ke=ne[ue];Jm(Ke,O,ie)}else Jm(ne,O,ie)}),p.pop(),d=null};let be=null;function Ze(O){be&&be(O)}function et(){St.stop()}function mt(){St.start()}let St=new dw;St.setAnimationLoop(Ze),typeof self<"u"&&St.setContext(self),this.setAnimationLoop=function(O){be=O,ve.setAnimationLoop(O),O===null?St.stop():St.start()},ve.addEventListener("sessionstart",et),ve.addEventListener("sessionend",mt),this.render=function(O,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;O.autoUpdate===!0&&O.updateMatrixWorld(),J.parent===null&&J.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(J),J=ve.getCamera()),O.isScene===!0&&O.onBeforeRender(m,O,J,w),d=L.get(O,p.length),d.init(),p.push(d),V.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),X.setFromProjectionMatrix(V),G=this.localClippingEnabled,Y=P.init(this.clippingPlanes,G,J),h=pt.get(O,f.length),h.init(),f.push(h),cr(O,J,0,m.sortObjects),h.finish(),m.sortObjects===!0&&h.sort(D,I),Y===!0&&P.beginShadows();let ie=d.state.shadowsArray;if(K.render(ie,O,J),Y===!0&&P.endShadows(),this.info.autoReset===!0&&this.info.reset(),he.render(h,O),d.setupLights(m.physicallyCorrectLights),J.isArrayCamera){let ne=J.cameras;for(let ue=0,Ke=ne.length;ue<Ke;ue++){let $e=ne[ue];cd(h,O,$e,$e.viewport)}}else cd(h,O,J);w!==null&&(oe.updateMultisampleRenderTarget(w),oe.updateRenderTargetMipmap(w)),O.isScene===!0&&O.onAfterRender(m,O,J),Be.resetDefaultState(),b=-1,S=null,p.pop(),p.length>0?d=p[p.length-1]:d=null,f.pop(),f.length>0?h=f[f.length-1]:h=null};function cr(O,J,ie,ne){if(O.visible===!1)return;if(O.layers.test(J.layers)){if(O.isGroup)ie=O.renderOrder;else if(O.isLOD)O.autoUpdate===!0&&O.update(J);else if(O.isLight)d.pushLight(O),O.castShadow&&d.pushShadow(O);else if(O.isSprite){if(!O.frustumCulled||X.intersectsSprite(O)){ne&&H.setFromMatrixPosition(O.matrixWorld).applyMatrix4(V);let $e=Pe.update(O),nt=O.material;nt.visible&&h.push(O,$e,nt,ie,H.z,null)}}else if((O.isMesh||O.isLine||O.isPoints)&&(O.isSkinnedMesh&&O.skeleton.frame!==le.render.frame&&(O.skeleton.update(),O.skeleton.frame=le.render.frame),!O.frustumCulled||X.intersectsObject(O))){ne&&H.setFromMatrixPosition(O.matrixWorld).applyMatrix4(V);let $e=Pe.update(O),nt=O.material;if(Array.isArray(nt)){let tt=$e.groups;for(let Dt=0,dt=tt.length;Dt<dt;Dt++){let gt=tt[Dt],qt=nt[gt.materialIndex];qt&&qt.visible&&h.push(O,$e,qt,ie,H.z,gt)}}else nt.visible&&h.push(O,$e,nt,ie,H.z,null)}}let Ke=O.children;for(let $e=0,nt=Ke.length;$e<nt;$e++)cr(Ke[$e],J,ie,ne)}function cd(O,J,ie,ne){let ue=O.opaque,Ke=O.transmissive,$e=O.transparent;d.setupLightsView(ie),Ke.length>0&&_a(ue,J,ie),ne&&W.viewport(_.copy(ne)),ue.length>0&&ud(ue,J,ie),Ke.length>0&&ud(Ke,J,ie),$e.length>0&&ud($e,J,ie),W.buffers.depth.setTest(!0),W.buffers.depth.setMask(!0),W.buffers.color.setMask(!0),W.setPolygonOffset(!1)}function _a(O,J,ie){let ne=te.isWebGL2;z===null&&(z=new ut(1,1,{generateMipmaps:!0,type:$.has("EXT_color_buffer_half_float")?mu:Ut,minFilter:ul,samples:ne&&s===!0?4:0})),m.getDrawingBufferSize(U),ne?z.setSize(U.x,U.y):z.setSize(Hd(U.x),Hd(U.y));let ue=m.getRenderTarget();m.setRenderTarget(z),m.clear();let Ke=m.toneMapping;m.toneMapping=ls,ud(O,J,ie),m.toneMapping=Ke,oe.updateMultisampleRenderTarget(z),oe.updateRenderTargetMipmap(z),m.setRenderTarget(ue)}function ud(O,J,ie){let ne=J.isScene===!0?J.overrideMaterial:null;for(let ue=0,Ke=O.length;ue<Ke;ue++){let $e=O[ue],nt=$e.object,tt=$e.geometry,Dt=ne===null?$e.material:ne,dt=$e.group;nt.layers.test(ie.layers)&&PE(nt,J,ie,tt,Dt,dt)}}function PE(O,J,ie,ne,ue,Ke){O.onBeforeRender(m,J,ie,ne,ue,Ke),O.modelViewMatrix.multiplyMatrices(ie.matrixWorldInverse,O.matrixWorld),O.normalMatrix.getNormalMatrix(O.modelViewMatrix),ue.onBeforeRender(m,J,ie,ne,O,Ke),ue.transparent===!0&&ue.side===un?(ue.side=cn,ue.needsUpdate=!0,m.renderBufferDirect(ie,J,ne,ue,O,Ke),ue.side=Br,ue.needsUpdate=!0,m.renderBufferDirect(ie,J,ne,ue,O,Ke),ue.side=un):m.renderBufferDirect(ie,J,ne,ue,O,Ke),O.onAfterRender(m,J,ie,ne,ue,Ke)}function Jm(O,J,ie){J.isScene!==!0&&(J=j);let ne=ce.get(O),ue=d.state.lights,Ke=d.state.shadowsArray,$e=ue.state.version,nt=ye.getParameters(O,ue.state,Ke,J,ie),tt=ye.getProgramCacheKey(nt),Dt=ne.programs;ne.environment=O.isMeshStandardMaterial?J.environment:null,ne.fog=J.fog,ne.envMap=(O.isMeshStandardMaterial?ge:de).get(O.envMap||ne.environment),Dt===void 0&&(O.addEventListener("dispose",Ye),Dt=new Map,ne.programs=Dt);let dt=Dt.get(tt);if(dt!==void 0){if(ne.currentProgram===dt&&ne.lightsStateVersion===$e)return Ax(O,nt),dt}else nt.uniforms=ye.getUniforms(O),O.onBuild(ie,nt,m),O.onBeforeCompile(nt,m),dt=ye.acquireProgram(nt,tt),Dt.set(tt,dt),ne.uniforms=nt.uniforms;let gt=ne.uniforms;(!O.isShaderMaterial&&!O.isRawShaderMaterial||O.clipping===!0)&&(gt.clippingPlanes=P.uniform),Ax(O,nt),ne.needsLights=LE(O),ne.lightsStateVersion=$e,ne.needsLights&&(gt.ambientLightColor.value=ue.state.ambient,gt.lightProbe.value=ue.state.probe,gt.directionalLights.value=ue.state.directional,gt.directionalLightShadows.value=ue.state.directionalShadow,gt.spotLights.value=ue.state.spot,gt.spotLightShadows.value=ue.state.spotShadow,gt.rectAreaLights.value=ue.state.rectArea,gt.ltc_1.value=ue.state.rectAreaLTC1,gt.ltc_2.value=ue.state.rectAreaLTC2,gt.pointLights.value=ue.state.point,gt.pointLightShadows.value=ue.state.pointShadow,gt.hemisphereLights.value=ue.state.hemi,gt.directionalShadowMap.value=ue.state.directionalShadowMap,gt.directionalShadowMatrix.value=ue.state.directionalShadowMatrix,gt.spotShadowMap.value=ue.state.spotShadowMap,gt.spotShadowMatrix.value=ue.state.spotShadowMatrix,gt.pointShadowMap.value=ue.state.pointShadowMap,gt.pointShadowMatrix.value=ue.state.pointShadowMatrix);let qt=dt.getUniforms(),Eo=ja.seqWithValue(qt.seq,gt);return ne.currentProgram=dt,ne.uniformsList=Eo,dt}function Ax(O,J){let ie=ce.get(O);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 DE(O,J,ie,ne,ue){J.isScene!==!0&&(J=j),oe.resetTextureUnits();let Ke=J.fog,$e=ne.isMeshStandardMaterial?J.environment:null,nt=w===null?m.outputEncoding:w.isXRRenderTarget===!0?w.texture.encoding:Er,tt=(ne.isMeshStandardMaterial?ge:de).get(ne.envMap||$e),Dt=ne.vertexColors===!0&&!!ie.attributes.color&&ie.attributes.color.itemSize===4,dt=!!ne.normalMap&&!!ie.attributes.tangent,gt=!!ie.morphAttributes.position,qt=!!ie.morphAttributes.normal,Eo=!!ie.morphAttributes.color,Ma=ne.toneMapped?m.toneMapping:ls,Ta=ie.morphAttributes.position||ie.morphAttributes.normal||ie.morphAttributes.color,bi=Ta!==void 0?Ta.length:0,At=ce.get(ne),Ea=d.state.lights;if(Y===!0&&(G===!0||O!==S)){let Si=O===S&&ne.id===b;P.setState(ne,O,Si)}let an=!1;ne.version===At.__version?(At.needsLights&&At.lightsStateVersion!==Ea.state.version||At.outputEncoding!==nt||ue.isInstancedMesh&&At.instancing===!1||!ue.isInstancedMesh&&At.instancing===!0||ue.isSkinnedMesh&&At.skinning===!1||!ue.isSkinnedMesh&&At.skinning===!0||At.envMap!==tt||ne.fog===!0&&At.fog!==Ke||At.numClippingPlanes!==void 0&&(At.numClippingPlanes!==P.numPlanes||At.numIntersection!==P.numIntersection)||At.vertexAlphas!==Dt||At.vertexTangents!==dt||At.morphTargets!==gt||At.morphNormals!==qt||At.morphColors!==Eo||At.toneMapping!==Ma||te.isWebGL2===!0&&At.morphTargetsCount!==bi)&&(an=!0):(an=!0,At.__version=ne.version);let wi=At.currentProgram;an===!0&&(wi=Jm(ne,J,ue));let _s=!1,tu=!1,$m=!1,Zn=wi.getUniforms(),nu=At.uniforms;if(W.useProgram(wi.program)&&(_s=!0,tu=!0,$m=!0),ne.id!==b&&(b=ne.id,tu=!0),_s||S!==O){if(Zn.setValue(q,"projectionMatrix",O.projectionMatrix),te.logarithmicDepthBuffer&&Zn.setValue(q,"logDepthBufFC",2/(Math.log(O.far+1)/Math.LN2)),S!==O&&(S=O,tu=!0,$m=!0),ne.isShaderMaterial||ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshStandardMaterial||ne.envMap){let Si=Zn.map.cameraPosition;Si!==void 0&&Si.setValue(q,H.setFromMatrixPosition(O.matrixWorld))}(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial)&&Zn.setValue(q,"isOrthographic",O.isOrthographicCamera===!0),(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial||ne.isShadowMaterial||ue.isSkinnedMesh)&&Zn.setValue(q,"viewMatrix",O.matrixWorldInverse)}if(ue.isSkinnedMesh){Zn.setOptional(q,ue,"bindMatrix"),Zn.setOptional(q,ue,"bindMatrixInverse");let Si=ue.skeleton;Si&&(te.floatVertexTextures?(Si.boneTexture===null&&Si.computeBoneTexture(),Zn.setValue(q,"boneTexture",Si.boneTexture,oe),Zn.setValue(q,"boneTextureSize",Si.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 eg=ie.morphAttributes;return(eg.position!==void 0||eg.normal!==void 0||eg.color!==void 0&&te.isWebGL2===!0)&&pe.update(ue,ie,ne,wi),(tu||At.receiveShadow!==ue.receiveShadow)&&(At.receiveShadow=ue.receiveShadow,Zn.setValue(q,"receiveShadow",ue.receiveShadow)),tu&&(Zn.setValue(q,"toneMappingExposure",m.toneMappingExposure),At.needsLights&&IE(nu,$m),Ke&&ne.fog===!0&&Oe.refreshFogUniforms(nu,Ke),Oe.refreshMaterialUniforms(nu,ne,C,E,z),ja.upload(q,At.uniformsList,nu,oe)),ne.isShaderMaterial&&ne.uniformsNeedUpdate===!0&&(ja.upload(q,At.uniformsList,nu,oe),ne.uniformsNeedUpdate=!1),ne.isSpriteMaterial&&Zn.setValue(q,"center",ue.center),Zn.setValue(q,"modelViewMatrix",ue.modelViewMatrix),Zn.setValue(q,"normalMatrix",ue.normalMatrix),Zn.setValue(q,"modelMatrix",ue.matrixWorld),wi}function IE(O,J){O.ambientLightColor.needsUpdate=J,O.lightProbe.needsUpdate=J,O.directionalLights.needsUpdate=J,O.directionalLightShadows.needsUpdate=J,O.pointLights.needsUpdate=J,O.pointLightShadows.needsUpdate=J,O.spotLights.needsUpdate=J,O.spotLightShadows.needsUpdate=J,O.rectAreaLights.needsUpdate=J,O.hemisphereLights.needsUpdate=J}function LE(O){return O.isMeshLambertMaterial||O.isMeshToonMaterial||O.isMeshPhongMaterial||O.isMeshStandardMaterial||O.isShadowMaterial||O.isShaderMaterial&&O.lights===!0}this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return v},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(O,J,ie){ce.get(O.texture).__webglTexture=J,ce.get(O.depthTexture).__webglTexture=ie;let ne=ce.get(O);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(O,J){let ie=ce.get(O);ie.__webglFramebuffer=J,ie.__useDefaultFramebuffer=J===void 0},this.setRenderTarget=function(O,J=0,ie=0){w=O,y=J,v=ie;let ne=!0;if(O){let tt=ce.get(O);tt.__useDefaultFramebuffer!==void 0?(W.bindFramebuffer(36160,null),ne=!1):tt.__webglFramebuffer===void 0?oe.setupRenderTarget(O):tt.__hasExternalTextures&&oe.rebindTextures(O,ce.get(O.texture).__webglTexture,ce.get(O.depthTexture).__webglTexture)}let ue=null,Ke=!1,$e=!1;if(O){let tt=O.texture;(tt.isData3DTexture||tt.isDataArrayTexture)&&($e=!0);let Dt=ce.get(O).__webglFramebuffer;O.isWebGLCubeRenderTarget?(ue=Dt[J],Ke=!0):te.isWebGL2&&O.samples>0&&oe.useMultisampledRTT(O)===!1?ue=ce.get(O).__webglMultisampledFramebuffer:ue=Dt,_.copy(O.viewport),M.copy(O.scissor),x=O.scissorTest}else _.copy(R).multiplyScalar(C).floor(),M.copy(F).multiplyScalar(C).floor(),x=B;if(W.bindFramebuffer(36160,ue)&&te.drawBuffers&&ne&&W.drawBuffers(O,ue),W.viewport(_),W.scissor(M),W.setScissorTest(x),Ke){let tt=ce.get(O.texture);q.framebufferTexture2D(36160,36064,34069+J,tt.__webglTexture,ie)}else if($e){let tt=ce.get(O.texture),Dt=J||0;q.framebufferTextureLayer(36160,36064,tt.__webglTexture,ie||0,Dt)}b=-1},this.readRenderTargetPixels=function(O,J,ie,ne,ue,Ke,$e){if(!(O&&O.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let nt=ce.get(O).__webglFramebuffer;if(O.isWebGLCubeRenderTarget&&$e!==void 0&&(nt=nt[$e]),nt){W.bindFramebuffer(36160,nt);try{let tt=O.texture,Dt=tt.format,dt=tt.type;if(Dt!==ni&&re.convert(Dt)!==q.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let gt=dt===mu&&($.has("EXT_color_buffer_half_float")||te.isWebGL2&&$.has("EXT_color_buffer_float"));if(dt!==Ut&&re.convert(dt)!==q.getParameter(35738)&&!(dt===_i&&(te.isWebGL2||$.has("OES_texture_float")||$.has("WEBGL_color_buffer_float")))&&!gt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=O.width-ne&&ie>=0&&ie<=O.height-ue&&q.readPixels(J,ie,ne,ue,re.convert(Dt),re.convert(dt),Ke)}finally{let tt=w!==null?ce.get(w).__webglFramebuffer:null;W.bindFramebuffer(36160,tt)}}},this.copyFramebufferToTexture=function(O,J,ie=0){let ne=Math.pow(2,-ie),ue=Math.floor(J.image.width*ne),Ke=Math.floor(J.image.height*ne);oe.setTexture2D(J,0),q.copyTexSubImage2D(3553,ie,0,0,O.x,O.y,ue,Ke),W.unbindTexture()},this.copyTextureToTexture=function(O,J,ie,ne=0){let ue=J.image.width,Ke=J.image.height,$e=re.convert(ie.format),nt=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,O.x,O.y,ue,Ke,$e,nt,J.image.data):J.isCompressedTexture?q.compressedTexSubImage2D(3553,ne,O.x,O.y,J.mipmaps[0].width,J.mipmaps[0].height,$e,J.mipmaps[0].data):q.texSubImage2D(3553,ne,O.x,O.y,$e,nt,J.image),ne===0&&ie.generateMipmaps&&q.generateMipmap(3553),W.unbindTexture()},this.copyTextureToTexture3D=function(O,J,ie,ne,ue=0){if(m.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Ke=O.max.x-O.min.x+1,$e=O.max.y-O.min.y+1,nt=O.max.z-O.min.z+1,tt=re.convert(ne.format),Dt=re.convert(ne.type),dt;if(ne.isData3DTexture)oe.setTexture3D(ne,0),dt=32879;else if(ne.isDataArrayTexture)oe.setTexture2DArray(ne,0),dt=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 gt=q.getParameter(3314),qt=q.getParameter(32878),Eo=q.getParameter(3316),Ma=q.getParameter(3315),Ta=q.getParameter(32877),bi=ie.isCompressedTexture?ie.mipmaps[0]:ie.image;q.pixelStorei(3314,bi.width),q.pixelStorei(32878,bi.height),q.pixelStorei(3316,O.min.x),q.pixelStorei(3315,O.min.y),q.pixelStorei(32877,O.min.z),ie.isDataTexture||ie.isData3DTexture?q.texSubImage3D(dt,ue,J.x,J.y,J.z,Ke,$e,nt,tt,Dt,bi.data):ie.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),q.compressedTexSubImage3D(dt,ue,J.x,J.y,J.z,Ke,$e,nt,tt,bi.data)):q.texSubImage3D(dt,ue,J.x,J.y,J.z,Ke,$e,nt,tt,Dt,bi),q.pixelStorei(3314,gt),q.pixelStorei(32878,qt),q.pixelStorei(3316,Eo),q.pixelStorei(3315,Ma),q.pixelStorei(32877,Ta),ue===0&&ne.generateMipmaps&&q.generateMipmap(dt),W.unbindTexture()},this.initTexture=function(O){O.isCubeTexture?oe.setTextureCube(O,0):O.isData3DTexture?oe.setTexture3D(O,0):O.isDataArrayTexture?oe.setTexture2DArray(O,0):oe.setTexture2D(O,0),W.unbindTexture()},this.resetState=function(){y=0,v=0,w=null,W.reset(),Be.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var ny=class extends Ey{};ny.prototype.isWebGL1Renderer=!0;var Za=class{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new Ne(e),this.near=t,this.far=n}clone(){return new Za(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},tr=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}},Zd=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=kg,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Mi()}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=Mi()),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=Mi()),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}}},Kn=new A,Fo=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++)Kn.fromBufferAttribute(this,t),Kn.applyMatrix4(e),this.setXYZ(t,Kn.x,Kn.y,Kn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Kn.fromBufferAttribute(this,t),Kn.applyNormalMatrix(e),this.setXYZ(t,Kn.x,Kn.y,Kn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Kn.fromBufferAttribute(this,t),Kn.transformDirection(e),this.setXYZ(t,Kn.x,Kn.y,Kn.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 Ge(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 Fo(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 Kd=class extends Ge{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 Nr=class extends No{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ne(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}},zb=new A,Gb=new A,kb=new _e,Lg=new cs,Rd=new Ln,Uo=class extends ot{constructor(e=new Ie,t=new Nr){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++)zb.fromBufferAttribute(t,i-1),Gb.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=zb.distanceTo(Gb);e.setAttribute("lineDistance",new we(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(),Rd.copy(n.boundingSphere),Rd.applyMatrix4(i),Rd.radius+=s,e.ray.intersectsSphere(Rd)===!1)return;kb.copy(i).invert(),Lg.copy(e.ray).applyMatrix4(kb);let a=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=a*a,u=new A,c=new A,h=new A,d=new A,f=this.isLineSegments?2:1,p=n.index,g=n.attributes.position;if(p!==null){let y=Math.max(0,o.start),v=Math.min(p.count,o.start+o.count);for(let w=y,b=v-1;w<b;w+=f){let S=p.getX(w),_=p.getX(w+1);if(u.fromBufferAttribute(g,S),c.fromBufferAttribute(g,_),Lg.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let x=e.ray.origin.distanceTo(d);x<e.near||x>e.far||t.push({distance:x,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}else{let y=Math.max(0,o.start),v=Math.min(g.count,o.start+o.count);for(let w=y,b=v-1;w<b;w+=f){if(u.fromBufferAttribute(g,w),c.fromBufferAttribute(g,w+1),Lg.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let _=e.ray.origin.distanceTo(d);_<e.near||_>e.far||t.push({distance:_,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}}}}},Vb=new A,Hb=new A,ks=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)Vb.fromBufferAttribute(t,i),Hb.fromBufferAttribute(t,i+1),n[i]=i===0?0:n[i-1],n[i+1]=n[i]+Vb.distanceTo(Hb);e.setAttribute("lineDistance",new we(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}};var Fr=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 A);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 A,i=[],s=[],o=[],a=new A,l=new _e;for(let f=0;f<=e;f++){let p=f/e;i[f]=this.getTangentAt(p,new A)}s[0]=new A,o[0]=new A;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 p=Math.acos(yn(i[f-1].dot(i[f]),-1,1));s[f].applyMatrix4(l.makeRotationAxis(a,p))}o[f].crossVectors(i[f],s[f])}if(t===!0){let f=Math.acos(yn(s[0].dot(s[e]),-1,1));f/=e,i[0].dot(a.crossVectors(s[0],s[e]))>0&&(f=-f);for(let p=1;p<=e;p++)s[p].applyMatrix4(l.makeRotationAxis(i[p],f*p)),o[p].crossVectors(i[p],s[p])}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}},zo=class extends Fr{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}},ry=class extends zo{constructor(e,t,n,i,s,o){super(e,t,n,n,i,s,o),this.isArcCurve=!0,this.type="ArcCurve"}};function Cy(){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 Od=new A,Rg=new Cy,Og=new Cy,Bg=new Cy,iy=class extends Fr{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 A){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]:(Od.subVectors(i[0],i[1]).add(i[0]),u=Od);let h=i[a%s],d=i[(a+1)%s];if(this.closed||a+2<s?c=i[(a+2)%s]:(Od.subVectors(i[s-1],i[s-2]).add(i[s-1]),c=Od),this.curveType==="centripetal"||this.curveType==="chordal"){let f=this.curveType==="chordal"?.5:.25,p=Math.pow(u.distanceToSquared(h),f),m=Math.pow(h.distanceToSquared(d),f),g=Math.pow(d.distanceToSquared(c),f);m<1e-4&&(m=1),p<1e-4&&(p=m),g<1e-4&&(g=m),Rg.initNonuniformCatmullRom(u.x,h.x,d.x,c.x,p,m,g),Og.initNonuniformCatmullRom(u.y,h.y,d.y,c.y,p,m,g),Bg.initNonuniformCatmullRom(u.z,h.z,d.z,c.z,p,m,g)}else this.curveType==="catmullrom"&&(Rg.initCatmullRom(u.x,h.x,d.x,c.x,this.tension),Og.initCatmullRom(u.y,h.y,d.y,c.y,this.tension),Bg.initCatmullRom(u.z,h.z,d.z,c.z,this.tension));return n.set(Rg.calc(l),Og.calc(l),Bg.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 A().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function Wb(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 IL(r,e){let t=1-r;return t*t*e}function LL(r,e){return 2*(1-r)*r*e}function RL(r,e){return r*r*e}function fu(r,e,t,n){return IL(r,e)+LL(r,t)+RL(r,n)}function OL(r,e){let t=1-r;return t*t*t*e}function BL(r,e){let t=1-r;return 3*t*t*r*e}function NL(r,e){return 3*(1-r)*r*r*e}function FL(r,e){return r*r*r*e}function pu(r,e,t,n,i){return OL(r,e)+BL(r,t)+NL(r,n)+FL(r,i)}var hr=class extends Fr{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(pu(e,i.x,s.x,o.x,a.x),pu(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}},sy=class extends Fr{constructor(e=new A,t=new A,n=new A,i=new A){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new A){let n=t,i=this.v0,s=this.v1,o=this.v2,a=this.v3;return n.set(pu(e,i.x,s.x,o.x,a.x),pu(e,i.y,s.y,o.y,a.y),pu(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}},dr=class extends Fr{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}},bu=class extends Fr{constructor(e=new A,t=new A){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new A){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}},si=class extends Fr{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(fu(e,i.x,s.x,o.x),fu(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}},oy=class extends Fr{constructor(e=new A,t=new A,n=new A){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new A){let n=t,i=this.v0,s=this.v1,o=this.v2;return n.set(fu(e,i.x,s.x,o.x),fu(e,i.y,s.y,o.y),fu(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}},Ka=class extends Fr{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(Wb(a,l.x,u.x,c.x,h.x),Wb(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}},UL=Object.freeze({__proto__:null,ArcCurve:ry,CatmullRomCurve3:iy,CubicBezierCurve:hr,CubicBezierCurve3:sy,EllipseCurve:zo,LineCurve:dr,LineCurve3:bu,QuadraticBezierCurve:si,QuadraticBezierCurve3:oy,SplineCurve:Ka}),ay=class extends Fr{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 dr(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 UL[i.type]().fromJSON(i))}return this}},wu=class extends ay{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 dr(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 si(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 hr(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 Ka(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 zo(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}},Ja=class extends Ie{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=yn(i,0,Math.PI*2);let s=[],o=[],a=[],l=[],u=[],c=1/t,h=new A,d=new N,f=new A,p=new A,m=new A,g=0,y=0;for(let v=0;v<=e.length-1;v++)switch(v){case 0:g=e[v+1].x-e[v].x,y=e[v+1].y-e[v].y,f.x=y*1,f.y=-g,f.z=y*0,m.copy(f),f.normalize(),l.push(f.x,f.y,f.z);break;case e.length-1:l.push(m.x,m.y,m.z);break;default:g=e[v+1].x-e[v].x,y=e[v+1].y-e[v].y,f.x=y*1,f.y=-g,f.z=y*0,p.copy(f),f.x+=m.x,f.y+=m.y,f.z+=m.z,f.normalize(),l.push(f.x,f.y,f.z),m.copy(p)}for(let v=0;v<=t;v++){let w=n+v*c*i,b=Math.sin(w),S=Math.cos(w);for(let _=0;_<=e.length-1;_++){h.x=e[_].x*b,h.y=e[_].y,h.z=e[_].x*S,o.push(h.x,h.y,h.z),d.x=v/t,d.y=_/(e.length-1),a.push(d.x,d.y);let M=l[3*_+0]*b,x=l[3*_+1],T=l[3*_+0]*S;u.push(M,x,T)}}for(let v=0;v<t;v++)for(let w=0;w<e.length-1;w++){let b=w+v*e.length,S=b,_=b+e.length,M=b+e.length+1,x=b+1;s.push(S,_,x),s.push(M,x,_)}this.setIndex(s),this.setAttribute("position",new we(o,3)),this.setAttribute("uv",new we(a,2)),this.setAttribute("normal",new we(u,3))}static fromJSON(e){return new Ja(e.points,e.segments,e.phiStart,e.phiLength)}};var Go=class extends Ie{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=[],p=0,m=[],g=n/2,y=0;v(),o===!1&&(e>0&&w(!0),t>0&&w(!1)),this.setIndex(c),this.setAttribute("position",new we(h,3)),this.setAttribute("normal",new we(d,3)),this.setAttribute("uv",new we(f,2));function v(){let b=new A,S=new A,_=0,M=(t-e)/n;for(let x=0;x<=s;x++){let T=[],E=x/s,C=E*(t-e)+e;for(let D=0;D<=i;D++){let I=D/i,R=I*l+a,F=Math.sin(R),B=Math.cos(R);S.x=C*F,S.y=-E*n+g,S.z=C*B,h.push(S.x,S.y,S.z),b.set(F,M,B).normalize(),d.push(b.x,b.y,b.z),f.push(I,1-E),T.push(p++)}m.push(T)}for(let x=0;x<i;x++)for(let T=0;T<s;T++){let E=m[T][x],C=m[T+1][x],D=m[T+1][x+1],I=m[T][x+1];c.push(E,C,I),c.push(C,D,I),_+=6}u.addGroup(y,_,0),y+=_}function w(b){let S=p,_=new N,M=new A,x=0,T=b===!0?e:t,E=b===!0?1:-1;for(let D=1;D<=i;D++)h.push(0,g*E,0),d.push(0,E,0),f.push(.5,.5),p++;let C=p;for(let D=0;D<=i;D++){let R=D/i*l+a,F=Math.cos(R),B=Math.sin(R);M.x=T*B,M.y=g*E,M.z=T*F,h.push(M.x,M.y,M.z),d.push(0,E,0),_.x=F*.5+.5,_.y=B*.5*E+.5,f.push(_.x,_.y),p++}for(let D=0;D<i;D++){let I=S+D,R=C+D;b===!0?c.push(R,R+1,I):c.push(R+1,R,I),x+=3}u.addGroup(y,x,b===!0?1:2),y+=x}}static fromJSON(e){return new Go(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},$a=class extends Go{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 $a(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},el=class extends Ie{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 we(s,3)),this.setAttribute("normal",new we(s.slice(),3)),this.setAttribute("uv",new we(o,2)),i===0?this.computeVertexNormals():this.normalizeNormals();function a(v){let w=new A,b=new A,S=new A;for(let _=0;_<t.length;_+=3)f(t[_+0],w),f(t[_+1],b),f(t[_+2],S),l(w,b,S,v)}function l(v,w,b,S){let _=S+1,M=[];for(let x=0;x<=_;x++){M[x]=[];let T=v.clone().lerp(b,x/_),E=w.clone().lerp(b,x/_),C=_-x;for(let D=0;D<=C;D++)D===0&&x===_?M[x][D]=T:M[x][D]=T.clone().lerp(E,D/C)}for(let x=0;x<_;x++)for(let T=0;T<2*(_-x)-1;T++){let E=Math.floor(T/2);T%2===0?(d(M[x][E+1]),d(M[x+1][E]),d(M[x][E])):(d(M[x][E+1]),d(M[x+1][E+1]),d(M[x+1][E]))}}function u(v){let w=new A;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(v),s[b+0]=w.x,s[b+1]=w.y,s[b+2]=w.z}function c(){let v=new A;for(let w=0;w<s.length;w+=3){v.x=s[w+0],v.y=s[w+1],v.z=s[w+2];let b=g(v)/2/Math.PI+.5,S=y(v)/Math.PI+.5;o.push(b,1-S)}p(),h()}function h(){for(let v=0;v<o.length;v+=6){let w=o[v+0],b=o[v+2],S=o[v+4],_=Math.max(w,b,S),M=Math.min(w,b,S);_>.9&&M<.1&&(w<.2&&(o[v+0]+=1),b<.2&&(o[v+2]+=1),S<.2&&(o[v+4]+=1))}}function d(v){s.push(v.x,v.y,v.z)}function f(v,w){let b=v*3;w.x=e[b+0],w.y=e[b+1],w.z=e[b+2]}function p(){let v=new A,w=new A,b=new A,S=new A,_=new N,M=new N,x=new N;for(let T=0,E=0;T<s.length;T+=9,E+=6){v.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]),_.set(o[E+0],o[E+1]),M.set(o[E+2],o[E+3]),x.set(o[E+4],o[E+5]),S.copy(v).add(w).add(b).divideScalar(3);let C=g(S);m(_,E+0,v,C),m(M,E+2,w,C),m(x,E+4,b,C)}}function m(v,w,b,S){S<0&&v.x===1&&(o[w]=v.x-1),b.x===0&&b.z===0&&(o[w]=S/2/Math.PI+.5)}function g(v){return Math.atan2(v.z,-v.x)}function y(v){return Math.atan2(-v.y,Math.sqrt(v.x*v.x+v.z*v.z))}}static fromJSON(e){return new el(e.vertices,e.indices,e.radius,e.details)}},tl=class extends el{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 tl(e.radius,e.detail)}};var ri=class extends wu{constructor(e){super(e),this.uuid=Mi(),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 wu().fromJSON(i))}return this}},zL={triangulate:function(r,e,t=2){let n=e&&e.length,i=n?e[0]*t:r.length,s=vw(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=WL(r,e,s,t)),r.length>80*t){a=u=r[0],l=c=r[1];for(let p=t;p<i;p+=t)h=r[p],d=r[p+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 Su(s,o,t,a,l,f),o}};function vw(r,e,t,n,i){let s,o;if(i===t3(r,e,t,n)>0)for(s=e;s<t;s+=n)o=jb(s,r[s],r[s+1],o);else for(s=t-n;s>=e;s-=n)o=jb(s,r[s],r[s+1],o);return o&&hf(o,o.next)&&(_u(o),o=o.next),o}function Vs(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(hf(t,t.next)||Ht(t.prev,t,t.next)===0)){if(_u(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function Su(r,e,t,n,i,s,o){if(!r)return;!o&&s&&QL(r,n,i,s);let a=r,l,u;for(;r.prev!==r.next;){if(l=r.prev,u=r.next,s?kL(r,n,i,s):GL(r)){e.push(l.i/t),e.push(r.i/t),e.push(u.i/t),_u(r),r=u.next,a=u.next;continue}if(r=u,r===a){o?o===1?(r=VL(Vs(r),e,t),Su(r,e,t,n,i,s,2)):o===2&&HL(r,e,t,n,i,s):Su(Vs(r),e,t,n,i,s,1);break}}}function GL(r){let e=r.prev,t=r,n=r.next;if(Ht(e,t,n)>=0)return!1;let i=r.next.next;for(;i!==r.prev;){if(Wa(e.x,e.y,t.x,t.y,n.x,n.y,i.x,i.y)&&Ht(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function kL(r,e,t,n){let i=r.prev,s=r,o=r.next;if(Ht(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=ly(a,l,e,t,n),d=ly(u,c,e,t,n),f=r.prevZ,p=r.nextZ;for(;f&&f.z>=h&&p&&p.z<=d;){if(f!==r.prev&&f!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&Ht(f.prev,f,f.next)>=0||(f=f.prevZ,p!==r.prev&&p!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,p.x,p.y)&&Ht(p.prev,p,p.next)>=0))return!1;p=p.nextZ}for(;f&&f.z>=h;){if(f!==r.prev&&f!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&Ht(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;p&&p.z<=d;){if(p!==r.prev&&p!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,p.x,p.y)&&Ht(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function VL(r,e,t){let n=r;do{let i=n.prev,s=n.next.next;!hf(i,s)&&xw(i,n,n.next,s)&&Au(i,s)&&Au(s,i)&&(e.push(i.i/t),e.push(n.i/t),e.push(s.i/t),_u(n),_u(n.next),n=r=s),n=n.next}while(n!==r);return Vs(n)}function HL(r,e,t,n,i,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&JL(o,a)){let l=bw(o,a);o=Vs(o,o.next),l=Vs(l,l.next),Su(o,e,t,n,i,s),Su(l,e,t,n,i,s);return}a=a.next}o=o.next}while(o!==r)}function WL(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=vw(r,a,l,n,!1),u===u.next&&(u.steiner=!0),i.push(KL(u));for(i.sort(jL),s=0;s<i.length;s++)qL(i[s],t),t=Vs(t,t.next);return t}function jL(r,e){return r.x-e.x}function qL(r,e){if(e=XL(r,e),e){let t=bw(e,r);Vs(e,e.next),Vs(t,t.next)}}function XL(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&&Wa(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),Au(t,r)&&(h<c||h===c&&(t.x>o.x||t.x===o.x&&YL(o,t)))&&(o=t,c=h)),t=t.next;while(t!==a);return o}function YL(r,e){return Ht(r.prev,r,e.prev)<0&&Ht(e.next,r,r.next)<0}function QL(r,e,t,n){let i=r;do i.z===null&&(i.z=ly(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,ZL(i)}function ZL(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 ly(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 KL(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 Wa(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 JL(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!$L(r,e)&&(Au(r,e)&&Au(e,r)&&e3(r,e)&&(Ht(r.prev,r,e.prev)||Ht(r,e.prev,e))||hf(r,e)&&Ht(r.prev,r,r.next)>0&&Ht(e.prev,e,e.next)>0)}function Ht(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function hf(r,e){return r.x===e.x&&r.y===e.y}function xw(r,e,t,n){let i=Nd(Ht(r,e,t)),s=Nd(Ht(r,e,n)),o=Nd(Ht(t,n,r)),a=Nd(Ht(t,n,e));return!!(i!==s&&o!==a||i===0&&Bd(r,t,e)||s===0&&Bd(r,n,e)||o===0&&Bd(t,r,n)||a===0&&Bd(t,e,n))}function Bd(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 Nd(r){return r>0?1:r<0?-1:0}function $L(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&&xw(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function Au(r,e){return Ht(r.prev,r,r.next)<0?Ht(r,e,r.next)>=0&&Ht(r,r.prev,e)>=0:Ht(r,e,r.prev)<0||Ht(r,r.next,e)<0}function e3(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 bw(r,e){let t=new cy(r.i,r.x,r.y),n=new cy(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 jb(r,e,t,n){let i=new cy(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 _u(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 cy(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 t3(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 Bs=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 Bs.area(e)<0}static triangulateShape(e,t){let n=[],i=[],s=[];qb(e),Xb(n,e);let o=e.length;t.forEach(qb);for(let l=0;l<t.length;l++)i.push(o),o+=t[l].length,Xb(n,t[l]);let a=zL.triangulate(n,i);for(let l=0;l<a.length;l+=3)s.push(a.slice(l,l+3));return s}};function qb(r){let e=r.length;e>2&&r[e-1].equals(r[0])&&r.pop()}function Xb(r,e){for(let t=0;t<e.length;t++)r.push(e[t].x),r.push(e[t].y)}var nl=class extends el{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 nl(e.radius,e.detail)}};var rl=class extends Ie{constructor(e=new ri([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 we(i,3)),this.setAttribute("normal",new we(s,3)),this.setAttribute("uv",new we(o,2));function u(c){let h=i.length/3,d=c.extractPoints(t),f=d.shape,p=d.holes;Bs.isClockWise(f)===!1&&(f=f.reverse());for(let g=0,y=p.length;g<y;g++){let v=p[g];Bs.isClockWise(v)===!0&&(p[g]=v.reverse())}let m=Bs.triangulateShape(f,p);for(let g=0,y=p.length;g<y;g++){let v=p[g];f=f.concat(v)}for(let g=0,y=f.length;g<y;g++){let v=f[g];i.push(v.x,v.y,0),s.push(0,0,1),o.push(v.x,v.y)}for(let g=0,y=m.length;g<y;g++){let v=m[g],w=v[0]+h,b=v[1]+h,S=v[2]+h;n.push(w,b,S),l+=3}}}toJSON(){let e=super.toJSON(),t=this.parameters.shapes;return n3(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 rl(n,e.curveSegments)}};function n3(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 ko=class extends Ie{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 A,d=new A,f=[],p=[],m=[],g=[];for(let y=0;y<=n;y++){let v=[],w=y/n,b=0;y==0&&o==0?b=.5/t:y==n&&l==Math.PI&&(b=-.5/t);for(let S=0;S<=t;S++){let _=S/t;h.x=-e*Math.cos(i+_*s)*Math.sin(o+w*a),h.y=e*Math.cos(o+w*a),h.z=e*Math.sin(i+_*s)*Math.sin(o+w*a),p.push(h.x,h.y,h.z),d.copy(h).normalize(),m.push(d.x,d.y,d.z),g.push(_+b,1-w),v.push(u++)}c.push(v)}for(let y=0;y<n;y++)for(let v=0;v<t;v++){let w=c[y][v+1],b=c[y][v],S=c[y+1][v],_=c[y+1][v+1];(y!==0||o>0)&&f.push(w,b,_),(y!==n-1||l<Math.PI)&&f.push(b,S,_)}this.setIndex(f),this.setAttribute("position",new we(p,3)),this.setAttribute("normal",new we(m,3)),this.setAttribute("uv",new we(g,2))}static fromJSON(e){return new ko(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}};var il=class extends Ie{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 A,d=new A,f=new A,p=new A,m=new A,g=new A,y=new A;for(let w=0;w<=n;++w){let b=w/n*s*Math.PI*2;v(b,s,o,e,f),v(b+.01,s,o,e,p),g.subVectors(p,f),y.addVectors(p,f),m.crossVectors(g,y),y.crossVectors(m,g),m.normalize(),y.normalize();for(let S=0;S<=i;++S){let _=S/i*Math.PI*2,M=-t*Math.cos(_),x=t*Math.sin(_);h.x=f.x+(M*y.x+x*m.x),h.y=f.y+(M*y.y+x*m.y),h.z=f.z+(M*y.z+x*m.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(S/i)}}for(let w=1;w<=n;w++)for(let b=1;b<=i;b++){let S=(i+1)*(w-1)+(b-1),_=(i+1)*w+(b-1),M=(i+1)*w+b,x=(i+1)*(w-1)+b;a.push(S,_,x),a.push(_,M,x)}this.setIndex(a),this.setAttribute("position",new we(l,3)),this.setAttribute("normal",new we(u,3)),this.setAttribute("uv",new we(c,2));function v(w,b,S,_,M){let x=Math.cos(w),T=Math.sin(w),E=S/b*w,C=Math.cos(E);M.x=_*(2+C)*.5*x,M.y=_*(2+C)*T*.5,M.z=_*Math.sin(E)*.5}}static fromJSON(e){return new il(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}};var gn={arraySlice:function(r,e,t){return gn.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 p=u.times[f]*i;if(!(p<t||p>=n)){h.push(u.times[f]);for(let m=0;m<c;++m)d.push(u.values[f*c+m])}}h.length!==0&&(u.times=gn.convertArray(h,u.times.constructor),u.values=gn.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 p=a.times.length-1,m;if(s<=a.times[0]){let y=c,v=h-c;m=gn.arraySlice(a.values,y,v)}else if(s>=a.times[p]){let y=p*h+c,v=y+h-c;m=gn.arraySlice(a.values,y,v)}else{let y=a.createInterpolant(),v=c,w=h-c;y.evaluate(s),m=gn.arraySlice(y.resultBuffer,v,w)}l==="quaternion"&&new st().fromArray(m).normalize().conjugate().toArray(m);let g=u.times.length;for(let y=0;y<g;++y){let v=y*f+d;if(l==="quaternion")st.multiplyQuaternionsFlat(u.values,v,m,0,u.values,v);else{let w=f-d*2;for(let b=0;b<w;++b)u.values[v+b]-=m[b]}}}return r.blendMode=DC,r}},sl=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_(){}},uy=class extends sl{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:nb,endingEnd:nb}}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 rb:s=e,a=2*t-n;break;case ib: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 rb:o=e,l=2*n-t;break;case ib: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,p=(n-t)/(i-t),m=p*p,g=m*p,y=-d*g+2*d*m-d*p,v=(1+d)*g+(-1.5-2*d)*m+(-.5+d)*p+1,w=(-1-f)*g+(1.5+f)*m+.5*p,b=f*g-f*m;for(let S=0;S!==a;++S)s[S]=y*o[c+S]+v*o[u+S]+w*o[l+S]+b*o[h+S];return s}},hy=class extends sl{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}},dy=class extends sl{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}},oi=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=gn.convertArray(t,this.TimeBufferType),this.values=gn.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:gn.convertArray(e.times,Array),values:gn.convertArray(e.values,Array)};let i=e.getInterpolation();i!==e.DefaultInterpolation&&(n.interpolation=i)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new dy(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new hy(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new uy(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case kd:t=this.InterpolantFactoryMethodDiscrete;break;case Vd:t=this.InterpolantFactoryMethodLinear;break;case sg: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 kd;case this.InterpolantFactoryMethodLinear:return Vd;case this.InterpolantFactoryMethodSmooth:return sg}}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=gn.arraySlice(n,s,o),this.values=gn.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&&gn.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=gn.arraySlice(this.times),t=gn.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===sg,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 p=0;p!==n;++p){let m=t[h+p];if(m!==t[d+p]||m!==t[f+p]){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=gn.arraySlice(e,0,o),this.values=gn.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=gn.arraySlice(this.times,0),t=gn.arraySlice(this.values,0),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};oi.prototype.TimeBufferType=Float32Array;oi.prototype.ValueBufferType=Float32Array;oi.prototype.DefaultInterpolation=Vd;var Vo=class extends oi{};Vo.prototype.ValueTypeName="bool";Vo.prototype.ValueBufferType=Array;Vo.prototype.DefaultInterpolation=kd;Vo.prototype.InterpolantFactoryMethodLinear=void 0;Vo.prototype.InterpolantFactoryMethodSmooth=void 0;var fy=class extends oi{};fy.prototype.ValueTypeName="color";var py=class extends oi{};py.prototype.ValueTypeName="number";var my=class extends sl{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)st.slerpFlat(s,0,o,u-a,o,u,l);return s}},Mu=class extends oi{InterpolantFactoryMethodLinear(e){return new my(this.times,this.values,this.getValueSize(),e)}};Mu.prototype.ValueTypeName="quaternion";Mu.prototype.DefaultInterpolation=Vd;Mu.prototype.InterpolantFactoryMethodSmooth=void 0;var Ho=class extends oi{};Ho.prototype.ValueTypeName="string";Ho.prototype.ValueBufferType=Array;Ho.prototype.DefaultInterpolation=kd;Ho.prototype.InterpolantFactoryMethodLinear=void 0;Ho.prototype.InterpolantFactoryMethodSmooth=void 0;var gy=class extends oi{};gy.prototype.ValueTypeName="vector";var Yb={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={}}},Tu=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],p=u[h+1];if(f.global&&(f.lastIndex=0),f.test(c))return p}return null}}},r3=new Tu,Hs=class{constructor(e){this.manager=e!==void 0?e:r3,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}},ss={},Ws=class extends Hs{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=Yb.get(e);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(ss[e]!==void 0){ss[e].push({onLoad:t,onProgress:n,onError:i});return}ss[e]=[],ss[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=ss[e],h=u.body.getReader(),d=u.headers.get("Content-Length"),f=d?parseInt(d):0,p=f!==0,m=0,g=new ReadableStream({start(y){v();function v(){h.read().then(({done:w,value:b})=>{if(w)y.close();else{m+=b.byteLength;let S=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:f});for(let _=0,M=c.length;_<M;_++){let x=c[_];x.onProgress&&x.onProgress(S)}y.enqueue(b),v()}})}}});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(p=>f.decode(p))}}}).then(u=>{Yb.add(e,u);let c=ss[e];delete ss[e];for(let h=0,d=c.length;h<d;h++){let f=c[h];f.onLoad&&f.onLoad(u)}}).catch(u=>{let c=ss[e];if(c===void 0)throw this.manager.itemError(e),u;delete ss[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 ol=class extends ot{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ne(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}},Wo=class extends ol{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.groundColor=new Ne(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},Qb=new _e,Zb=new A,Kb=new A,Eu=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 _e,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new vu,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;Zb.setFromMatrixPosition(e.matrixWorld),t.position.copy(Zb),Kb.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Kb),t.updateMatrixWorld(),Qb.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Qb),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}},yy=class extends Eu{constructor(){super(new tn(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,n=gu*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}},Jd=class extends ol{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 yy}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}},Jb=new _e,au=new A,Ng=new A,vy=class extends Eu{constructor(){super(new tn(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 A(1,0,0),new A(-1,0,0),new A(0,0,1),new A(0,0,-1),new A(0,1,0),new A(0,-1,0)],this._cubeUps=[new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,0,1),new A(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()),au.setFromMatrixPosition(e.matrixWorld),n.position.copy(au),Ng.copy(n.position),Ng.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(Ng),n.updateMatrixWorld(),i.makeTranslation(-au.x,-au.y,-au.z),Jb.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Jb)}},$d=class extends ol{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 vy}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}},xy=class extends Eu{constructor(){super(new Qa(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},ef=class extends ol{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 xy}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};var by=class extends Ie{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}},al=class extends Hs{constructor(e){super(e)}load(e,t,n,i){let s=this,o=new Ws(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,p){if(t[p]!==void 0)return t[p];let g=f.interleavedBuffers[p],y=s(f,g.buffer),v=dd(g.type,y),w=new Zd(v,g.stride);return w.uuid=g.uuid,t[p]=w,w}function s(f,p){if(n[p]!==void 0)return n[p];let g=f.arrayBuffers[p],y=new Uint32Array(g).buffer;return n[p]=y,y}let o=e.isInstancedBufferGeometry?new by:new Ie,a=e.data.index;if(a!==void 0){let f=dd(a.type,a.array);o.setIndex(new Ge(f,1))}let l=e.data.attributes;for(let f in l){let p=l[f],m;if(p.isInterleavedBufferAttribute){let g=i(e.data,p.data);m=new Fo(g,p.itemSize,p.offset,p.normalized)}else{let g=dd(p.type,p.array),y=p.isInstancedBufferAttribute?Kd:Ge;m=new y(g,p.itemSize,p.normalized)}p.name!==void 0&&(m.name=p.name),p.usage!==void 0&&m.setUsage(p.usage),p.updateRange!==void 0&&(m.updateRange.offset=p.updateRange.offset,m.updateRange.count=p.updateRange.count),o.setAttribute(f,m)}let u=e.data.morphAttributes;if(u)for(let f in u){let p=u[f],m=[];for(let g=0,y=p.length;g<y;g++){let v=p[g],w;if(v.isInterleavedBufferAttribute){let b=i(e.data,v.data);w=new Fo(b,v.itemSize,v.offset,v.normalized)}else{let b=dd(v.type,v.array);w=new Ge(b,v.itemSize,v.normalized)}v.name!==void 0&&(w.name=v.name),m.push(w)}o.morphAttributes[f]=m}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,p=h.length;f!==p;++f){let m=h[f];o.addGroup(m.start,m.count,m.materialIndex)}let d=e.data.boundingSphere;if(d!==void 0){let f=new A;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 tf=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=$b(),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=$b();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function $b(){return(typeof performance>"u"?Date:performance).now()}var Py="\\[\\]\\.:\\/",i3=new RegExp("["+Py+"]","g"),Dy="[^"+Py+"]",s3="[^"+Py.replace("\\.","")+"]",o3=/((?:WC+[\/:])*)/.source.replace("WC",Dy),a3=/(WCOD+)?/.source.replace("WCOD",s3),l3=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Dy),c3=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Dy),u3=new RegExp("^"+o3+a3+l3+c3+"$"),h3=["material","materials","bones"],wy=class{constructor(e,t,n){let i=n||_t.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()}},_t=class{constructor(e,t,n){this.path=t,this.parsedPath=n||_t.parseTrackName(t),this.node=_t.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 _t.Composite(e,t,n):new _t(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(i3,"")}static parseTrackName(e){let t=u3.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);h3.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=_t.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}};_t.Composite=wy;_t.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};_t.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};_t.prototype.GetterByBindingType=[_t.prototype._getValue_direct,_t.prototype._getValue_array,_t.prototype._getValue_arrayElement,_t.prototype._getValue_toArray];_t.prototype.SetterByBindingTypeAndVersioning=[[_t.prototype._setValue_direct,_t.prototype._setValue_direct_setNeedsUpdate,_t.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[_t.prototype._setValue_array,_t.prototype._setValue_array_setNeedsUpdate,_t.prototype._setValue_array_setMatrixWorldNeedsUpdate],[_t.prototype._setValue_arrayElement,_t.prototype._setValue_arrayElement_setNeedsUpdate,_t.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[_t.prototype._setValue_fromArray,_t.prototype._setValue_fromArray_setNeedsUpdate,_t.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Se=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 Se(this.value.clone===void 0?this.value:this.value.clone())}};var ll=class{constructor(e,t,n=0,i=1/0){this.ray=new cs(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new yu,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 Sy(e,this,n,t),n.sort(ew),n}intersectObjects(e,t=!0,n=[]){for(let i=0,s=e.length;i<s;i++)Sy(e[i],this,n,t);return n.sort(ew),n}};function ew(r,e){return r.distance-e.distance}function Sy(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++)Sy(i[s],e,t,!0)}}var Cu=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(yn(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}};var tw=new A,Fd=new A,xn=class{constructor(e=new A,t=new A){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){tw.subVectors(e,this.start),Fd.subVectors(this.end,this.start);let n=Fd.dot(Fd),s=Fd.dot(tw)/n;return t&&(s=yn(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)}},nw=new A,nf=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 Ie,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 we(i,3));let s=new Nr({fog:!1,toneMapped:!1});this.cone=new ks(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),nw.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(nw),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}};var rf=class extends jt{constructor(e,t,n){let i=new ko(t,4,2),s=new Ti({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 rw=new A,Ud=new A,iw=new A,sf=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 Ie;i.setAttribute("position",new we([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let s=new Nr({fog:!1,toneMapped:!1});this.lightPlane=new Uo(i,s),this.add(this.lightPlane),i=new Ie,i.setAttribute("position",new we([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(){rw.setFromMatrixPosition(this.light.matrixWorld),Ud.setFromMatrixPosition(this.light.target.matrixWorld),iw.subVectors(Ud,rw),this.lightPlane.lookAt(Ud),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(Ud),this.targetLine.scale.z=iw.length()}},zd=new A,Xt=new ii,Ur=class extends ks{constructor(e){let t=new Ie,n=new Nr({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(p,m){l(p),l(m)}function l(p){i.push(0,0,0),s.push(0,0,0),o[p]===void 0&&(o[p]=[]),o[p].push(i.length/3-1)}t.setAttribute("position",new we(i,3)),t.setAttribute("color",new we(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 Ne(16755200),c=new Ne(16711680),h=new Ne(43775),d=new Ne(16777215),f=new Ne(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;Xt.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),en("c",t,e,Xt,0,0,-1),en("t",t,e,Xt,0,0,1),en("n1",t,e,Xt,-n,-i,-1),en("n2",t,e,Xt,n,-i,-1),en("n3",t,e,Xt,-n,i,-1),en("n4",t,e,Xt,n,i,-1),en("f1",t,e,Xt,-n,-i,1),en("f2",t,e,Xt,n,-i,1),en("f3",t,e,Xt,-n,i,1),en("f4",t,e,Xt,n,i,1),en("u1",t,e,Xt,n*.7,i*1.1,-1),en("u2",t,e,Xt,-n*.7,i*1.1,-1),en("u3",t,e,Xt,0,i*2,-1),en("cf1",t,e,Xt,-n,0,1),en("cf2",t,e,Xt,n,0,1),en("cf3",t,e,Xt,0,-i,1),en("cf4",t,e,Xt,0,i,1),en("cn1",t,e,Xt,-n,0,-1),en("cn2",t,e,Xt,n,0,-1),en("cn3",t,e,Xt,0,-i,-1),en("cn4",t,e,Xt,0,i,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function en(r,e,t,n,i,s,o){zd.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],zd.x,zd.y,zd.z)}}var jo=class extends ks{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 Ie;s.setIndex(new Ge(n,1)),s.setAttribute("position",new we(i,3)),super(s,new Nr({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 of=class extends ks{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 Ie;i.setAttribute("position",new we(t,3)),i.setAttribute("color",new we(n,3));let s=new Nr({vertexColors:!0,toneMapped:!1});super(i,s),this.type="AxesHelper"}setColors(e,t,n){let i=new Ne,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()}},af=class{constructor(){this.type="ShapePath",this.color=new Ne,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new wu,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(v){let w=[];for(let b=0,S=v.length;b<S;b++){let _=v[b],M=new ri;M.curves=_.curves,w.push(M)}return w}function i(v,w){let b=w.length,S=!1;for(let _=b-1,M=0;M<b;_=M++){let x=w[_],T=w[M],E=T.x-x.x,C=T.y-x.y;if(Math.abs(C)>Number.EPSILON){if(C<0&&(x=w[M],E=-E,T=w[_],C=-C),v.y<x.y||v.y>T.y)continue;if(v.y===x.y){if(v.x===x.x)return!0}else{let D=C*(v.x-x.x)-E*(v.y-x.y);if(D===0)return!0;if(D<0)continue;S=!S}}else{if(v.y!==x.y)continue;if(T.x<=v.x&&v.x<=x.x||x.x<=v.x&&v.x<=T.x)return!0}}return S}let s=Bs.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 ri,u.curves=l.curves,c.push(u),c;let h=!s(o[0].getPoints());h=e?!h:h;let d=[],f=[],p=[],m=0,g;f[m]=void 0,p[m]=[];for(let v=0,w=o.length;v<w;v++)l=o[v],g=l.getPoints(),a=s(g),a=e?!a:a,a?(!h&&f[m]&&m++,f[m]={s:new ri,p:g},f[m].s.curves=l.curves,h&&m++,p[m]=[]):p[m].push({h:l,p:g[0]});if(!f[0])return n(o);if(f.length>1){let v=!1,w=0;for(let b=0,S=f.length;b<S;b++)d[b]=[];for(let b=0,S=f.length;b<S;b++){let _=p[b];for(let M=0;M<_.length;M++){let x=_[M],T=!0;for(let E=0;E<f.length;E++)i(x.p,f[E].p)&&(b!==E&&w++,T?(T=!1,d[E].push(x)):v=!0);T&&d[b].push(x)}}w>0&&v===!1&&(p=d)}let y;for(let v=0,w=f.length;v<w;v++){u=f[v].s,c.push(u),y=p[v];for(let b=0,S=y.length;b<S;b++)u.holes.push(y[b].h)}return c}},{floatView:_4,uint32View:M4,baseTable:T4,shiftTable:E4,mantissaTable:C4,exponentTable:P4,offsetTable:D4}=d3();function d3(){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 lf=class extends ut{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:qo}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=qo);var dl=".",Pu=Symbol("target"),Iy=Symbol("unsubscribe");function Du(r){return r instanceof Date||r instanceof Set||r instanceof Map||r instanceof WeakSet||r instanceof WeakMap||ArrayBuffer.isView(r)}function ww(r){return(typeof r=="object"?r===null:typeof r!="function")||r instanceof RegExp}var Pr=Array.isArray;function Xo(r){return typeof r=="symbol"}var f3={after:(r,e)=>Pr(r)?r.slice(e.length):e===""?r:r.slice(e.length+1),concat:(r,e)=>Pr(r)?(r=[...r],e&&r.push(e),r):e&&e.toString!==void 0?(r!==""&&(r+=dl),Xo(e)?r+e.toString():r+e):r,initial:r=>{if(Pr(r))return r.slice(0,-1);if(r==="")return r;let e=r.lastIndexOf(dl);return e===-1?"":r.slice(0,e)},last:r=>{if(Pr(r))return r[r.length-1]||"";if(r==="")return r;let e=r.lastIndexOf(dl);return e===-1?r:r.slice(e+1)},walk:(r,e)=>{if(Pr(r))for(let t of r)e(t);else if(r!==""){let t=0,n=r.indexOf(dl);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(dl,t)}},get(r,e){return this.walk(e,t=>{r&&(r=r[t])}),r}},nr=f3;function Ly(r){return typeof r=="object"&&typeof r.next=="function"}function Ry(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[Pu].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 df(r,e,t){return r.isUnsubscribed||e.ignoreSymbols&&Xo(t)||e.ignoreUnderscores&&t.charAt(0)==="_"||"ignoreKeys"in e&&e.ignoreKeys.includes(t)}var Iu=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,nr.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 fl(r){return toString.call(r)==="[object Object]"}function pl(){return!0}function js(r,e){return r.length!==e.length||r.some((t,n)=>e[n]!==t)}var ff=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]);var p3=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),Oy={push:pl,pop:pl,shift:pl,unshift:pl,copyWithin:js,reverse:js,sort:js,splice:js,flat:js,fill:js},Sw=new Set([...ff,...p3,...Object.keys(Oy)]);function ml(r,e){if(r.size!==e.size)return!0;for(let t of r)if(!e.has(t))return!0;return!1}var By=["keys","values","entries"],Ny=new Set(["has","toString"]),Fy={add:ml,clear:ml,delete:ml,forEach:ml},Aw=new Set([...Ny,...Object.keys(Fy),...By]);function gl(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 m3=new Set([...Ny,"get"]),Uy={set:gl,clear:gl,delete:gl,forEach:gl},_w=new Set([...m3,...Object.keys(Uy),...By]);var On=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 ff.has(e)}_shallowClone(e){let t=e;if(fl(e))t={...e};else if(Pr(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?(Pr(i)?this._onIsChanged=Oy[t]:i instanceof Set?this._onIsChanged=Fy[t]:i instanceof Map&&(this._onIsChanged=Uy[t]),i):n}update(e,t,n){let i=nr.after(e,this._path);if(t!=="length"){let s=this.clone;nr.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],nr.get(e,t.path)[t.property]=t.previous}isChanged(e){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,e)}};var yl=class extends On{static isHandledMethod(e){return Sw.has(e)}};var Lu=class extends On{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}};var vl=class extends On{static isHandledMethod(e){return Aw.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 xl=class extends On{static isHandledMethod(e){return _w.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 Ru=class extends On{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 Ou=class extends On{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 li=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return fl(e)||Pr(e)||Du(e)}static isHandledMethod(e,t){return fl(e)?On.isHandledMethod(t):Pr(e)?yl.isHandledMethod(t):e instanceof Set?vl.isHandledMethod(t):e instanceof Map?xl.isHandledMethod(t):Du(e)}get isCloning(){return this._stack.length>0}start(e,t,n){let i=On;Pr(e)?i=yl:e instanceof Date?i=Lu:e instanceof Set?i=vl:e instanceof Map?i=xl:e instanceof WeakSet?i=Ru:e instanceof WeakMap&&(i=Ou),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=li.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 g3={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},zy=(r,e,t={})=>{t={...g3,...t};let n=Symbol("ProxyTarget"),{equals:i,isShallow:s,ignoreDetached:o,details:a}=t,l=new Iu(i),u=typeof t.onValidate=="function",c=new li(u),h=(v,w,b,S,_)=>!u||c.isCloning||t.onValidate(nr.concat(l.getPath(v),w),b,S,_)===!0,d=(v,w,b,S)=>{!df(l,t,w)&&!(o&&l.isDetached(v,r))&&f(l.getPath(v),w,b,S)},f=(v,w,b,S,_)=>{c.isCloning?c.update(v,w,S):e(nr.concat(v,w),b,S,_)},p=v=>v&&(v[n]||v),m=(v,w,b,S)=>ww(v)||b==="constructor"||s&&!li.isHandledMethod(w,b)||df(l,t,b)||l.isGetInvariant(w,b)||o&&l.isDetached(w,r)?v:(S===void 0&&(S=l.getPath(w)),l.getProxy(v,nr.concat(S,b),g,n)),g={get(v,w,b){if(Xo(w)){if(w===n||w===Pu)return v;if(w===Iy&&!l.isUnsubscribed&&l.getPath(v).length===0)return l.unsubscribe(),v}let S=Du(v)?Reflect.get(v,w):Reflect.get(v,w,b);return m(S,v,w)},set(v,w,b,S){b=p(b);let _=v[n]||v,M=_[w];if(i(M,b)&&w in v)return!0;let x=h(v,w,b,M);return x&&l.setProperty(_,w,b,S,M)?(d(v,w,v[w],M),!0):!x},defineProperty(v,w,b){if(!l.isSameDescriptor(b,v,w)){let S=v[w];h(v,w,b.value,S)&&l.defineProperty(v,w,b,S)&&d(v,w,b.value,S)}return!0},deleteProperty(v,w){if(!Reflect.has(v,w))return!0;let b=Reflect.get(v,w),S=h(v,w,void 0,b);return S&&l.deleteProperty(v,w,b)?(d(v,w,void 0,b),!0):!S},apply(v,w,b){let S=w[n]||w;if(l.isUnsubscribed)return Reflect.apply(v,S,b);if((a===!1||a!==!0&&!a.includes(v.name))&&li.isHandledType(S)){let _=nr.initial(l.getPath(v)),M=li.isHandledMethod(S,v.name);c.start(S,_,b);let x=Reflect.apply(v,c.preferredThisArg(v,w,S),M?b.map(C=>p(C)):b),T=c.isChanged(S,i),E=c.stop();if(li.isHandledType(x)&&M&&(w instanceof Map&&v.name==="get"&&(_=nr.concat(_,b[0])),x=l.getProxy(x,_,g)),T){let C={name:v.name,args:b,result:x},D=c.isCloning?nr.initial(_):_,I=c.isCloning?nr.last(_):"";h(nr.get(r,D),I,S,E,C)?f(D,I,S,E,C):c.undo(S)}return(w instanceof Map||w instanceof Set)&&Ly(x)?Ry(x,v,w,_,m):x}return Reflect.apply(v,w,b)}},y=l.getProxy(r,t.pathAsArray?[]:"",g);return e=e.bind(y),u&&(t.onValidate=t.onValidate.bind(y)),y};zy.target=r=>r&&r[Pu]||r;zy.unsubscribe=r=>r[Iy]||r;var Gy=zy;var y3=typeof global=="object"&&global&&global.Object===Object&&global,pf=y3;var v3=typeof self=="object"&&self&&self.Object===Object&&self,x3=pf||v3||Function("return this")(),Zt=x3;var b3=Zt.Symbol,rr=b3;var Mw=Object.prototype,w3=Mw.hasOwnProperty,S3=Mw.toString,Bu=rr?rr.toStringTag:void 0;function A3(r){var e=w3.call(r,Bu),t=r[Bu];try{r[Bu]=void 0;var n=!0}catch{}var i=S3.call(r);return n&&(e?r[Bu]=t:delete r[Bu]),i}var Tw=A3;var _3=Object.prototype,M3=_3.toString;function T3(r){return M3.call(r)}var Ew=T3;var E3="[object Null]",C3="[object Undefined]",Cw=rr?rr.toStringTag:void 0;function P3(r){return r==null?r===void 0?C3:E3:Cw&&Cw in Object(r)?Tw(r):Ew(r)}var Dr=P3;function D3(r){return r!=null&&typeof r=="object"}var jn=D3;var I3="[object Symbol]";function L3(r){return typeof r=="symbol"||jn(r)&&Dr(r)==I3}var qs=L3;function R3(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 mf=R3;var O3=Array.isArray,bn=O3;var B3=1/0,Pw=rr?rr.prototype:void 0,Dw=Pw?Pw.toString:void 0;function Iw(r){if(typeof r=="string")return r;if(bn(r))return mf(r,Iw)+"";if(qs(r))return Dw?Dw.call(r):"";var e=r+"";return e=="0"&&1/r==-B3?"-0":e}var Lw=Iw;var N3=/\s/;function F3(r){for(var e=r.length;e--&&N3.test(r.charAt(e)););return e}var Rw=F3;var U3=/^\s+/;function z3(r){return r&&r.slice(0,Rw(r)+1).replace(U3,"")}var Ow=z3;function G3(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var kt=G3;var Bw=0/0,k3=/^[-+]0x[0-9a-f]+$/i,V3=/^0b[01]+$/i,H3=/^0o[0-7]+$/i,W3=parseInt;function j3(r){if(typeof r=="number")return r;if(qs(r))return Bw;if(kt(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=kt(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=Ow(r);var t=V3.test(r);return t||H3.test(r)?W3(r.slice(2),t?2:8):k3.test(r)?Bw:+r}var ky=j3;function q3(r){return r}var gf=q3;var X3="[object AsyncFunction]",Y3="[object Function]",Q3="[object GeneratorFunction]",Z3="[object Proxy]";function K3(r){if(!kt(r))return!1;var e=Dr(r);return e==Y3||e==Q3||e==X3||e==Z3}var bl=K3;var J3=Zt["__core-js_shared__"],yf=J3;var Nw=function(){var r=/[^.]+$/.exec(yf&&yf.keys&&yf.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function $3(r){return!!Nw&&Nw in r}var Fw=$3;var eR=Function.prototype,tR=eR.toString;function nR(r){if(r!=null){try{return tR.call(r)}catch{}try{return r+""}catch{}}return""}var hs=nR;var rR=/[\\^$.*+?()[\]{}|]/g,iR=/^\[object .+?Constructor\]$/,sR=Function.prototype,oR=Object.prototype,aR=sR.toString,lR=oR.hasOwnProperty,cR=RegExp("^"+aR.call(lR).replace(rR,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function uR(r){if(!kt(r)||Fw(r))return!1;var e=bl(r)?cR:iR;return e.test(hs(r))}var Uw=uR;function hR(r,e){return r?.[e]}var zw=hR;function dR(r,e){var t=zw(r,e);return Uw(t)?t:void 0}var fr=dR;var fR=fr(Zt,"WeakMap"),vf=fR;var Gw=Object.create,pR=function(){function r(){}return function(e){if(!kt(e))return{};if(Gw)return Gw(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}(),kw=pR;function mR(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 Vw=mR;function gR(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++t<n;)e[t]=r[t];return e}var xf=gR;var yR=800,vR=16,xR=Date.now;function bR(r){var e=0,t=0;return function(){var n=xR(),i=vR-(n-t);if(t=n,i>0){if(++e>=yR)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}var Hw=bR;function wR(r){return function(){return r}}var Ww=wR;var SR=function(){try{var r=fr(Object,"defineProperty");return r({},"",{}),r}catch{}}(),wl=SR;var AR=wl?function(r,e){return wl(r,"toString",{configurable:!0,enumerable:!1,value:Ww(e),writable:!0})}:gf,jw=AR;var _R=Hw(jw),bf=_R;function MR(r,e){for(var t=-1,n=r==null?0:r.length;++t<n&&e(r[t],t,r)!==!1;);return r}var qw=MR;var TR=9007199254740991,ER=/^(?:0|[1-9]\d*)$/;function CR(r,e){var t=typeof r;return e=e??TR,!!e&&(t=="number"||t!="symbol"&&ER.test(r))&&r>-1&&r%1==0&&r<e}var Xs=CR;function PR(r,e,t){e=="__proto__"&&wl?wl(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}var Sl=PR;function DR(r,e){return r===e||r!==r&&e!==e}var Ys=DR;var IR=Object.prototype,LR=IR.hasOwnProperty;function RR(r,e,t){var n=r[e];(!(LR.call(r,e)&&Ys(n,t))||t===void 0&&!(e in r))&&Sl(r,e,t)}var Al=RR;function OR(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?Sl(t,a,l):Al(t,a,l)}return t}var zr=OR;var Xw=Math.max;function BR(r,e,t){return e=Xw(e===void 0?r.length-1:e,0),function(){for(var n=arguments,i=-1,s=Xw(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),Vw(r,this,a)}}var wf=BR;function NR(r,e){return bf(wf(r,e,gf),r+"")}var Yw=NR;var FR=9007199254740991;function UR(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=FR}var _l=UR;function zR(r){return r!=null&&_l(r.length)&&!bl(r)}var Qs=zR;function GR(r,e,t){if(!kt(t))return!1;var n=typeof e;return(n=="number"?Qs(t)&&Xs(e,t.length):n=="string"&&e in t)?Ys(t[e],r):!1}var Qw=GR;function kR(r){return Yw(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&&Qw(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 Zw=kR;var VR=Object.prototype;function HR(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||VR;return r===t}var Ml=HR;function WR(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var Kw=WR;var jR="[object Arguments]";function qR(r){return jn(r)&&Dr(r)==jR}var Vy=qR;var Jw=Object.prototype,XR=Jw.hasOwnProperty,YR=Jw.propertyIsEnumerable,QR=Vy(function(){return arguments}())?Vy:function(r){return jn(r)&&XR.call(r,"callee")&&!YR.call(r,"callee")},ds=QR;function ZR(){return!1}var $w=ZR;var nS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eS=nS&&typeof module=="object"&&module&&!module.nodeType&&module,KR=eS&&eS.exports===nS,tS=KR?Zt.Buffer:void 0,JR=tS?tS.isBuffer:void 0,$R=JR||$w,Tl=$R;var eO="[object Arguments]",tO="[object Array]",nO="[object Boolean]",rO="[object Date]",iO="[object Error]",sO="[object Function]",oO="[object Map]",aO="[object Number]",lO="[object Object]",cO="[object RegExp]",uO="[object Set]",hO="[object String]",dO="[object WeakMap]",fO="[object ArrayBuffer]",pO="[object DataView]",mO="[object Float32Array]",gO="[object Float64Array]",yO="[object Int8Array]",vO="[object Int16Array]",xO="[object Int32Array]",bO="[object Uint8Array]",wO="[object Uint8ClampedArray]",SO="[object Uint16Array]",AO="[object Uint32Array]",zt={};zt[mO]=zt[gO]=zt[yO]=zt[vO]=zt[xO]=zt[bO]=zt[wO]=zt[SO]=zt[AO]=!0;zt[eO]=zt[tO]=zt[fO]=zt[nO]=zt[pO]=zt[rO]=zt[iO]=zt[sO]=zt[oO]=zt[aO]=zt[lO]=zt[cO]=zt[uO]=zt[hO]=zt[dO]=!1;function _O(r){return jn(r)&&_l(r.length)&&!!zt[Dr(r)]}var rS=_O;function MO(r){return function(e){return r(e)}}var El=MO;var iS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nu=iS&&typeof module=="object"&&module&&!module.nodeType&&module,TO=Nu&&Nu.exports===iS,Hy=TO&&pf.process,EO=function(){try{var r=Nu&&Nu.require&&Nu.require("util").types;return r||Hy&&Hy.binding&&Hy.binding("util")}catch{}}(),fs=EO;var sS=fs&&fs.isTypedArray,CO=sS?El(sS):rS,Sf=CO;var PO=Object.prototype,DO=PO.hasOwnProperty;function IO(r,e){var t=bn(r),n=!t&&ds(r),i=!t&&!n&&Tl(r),s=!t&&!n&&!i&&Sf(r),o=t||n||i||s,a=o?Kw(r.length,String):[],l=a.length;for(var u in r)(e||DO.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 Af=IO;function LO(r,e){return function(t){return r(e(t))}}var _f=LO;var RO=_f(Object.keys,Object),oS=RO;var OO=Object.prototype,BO=OO.hasOwnProperty;function NO(r){if(!Ml(r))return oS(r);var e=[];for(var t in Object(r))BO.call(r,t)&&t!="constructor"&&e.push(t);return e}var aS=NO;function FO(r){return Qs(r)?Af(r):aS(r)}var Cl=FO;function UO(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var lS=UO;var zO=Object.prototype,GO=zO.hasOwnProperty;function kO(r){if(!kt(r))return lS(r);var e=Ml(r),t=[];for(var n in r)n=="constructor"&&(e||!GO.call(r,n))||t.push(n);return t}var cS=kO;function VO(r){return Qs(r)?Af(r,!0):cS(r)}var Ei=VO;var HO=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WO=/^\w*$/;function jO(r,e){if(bn(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||qs(r)?!0:WO.test(r)||!HO.test(r)||e!=null&&r in Object(e)}var uS=jO;var qO=fr(Object,"create"),ps=qO;function XO(){this.__data__=ps?ps(null):{},this.size=0}var hS=XO;function YO(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var dS=YO;var QO="__lodash_hash_undefined__",ZO=Object.prototype,KO=ZO.hasOwnProperty;function JO(r){var e=this.__data__;if(ps){var t=e[r];return t===QO?void 0:t}return KO.call(e,r)?e[r]:void 0}var fS=JO;var $O=Object.prototype,eB=$O.hasOwnProperty;function tB(r){var e=this.__data__;return ps?e[r]!==void 0:eB.call(e,r)}var pS=tB;var nB="__lodash_hash_undefined__";function rB(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=ps&&e===void 0?nB:e,this}var mS=rB;function Pl(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])}}Pl.prototype.clear=hS;Pl.prototype.delete=dS;Pl.prototype.get=fS;Pl.prototype.has=pS;Pl.prototype.set=mS;var Wy=Pl;function iB(){this.__data__=[],this.size=0}var gS=iB;function sB(r,e){for(var t=r.length;t--;)if(Ys(r[t][0],e))return t;return-1}var Zs=sB;var oB=Array.prototype,aB=oB.splice;function lB(r){var e=this.__data__,t=Zs(e,r);if(t<0)return!1;var n=e.length-1;return t==n?e.pop():aB.call(e,t,1),--this.size,!0}var yS=lB;function cB(r){var e=this.__data__,t=Zs(e,r);return t<0?void 0:e[t][1]}var vS=cB;function uB(r){return Zs(this.__data__,r)>-1}var xS=uB;function hB(r,e){var t=this.__data__,n=Zs(t,r);return n<0?(++this.size,t.push([r,e])):t[n][1]=e,this}var bS=hB;function Dl(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])}}Dl.prototype.clear=gS;Dl.prototype.delete=yS;Dl.prototype.get=vS;Dl.prototype.has=xS;Dl.prototype.set=bS;var Ks=Dl;var dB=fr(Zt,"Map"),Js=dB;function fB(){this.size=0,this.__data__={hash:new Wy,map:new(Js||Ks),string:new Wy}}var wS=fB;function pB(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var SS=pB;function mB(r,e){var t=r.__data__;return SS(e)?t[typeof e=="string"?"string":"hash"]:t.map}var $s=mB;function gB(r){var e=$s(this,r).delete(r);return this.size-=e?1:0,e}var AS=gB;function yB(r){return $s(this,r).get(r)}var _S=yB;function vB(r){return $s(this,r).has(r)}var MS=vB;function xB(r,e){var t=$s(this,r),n=t.size;return t.set(r,e),this.size+=t.size==n?0:1,this}var TS=xB;function Il(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])}}Il.prototype.clear=wS;Il.prototype.delete=AS;Il.prototype.get=_S;Il.prototype.has=MS;Il.prototype.set=TS;var Fu=Il;var bB="Expected a function";function jy(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(bB);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(jy.Cache||Fu),t}jy.Cache=Fu;var ES=jy;var wB=500;function SB(r){var e=ES(r,function(n){return t.size===wB&&t.clear(),n}),t=e.cache;return e}var CS=SB;var AB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_B=/\\(\\)?/g,MB=CS(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(AB,function(t,n,i,s){e.push(i?s.replace(_B,"$1"):n||t)}),e}),PS=MB;function TB(r){return r==null?"":Lw(r)}var DS=TB;function EB(r,e){return bn(r)?r:uS(r,e)?[r]:PS(DS(r))}var Gr=EB;var CB=1/0;function PB(r){if(typeof r=="string"||qs(r))return r;var e=r+"";return e=="0"&&1/r==-CB?"-0":e}var eo=PB;function DB(r,e){e=Gr(e,r);for(var t=0,n=e.length;r!=null&&t<n;)r=r[eo(e[t++])];return t&&t==n?r:void 0}var Mf=DB;function IB(r,e){for(var t=-1,n=e.length,i=r.length;++t<n;)r[i+t]=e[t];return r}var Ll=IB;var IS=rr?rr.isConcatSpreadable:void 0;function LB(r){return bn(r)||ds(r)||!!(IS&&r&&r[IS])}var LS=LB;function RS(r,e,t,n,i){var s=-1,o=r.length;for(t||(t=LS),i||(i=[]);++s<o;){var a=r[s];e>0&&t(a)?e>1?RS(a,e-1,t,n,i):Ll(i,a):n||(i[i.length]=a)}return i}var OS=RS;function RB(r){var e=r==null?0:r.length;return e?OS(r,1):[]}var BS=RB;function OB(r){return bf(wf(r,void 0,BS),r+"")}var Tf=OB;var BB=_f(Object.getPrototypeOf,Object),Rl=BB;var NB="[object Object]",FB=Function.prototype,UB=Object.prototype,NS=FB.toString,zB=UB.hasOwnProperty,GB=NS.call(Object);function kB(r){if(!jn(r)||Dr(r)!=NB)return!1;var e=Rl(r);if(e===null)return!0;var t=zB.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&NS.call(t)==GB}var Ef=kB;function VB(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 FS=VB;function HB(){this.__data__=new Ks,this.size=0}var US=HB;function WB(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}var zS=WB;function jB(r){return this.__data__.get(r)}var GS=jB;function qB(r){return this.__data__.has(r)}var kS=qB;var XB=200;function YB(r,e){var t=this.__data__;if(t instanceof Ks){var n=t.__data__;if(!Js||n.length<XB-1)return n.push([r,e]),this.size=++t.size,this;t=this.__data__=new Fu(n)}return t.set(r,e),this.size=t.size,this}var VS=YB;function Ol(r){var e=this.__data__=new Ks(r);this.size=e.size}Ol.prototype.clear=US;Ol.prototype.delete=zS;Ol.prototype.get=GS;Ol.prototype.has=kS;Ol.prototype.set=VS;var Cf=Ol;function QB(r,e){return r&&zr(e,Cl(e),r)}var HS=QB;function ZB(r,e){return r&&zr(e,Ei(e),r)}var WS=ZB;var YS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,jS=YS&&typeof module=="object"&&module&&!module.nodeType&&module,KB=jS&&jS.exports===YS,qS=KB?Zt.Buffer:void 0,XS=qS?qS.allocUnsafe:void 0;function JB(r,e){if(e)return r.slice();var t=r.length,n=XS?XS(t):new r.constructor(t);return r.copy(n),n}var Pf=JB;function $B(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 QS=$B;function eN(){return[]}var Df=eN;var tN=Object.prototype,nN=tN.propertyIsEnumerable,ZS=Object.getOwnPropertySymbols,rN=ZS?function(r){return r==null?[]:(r=Object(r),QS(ZS(r),function(e){return nN.call(r,e)}))}:Df,Bl=rN;function iN(r,e){return zr(r,Bl(r),e)}var KS=iN;var sN=Object.getOwnPropertySymbols,oN=sN?function(r){for(var e=[];r;)Ll(e,Bl(r)),r=Rl(r);return e}:Df,If=oN;function aN(r,e){return zr(r,If(r),e)}var JS=aN;function lN(r,e,t){var n=e(r);return bn(r)?n:Ll(n,t(r))}var Lf=lN;function cN(r){return Lf(r,Cl,Bl)}var $S=cN;function uN(r){return Lf(r,Ei,If)}var Rf=uN;var hN=fr(Zt,"DataView"),Of=hN;var dN=fr(Zt,"Promise"),Bf=dN;var fN=fr(Zt,"Set"),Nf=fN;var e1="[object Map]",pN="[object Object]",t1="[object Promise]",n1="[object Set]",r1="[object WeakMap]",i1="[object DataView]",mN=hs(Of),gN=hs(Js),yN=hs(Bf),vN=hs(Nf),xN=hs(vf),Yo=Dr;(Of&&Yo(new Of(new ArrayBuffer(1)))!=i1||Js&&Yo(new Js)!=e1||Bf&&Yo(Bf.resolve())!=t1||Nf&&Yo(new Nf)!=n1||vf&&Yo(new vf)!=r1)&&(Yo=function(r){var e=Dr(r),t=e==pN?r.constructor:void 0,n=t?hs(t):"";if(n)switch(n){case mN:return i1;case gN:return e1;case yN:return t1;case vN:return n1;case xN:return r1}return e});var Nl=Yo;var bN=Object.prototype,wN=bN.hasOwnProperty;function SN(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&wN.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var s1=SN;var AN=Zt.Uint8Array,qy=AN;function _N(r){var e=new r.constructor(r.byteLength);return new qy(e).set(new qy(r)),e}var Fl=_N;function MN(r,e){var t=e?Fl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}var o1=MN;var TN=/\w*$/;function EN(r){var e=new r.constructor(r.source,TN.exec(r));return e.lastIndex=r.lastIndex,e}var a1=EN;var l1=rr?rr.prototype:void 0,c1=l1?l1.valueOf:void 0;function CN(r){return c1?Object(c1.call(r)):{}}var u1=CN;function PN(r,e){var t=e?Fl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Ff=PN;var DN="[object Boolean]",IN="[object Date]",LN="[object Map]",RN="[object Number]",ON="[object RegExp]",BN="[object Set]",NN="[object String]",FN="[object Symbol]",UN="[object ArrayBuffer]",zN="[object DataView]",GN="[object Float32Array]",kN="[object Float64Array]",VN="[object Int8Array]",HN="[object Int16Array]",WN="[object Int32Array]",jN="[object Uint8Array]",qN="[object Uint8ClampedArray]",XN="[object Uint16Array]",YN="[object Uint32Array]";function QN(r,e,t){var n=r.constructor;switch(e){case UN:return Fl(r);case DN:case IN:return new n(+r);case zN:return o1(r,t);case GN:case kN:case VN:case HN:case WN:case jN:case qN:case XN:case YN:return Ff(r,t);case LN:return new n;case RN:case NN:return new n(r);case ON:return a1(r);case BN:return new n;case FN:return u1(r)}}var h1=QN;function ZN(r){return typeof r.constructor=="function"&&!Ml(r)?kw(Rl(r)):{}}var Uf=ZN;var KN="[object Map]";function JN(r){return jn(r)&&Nl(r)==KN}var d1=JN;var f1=fs&&fs.isMap,$N=f1?El(f1):d1,p1=$N;var eF="[object Set]";function tF(r){return jn(r)&&Nl(r)==eF}var m1=tF;var g1=fs&&fs.isSet,nF=g1?El(g1):m1,y1=nF;var rF=1,iF=2,sF=4,v1="[object Arguments]",oF="[object Array]",aF="[object Boolean]",lF="[object Date]",cF="[object Error]",x1="[object Function]",uF="[object GeneratorFunction]",hF="[object Map]",dF="[object Number]",b1="[object Object]",fF="[object RegExp]",pF="[object Set]",mF="[object String]",gF="[object Symbol]",yF="[object WeakMap]",vF="[object ArrayBuffer]",xF="[object DataView]",bF="[object Float32Array]",wF="[object Float64Array]",SF="[object Int8Array]",AF="[object Int16Array]",_F="[object Int32Array]",MF="[object Uint8Array]",TF="[object Uint8ClampedArray]",EF="[object Uint16Array]",CF="[object Uint32Array]",Nt={};Nt[v1]=Nt[oF]=Nt[vF]=Nt[xF]=Nt[aF]=Nt[lF]=Nt[bF]=Nt[wF]=Nt[SF]=Nt[AF]=Nt[_F]=Nt[hF]=Nt[dF]=Nt[b1]=Nt[fF]=Nt[pF]=Nt[mF]=Nt[gF]=Nt[MF]=Nt[TF]=Nt[EF]=Nt[CF]=!0;Nt[cF]=Nt[x1]=Nt[yF]=!1;function zf(r,e,t,n,i,s){var o,a=e&rF,l=e&iF,u=e&sF;if(t&&(o=i?t(r,n,i,s):t(r)),o!==void 0)return o;if(!kt(r))return r;var c=bn(r);if(c){if(o=s1(r),!a)return xf(r,o)}else{var h=Nl(r),d=h==x1||h==uF;if(Tl(r))return Pf(r,a);if(h==b1||h==v1||d&&!i){if(o=l||d?{}:Uf(r),!a)return l?JS(r,WS(o,r)):KS(r,HS(o,r))}else{if(!Nt[h])return i?r:{};o=h1(r,h,a)}}s||(s=new Cf);var f=s.get(r);if(f)return f;s.set(r,o),y1(r)?r.forEach(function(g){o.add(zf(g,e,t,g,r,s))}):p1(r)&&r.forEach(function(g,y){o.set(y,zf(g,e,t,y,r,s))});var p=u?l?Rf:$S:l?Ei:Cl,m=c?void 0:p(r);return qw(m||r,function(g,y){m&&(y=g,g=r[y]),Al(o,y,zf(g,e,t,y,r,s))}),o}var Gf=zf;var PF=1,DF=4;function IF(r){return Gf(r,PF|DF)}var Uu=IF;function LF(r,e){return r!=null&&e in Object(r)}var w1=LF;function RF(r,e,t){e=Gr(e,r);for(var n=-1,i=e.length,s=!1;++n<i;){var o=eo(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&&_l(i)&&Xs(o,i)&&(bn(r)||ds(r)))}var S1=RF;function OF(r,e){return r!=null&&S1(r,e,w1)}var A1=OF;function BF(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 _1=BF;var NF=_1(),M1=NF;var FF=function(){return Zt.Date.now()},kf=FF;var UF="Expected a function",zF=Math.max,GF=Math.min;function kF(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(UF);e=ky(e)||0,kt(t)&&(c=!!t.leading,h="maxWait"in t,s=h?zF(ky(t.maxWait)||0,e):s,d="trailing"in t?!!t.trailing:d);function f(_){var M=n,x=i;return n=i=void 0,u=_,o=r.apply(x,M),o}function p(_){return u=_,a=setTimeout(y,e),c?f(_):o}function m(_){var M=_-l,x=_-u,T=e-M;return h?GF(T,s-x):T}function g(_){var M=_-l,x=_-u;return l===void 0||M>=e||M<0||h&&x>=s}function y(){var _=kf();if(g(_))return v(_);a=setTimeout(y,m(_))}function v(_){return a=void 0,d&&n?f(_):(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:v(kf())}function S(){var _=kf(),M=g(_);if(n=arguments,i=this,l=_,M){if(a===void 0)return p(l);if(h)return clearTimeout(a),a=setTimeout(y,e),f(l)}return a===void 0&&(a=setTimeout(y,e)),o}return S.cancel=w,S.flush=b,S}var zu=kF;function VF(r,e,t){(t!==void 0&&!Ys(r[e],t)||t===void 0&&!(e in r))&&Sl(r,e,t)}var Gu=VF;function HF(r){return jn(r)&&Qs(r)}var T1=HF;function WF(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}var ku=WF;function jF(r){return zr(r,Ei(r))}var E1=jF;function qF(r,e,t,n,i,s,o){var a=ku(r,t),l=ku(e,t),u=o.get(l);if(u){Gu(r,t,u);return}var c=s?s(a,l,t+"",r,e,o):void 0,h=c===void 0;if(h){var d=bn(l),f=!d&&Tl(l),p=!d&&!f&&Sf(l);c=l,d||f||p?bn(a)?c=a:T1(a)?c=xf(a):f?(h=!1,c=Pf(l,!0)):p?(h=!1,c=Ff(l,!0)):c=[]:Ef(l)||ds(l)?(c=a,ds(a)?c=E1(a):(!kt(a)||bl(a))&&(c=Uf(l))):h=!1}h&&(o.set(l,c),i(c,l,n,s,o),o.delete(l)),Gu(r,t,c)}var C1=qF;function P1(r,e,t,n,i){r!==e&&M1(e,function(s,o){if(i||(i=new Cf),kt(s))C1(r,e,o,t,P1,n,i);else{var a=n?n(ku(r,o),s,o+"",r,e,i):void 0;a===void 0&&(a=s),Gu(r,o,a)}},Ei)}var D1=P1;function XF(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var I1=XF;function YF(r,e){return e.length<2?r:Mf(r,FS(e,0,-1))}var L1=YF;var QF=Zw(function(r,e,t){D1(r,e,t)}),Qo=QF;function ZF(r,e){return e=Gr(e,r),r=L1(r,e),r==null||delete r[eo(I1(e))]}var R1=ZF;function KF(r){return Ef(r)?void 0:r}var O1=KF;var JF=1,$F=2,eU=4,tU=Tf(function(r,e){var t={};if(r==null)return t;var n=!1;e=mf(e,function(s){return s=Gr(s,r),n||(n=s.length>1),s}),zr(r,Rf(r),t),n&&(t=Gf(t,JF|$F|eU,O1));for(var i=e.length;i--;)R1(t,e[i]);return t}),Ul=tU;function nU(r,e,t,n){if(!kt(r))return r;e=Gr(e,r);for(var i=-1,s=e.length,o=s-1,a=r;a!=null&&++i<s;){var l=eo(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=kt(c)?c:Xs(e[i+1])?[]:{})}Al(a,l,u),a=a[l]}return r}var B1=nU;function rU(r,e,t){for(var n=-1,i=e.length,s={};++n<i;){var o=e[n],a=Mf(r,o);t(a,o)&&B1(s,Gr(o,r),a)}return s}var N1=rU;function iU(r,e){return N1(r,e,function(t,n){return A1(r,n)})}var F1=iU;var sU=Tf(function(r,e){return r==null?{}:F1(r,e)}),Xy=sU;function Vf(r,e){return Object.setPrototypeOf(r,e),r}var oU=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),aU=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),lU=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||Zo&&"ontouchend"in document,cU=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,uU=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,hU=()=>{if(typeof window>"u")return!1;let r=navigator.userAgent,e=navigator.vendor;return/Safari/i.test(r)&&/Apple Computer/.test(e)},dU=()=>{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]},G7=oU(),Zo=aU(),Vu=lU(),U1=cU(),Lt=uU(),zl=hU(),Gl=Number(dU());function z1(r){return Array.isArray(r)?r:[r]}function Hu(r){return Zo?r.metaKey:r.ctrlKey}var ct=[],Wf={},Wu={},Hf={};function G1(r){ct.includes(r)||ct.push(r)}function kl(r){delete Wf[r.pointerId];for(let e=0;e<ct.length;e++)if(ct[e].pointerId===r.pointerId){ct.splice(e,1);break}}function jf(r){if(r.pointerType!=="touch")return;let e=Wf[r.pointerId];e===void 0&&(e={x:0,y:0},Wf[r.pointerId]=e),e.x=r.pageX,e.y=r.pageY}function qf(r){let e=r.pointerId===ct[0].pointerId?ct[1]:ct[0];return Wf[e.pointerId]}function k1(r){Wu[r.key]=!0,Hf[r.key]=Hf[r.key]===void 0?1:Hf[r.key]+1}function V1(r){if(Zo&&Wu.Meta)for(let e in Wu)Wu[e]=!1;else Wu[r.key]=!1;Hf={}}function H1(r){r.addEventListener("pointerdown",G1,!0),r.addEventListener("pointerdown",jf,!0),r.addEventListener("pointermove",jf,!0),r.addEventListener("pointerup",kl,!0),r.addEventListener("pointercancel",kl,!0),r.addEventListener("pointerleave",kl,!0),window.addEventListener("keydown",k1,!0),window.addEventListener("keyup",V1,!0)}function W1(r){r.removeEventListener("pointerdown",G1,!0),r.removeEventListener("pointerdown",jf,!0),r.removeEventListener("pointermove",jf,!0),r.removeEventListener("pointerup",kl,!0),r.removeEventListener("pointercancel",kl,!0),r.removeEventListener("pointerleave",kl,!0),window.removeEventListener("keydown",k1,!0),window.removeEventListener("keyup",V1,!0)}var Ci;(t=>{t.all=["PerspectiveCamera","OrthographicCamera"];function e(n){return t.all.includes(n)}t.is=e})(Ci||(Ci={}));var Ko;(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})(Ko||(Ko={}));var ms;(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})(ms||(ms={}));var hn;(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})(hn||(hn={}));var ju;(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})(ju||(ju={}));var Pi;(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})(Pi||(Pi={}));var Kt;(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})(Kt||(Kt={}));var wn;(a=>{a.white={...Kt.white,a:1},a.transparent={...Kt.white,a:0};function t(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}a.from0to1=t;function n(l,u){return{...Kt.fromHex(l),a:u}}a.fromHexAndA=n;function i(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}a.toRgb255a1=i;function s(l,u){return Kt.equals(l,u)&&l.a===u.a}a.equals=s;function o(l,u,c){return{r:l.r+(u.r-l.r)*c,g:l.g+(u.g-l.g)*c,b:l.b+(u.b-l.b)*c,a:l.a+(u.a-l.a)*c}}a.lerp=o})(wn||(wn={}));var Xf;(e=>e.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Xf||(Xf={}));var Yf;(e=>e.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Yf||(Yf={}));var Qf;(e=>e.defaultData={control1:[.5,.05],control2:[.1,.3]})(Qf||(Qf={}));var Zf;(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})(Zf||(Zf={}));var dn=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,dn.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,dn.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,dn.prototype),delete s[n],{data:s,actual:e,reverse:{type:1,id:n,data:i}}}}throw new Error("illegal arg")}};function qu(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"&&qu(n)}return Object.freeze(r)}function j1(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 Kf=class extends Error{};function Di(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 Jo(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 q1(){return typeof process<"u"}function X1(r,e){for(let t of r)e(t.id,t.data),X1(t.children,e)}function Y1(r,e){e(r.id,r.data);for(let t of r.children)Y1(t,e)}var Gn=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Gn.prototype)}deepFreeze(){let t=0;for(;t<this.length;)qu(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&&Y1(i,n)}}traverse(t){X1(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,Gn.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 Kf("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,p)=>f.fi-p.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)=>j1(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 Di(0,i,i);{let o=s[0].fi;return Di(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 Di(l,l+i,i)}else return Di(o.fi,a.fi,i)}}};var Jf;(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})(Jf||(Jf={}));var Gt=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Gt.prototype)}deepFreeze(){let t=0;for(;t<this.length;)qu(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,Gt.prototype);let n=t;return q1()||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 Di(0,n,n);{let s=i[0].fi;return Di(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 Di(a,a+n,n)}else return Di(s.fi,o.fi,n)}}};var gs=class{unusedFun(e){}runOp(e){let t=[],n=this,i=0,s={};for(;i<e.path.length;)t.push(n),n=n===void 0?void 0:n[e.path[i]],i+=1;n={...n};for(let[l,u]of Object.entries(e.props)){let c=n[l];s[l]=c,u===void 0?delete n[l]:n[l]=u}for(;i>0;)Object.keys(n).length===0?(n={...t[i-1]},delete n[e.path[i-1]]):n={...t[i-1],[e.path[i-1]]:n},i-=1;let o=Object.setPrototypeOf(n,gs.prototype),a={...e,props:s};return{data:o,actual:e,reverse:a}}},Q1;(t=>{function r(n,i){return Xu(n,i)??n}t.apply=r;function e(n,i){if(i.type===0){let s=$o.zoom(n,i.path);if(s===void 0)return i;if(typeof s=="string"||typeof s=="number"||Jo(s))return;if(s&&typeof s=="object"){let o={...i.props};for(let a of Object.keys(s))delete o[a];return{...i,props:o}}else return}else if(i.type===1||i.type===4||i.type===7){let s=$o.zoom(n,[...i.path,i.id]);if(s===void 0)return i;if(typeof s=="string"||typeof s=="number"||Jo(s))return;if(s&&typeof s=="object"){let o={...i.data,...s};return{...i,data:o}}else return}else return i}t.filterOp=e})(Q1||(Q1={}));function Z1(r,e){if(e===void 0)return;let t=!1,n=r.map(i=>{let s=i.id,o=Xu(i.data,e[s]);t=t||o!==void 0,o===void 0&&(o=i.data);let a=Z1(i.children,e);return a!==void 0?t=!0:a=i.children,{...i,id:s,data:o,children:a}});if(t)return n}function fU(r,e){if(e===void 0)return;let t=!1,n=r.map(i=>{let s=i.id,o=Xu(i.data,e[s]);return t=t||o!==void 0,o===void 0&&(o=i.data),{...i,id:s,data:o}});if(t)return Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n}function Xu(r,e){if(e!==void 0)if(r instanceof Gn){let t=Z1(r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t}else{if(r instanceof Gt)return fU(r,e);if(Array.isArray(r)){let t=!1,n=r.map((i,s)=>{let o=Xu(i,e[s]);return t=t||o!==void 0,o===void 0&&(o=i),o});return t?(Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n):void 0}else if(r&&typeof r=="object"){let t={},n=!1;for(let[i,s]of Object.entries(r)){let o=Xu(s,e[i]);n=n||o!==void 0,o===void 0&&(o=s),t[i]=o}return n?(Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t):void 0}else return e??r}}var K1=Symbol(),Yu=Symbol(),ea=class{reportOp(e,t,n=[]){let i=this;if(t===null)return;i._current=t.data;let s=n;for(;!(i instanceof $f);){let o=i._path,a=i._current;if(o!==""&&s.splice(0,0,o),i=i._parent,i===null)return;i.update(o,a)}i.push(s,e,t.actual,t.reverse)}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let n=t[Yu];n&&n(),delete this._children[e]}}}},Qy=class extends ea{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,Jf.runOp(this._current,e),e.path)}},Zy=class extends ea{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,dn.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},J1={get(r,e){if(e===Yu)return()=>{r._parent=null};if(e===K1)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=ep(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]}}},pU={...J1,set(r,e,t){let n={type:0,props:{[e]:ci(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}},mU={...J1,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}},Vl=class extends ea{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Yu]=()=>{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=ep(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)}},Ky=class extends ea{constructor(e,t,n){super(),this._parent=e,this._path=t,this._current=n,this[Yu]=()=>{this._parent=null}}feedOp(e){let{path:t,...n}=e;this.reportOp(n,this._current.runOp(e),t)}},Hl=class extends ea{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Yu]=()=>{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=ep(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 Yy(r,e,t){if(r.length>0){let n=r[r.length-1];if(n.type===0&&e.type===0&&$o.equal(n.path,t)){Object.assign(n.props,e.props);return}}r.push({...e,path:t})}var $f=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){Yy(this.ts,t,e),Yy(this.actual,n,e),Yy(this.reverse,i,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ep(r,e,t){return t instanceof Gn?new Vl(r,e,t):t instanceof Gt?new Hl(r,e,t):t instanceof gs?new Ky(r,e,t):t instanceof dn?new Proxy(new Zy(r,e,t),mU):t!==null&&typeof t=="object"?Jo(t)?t:new Proxy(new Qy(r,e,t),pU):t}function Jy(r){let e=new $f(r);return[ep(e,"",r),e]}function $y(r,e){let[t,n]=Jy(r);return e(t),n.result()}function ci(r){return r instanceof Vl||r instanceof Hl?r._current:r!==null&&typeof r=="object"?r[K1]:r}var $o;(i=>{function r(s,o){if(o.length===s.length)for(var a=0;a<s.length;){if(s[a]!==o[a])return!1;a+=1}else return!1;return!0}i.equal=r;function e(s,o,a){let l=n(a,s);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...o};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return o}i.removeOverridden=e;function t(s,o){if((s instanceof Gn||s instanceof Vl)&&typeof o=="string")return s.data(o);if((s instanceof Gt||s instanceof Hl)&&typeof o=="string")return s.data(o);if(typeof o=="number"&&Array.isArray(s))return s[o];if(typeof o=="string"&&typeof s=="object")return s[o]}i.zoomOnce=t;function n(s,o,a=0){for(;a<o.length&&s!==void 0;)s=t(s,o[a]),a+=1;return s}i.zoom=n})($o||($o={}));var tp=class{},Qu=class extends tp{constructor(t){super();this.id=t}},Zu=class extends tp{constructor(t){super();this.data=t}};var tv;try{tv=new TextDecoder}catch{}var De,no,Z=0;var oA=[],nv=oA,rv=0,pr={},yt,to,kr=0,Ii=0,Ir,ys,ir=[],Tt,$1={useRecords:!1,mapsAsObjects:!0},Ku=class{},sv=new Ku;sv.name="MessagePack 0xC1";var Wl=!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 hA(()=>(rp(),this?this.unpack(e,t):Li.prototype.unpack.call($1,e,t)));no=t>-1?t:e.length,Z=0,rv=0,Ii=0,to=null,nv=oA,Ir=null,De=e;try{Tt=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(pr=this,this.structures)return yt=this.structures,np();(!yt||yt.length>0)&&(yt=[])}else pr=$1,(!yt||yt.length>0)&&(yt=[]);return np()}unpackMultiple(e,t){let n,i=0;try{Wl=!0;let s=e.length,o=this?this.unpack(e,s):op.unpack(e,s);if(t){for(t(o);Z<s;)if(i=Z,t(np())===!1)return}else{for(n=[o];Z<s;)i=Z,n.push(np());return n}}catch(s){throw s.lastPosition=i,s.values=n,s}finally{Wl=!1,rp()}}_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 np(){try{if(!pr.trusted&&!Wl){let e=yt.sharedLength||0;e<yt.length&&(yt.length=e)}let r=Jt();if(Z==no)yt.restoreStructures&&eA(),yt=null,De=null,ys&&(ys=null);else if(Z>no){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}else if(!Wl)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw yt.restoreStructures&&eA(),rp(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function eA(){for(let r in yt.restoreStructures)yt[r]=yt.restoreStructures[r];yt.restoreStructures=null}function Jt(){let r=De[Z++];if(r<160)if(r<128){if(r<64)return r;{let e=yt[r&63]||pr.getStructures&&aA()[r&63];return e?(e.read||(e.read=ov(e,r&63)),e.read()):r}}else if(r<144)if(r-=128,pr.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[cA()]=Jt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Jt(),Jt());return e}else{r-=144;let e=new Array(r);for(let t=0;t<r;t++)e[t]=Jt();return e}else if(r<192){let e=r-160;if(Ii>=Z)return to.slice(Z-kr,(Z+=e)-kr);if(Ii==0&&no<140){let t=e<16?av(e):lA(e);if(t!=null)return t}return iv(e)}else{let e;switch(r){case 192:return null;case 193:return Ir?(e=Jt(),e>0?Ir[1].slice(Ir.position1,Ir.position1+=e):Ir[0].slice(Ir.position0,Ir.position0-=e)):sv;case 194:return!1;case 195:return!0;case 196:return ev(De[Z++]);case 197:return e=Tt.getUint16(Z),Z+=2,ev(e);case 198:return e=Tt.getUint32(Z),Z+=4,ev(e);case 199:return ta(De[Z++]);case 200:return e=Tt.getUint16(Z),Z+=2,ta(e);case 201:return e=Tt.getUint32(Z),Z+=4,ta(e);case 202:if(e=Tt.getFloat32(Z),pr.useFloat32>2){let t=sp[(De[Z]&127)<<1|De[Z+1]>>7];return Z+=4,(t*e+(e>0?.5:-.5)>>0)/t}return Z+=4,e;case 203:return e=Tt.getFloat64(Z),Z+=8,e;case 204:return De[Z++];case 205:return e=Tt.getUint16(Z),Z+=2,e;case 206:return e=Tt.getUint32(Z),Z+=4,e;case 207:return pr.int64AsNumber?(e=Tt.getUint32(Z)*4294967296,e+=Tt.getUint32(Z+4)):e=Tt.getBigUint64(Z),Z+=8,e;case 208:return Tt.getInt8(Z++);case 209:return e=Tt.getInt16(Z),Z+=2,e;case 210:return e=Tt.getInt32(Z),Z+=4,e;case 211:return pr.int64AsNumber?(e=Tt.getInt32(Z)*4294967296,e+=Tt.getUint32(Z+4)):e=Tt.getBigInt64(Z),Z+=8,e;case 212:if(e=De[Z++],e==114)return sA(De[Z++]&63);{let t=ir[e];if(t)return t.read?(Z++,t.read(Jt())):t.noBuffer?(Z++,t()):t(De.subarray(Z,++Z));throw new Error("Unknown extension "+e)}case 213:return e=De[Z],e==114?(Z++,sA(De[Z++]&63,De[Z++])):ta(2);case 214:return ta(4);case 215:return ta(8);case 216:return ta(16);case 217:return e=De[Z++],Ii>=Z?to.slice(Z-kr,(Z+=e)-kr):yU(e);case 218:return e=Tt.getUint16(Z),Z+=2,Ii>=Z?to.slice(Z-kr,(Z+=e)-kr):vU(e);case 219:return e=Tt.getUint32(Z),Z+=4,Ii>=Z?to.slice(Z-kr,(Z+=e)-kr):xU(e);case 220:return e=Tt.getUint16(Z),Z+=2,nA(e);case 221:return e=Tt.getUint32(Z),Z+=4,nA(e);case 222:return e=Tt.getUint16(Z),Z+=2,rA(e);case 223:return e=Tt.getUint32(Z),Z+=4,rA(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 gU=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ov(r,e){function t(){if(t.count++>2){let i=r.read=new Function("r","return function(){return {"+r.map(s=>gU.test(s)?s+":r()":"["+JSON.stringify(s)+"]:r()").join(",")+"}}")(Jt);return r.highByte===0&&(r.read=tA(e,r.read)),i()}let n={};for(let i=0,s=r.length;i<s;i++){let o=r[i];n[o]=Jt()}return n}return t.count=0,r.highByte===0?tA(e,t):t}var tA=(r,e)=>function(){let t=De[Z++];if(t===0)return e();let n=r<32?-(r+(t<<5)):r+(t<<5),i=yt[n]||aA()[n];if(!i)throw new Error("Record id is not defined for "+n);return i.read||(i.read=ov(i,r)),i.read()};function aA(){let r=hA(()=>(De=null,pr.getStructures()));return yt=pr._mergeStructures(r,yt)}var iv=ip,yU=ip,vU=ip,xU=ip;function ip(r){let e;if(r<16&&(e=av(r)))return e;if(r>64&&tv)return tv.decode(De.subarray(Z,Z+=r));let t=Z+r,n=[];for(e="";Z<t;){let i=De[Z++];if((i&128)===0)n.push(i);else if((i&224)===192){let s=De[Z++]&63;n.push((i&31)<<6|s)}else if((i&240)===224){let s=De[Z++]&63,o=De[Z++]&63;n.push((i&31)<<12|s<<6|o)}else if((i&248)===240){let s=De[Z++]&63,o=De[Z++]&63,a=De[Z++]&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+=Bn.apply(String,n),n.length=0)}return n.length>0&&(e+=Bn.apply(String,n)),e}function nA(r){let e=new Array(r);for(let t=0;t<r;t++)e[t]=Jt();return e}function rA(r){if(pr.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[cA()]=Jt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Jt(),Jt());return e}}var Bn=String.fromCharCode;function lA(r){let e=Z,t=new Array(r);for(let n=0;n<r;n++){let i=De[Z++];if((i&128)>0){Z=e;return}t[n]=i}return Bn.apply(String,t)}function av(r){if(r<4)if(r<2){if(r===0)return"";{let e=De[Z++];if((e&128)>1){Z-=1;return}return Bn(e)}}else{let e=De[Z++],t=De[Z++];if((e&128)>0||(t&128)>0){Z-=2;return}if(r<3)return Bn(e,t);let n=De[Z++];if((n&128)>0){Z-=3;return}return Bn(e,t,n)}else{let e=De[Z++],t=De[Z++],n=De[Z++],i=De[Z++];if((e&128)>0||(t&128)>0||(n&128)>0||(i&128)>0){Z-=4;return}if(r<6){if(r===4)return Bn(e,t,n,i);{let s=De[Z++];if((s&128)>0){Z-=5;return}return Bn(e,t,n,i,s)}}else if(r<8){let s=De[Z++],o=De[Z++];if((s&128)>0||(o&128)>0){Z-=6;return}if(r<7)return Bn(e,t,n,i,s,o);let a=De[Z++];if((a&128)>0){Z-=7;return}return Bn(e,t,n,i,s,o,a)}else{let s=De[Z++],o=De[Z++],a=De[Z++],l=De[Z++];if((s&128)>0||(o&128)>0||(a&128)>0||(l&128)>0){Z-=8;return}if(r<10){if(r===8)return Bn(e,t,n,i,s,o,a,l);{let u=De[Z++];if((u&128)>0){Z-=9;return}return Bn(e,t,n,i,s,o,a,l,u)}}else if(r<12){let u=De[Z++],c=De[Z++];if((u&128)>0||(c&128)>0){Z-=10;return}if(r<11)return Bn(e,t,n,i,s,o,a,l,u,c);let h=De[Z++];if((h&128)>0){Z-=11;return}return Bn(e,t,n,i,s,o,a,l,u,c,h)}else{let u=De[Z++],c=De[Z++],h=De[Z++],d=De[Z++];if((u&128)>0||(c&128)>0||(h&128)>0||(d&128)>0){Z-=12;return}if(r<14){if(r===12)return Bn(e,t,n,i,s,o,a,l,u,c,h,d);{let f=De[Z++];if((f&128)>0){Z-=13;return}return Bn(e,t,n,i,s,o,a,l,u,c,h,d,f)}}else{let f=De[Z++],p=De[Z++];if((f&128)>0||(p&128)>0){Z-=14;return}if(r<15)return Bn(e,t,n,i,s,o,a,l,u,c,h,d,f,p);let m=De[Z++];if((m&128)>0){Z-=15;return}return Bn(e,t,n,i,s,o,a,l,u,c,h,d,f,p,m)}}}}}function ev(r){return pr.copyBuffers?Uint8Array.prototype.slice.call(De,Z,Z+=r):De.subarray(Z,Z+=r)}function ta(r){let e=De[Z++];if(ir[e])return ir[e](De.subarray(Z,Z+=r));throw new Error("Unknown extension type "+e)}var iA=new Array(4096);function cA(){let r=De[Z++];if(r>=160&&r<192){if(r=r-160,Ii>=Z)return to.slice(Z-kr,(Z+=r)-kr);if(!(Ii==0&&no<180))return iv(r)}else return Z--,Jt();let e=(r<<5^(r>1?Tt.getUint16(Z):r>0?De[Z]:0))&4095,t=iA[e],n=Z,i=Z+r-3,s,o=0;if(t&&t.bytes==r){for(;n<i;){if(s=Tt.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 Z=n,t.string;i-=3,n=Z}for(t=[],iA[e]=t,t.bytes=r;n<i;)s=Tt.getUint32(n),t.push(s),n+=4;for(i+=3;n<i;)s=De[n++],t.push(s);let a=r<16?av(r):lA(r);return a!=null?t.string=a:t.string=iv(r)}var sA=(r,e)=>{var t=Jt();let n=r;e!==void 0&&(r=r<32?-((e<<5)+r):(e<<5)+r,t.highByte=e);let i=yt[r];return i&&i.isShared&&((yt.restoreStructures||(yt.restoreStructures=[]))[r]=i),yt[r]=t,t.read=ov(t,n),t.read()},uA=typeof self=="object"?self:global;ir[0]=()=>{};ir[0].noBuffer=!0;ir[101]=()=>{let r=Jt();return(uA[r[0]]||Error)(r[1])};ir[105]=r=>{let e=Tt.getUint32(Z-4);ys||(ys=new Map);let t=De[Z],n;t>=144&&t<160||t==220||t==221?n=[]:n={};let i={target:n};ys.set(e,i);let s=Jt();return i.used?Object.assign(n,s):(i.target=s,s)};ir[112]=r=>{let e=Tt.getUint32(Z-4),t=ys.get(e);return t.used=!0,t.target};ir[115]=()=>new Set(Jt());var lv=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");ir[116]=r=>{let e=r[0],t=lv[e];if(!t)throw new Error("Could not find typed array for code "+e);return new uA[t](Uint8Array.prototype.slice.call(r,1).buffer)};ir[120]=()=>{let r=Jt();return new RegExp(r[0],r[1])};ir[98]=r=>{let e=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],t=Z;Z+=e-4,Ir=[Jt(),Jt()],Ir.position0=0,Ir.position1=0;let n=Z;Z=t;try{return Jt()}finally{Z=n}};ir[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 hA(r){let e=no,t=Z,n=rv,i=kr,s=Ii,o=to,a=nv,l=ys,u=Ir,c=new Uint8Array(De.slice(0,no)),h=yt,d=yt.slice(0,yt.length),f=pr,p=Wl,m=r();return no=e,Z=t,rv=n,kr=i,Ii=s,to=o,nv=a,ys=l,Ir=u,De=c,Wl=p,yt=h,yt.splice(0,yt.length,...d),pr=f,Tt=new DataView(De.buffer,De.byteOffset,De.byteLength),m}function rp(){De=null,ys=null,yt=null}function dA(r){r.unpack?ir[r.type]=r.unpack:ir[r.type]=r}var sp=new Array(147);for(let r=0;r<256;r++)sp[r]=+("1e"+Math.floor(45.15-r*.30103));var op=new Li({useRecords:!1}),bU=op.unpack,wU=op.unpackMultiple,SU=op.unpack,ap={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},AU=new Float32Array(1),DY=new Uint8Array(AU.buffer,0,4);var lp;try{lp=new TextEncoder}catch{}var cp,uv,up=typeof Buffer<"u",cv=up?Buffer.allocUnsafeSlow:Uint8Array,gA=up?Buffer:Uint8Array,fA=up?4294967296:2144337920,se,nn,ee=0,Ri,Oi=null,_U=/[\u0080-\uFFFF]/,Ju=Symbol("record-id"),na=class extends Li{constructor(e){super(e),this.offset=0;let t,n,i,s,o,a,l=0,u=gA.prototype.utf8Write?function(x,T,E){return se.utf8Write(x,T,E)}:lp&&lp.encodeInto?function(x,T){return lp.encodeInto(x,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 p=e.maxOwnStructures;p==null&&(p=d?32:64),h&&!e.saveStructures&&(this.structures=[]);let m=f>32||p+f>64,g=f+64,y=f+p+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,b=0;this.pack=this.encode=function(x,T){if(se||(se=new cv(8192),nn=new DataView(se.buffer,0,8192),ee=0),Ri=se.length-10,Ri-ee<2048?(se=new cv(se.length),nn=new DataView(se.buffer,0,se.length),Ri=se.length-10,ee=0):ee=ee+7&2147483640,n=ee,a=c.structuredClone?new Map:null,c.bundleStrings?(Oi=["",""],se[ee++]=214,se[ee++]=98,Oi.position=ee-n,ee+=4):Oi=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 D=i[C];if(!D)continue;let I,R=i.transitions;for(let F=0,B=D.length;F<B;F++){let X=D[F];I=R[X],I||(I=R[X]=Object.create(null)),R=I}R[Ju]=C+64}l=E}h||(i.nextId=E+64)}s&&(s=!1),o=i||[];try{if(S(x),Oi){nn.setUint32(Oi.position+n,ee-Oi.position-n);let E=Oi;Oi=null,S(E[0]),S(E[1])}if(c.offset=ee,a&&a.idsToInsert){ee+=a.idsToInsert.length*6,ee>Ri&&M(ee),c.offset=ee;let E=TU(se.subarray(n,ee),a.idsToInsert);return a=null,E}return T&vA?(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,v.length>0&&(v=[]);else if(v.length>0&&!h){for(let E=0,C=v.length;E<C;E++)v[E][Ju]=0;v=[]}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(x)):(l=E,C)}}T&RU&&(ee=n)}};let S=x=>{ee>Ri&&(se=M(ee));var T=typeof x,E;if(T==="string"){let C=x.length;if(Oi&&C>=8&&C<4096){let R=_U.test(x);Oi[R?0:1]+=x,se[ee++]=193,S(R?-C:C);return}let D;C<32?D=1:C<256?D=2:C<65536?D=3:D=5;let I=C*3;if(ee+I>Ri&&(se=M(ee+I)),C<64||!u){let R,F,B,X=ee+D;for(R=0;R<C;R++)F=x.charCodeAt(R),F<128?se[X++]=F:F<2048?(se[X++]=F>>6|192,se[X++]=F&63|128):(F&64512)===55296&&((B=x.charCodeAt(R+1))&64512)===56320?(F=65536+((F&1023)<<10)+(B&1023),R++,se[X++]=F>>18|240,se[X++]=F>>12&63|128,se[X++]=F>>6&63|128,se[X++]=F&63|128):(se[X++]=F>>12|224,se[X++]=F>>6&63|128,se[X++]=F&63|128);E=X-ee-D}else E=u(x,ee+D,I);E<32?se[ee++]=160|E:E<256?(D<2&&se.copyWithin(ee+2,ee+1,ee+1+E),se[ee++]=217,se[ee++]=E):E<65536?(D<3&&se.copyWithin(ee+3,ee+2,ee+2+E),se[ee++]=218,se[ee++]=E>>8,se[ee++]=E&255):(D<5&&se.copyWithin(ee+5,ee+3,ee+3+E),se[ee++]=219,nn.setUint32(ee,E),ee+=4),ee+=E}else if(T==="number")if(x>>>0===x)x<64?se[ee++]=x:x<256?(se[ee++]=204,se[ee++]=x):x<65536?(se[ee++]=205,se[ee++]=x>>8,se[ee++]=x&255):(se[ee++]=206,nn.setUint32(ee,x),ee+=4);else if(x>>0===x)x>=-32?se[ee++]=256+x:x>=-128?(se[ee++]=208,se[ee++]=x+256):x>=-32768?(se[ee++]=209,nn.setInt16(ee,x),ee+=2):(se[ee++]=210,nn.setInt32(ee,x),ee+=4);else{let C;if((C=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){se[ee++]=202,nn.setFloat32(ee,x);let D;if(C<4||(D=x*sp[(se[ee]&127)<<1|se[ee+1]>>7])>>0===D){ee+=4;return}else ee--}se[ee++]=203,nn.setFloat64(ee,x),ee+=8}else if(T==="object")if(!x)se[ee++]=192;else{if(a){let D=a.get(x);if(D){if(!D.id){let I=a.idsToInsert||(a.idsToInsert=[]);D.id=I.push(D)}se[ee++]=214,se[ee++]=112,nn.setUint32(ee,D.id),ee+=4;return}else a.set(x,{offset:ee-n})}let C=x.constructor;if(C===Object)_(x,!0);else if(C===Array){E=x.length,E<16?se[ee++]=144|E:E<65536?(se[ee++]=220,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=221,nn.setUint32(ee,E),ee+=4);for(let D=0;D<E;D++)S(x[D])}else if(C===Map){E=x.size,E<16?se[ee++]=128|E:E<65536?(se[ee++]=222,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=223,nn.setUint32(ee,E),ee+=4);for(let[D,I]of x)S(D),S(I)}else{for(let D=0,I=cp.length;D<I;D++){let R=uv[D];if(x instanceof R){let F=cp[D];if(F.write){F.type&&(se[ee++]=212,se[ee++]=F.type,se[ee++]=0),S(F.write.call(this,x));return}let B=se,X=nn,Y=ee;se=null;let G;try{G=F.pack.call(this,x,z=>(se=B,B=null,ee+=z,ee>Ri&&M(ee),{target:se,targetView:nn,position:ee-z}),S)}finally{B&&(se=B,nn=X,ee=Y,Ri=se.length-10)}G&&(G.length+ee>Ri&&M(G.length+ee),ee=MU(G,se,ee,F.type));return}}_(x,!x.hasOwnProperty)}}else if(T==="boolean")se[ee++]=x?195:194;else if(T==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))se[ee++]=211,nn.setBigInt64(ee,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)se[ee++]=207,nn.setBigUint64(ee,x);else if(this.largeBigIntToFloat)se[ee++]=203,nn.setFloat64(ee,Number(x));else throw new RangeError(x+" 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")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},_=this.useRecords===!1?this.variableMapSize?x=>{let T=Object.keys(x),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,nn.setUint32(ee,E),ee+=4);let C;for(let D=0;D<E;D++)S(C=T[D]),S(x[C])}:(x,T)=>{se[ee++]=222;let E=ee-n;ee+=2;let C=0;for(let D in x)(T||x.hasOwnProperty(D))&&(S(D),S(x[D]),C++);se[E+++n]=C>>8,se[E+n]=C&255}:x=>{let T=Object.keys(x),E,C=o.transitions||(o.transitions=Object.create(null)),D=0;for(let R=0,F=T.length;R<F;R++){let B=T[R];E=C[B],E||(E=C[B]=Object.create(null),D++),C=E}let I=C[Ju];if(I)I>=96&&m?(se[ee++]=((I-=96)&31)+96,se[ee++]=I>>5):se[ee++]=I;else{I=o.nextId,I||(I=64),I<g&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(I=o.nextOwnId,I<y||(I=g),o.nextOwnId=I+1):(I>=y&&(I=g),o.nextId=I+1);let R=T.highByte=I>=96&&m?I-96>>5:-1;C[Ju]=I,o[I-64]=T,I<g?(T.isShared=!0,o.sharedLength=I-63,s=!0,R>=0?(se[ee++]=(I&31)+96,se[ee++]=R):se[ee++]=I):(R>=0?(se[ee++]=213,se[ee++]=114,se[ee++]=(I&31)+96,se[ee++]=R):(se[ee++]=212,se[ee++]=114,se[ee++]=I),D&&(w+=b*D),v.length>=p&&(v.shift()[Ju]=0),v.push(C),S(T))}for(let R=0,F=T.length;R<F;R++)S(x[T[R]])},M=x=>{let T;if(x>16777216){if(x-n>fA)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min(fA,Math.round(Math.max((x-n)*(x>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(x-n<<2,se.length-1)>>12)+1<<12;let E=new cv(T);return nn=new DataView(E.buffer,0,T),se.copy?se.copy(E,0,n,x):E.set(se.slice(n,x)),ee-=n,n=0,Ri=E.length-10,se=E}}useBuffer(e){se=e,nn=new DataView(se.buffer,se.byteOffset,se.byteLength),ee=0}};uv=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ku];cp=[{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?pA(r,16,e):mA(up?Buffer.from(r):new Uint8Array(r),e)}},{pack(r,e){let t=r.constructor;t!==gA&&this.structuredClone?pA(r,lv.indexOf(t.name),e):mA(r,e)}},{pack(r,e){let{target:t,position:n}=e(1);t[n]=193}}];function pA(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 mA(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 MU(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 TU(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 ro(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)");uv.unshift(r.Class),cp.unshift(r)}dA(r)}var yA=new na({useRecords:!1}),EU=yA.pack,CU=yA.pack;var{NEVER:PU,ALWAYS:DU,DECIMAL_ROUND:IU,DECIMAL_FIT:LU}=ap,vA=512,RU=1024;var xA=new na({structuredClone:!0});ro({Class:dn.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,dn.prototype),r}});ro({Class:Gt.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Gt.prototype),r}});ro({Class:Gn.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Gn.prototype),r}});ro({Class:Qu.prototype.constructor,type:4,write(r){return r.id},read(r){return new Qu(r)}});ro({Class:Zu.prototype.constructor,type:5,write(r){return r.data},read(r){return new Zu(r)}});ro({Class:gs.prototype.constructor,type:6,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,gs.prototype),r}});function OU(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 hv(r){if(Jo(r))return r;if(Array.isArray(r))return r.map(hv);if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r).sort())e[t]=hv(r[t]);return Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else return r}var hp;(n=>{function r(i){return xA.pack(i)}n.serialize=r;function e(i){return xA.unpack(i)}n.deserialize=e;function t(i){return OU(r(hv(i))).toString()}n.checksum=t})(hp||(hp={}));var ra;(t=>{let r={opacity:1,blendFunction:13,enabled:!1};t.defaultData={enabled:!1,pixelation:{...r,blendFunction:16,granularity:15},bloom:{...r,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...r,offset:[2,2]},vignette:{...r,darkness:1,offset:0},hueSaturation:{...r,hue:3,saturation:0},brightnessContrast:{...r,brightness:.25,contrast:0},depthOfField:{...r,focalLength:2,focusDistance:2,bokehScale:2},noise:{...r,blendFunction:16}}})(ra||(ra={}));var dp;(t=>{t.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function e(n){return t.all.includes(n)}t.is=e})(dp||(dp={}));var fp;(t=>{function r(n){return e(n)}t.defaultData=r;function e(n){if(n==="PointLight")return{type:n,color:wn.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:wn.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:wn.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(fp||(fp={}));var dv;(t=>{t.defaultData={castShadow:!0,receiveShadow:!0};function e(n,i){return n.castShadow===i.castShadow&&n.receiveShadow===i.receiveShadow}t.equals=e})(dv||(dv={}));var fv;(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})(fv||(fv={}));var pp;(e=>e.defaultData={...fv.defaultData,...dv.defaultData,cloner:null,booleanExclude:null})(pp||(pp={}));var pv=(i=>(i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Center=3]="Center",i[i.Justify=4]="Justify",i))(pv||{}),mv=(n=>(n[n.Top=1]="Top",n[n.Center=2]="Center",n[n.Bottom=3]="Bottom",n))(mv||{}),gv=(n=>(n[n.None=1]="None",n[n.Upper=2]="Upper",n[n.Lower=3]="Lower",n))(gv||{}),mp;(e=>e.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:wn.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(mp||(mp={}));var gp=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],bA=["wrapping","image"],io;(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:Kt.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]],steps:[0,1],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:{...Kt.fromHex(6710886),a:1},colorB:{...Kt.fromHex(6710886),a:1},colorC:{...Kt.fromHex(16777215),a:1},colorD:{...Kt.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:wn.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:wn.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:wn.fromHexAndA(0,1),contourColor:wn.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}}}})(io||(io={}));var sr;(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 Gt}}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 Gt;return h.push({fi:0,data:io.defaultData("light",l),id:u}),h.push({fi:1,data:io.defaultData("color"),id:c}),{layers:h}}a.defaultTwoLayerData=s;function o(l,u="basic",c="layer1",h="layer2"){let d=io.defaultData("texture");Object.assign(d.texture,{image:l});let f=new Gt;return f.push({fi:0,data:d,id:c}),f.push({fi:1,data:io.defaultData("light",u),id:h}),{layers:f}}a.defaultTwoLayerTextureData=o})(sr||(sr={}));var jl;(e=>{function r(){return{points:new Gt,roundness:0,shapeHoles:[],isClosed:!1}}e.defaultData=r})(jl||(jl={}));var yp;(e=>{function r(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=r})(yp||(yp={}));var $u;(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:jl.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})($u||($u={}));var eh;(i=>{i.identity={...Xf.identity,hiddenMatrix:Pi.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:hn.isEqual(s.position,o.position)?null:o.position,rotation:hn.isEqual(s.rotation,o.rotation)?null:o.rotation,scale:hn.isEqual(s.scale,o.scale)?null:o.scale,hiddenMatrix:Pi.isEqual(s.hiddenMatrix,o.hiddenMatrix)?null:o.hiddenMatrix}}i.diff=n})(eh||(eh={}));var yv;(e=>e.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(yv||(yv={}));var vs;(e=>e.defaultData={states:new Gt,events:new Gt,visible:!0,raycastLock:!1,physics:null,...eh.identity})(vs||(vs={}));var wA;(e=>e.defaultData={type:"Empty",...vs.defaultData})(wA||(wA={}));var vp;(e=>e.defaultData={type:"Mesh",...vs.defaultData,...pp.defaultData})(vp||(vp={}));var SA;(e=>e.defaultData={type:"TextFrame",...vs.defaultData,...mp.defaultData})(SA||(SA={}));var xp;(e=>e.defaultData={...vs.defaultData,...eh.identity,...Ko.defaultData})(xp||(xp={}));var bp;(e=>{function r(t){return{...vs.defaultData,...fp.defaultData(t)}}e.defaultData=r})(bp||(bp={}));var wp;(n=>(n.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Pi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:yv.defaultData,states:new Gt,events:new Gt,...Ko.defaultData},n.defaultMeshObject={name:"Rectangle",...vs.defaultData,...vp.defaultData,geometry:$u.defaultData("RectangleGeometry"),material:sr.defaultTwoLayerData("basic","layer1","layer2")},n.defaultBooleanObject={name:"Boolean",...vs.defaultData,...vp.defaultData,geometry:$u.defaultData("BooleanGeometry"),material:sr.defaultTwoLayerData("phong","layer1","layer2")}))(wp||(wp={}));var th;(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=$y(s.material,o=>{if(typeof o!="string")for(let[a,l]of Object.entries(i.material.layers)){let u=o.layers.data(a);u&&Qo(u,l)}}).data),s.materials&&i.materials&&(s.materials=$y(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&&Qo(h,c)}}}).data),s}t.patchMaterialState=r;function e(n,i){if(i===void 0)return n;let s={...n};if(Object.assign(s,eh.merge(s,i)),Ci.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(dp.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=Kt.clone(o.color))}return s}t.patch=e})(th||(th={}));var nh;(e=>e.defaultData={enabled:!1,useBackgroundColor:!1,color:Kt.white,near:.1,far:2e3})(nh||(nh={}));var ql;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3})(ql||(ql={}));var xs;(e=>e.defaultData={orbitControls:ql.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((t,n)=>{let i=0,s=0;return n<5?s=-30:n<10&&(s=30),n===0||n===10||n===5?i=30:(n===4||n===11||n===9)&&(i=-30),[120,[i,s],"show"]}),gameControlObject:null})(xs||(xs={}));var Vr;(e=>e.defaultData={ambientLight:{enabled:!0,type:"HemisphereLight",color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75,depth:100,groundColor:{r:.5098039215686274,g:.5098039215686274,b:.5098039215686274},softShadows:!1,softShadowQuality:"low"},usePhysics:!1,gravity:-10,pixelsPerMeter:200})(Vr||(Vr={}));var AA;(n=>{function r(){let i=new Gn,s=wp.defaultMeshObject;return i.push({fi:-1,data:{...bp.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7},id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),i.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:s,children:[]}),i}n.defaultData={backgroundColor:wn.fromHexAndA(1184534,1),postprocessing:ra.defaultData,fog:nh.defaultData,objects:r(),environment:Vr.defaultData,publish:xs.defaultData},n.emptyData=function(){return{backgroundColor:wn.fromHexAndA(1184534,1),postprocessing:ra.defaultData,fog:nh.defaultData,objects:new Gn,environment:Vr.defaultData,publish:xs.defaultData}}})(AA||(AA={}));var Sp;(t=>{function r(){let n={};return n["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Vf(n,dn.prototype)}t.defaultColors=r;function e(){return{materials:new dn,images:new dn,colors:new dn,audios:new dn,penumbraSize:[.5,.5,.5]}}t.emptyData=e})(Sp||(Sp={}));function _A(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={...Xy(ci(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={...ci(e),near:Math.max(e.near,0),far:Math.max(e.far,0)};Object.assign(e,t)}})}function vv(r,e){Object.values(r.shared.materials).forEach(t=>e(t))}function xv(r,e){r.scene.objects.traverse((t,n)=>{"materials"in n?n.materials.forEach(i=>{typeof i!="string"&&e(i)}):"material"in n&&typeof n.material!="string"&&e(n.material)})}function BU(r){Object.assign(r.scene.publish,{orbitControls:{...ql.defaultData,...ci(r.scene.publish.orbitControls)}})}function NU(r){Object.assign(r.scene.publish.settings,{video:{...xs.defaultData.settings.video,...ci(r.scene.publish.settings.video)}})}function FU(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((gp.includes(i)||typeof s=="boolean")&&delete n[i],i==="texture")for(let[o,a]of Object.entries(s))(bA.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 UU(r){r.scene.publish.withBackground=!0}function zU(r){r.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function GU(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 kU(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 VU(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 MA(r){r.layers===void 0&&Object.assign(r,sr.defaultTwoLayerData("lambert"))}function bv(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={...ci(e),colors:t,steps:n};Object.assign(e,i)}})}function HU(r){r.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="BooleanGeometry"||t.geometry.type==="SubdivGeometry")&&(t.geometry.phongAngle=35)})}function TA(r){r.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(n=>{typeof n!="string"&&bv(n)}):"material"in t&&typeof t.material!="string"&&bv(t.material)}),Object.values(r.shared.materials).forEach(e=>bv(e))}function WU(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 jU(r){r.shared.audios=Vf({},dn.prototype)}function qU(r){let e=r.shared.materials;Object.entries(e).forEach(([t,n])=>{if(!n.layers){let i={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(e,{[t]:i})}})}function XU(r){Object.entries(ci(r.shared.images)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.images[n]}),Object.entries(ci(r.shared.audios)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.audios[n]})}function YU(r){r.scene.publish.settings.web.preload=!1}function EA(r){r.layers&&r.layers.forEach(e=>{e.type==="depth"&&e.num!==void 0&&(e.colors=e.colors.slice(0,e.num),e.steps=e.steps.slice(0,e.num),delete e.num)})}var CA=19;function PA(r){let e=r.schema??0;e!==CA&&(console.warn("updating from ",e,"to ",CA),e<1&&(xv(r,_A),vv(r,_A),r.schema=1),e<2&&(BU(r),r.schema=2),e<3&&(FU(r),r.schema=3),e<4&&(UU(r),r.schema=4),e<5&&(zU(r),r.schema=5),e<6&&(GU(r),r.schema=6),e<7&&(kU(r),r.schema=7),e<8&&(VU(r),r.schema=8),e<9&&(TA(r),r.schema=9),e<10&&(HU(r),r.schema=10),e<11&&(WU(r),r.schema=11),e<12&&(TA(r),r.schema=12),e<13&&(jU(r),r.schema=13),e<14&&(qU(r),r.schema=14),e<15&&(XU(r),r.schema=15),e<16&&(YU(r),r.schema=16),e<17&&(xv(r,EA),vv(r,EA),r.schema=17),e<18&&(xv(r,MA),vv(r,MA),r.schema=18),e<19&&(NU(r),r.schema=19))}var Ap;(e=>e.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Ap||(Ap={}));var DA;(e=>e.defaultData={object:null,state:null,repeat:!1,cycle:!1,rewind:!1,easing:4,delay:0,delayDirection:"start-once",duration:1e3})(DA||(DA={}));var IA;(n=>(n.defaultData={type:12,trigger:"mouseDown",interaction:"play",volume:.5,delay:0,loop:0},n.isPlayable=i=>i.type===12&&i.interaction==="play",n.isPausable=i=>i.type===12&&i.interaction!=="play"))(IA||(IA={}));var _p;(e=>{function r(t){return t.type===0||t.type===1||t.type===5||t.type===6}e.is=r})(_p||(_p={}));function ia(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 Ie,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 p=0;p<f.count;++p)h.push(f.getX(p)+c);c+=r[d].attributes.position.count}l.setIndex(h)}for(let c in s){let h=LA(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 m=0;m<o[c].length;++m)f.push(o[c][m][d]);let p=LA(f);if(!p)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+c+" morphAttribute."),null;l.morphAttributes[c].push(p)}}return l}function LA(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 Ge(s,t,n)}var wv={type:"change"},RA={type:"changeZoom"},QU={type:"changePan"},Yl={type:"start"},rh={type:"end"},Sv=new st,ZU=new N,KU=2*Math.PI,JU=1e-8,$U=.01,OA=2,Av=.125,BA=2,_v=1,Mv=1,Tv=.1;var Ql=class extends Bt{constructor(t,n,i=!1){super();this.object=t;this.domElement=n;this.isExport=i;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.mouseButtons=[0,5];this.mouseButtonsPlay=[3,4,5];this.touches=[null,Cr.DOLLY_ROTATE,Cr.PAN];this.offset=new A;this.eye=new A;this.lastPosition=new A;this.lastQuaternion=new st;this.current=new N;this.overShoot=new N;this.overRatio=new N;this.spherical=new Cu;this.sphericalDelta=new Cu;this.panOffset=new A;this.panLeftV=new A;this.panUpV=new A;this.panV=new A;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(Sv.copy(this.object.quaternion).invert()),this.panOffset.applyQuaternion(Sv),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-Av),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%KU;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-Av,this.sphericalDelta.phi*=1-Av):this.sphericalDelta.set(0,0,0),this.scale=1,this.zoomChanged||this.lastPosition.distanceToSquared(this.object.position)>$U||8*(1-this.lastQuaternion.dot(this.object.quaternion))>JU?(this.dispatchEvent(wv),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,ct.length===1&&(this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)),t.pointerType==="touch"||t.pointerType==="pen"?this.onPointerDownTouch(t):this.onPointerDownMouse(t))};this.onPointerMove=t=>{this.enabled!==!1&&(t.pointerType==="touch"||t.pointerType==="pen"?this.onPointerMoveTouch(t):this.onPointerMoveMouse(t))};this.onPointerUp=t=>{this.isPointerDown=!1,ct.length===0&&(this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp)),this.dispatchEvent(rh),this.state=-1};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&&!Hu(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(Hu(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(Hu(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(Yl)};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(this.touches[ct.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(Yl)};this.onPointerMoveTouch=t=>{switch(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=zu(()=>this.dispatchEvent(rh),33);this.onMouseWheel=t=>{this.enabled===!1||this.enableZoom===!1&&this.enablePan===!1||(this.isExport===!1&&this.domElement.clientHeight===document.body.clientHeight&&this.domElement.clientWidth===document.body.clientWidth&&t.preventDefault(),this.dispatchEvent(Yl),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(Yl),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(rh)};this.onContextMenu=t=>{this.enabled!==!1&&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(ct[0]))};this.onPointerHover=t=>{if(!(t.pointerType!=="mouse"||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,Tv):this.hoverRotatePanMode===1&&this.handleMouseMoveRotate(t,Tv),this.timerHover=window.setTimeout(()=>{this.isPointerDown=!1},30)}};this.target=this.object.getTarget(),this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.isUpVectorFlipped0=this.object.isUpVectorFlipped,this.connect(),this.update()}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.isUpVectorFlipped=this.isUpVectorFlipped0,this.object.updateProjectionMatrix(),this.dispatchEvent(wv),this.isFirstHover=!0,this.update(),this.state=-1}resetTo(t,n,i,s=!1){this.target.copy(t),this.object.position.copy(n),this.object.zoom=i,this.object.isUpVectorFlipped=s,this.object.updateProjectionMatrix(),this.dispatchEvent(wv),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),Tv=(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,OA=t.autoRotateSpeed,this.autoRotateClockwise=t.autoRotateClockwise;let i=this.object.getTarget().applyQuaternion(Sv.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=so(this.spherical.phi-t.rotationVerticalOffset.min),this.maxPhi=so(this.spherical.phi+t.rotationVerticalOffset.max),this.minTheta=so(this.spherical.theta-t.rotationHorizontalOffset.min),this.maxTheta=so(this.spherical.theta+t.rotationHorizontalOffset.max),this.isThetaFlipped=this.minTheta>this.maxTheta,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("wheel",this.onMouseWheel),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keyup",this.onKeyUp,!1),Vu||(this.domElement.addEventListener("gesturestart",this.onGesture),this.domElement.addEventListener("gesturechange",this.onGesture),this.domElement.addEventListener("gestureend",this.onGesture)),this.domElement.addEventListener("touchend",this.onTouchEnd)}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("wheel",this.onMouseWheel),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keyup",this.onKeyUp,!1),this.domElement.removeEventListener("pointermove",this.onPointerHover),Vu||(this.domElement.removeEventListener("gesturestart",this.onGesture),this.domElement.removeEventListener("gesturechange",this.onGesture),this.domElement.removeEventListener("gestureend",this.onGesture)),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 A?(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(so(this.spherical.theta),so(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=so(this.overShoot.x),this.overShoot.y=so(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=NA(Math.abs(this.overRatio.x)),this.overRatio.y=NA(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 A?(t.x=c,t.y=h):(t.theta=c,t.phi=h)}setEnableDampingSpeed(t){this.enableDamping=t,_v=t===!0?.2:1}stopDamping(){this.sphericalDelta.theta=0,this.sphericalDelta.phi=0}getAutoRotationAngle(){return 2*Math.PI/60/60*OA}getZoomScale(){return Math.pow(.95,BA)}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(QU)}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(RA)}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(RA)}zoomOut(t=this.getZoomScale()){this.dispatchEvent(Yl),this.dollyOut(t),this.dispatchEvent(rh)}zoomIn(t=this.getZoomScale()){this.dispatchEvent(Yl),this.dollyIn(t),this.dispatchEvent(rh)}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){zl&&Gl<15.5&&!Lt?(this.rotateEnd.set(t.clientX,t.clientY),this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart),this.rotateStart.copy(this.rotateEnd)):this.rotateDelta.set(t.movementX,t.movementY),this.rotateDelta.multiplyScalar(_v*n).rotateAround(ZU,-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.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){zl&&Gl<15.5&&!Lt?(this.panEnd.set(t.clientX,t.clientY),this.panDelta.subVectors(this.panEnd,this.panStart),this.panStart.copy(this.panEnd)):this.panDelta.set(t.movementX,t.movementY),this.panDelta.multiplyScalar(Mv*n),this.pan(this.panDelta.x,this.panDelta.y),this.update()}handleMouseWheel(t){if(U1===!1&&Hu(t)===!1&&ez(t)===!0){if(this.enablePan===!1)return;this.gesture?(this.panDelta.set(-t.deltaX,-t.deltaY).multiplyScalar(Mv),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(ct.length===2){let t=.5*(ct[0].pageX+ct[1].pageX),n=.5*(ct[0].pageY+ct[1].pageY);this.rotateStart.set(t,n)}else this.rotateStart.set(ct[0].pageX,ct[0].pageY)}handleTouchStartPan(){if(ct.length===2){let t=.5*(ct[0].pageX+ct[1].pageX),n=.5*(ct[0].pageY+ct[1].pageY);this.panStart.set(t,n)}else this.panStart.set(ct[0].pageX,ct[0].pageY)}handleTouchStartDolly(){let t=ct[0].pageX-ct[1].pageX,n=ct[0].pageY-ct[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(ct.length===2){let i=qf(t),s=.5*(t.pageX+i.x),o=.5*(t.pageY+i.y);this.rotateEnd.set(s,o)}else{if(t.pointerId!==ct[0].pointerId)return;this.rotateEnd.set(t.pageX,t.pageY)}this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(_v);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(ct.length===2){let n=qf(t),i=.5*(t.pageX+n.x),s=.5*(t.pageY+n.y);this.panEnd.set(i,s)}else{if(t.pointerId!==ct[0].pointerId)return;this.panEnd.set(t.pageX,t.pageY)}this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(Mv),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}handleTouchMoveDolly(t){let n=qf(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,BA)),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 so(r){let e=Math.PI*2;for(;r<=-Math.PI;)r+=e;for(;r>Math.PI;)r-=e;return r}function NA(r){return 1-Math.pow(1-r,4)}function ez(r){return r.wheelDeltaY===0||r.deltaY===0?Zo&&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 Ev={type:"change"},tz={type:"lock"},nz={type:"unlock"},rz=new A,iz=new A,sz=new A,Sn=new A,kn=new A,sa=new A,Mp=new _e,FA=new _e,oz=new _e,az=new _e,Zl=new st,ih=new st,lz=new Qt(0,0,0,"YXZ"),oa=new A(0,1,0),Cv=new A(1,1,1),cz=1,uz=.025,hz=16e-6,dz=12,fz=20,qn=new xn,Hr=new Mt,Tp=class extends Bt{constructor(t,n,i,s,o,a,l){super();this.object=t;this.domElement=n;this.sharedGameControlGlobals=o;this.cameraFollow=a;this.camera=l;this.enableDamping=!0;this.position0=new A;this.rotation0=new Qt(0,0,0,"XYZ");this.scale0=new A;this.hiddenMatrix0=new _e;this.target0=new A;this.zoom0=1;this.rotForce=1;this.moveForce=1;this.euler0=new Qt(0,0,0,"YXZ");this.position0Cam=new A;this.quat0Cam=new st;this.scale0Cam=new A;this.hiddenMatrix0Cam=new _e;this.threshEndTranslate=.01;this.threshEndRotate=1e-8;this.collider={radius:40,segment:new xn(new A(0,-40,0),new A(0,40,0)),matrix:new _e,position:new A,rotation:new st};this.euler=new Qt(0,0,0,"YXZ");this.eulerDelta=new A;this.lastQuaternion=new st;this.lastPosition=new A;this.lastCameraQuaternion=new st;this.lastCameraPosition=new A;this.PI_2=Math.PI/2;this.prevMouse=new N;this.velocityTarget=new A;this.velocity=new A;this.directionXZ=new A;this.rotVelocityStick=new A;this.rotVelocityTarget=new A;this.rotVelocity=new A;this.rotDirection=new A;this.objectRot={x:0,y:0};this.firstPointerId=-1;this.actionStates={moveNegZ:0,movePosZ:0,moveNegX:0,movePosX:0,moveNegY:0,movePosY:0,rotPosX:0,rotNegX:0,rotPosY:0,rotNegY:0,jump:0};this.onObject=!1;this.slopeAdjust=!1;this.keyAssignments=[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","ArrowUp"],["rotPosY","ArrowLeft"],["rotNegX","ArrowDown"],["rotNegY","ArrowRight"],["jump"," "]];this.collisionEnabled=!0;this.offsetMatrix=new _e;this.objectToTarget=new A;this.objectToTarget0=new A;this.objectToCamXZ=new A;this.objectToCamXZ0=new A;this.targetToCamera=new A;this.targetToCamera0=new A;this.cameraPolarAxis0=new A;this.targetPos=new A;this.targetQuat=new st;this.lerpFactorPos=new A().setScalar(.3);this.lerpFactorPosStart=.3;this.lerpFactorPosEnd=.3;this.lerpFactorRotStart=.3;this.lerpFactorRotEnd=.3;this.lerpFactorPosCamera=.3;this.lerpFactorRotCamera=.3;this.objXZQuat=new st;this.objXZQuatInv=new st;this.objXZRotMat=new _e;this.isFirstPerson=!1;this.lastDummyPos=new A;this.lastDummyPosDelta=new A;this.hit=null;this.groundVelocity=new A;this.pushedVelocity=new A;this.groundYRotation=0;this.colliderWorldQuat=new st;this.groundNormal=new A;this.onPointerDown=t=>{t.target!==this.domElement||this.firstPointerId!==-1||(this.firstPointerId=t.pointerId,this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),this.rotBy!=="keys"&&!Lt&&(!zl||Gl>=15.5)&&this.domElement.requestPointerLock(),this.prevMouse.set(t.clientX,t.clientY))};this.onPointerUp=t=>{this.firstPointerId=-1,this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),t.pointerType==="mouse"&&this.domElement.ownerDocument.exitPointerLock()};this.onPointerMove=t=>{if(t.pointerId!==this.firstPointerId)return;let n=t.clientX-this.prevMouse.x,i=t.clientY-this.prevMouse.y;this.prevMouse.set(t.clientX,t.clientY),t.pointerType==="mouse"&&this.rotBy!=="keys"&&(zl&&Gl<15.5&&!Lt?(this.eulerDelta.y=-n*this.mouseOrbitSensitivity,this.eulerDelta.x=-i*this.mouseOrbitSensitivity):(this.eulerDelta.y=-t.movementX*this.mouseOrbitSensitivity,this.eulerDelta.x=-t.movementY*this.mouseOrbitSensitivity)),t.pointerType!=="mouse"&&this.rotByTouch==="drag"&&(this.eulerDelta.y=-n*this.mouseOrbitSensitivity*5,this.eulerDelta.x=-i*this.mouseOrbitSensitivity*5),this.dispatchEvent(Ev)};this.onPointerlockChange=t=>{this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(tz),Tp.isLocked=!0):(this.dispatchEvent(nz),Tp.isLocked=!1)};this.onPointerlockError=()=>{console.error("SPE.GameControls: Unable to use Pointer Lock API")};this.onKeyDown=t=>{t.preventDefault();for(let n of this.keyAssignments)if(t.key.toUpperCase()===n[1]||t.key===n[1]){this.actionStates[n[0]]=1;break}this.dispatchEvent(Ev)};this.onKeyUp=t=>{for(let n of this.keyAssignments)if(t.key.toUpperCase()===n[1]||t.key===n[1]||t.code.slice(3,t.code.length).toUpperCase()===n[1]){this.actionStates[n[0]]=0;break}};t.objectType==="CombinedCamera"&&(this.isFirstPerson=!0),this.position0.copy(this.object.position),this.rotation0.copy(this.object.rotation),this.scale0.copy(this.object.scale),this.hiddenMatrix0.copy(this.object.hiddenMatrix),this.object.matrix.premultiply(this.object.hiddenMatrix),this.object.hiddenMatrix.identity(),this.object.matrix.decompose(this.object.position,this.object.quaternion,this.object.scale),this.object.rotation.reorder("YXZ"),this.euler0.copy(this.object.rotation);let u=Mp.multiplyMatrices(this.object.matrixWorld,this.object.matrix.clone().invert()),c=u.clone().invert();if(this.object.hiddenMatrix.multiply(c),this.object.matrix.premultiply(u),this.object.matrix.decompose(this.object.position,this.object.quaternion,this.object.scale),this.isFirstPerson===!1){let f=this.object.rotation.y;this.object.rotation.y=0,this.objXZQuat.copy(this.object.quaternion),this.objXZQuatInv.copy(this.objXZQuat).invert(),this.objXZRotMat.makeRotationFromQuaternion(this.object.quaternion),this.object.rotation.set(0,f,0)}if(this.object.matrixAutoUpdate=!1,this.isFirstPerson){let f=this.object;this.target0.copy(f.getTarget()),this.zoom0=f.zoom}else this.cameraFollow===!0&&(this.target0.copy(this.camera.getTarget()),this.zoom0=this.camera.zoom);if(this.cameraFollow===!0){if(this.position0Cam.copy(this.camera.position),this.quat0Cam.copy(this.camera.quaternion),this.scale0Cam.copy(this.camera.scale),this.hiddenMatrix0Cam.copy(this.camera.hiddenMatrix),this.camera?.parent?.parent){let y=this.camera.matrix.clone().invert().premultiply(this.camera.matrixWorld),v=y.clone().invert();this.camera.hiddenMatrix.multiply(v),this.camera.matrix.premultiply(y),this.camera.matrixWorld.decompose(this.camera.position,this.camera.quaternion,this.camera.scale)}this.camera.matrixAutoUpdate=!1,this.offsetMatrix.copy(this.object.matrix).invert().multiply(this.camera.matrix);let f=new A(0,0,-1).applyQuaternion(this.camera.quaternion),p=new A().subVectors(this.object.position,this.camera.position);this.objectToCamXZ.copy(p),this.objectToCamXZ.y=0,this.objectToCamXZ0.copy(this.objectToCamXZ);let m;if(Math.abs(f.y)<1e-6){p.y=0,f.y=0;let y=p.projectOnVector(f);this.targetToCamera0.copy(y).negate(),m=this.camera.position.clone().add(y)}else{let y=f.multiplyScalar(p.y/f.y);this.targetToCamera0.copy(y).negate(),m=y.clone().add(this.camera.position)}this.objectToTarget0.subVectors(m,this.object.position);let g=new Qt().setFromQuaternion(this.camera.quaternion,"YXZ");this.cameraPolarOffset=-g.x,g.x=0,g.z=0,g.y-=Math.PI/2,this.cameraPolarAxis0.set(0,0,-1).applyEuler(g)}if(this.isObjectCamera=this.object.objectType==="CombinedCamera",this.euler.setFromQuaternion(this.object.quaternion,"YXZ"),this.connect(),this.rotByTouch=i.rotByTouch??"joystick",this.rotBy=i.rotBy??"keys",this.rotationMode=i.rotationMode??"normal",this.moveMode=i.moveMode??"walk",this.collisionEnabled=i.collisionEnabled,this.speedTranslate=(i.speedTranslate??250)*cz,this.speedOrbit=(i.speedRotate??100)*uz,this.mouseOrbitSensitivity=(i.speedRotate??100)*hz,this.keyAssignments=i.keyAssignments.map(f=>{let p=[f[0],f[1]];return p[1]==="\u25B2"?p[1]="ArrowUp":p[1]==="\u25C0"?p[1]="ArrowLeft":p[1]==="\u25BC"?p[1]="ArrowDown":p[1]==="\u25B6"?p[1]="ArrowRight":p[1]==="\u21E7"?p[1]="Shift":p[1]==="\u21B5"?p[1]="Enter":p[1]==="Space"?p[1]=" ":p[1]==="\u2318"?p[1]="Meta":p[1]==="Ctrl"?p[1]="Control":p[1]==="Esc"&&(p[1]="Escape"),p}),i.rotBy==="mouse"){let f;f=this.keyAssignments.findIndex(p=>p[0]==="rotNegX"),f!==-1&&(this.keyAssignments[f][1]=""),f=this.keyAssignments.findIndex(p=>p[0]==="rotPosX"),f!==-1&&(this.keyAssignments[f][1]=""),f=this.keyAssignments.findIndex(p=>p[0]==="rotPosY"),f!==-1&&(this.keyAssignments[f][1]=""),f=this.keyAssignments.findIndex(p=>p[0]==="rotNegY"),f!==-1&&(this.keyAssignments[f][1]="")}this.lerpFactorPosStart=1-.02**(1/((i.delayPos[0]??.3)*60)),this.lerpFactorPosEnd=1-.02**(1/((i.delayPos[1]??.3)*60)),this.lerpFactorPos.setScalar(this.lerpFactorPosStart),this.lerpFactorRotStart=1-.02**(1/((i.delayRot[0]??.3)*60)),this.lerpFactorRotEnd=1-.02**(1/((i.delayRot[1]??.3)*60)),this.lerpFactorPosCamera=1-.02**(1/((i.delayPosCamera??.3)*60)),this.lerpFactorRotCamera=1-.02**(1/((i.delayRotCamera??.3)*60)),this.gravity=(s.gravity??Vr.defaultData.gravity)*dz,this.pixelsPerMeter=s.pixelsPerMeter??Vr.defaultData.pixelsPerMeter,this.usePhysics=s.usePhysics??Vr.defaultData.usePhysics,this.jumpPower=i.jumpPower*fz,this.resetYPosition=i.resetYPosition,this.orientMode=i.autoOrientMove?i.orientMode:"none",i.collider.type==="capsule"?(this.collider.radius=i.collider.radius,this.collider.segment.start.y=i.collider.height/2-i.collider.radius,this.collider.segment.end.y=-this.collider.segment.start.y):i.collider.type==="sphere"&&(this.collider.radius=i.collider.radius,this.collider.segment.start.y=0,this.collider.segment.end.y=0);let h=new A().fromArray(i.collider.position),d=new st().setFromEuler(new Qt().fromArray([...i.collider.rotation,"XYZ"]));this.collider.position.copy(h),this.collider.rotation.copy(d),this.collider.matrix.compose(h,d,Cv),i.cameraXAxis!==void 0&&(this.cameraXAxis=i.cameraXAxis,this.cameraYAxis=i.cameraYAxis,this.minPolarAngle=i.cameraRotXLimits[0],this.maxPolarAngle=i.cameraRotXLimits[1],this.minAzimuthAngleRel=i.cameraRotYLimits[0],this.maxAzimuthAngleRel=i.cameraRotYLimits[1])}reset(t=!1){if(this.object.rotation.copy(this.rotation0),this.object.position.copy(this.position0),this.object.scale.copy(this.scale0),this.object.hiddenMatrix.copy(this.hiddenMatrix0),t===!0){if(this.object.rotation.reorder("YXZ"),this.isFirstPerson===!1){let n=this.object.rotation.y;this.object.rotation.y=0,this.objXZQuat.copy(this.object.quaternion),this.objXZQuatInv.copy(this.objXZQuat).invert(),this.objXZRotMat.makeRotationFromQuaternion(this.object.quaternion),this.object.rotation.set(0,n,0)}this.euler.setFromQuaternion(this.object.quaternion,"YXZ"),this.velocityTarget.set(0,0,0),this.velocity.set(0,0,0)}this.isObjectCamera?this.object.matrixAutoUpdate=!0:this.object.updateMatrix(),this.cameraFollow===!0&&(this.camera.quaternion.copy(this.quat0Cam),this.camera.position.copy(this.position0Cam),this.camera.scale.copy(this.scale0Cam),this.camera.hiddenMatrix.copy(this.hiddenMatrix0Cam),this.camera.matrixAutoUpdate=!0),this.dispatchEvent(Ev)}connect(){this.domElement.ownerDocument.addEventListener("pointerdown",this.onPointerDown),this.domElement.ownerDocument.addEventListener("keydown",this.onKeyDown),this.domElement.ownerDocument.addEventListener("keyup",this.onKeyUp),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError)}disconnect(){this.domElement.ownerDocument.removeEventListener("pointerdown",this.onPointerDown),this.domElement.ownerDocument.removeEventListener("keydown",this.onKeyDown),this.domElement.ownerDocument.removeEventListener("keyup",this.onKeyUp),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError)}dispose(){this.disconnect()}resetTo(t,n,i){}update(t){if(this.gravity<0?this.object.position.y<this.resetYPosition:this.object.position.y>this.resetYPosition)return this.reset(!0),!0;let n=t/1e3,i=n*60;if(this.usePhysics){let o=kn.set(0,-(this.jumpPower+this.gravity*i)*n*.5,0).divideScalar(this.pixelsPerMeter),a=this.sharedGameControlGlobals.rapierWorld.castShape(Sn.addVectors(this.object.position,this.collider.position).divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,o,this.object.rigidBody?.collider(0).shape,1,void 0,void 0,void 0,this.object.rigidBody);if(this.slopeAdjust=!1,a){this.slopeAdjust=!1,this.groundNormal.set(a.normal2.x,a.normal2.y,a.normal2.z).applyQuaternion(this.colliderWorldQuat).negate(),Math.acos(this.groundNormal.y)*180/Math.PI>45?this.onObject=!0:(this.slopeAdjust=!0,this.onObject=!0);let l=a.collider._parent;this.groundYRotation=0,this.groundVelocity.set(0,0,0);for(let u of this.sharedGameControlGlobals.entitiesWithTransformAnim)if(u.rigidBody===l){u.matrixWorld.decompose(Sn,ih,kn),this.groundVelocity.subVectors(Sn,u.prevT),this.object.getWorldPosition(kn).add(this.collider.position).sub(u.position),this.groundYRotation=lz.setFromQuaternion(ih).y-u.prevR.y,sa.copy(kn).applyAxisAngle(oa,this.groundYRotation),this.groundVelocity.add(sa.sub(kn)).divideScalar(n);break}}else this.onObject=!1}this.moveMode==="walk"&&this.collisionEnabled&&(this.actionStates.jump===1&&this.onObject&&(this.velocityTarget.y=this.jumpPower,this.actionStates.jump=0,this.onObject=!1),this.velocityTarget.y+=this.onObject?0:this.gravity*i),this.moveMode==="fly"&&(this.velocityTarget.y=(this.actionStates.movePosY-this.actionStates.moveNegY)*this.speedTranslate),this.directionXZ.z=this.actionStates.movePosZ-this.actionStates.moveNegZ,this.directionXZ.x=this.actionStates.movePosX-this.actionStates.moveNegX,this.directionXZ.normalize(),this.actionStates.moveNegZ||this.actionStates.movePosZ?this.velocityTarget.z=this.directionXZ.z*this.speedTranslate*this.moveForce:this.velocityTarget.z=0,this.actionStates.moveNegX||this.actionStates.movePosX?this.velocityTarget.x=this.directionXZ.x*this.speedTranslate*this.moveForce:this.velocityTarget.x=0,(this.moveMode==="walk"?this.velocityTarget.x+this.velocityTarget.z===0:this.velocityTarget.manhattanLength()===0)?this.lerpFactorPos.setScalar(this.lerpFactorPosEnd):this.lerpFactorPos.setScalar(this.lerpFactorPosStart),this.moveMode==="walk"&&(this.lerpFactorPos.y=1),this.hit===null&&this.pushedVelocity.manhattanLength()===0||this.usePhysics===!1?(this.velocity.x+=(this.velocityTarget.x-this.velocity.x)*(1-(1-this.lerpFactorPos.x)**i),this.velocity.y+=(this.velocityTarget.y-this.velocity.y)*(1-(1-this.lerpFactorPos.y)**i),this.velocity.z+=(this.velocityTarget.z-this.velocity.z)*(1-(1-this.lerpFactorPos.z)**i)):this.velocity.copy(this.velocityTarget);let s=sz.copy(this.velocity);if(this.orientMode!=="none"&&this.isFirstPerson===!1){let o=kn.copy(s);o.y=0,s.set(0,s.y,o.length()*-1)}if(s.applyQuaternion(this.object.quaternion),this.slopeAdjust&&(ih.setFromUnitVectors(oa,this.groundNormal),s.applyQuaternion(ih)),this.usePhysics===!0){let o=kn;this.pushedVelocity.set(0,0,0);for(let a of this.sharedGameControlGlobals.entitiesWithTransformAnim){let l=sa.subVectors(a.position,a.prevT).divideScalar(n);l.divideScalar(this.pixelsPerMeter);let u=a.rigidBody.collider(0).castCollider(l,this.object.rigidBody.collider(0),Sn.copy(s).divideScalar(this.pixelsPerMeter),n);if(l.multiplyScalar(this.pixelsPerMeter),u!==null){this.pushedVelocity.copy(l),o.copy(u.normal1).applyQuaternion(a.quaternion);break}}if(this.pushedVelocity.manhattanLength()!==0){let a=o.dot(s);a<0&&s.addScaledVector(o,-a),s.add(this.pushedVelocity)}else s.add(this.groundVelocity)}if(this.rotDirection.y=Number(this.actionStates.rotPosY)-Number(this.actionStates.rotNegY),this.rotDirection.x=Number(this.actionStates.rotPosX)-Number(this.actionStates.rotNegX),this.rotDirection.normalize(),this.rotationMode==="normal"&&(this.actionStates.rotPosX||this.actionStates.rotNegX)||this.rotationMode==="steer"&&(this.actionStates.rotPosX||this.actionStates.rotNegX)&&(this.actionStates.movePosZ||this.actionStates.moveNegZ||this.moveMode==="walk")?this.rotVelocityStick.x=-this.rotDirection.x*this.speedOrbit*this.rotForce:this.rotVelocityStick.x=0,this.rotationMode==="normal"&&(this.actionStates.rotPosY||this.actionStates.rotNegY)||this.rotationMode==="steer"&&(this.actionStates.rotPosY||this.actionStates.rotNegY)&&(this.actionStates.movePosZ||this.actionStates.moveNegZ)?this.rotVelocityStick.y=-this.rotDirection.y*this.speedOrbit*this.rotForce:this.rotVelocityStick.y=0,this.rotVelocityTarget.subVectors(this.eulerDelta.divideScalar(n),this.rotVelocityStick),this.rotVelocityTarget.manhattanLength()===0?this.rotVelocity.lerp(this.rotVelocityTarget,1-(1-this.lerpFactorRotEnd)**i):this.rotVelocity.lerp(this.rotVelocityTarget,1-(1-this.lerpFactorRotStart)**i),this.euler.x+=this.rotVelocity.x*n,this.euler.y+=this.rotVelocity.y*n+this.groundYRotation,this.isFirstPerson===!1&&this.orientMode!=="none"&&this.directionXZ.manhattanLength()>0){let o=Sn,a=kn.copy(this.directionXZ);a.x*=-1,this.camera.getWorldDirection(o);let l=sa.copy(oa).multiplyScalar(o.dot(oa));if(o.sub(l),this.object.rotation.y=o.angleTo(a)*(o.cross(a).y>0?-1:1),this.orientMode==="radial"){this.objectToCamXZ.copy(this.objectToCamXZ0).applyAxisAngle(oa,this.euler.y-this.euler0.y);let u=kn.copy(this.objectToCamXZ).normalize(),c=sa.copy(s).multiplyScalar(n);c.y=0;let h=c.sub(Sn.copy(u).multiplyScalar(c.dot(u))).cross(u).y;this.euler.y-=Math.atan2(h,this.objectToCamXZ.length())}}if(this.cameraFollow===!0&&this.moveMode==="walk"&&this.isFirstPerson===!1?this.cameraXAxis==="Limit"?this.euler.x=ke.clamp(this.euler.x,-this.maxPolarAngle+this.cameraPolarOffset+1e-6,-this.minPolarAngle+this.cameraPolarOffset-1e-6):this.euler.x=ke.clamp(this.euler.x,-this.PI_2+this.cameraPolarOffset,this.PI_2+this.cameraPolarOffset):(this.cameraXAxis==="Limit"||this.isFirstPerson||this.cameraFollow===!0)&&(this.euler.x=ke.clamp(this.euler.x,-this.PI_2,this.PI_2)),(this.isFirstPerson||this.moveMode!=="walk")&&(this.object.rotation.x=this.euler.x),(this.isFirstPerson||this.orientMode==="none")&&(this.object.rotation.y=this.euler.y),this.object.rotation.x=ke.clamp(this.object.rotation.x,-this.PI_2,this.PI_2),this.objectRot.x=this.euler.x,this.objectRot.y=this.euler.y,this.colliderWorldQuat.copy(this.object.quaternion).multiply(this.objXZQuat).multiply(this.collider.rotation),this.collisionEnabled)if(this.usePhysics){if(this.hit=this.sharedGameControlGlobals.rapierWorld.castShape(Sn.addVectors(this.object.position,this.collider.position).divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,kn.copy(s).divideScalar(this.pixelsPerMeter),this.object.rigidBody?.collider(0).shape,n,8,void 0,void 0,this.object.rigidBody),this.hit!==null){let o=Sn.set(this.hit.normal2.x,this.hit.normal2.y,this.hit.normal2.z).applyQuaternion(this.colliderWorldQuat);if(this.hit.toi>0){let a=kn.copy(s).multiplyScalar(this.hit?.toi).dot(o),l=this.hit.toi;a>2&&(l=this.hit.toi*(a-2)/a,this.object.position.addScaledVector(s,l));let u=kn.copy(s).multiplyScalar(n-l);o.multiplyScalar(u.dot(o));let c=u.sub(o),h=this.sharedGameControlGlobals.rapierWorld.castShape(Sn.addVectors(this.object.position,this.collider.position).divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,sa.copy(c).divideScalar(this.pixelsPerMeter),this.object.rigidBody?.collider(0).shape,20,8,void 0,void 0,this.object.rigidBody);if(h===null)this.object.position.add(c);else if(h.toi>1){let d=Sn.set(h.normal2.x,h.normal2.y,h.normal2.z).applyQuaternion(this.colliderWorldQuat);kn.copy(c).dot(d)>2&&this.object.position.add(c)}this.lastDummyPosDelta.subVectors(this.object.position,this.lastDummyPos),this.lastDummyPos.copy(this.object.position)}}else this.object.position.addScaledVector(s,n);this.object.rigidBody?.setTranslation(Sn.copy(this.object.position).divideScalar(this.pixelsPerMeter),!0),this.object.rigidBody?.setRotation(Zl.copy(this.object.quaternion).multiply(this.objXZQuat),!0)}else{let o=this.onObject?1:5,a=s.multiplyScalar(n/o);for(let l=0;l<o;l++)this.object.position.add(a),this.collisionAdjustment(n/o)}else this.object.position.addScaledVector(s,n);if(this.moveMode==="walk"&&this.onObject&&(this.velocityTarget.y=0,this.velocity.y=0),this.isFirstPerson===!1&&this.object.quaternion.multiply(this.objXZQuat),this.isObjectCamera||this.object.updateMatrix(),this.isFirstPerson===!1&&this.object.quaternion.multiply(this.objXZQuatInv),this.cameraFollow===!0){this.updateFollowArms();let o=this.objectToTarget.add(this.object.position),a=this.targetToCamera.add(o);Mp.lookAt(a,o,oa).setPosition(a),Mp.decompose(this.targetPos,this.targetQuat,Sn),this.camera.quaternion.slerp(this.targetQuat,1-(1-this.lerpFactorRotCamera)**i),this.camera.position.lerp(this.targetPos,1-(1-this.lerpFactorPosCamera)**i),this.camera.updateMatrix(),this.camera.matrixWorldNeedsUpdate=!0,this.cameraYAxis==="Limit"&&this.orientMode==="cartesian"&&(this.euler.y=ke.clamp(this.euler.y,this.minAzimuthAngleRel,this.maxAzimuthAngleRel)),this.euler.x=ke.clamp(this.euler.x,-this.PI_2+(this.cameraPolarOffset<0?this.cameraPolarOffset:0),this.PI_2+(this.cameraPolarOffset>0?this.cameraPolarOffset:0))}return this.eulerDelta.set(0,0,0),this.lastPosition.distanceToSquared(this.object.position)<this.threshEndTranslate&&8*(1-this.lastQuaternion.dot(this.object.quaternion))<this.threshEndRotate&&(!this.camera||this.lastCameraPosition.distanceToSquared(this.camera.position)<this.threshEndTranslate&&8*(1-this.lastCameraQuaternion.dot(this.camera.quaternion))<this.threshEndRotate)&&(this.moveMode!=="walk"||this.onObject===!0||this.collisionEnabled===!1)?!1:(this.camera&&(this.lastCameraPosition.copy(this.camera.position),this.lastCameraQuaternion.copy(this.camera.quaternion)),this.lastPosition.copy(this.object.position),this.lastQuaternion.copy(this.object.quaternion),!0)}updateFollowArms(){this.objectToTarget.copy(this.objectToTarget0),this.targetToCamera.copy(this.targetToCamera0);let t=Zl.setFromAxisAngle(oa,this.cameraYAxis==="Limit"&&this.orientMode!=="radial"?ke.clamp(this.objectRot.y-this.euler0.y,this.minAzimuthAngleRel,this.maxAzimuthAngleRel):this.objectRot.y-this.euler0.y);(this.cameraYAxis!=="Locked"||this.orientMode==="radial")&&this.objectToTarget.applyQuaternion(t);let n;this.cameraXAxis==="Limit"?n=ke.clamp(this.objectRot.x,-this.maxPolarAngle+this.cameraPolarOffset+1e-6,-this.minPolarAngle+this.cameraPolarOffset-1e-6):n=ke.clamp(this.objectRot.x,-this.PI_2+this.cameraPolarOffset+1e-6,this.PI_2+this.cameraPolarOffset-1e-6);let i=Sn.copy(this.cameraPolarAxis0);(this.cameraYAxis!=="Locked"||this.orientMode==="radial")&&i.applyQuaternion(t);let s=ih.setFromAxisAngle(i,n);this.cameraYAxis!=="Locked"&&this.targetToCamera.applyQuaternion(t),this.cameraXAxis!=="Locked"&&this.targetToCamera.applyQuaternion(s)}collisionAdjustment(t){let n=iz.set(0,0,0);this.object.updateMatrix();let i=Mp.multiplyMatrices(this.object.matrix,this.objXZRotMat).multiply(this.collider.matrix).decompose(Sn,Zl,kn).compose(Sn,Zl,Cv);this.sharedGameControlGlobals.entitiesWithTransformAnim.forEach(o=>{if(o===this.object||o.isDescendantOf(this.object))return;Hr.makeEmpty();let a=az.copy(o.matrixWorld).decompose(Sn,Zl,kn).compose(Sn,Zl,Cv),l=FA.copy(a).invert(),u=oz.copy(FA).multiply(i);qn.copy(this.collider.segment),qn.start.applyMatrix4(u),qn.end.applyMatrix4(u);let c=rz.copy(this.object.position).applyMatrix4(l);Hr.expandByPoint(qn.start),Hr.expandByPoint(qn.end),Hr.min.addScalar(-this.collider.radius),Hr.max.addScalar(this.collider.radius),o.boundsTree.shapecast({intersectsBounds:h=>h.intersectsBox(Hr),intersectsTriangle:h=>{let d=Sn,f=kn,p=h.closestPointToSegment(qn,d,f);if(p<this.collider.radius){let m=this.collider.radius-p,g=f.sub(d).normalize(),y=sa.copy(c);y.addScaledVector(g,m);let v=y.applyMatrix4(a).sub(this.object.position);n.add(v),qn.start.addScaledVector(g,m),qn.end.addScaledVector(g,m)}}})}),Hr.makeEmpty(),qn.copy(this.collider.segment),qn.start.applyMatrix4(i),qn.end.applyMatrix4(i),Hr.expandByPoint(qn.start),Hr.expandByPoint(qn.end),Hr.min.addScalar(-this.collider.radius),Hr.max.addScalar(this.collider.radius),this.sharedGameControlGlobals.staticMeshBVH?.shapecast({intersectsBounds:o=>o.intersectsBox(Hr),intersectsTriangle:o=>{let a=Sn,l=kn,u=o.closestPointToSegment(qn,a,l);if(u<this.collider.radius){let c=this.collider.radius-u,h=l.sub(a).normalize();n.addScaledVector(h,c),qn.start.addScaledVector(h,c),qn.end.addScaledVector(h,c)}}}),this.onObject=n.y>Math.abs(t*this.velocity.y*.25);let s=Math.max(0,n.length()-1e-5);n.normalize().multiplyScalar(s),this.object.position.add(n)}},sh=Tp;sh.isLocked=!1;var zA,GA=new Promise(r=>{zA=r}),UA=!1;async function kA(){if(UA)return;let r=await import("./physics.js");await r.init(),zA(r),UA=!0}var VA=Math.pow(2,-24);var aa=class{constructor(){}};function Wr(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function Pv(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){let i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function Dv(r,e){e.set(r)}function Iv(r,e,t){let n,i;for(let s=0;s<3;s++){let o=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[o],i=e[o],t[o]=n>i?n:i}}function oh(r,e,t){for(let n=0;n<3;n++){let i=e[r+2*n],s=e[r+2*n+1],o=i-s,a=i+s;o<t[n]&&(t[n]=o),a>t[n+3]&&(t[n+3]=a)}}function Kl(r){let e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}function gz(r,e){if(!r.index){let t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;t>65535?i=new Uint32Array(new n(4*t)):i=new Uint16Array(new n(2*t)),r.setIndex(new Ge(i,1));for(let s=0;s<t;s++)i[s]=s}}function yz(r){if(!r.groups||!r.groups.length)return[{offset:0,count:r.index.count/3}];let e=[],t=new Set;for(let i of r.groups)t.add(i.start),t.add(i.start+i.count);let n=Array.from(t.values()).sort((i,s)=>i-s);for(let i=0;i<n.length-1;i++){let s=n[i],o=n[i+1];e.push({offset:s/3,count:(o-s)/3})}return e}function Rv(r,e,t,n,i=null){let s=1/0,o=1/0,a=1/0,l=-1/0,u=-1/0,c=-1/0,h=1/0,d=1/0,f=1/0,p=-1/0,m=-1/0,g=-1/0,y=i!==null;for(let v=e*6,w=(e+t)*6;v<w;v+=6){let b=r[v+0],S=r[v+1],_=b-S,M=b+S;_<s&&(s=_),M>l&&(l=M),y&&b<h&&(h=b),y&&b>p&&(p=b);let x=r[v+2],T=r[v+3],E=x-T,C=x+T;E<o&&(o=E),C>u&&(u=C),y&&x<d&&(d=x),y&&x>m&&(m=x);let D=r[v+4],I=r[v+5],R=D-I,F=D+I;R<a&&(a=R),F>c&&(c=F),y&&D<f&&(f=D),y&&D>g&&(g=D)}n[0]=s,n[1]=o,n[2]=a,n[3]=l,n[4]=u,n[5]=c,y&&(i[0]=h,i[1]=d,i[2]=f,i[3]=p,i[4]=m,i[5]=g)}function vz(r,e,t,n){let i=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,u=-1/0;for(let c=e*6,h=(e+t)*6;c<h;c+=6){let d=r[c+0];d<i&&(i=d),d>a&&(a=d);let f=r[c+2];f<s&&(s=f),f>l&&(l=f);let p=r[c+4];p<o&&(o=p),p>u&&(u=p)}n[0]=i,n[1]=s,n[2]=o,n[3]=a,n[4]=l,n[5]=u}function xz(r,e,t,n,i){let s=t,o=t+n-1,a=i.pos,l=i.axis*2;for(;;){for(;s<=o&&e[s*6+l]<a;)s++;for(;s<=o&&e[o*6+l]>=a;)o--;if(s<o){for(let u=0;u<3;u++){let c=r[s*3+u];r[s*3+u]=r[o*3+u],r[o*3+u]=c;let h=e[s*6+u*2+0];e[s*6+u*2+0]=e[o*6+u*2+0],e[o*6+u*2+0]=h;let d=e[s*6+u*2+1];e[s*6+u*2+1]=e[o*6+u*2+1],e[o*6+u*2+1]=d}s++,o--}else return s}}var bs=32,bz=(r,e)=>r.candidate-e.candidate,oo=new Array(bs).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ep=new Float32Array(6);function wz(r,e,t,n,i,s){let o=-1,a=0;if(s===0)o=Pv(e),o!==-1&&(a=(e[o]+e[o+3])/2);else if(s===1)o=Pv(r),o!==-1&&(a=Sz(t,n,i,o));else if(s===2){let l=Kl(r),u=1.25*i,c=n*6,h=(n+i)*6;for(let d=0;d<3;d++){let f=e[d],g=(e[d+3]-f)/bs;if(i<bs/4){let y=[...oo];y.length=i;let v=0;for(let b=c;b<h;b+=6,v++){let S=y[v];S.candidate=t[b+2*d],S.count=0;let{bounds:_,leftCacheBounds:M,rightCacheBounds:x}=S;for(let T=0;T<3;T++)x[T]=1/0,x[T+3]=-1/0,M[T]=1/0,M[T+3]=-1/0,_[T]=1/0,_[T+3]=-1/0;oh(b,t,_)}y.sort(bz);let w=i;for(let b=0;b<w;b++){let S=y[b];for(;b+1<w&&y[b+1].candidate===S.candidate;)y.splice(b+1,1),w--}for(let b=c;b<h;b+=6){let S=t[b+2*d];for(let _=0;_<w;_++){let M=y[_];S>=M.candidate?oh(b,t,M.rightCacheBounds):(oh(b,t,M.leftCacheBounds),M.count++)}}for(let b=0;b<w;b++){let S=y[b],_=S.count,M=i-S.count,x=S.leftCacheBounds,T=S.rightCacheBounds,E=0;_!==0&&(E=Kl(x)/l);let C=0;M!==0&&(C=Kl(T)/l);let D=1+1.25*(E*_+C*M);D<u&&(o=d,u=D,a=S.candidate)}}else{for(let w=0;w<bs;w++){let b=oo[w];b.count=0,b.candidate=f+g+w*g;let S=b.bounds;for(let _=0;_<3;_++)S[_]=1/0,S[_+3]=-1/0}for(let w=c;w<h;w+=6){let _=~~((t[w+2*d]-f)/g);_>=bs&&(_=bs-1);let M=oo[_];M.count++,oh(w,t,M.bounds)}let y=oo[bs-1];Dv(y.bounds,y.rightCacheBounds);for(let w=bs-2;w>=0;w--){let b=oo[w],S=oo[w+1];Iv(b.bounds,S.rightCacheBounds,b.rightCacheBounds)}let v=0;for(let w=0;w<bs-1;w++){let b=oo[w],S=b.count,_=b.bounds,x=oo[w+1].rightCacheBounds;S!==0&&(v===0?Dv(_,Ep):Iv(_,Ep,Ep)),v+=S;let T=0,E=0;v!==0&&(T=Kl(Ep)/l);let C=i-v;C!==0&&(E=Kl(x)/l);let D=1+1.25*(T*v+E*C);D<u&&(o=d,u=D,a=b.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:o,pos:a}}function Sz(r,e,t,n){let i=0;for(let s=e,o=e+t;s<o;s++)i+=r[s*6+n*2];return i/t}function Az(r,e){let t=r.attributes.position,n=t.array,i=r.index.array,s=i.length/3,o=new Float32Array(s*6),a=t.offset||0,l=3;t.isInterleavedBufferAttribute&&(l=t.data.stride);for(let u=0;u<s;u++){let c=u*3,h=u*6,d=i[c+0]*l+a,f=i[c+1]*l+a,p=i[c+2]*l+a;for(let m=0;m<3;m++){let g=n[d+m],y=n[f+m],v=n[p+m],w=g;y<w&&(w=y),v<w&&(w=v);let b=g;y>b&&(b=y),v>b&&(b=v);let S=(b-w)/2,_=m*2;o[h+_+0]=w+S,o[h+_+1]=S+(Math.abs(w)+S)*VA,w<e[m]&&(e[m]=w),b>e[m+3]&&(e[m+3]=b)}}return o}function _z(r,e){function t(y){d&&d(y/f)}function n(y,v,w,b=null,S=0){if(!p&&S>=l&&(p=!0,u&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(r))),w<=c||S>=l)return t(v+w),y.offset=v,y.count=w,y;let _=wz(y.boundingData,b,o,v,w,h);if(_.axis===-1)return t(v+w),y.offset=v,y.count=w,y;let M=xz(a,o,v,w,_);if(M===v||M===v+w)t(v+w),y.offset=v,y.count=w;else{y.splitAxis=_.axis;let x=new aa,T=v,E=M-v;y.left=x,x.boundingData=new Float32Array(6),Rv(o,T,E,x.boundingData,s),n(x,T,E,s,S+1);let C=new aa,D=M,I=w-E;y.right=C,C.boundingData=new Float32Array(6),Rv(o,D,I,C.boundingData,s),n(C,D,I,s,S+1)}return y}gz(r,e);let i=new Float32Array(6),s=new Float32Array(6),o=Az(r,i),a=r.index.array,l=e.maxDepth,u=e.verbose,c=e.maxLeafTris,h=e.strategy,d=e.onProgress,f=r.index.count/3,p=!1,m=[],g=yz(r);if(g.length===1){let y=g[0],v=new aa;v.boundingData=i,vz(o,y.offset,y.count,s),n(v,y.offset,y.count,s),m.push(v)}else for(let y of g){let v=new aa;v.boundingData=new Float32Array(6),Rv(o,y.offset,y.count,v.boundingData,s),n(v,y.offset,y.count,s),m.push(v)}return m}function jA(r,e){let t=_z(r,e),n,i,s,o=[],a=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let c=0;c<t.length;c++){let h=t[c],d=l(h),f=new a(32*d);n=new Float32Array(f),i=new Uint32Array(f),s=new Uint16Array(f),u(0,h),o.push(f)}return o;function l(c){return c.count?1:1+l(c.left)+l(c.right)}function u(c,h){let d=c/4,f=c/2,p=!!h.count,m=h.boundingData;for(let g=0;g<6;g++)n[d+g]=m[g];if(p){let g=h.offset,y=h.count;return i[d+6]=g,s[f+14]=y,s[f+15]=65535,c+32}else{let g=h.left,y=h.right,v=h.splitAxis,w;if(w=u(c+32,g),w/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[d+6]=w/4,w=u(w,y),i[d+7]=v,w}}}var mr=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,o=e.length;s<o;s++){let l=e[s][t];n=l<n?l:n,i=l>i?l:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,o=t.length;s<o;s++){let a=t[s],l=e.dot(a);n=l<n?l:n,i=l>i?l:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}};mr.prototype.setFromBox=function(){let r=new A;return function(t,n){let i=n.min,s=n.max,o=1/0,a=-1/0;for(let l=0;l<=1;l++)for(let u=0;u<=1;u++)for(let c=0;c<=1;c++){r.x=i.x*l+s.x*(1-l),r.y=i.y*u+s.y*(1-u),r.z=i.z*c+s.z*(1-c);let h=t.dot(r);o=Math.min(h,o),a=Math.max(h,a)}this.min=o,this.max=a}}();var qZ=function(){let r=new mr;return function(t,n){let i=t.points,s=t.satAxes,o=t.satBounds,a=n.points,l=n.satAxes,u=n.satBounds;for(let c=0;c<3;c++){let h=o[c],d=s[c];if(r.setFromPoints(d,a),h.isSeparated(r))return!1}for(let c=0;c<3;c++){let h=u[c],d=l[c];if(r.setFromPoints(d,i),h.isSeparated(r))return!1}}}();var Mz=function(){let r=new A,e=new A,t=new A;return function(i,s,o){let a=i.start,l=r,u=s.start,c=e;t.subVectors(a,u),r.subVectors(i.end,s.start),e.subVectors(s.end,s.start);let h=t.dot(c),d=c.dot(l),f=c.dot(c),p=t.dot(l),g=l.dot(l)*f-d*d,y,v;g!==0?y=(h*d-p*f)/g:y=0,v=(h+y*d)/f,o.x=y,o.y=v}}(),ah=function(){let r=new N,e=new A,t=new A;return function(i,s,o,a){Mz(i,s,r);let l=r.x,u=r.y;if(l>=0&&l<=1&&u>=0&&u<=1){i.at(l,o),s.at(u,a);return}else if(l>=0&&l<=1){u<0?s.at(0,a):s.at(1,a),i.closestPointToPoint(a,!0,o);return}else if(u>=0&&u<=1){l<0?i.at(0,o):i.at(1,o),s.closestPointToPoint(o,!0,a);return}else{let c;l<0?c=i.start:c=i.end;let h;u<0?h=s.start:h=s.end;let d=e,f=t;if(i.closestPointToPoint(h,!0,e),s.closestPointToPoint(c,!0,t),d.distanceToSquared(h)<=f.distanceToSquared(c)){o.copy(d),a.copy(h);return}else{o.copy(c),a.copy(f);return}}}}(),qA=function(){let r=new A,e=new A,t=new vn,n=new xn;return function(s,o){let{radius:a,center:l}=s,{a:u,b:c,c:h}=o;if(n.start=u,n.end=c,n.closestPointToPoint(l,!0,r).distanceTo(l)<=a||(n.start=u,n.end=h,n.closestPointToPoint(l,!0,r).distanceTo(l)<=a)||(n.start=c,n.end=h,n.closestPointToPoint(l,!0,r).distanceTo(l)<=a))return!0;let m=o.getPlane(t);if(Math.abs(m.distanceToPoint(l))<=a){let y=m.projectPoint(l,e);if(o.containsPoint(y))return!0}return!1}}();var Tz=1e-15;function Jl(r){return Math.abs(r)<Tz}var gr=class extends In{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new A),this.satBounds=new Array(4).fill().map(()=>new mr),this.points=[this.a,this.b,this.c],this.sphere=new Ln,this.plane=new vn,this.needsUpdate=!0}intersectsSphere(e){return qA(e,this)}update(){let e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,o=this.satBounds,a=s[0],l=o[0];this.getNormal(a),l.setFromPoints(a,i);let u=s[1],c=o[1];u.subVectors(e,t),c.setFromPoints(u,i);let h=s[2],d=o[2];h.subVectors(t,n),d.setFromPoints(h,i);let f=s[3],p=o[3];f.subVectors(n,e),p.setFromPoints(f,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(a,e),this.needsUpdate=!1}};gr.prototype.closestPointToSegment=function(){let r=new A,e=new A,t=new xn;return function(i,s=null,o=null){let{start:a,end:l}=i,u=this.points,c,h=1/0;for(let d=0;d<3;d++){let f=(d+1)%3;t.start.copy(u[d]),t.end.copy(u[f]),ah(t,i,r,e),c=r.distanceToSquared(e),c<h&&(h=c,s&&s.copy(r),o&&o.copy(e))}return this.closestPointToPoint(a,r),c=a.distanceToSquared(r),c<h&&(h=c,s&&s.copy(r),o&&o.copy(a)),this.closestPointToPoint(l,r),c=l.distanceToSquared(r),c<h&&(h=c,s&&s.copy(r),o&&o.copy(l)),Math.sqrt(h)}}();gr.prototype.intersectsTriangle=function(){let r=new gr,e=new Array(3),t=new Array(3),n=new mr,i=new mr,s=new A,o=new A,a=new A,l=new A,u=new xn,c=new xn,h=new xn;return function(f,p=null){this.needsUpdate&&this.update(),f.isExtendedTriangle?f.needsUpdate&&f.update():(r.copy(f),r.update(),f=r);let m=this.plane,g=f.plane;if(Math.abs(m.normal.dot(g.normal))>1-1e-10){let y=this.satBounds,v=this.satAxes;t[0]=f.a,t[1]=f.b,t[2]=f.c;for(let S=0;S<4;S++){let _=y[S],M=v[S];if(n.setFromPoints(M,t),_.isSeparated(n))return!1}let w=f.satBounds,b=f.satAxes;e[0]=this.a,e[1]=this.b,e[2]=this.c;for(let S=0;S<4;S++){let _=w[S],M=b[S];if(n.setFromPoints(M,e),_.isSeparated(n))return!1}for(let S=0;S<4;S++){let _=v[S];for(let M=0;M<4;M++){let x=b[M];if(s.crossVectors(_,x),n.setFromPoints(s,e),i.setFromPoints(s,t),n.isSeparated(i))return!1}}return p&&(console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),p.start.set(0,0,0),p.end.set(0,0,0)),!0}else{let y=this.points,v=!1,w=0;for(let I=0;I<3;I++){let R=y[I],F=y[(I+1)%3];u.start.copy(R),u.end.copy(F),u.delta(o);let B=v?c.start:c.end,X=Jl(g.distanceToPoint(R));if(Jl(g.normal.dot(o))&&X){c.copy(u),w=2;break}if((g.intersectLine(u,B)||X)&&!Jl(B.distanceTo(F))){if(w++,v)break;v=!0}}if(w===1&&this.containsPoint(c.start))return p&&(p.start.copy(c.start),p.end.copy(c.start)),!0;if(w!==2)return!1;let b=f.points,S=!1,_=0;for(let I=0;I<3;I++){let R=b[I],F=b[(I+1)%3];u.start.copy(R),u.end.copy(F),u.delta(a);let B=S?h.start:h.end,X=Jl(m.distanceToPoint(R));if(Jl(m.normal.dot(a))&&X){h.copy(u),_=2;break}if((m.intersectLine(u,B)||X)&&!Jl(B.distanceTo(F))){if(_++,S)break;S=!0}}if(_===1&&this.containsPoint(h.start))return p&&(p.start.copy(h.start),p.end.copy(h.start)),!0;if(_!==2)return!1;if(c.delta(o),h.delta(a),o.dot(a)<0){let I=h.start;h.start=h.end,h.end=I}let M=c.start.dot(o),x=c.end.dot(o),T=h.start.dot(o),E=h.end.dot(o),C=x<T,D=M<E;return M!==E&&T!==x&&C===D?!1:(p&&(l.subVectors(c.start,h.start),l.dot(o)>0?p.start.copy(c.start):p.start.copy(h.start),l.subVectors(c.end,h.end),l.dot(o)<0?p.end.copy(c.end):p.end.copy(h.end)),!0)}}}();gr.prototype.distanceToPoint=function(){let r=new A;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}}();gr.prototype.distanceToTriangle=function(){let r=new A,e=new A,t=["a","b","c"],n=new xn,i=new xn;return function(o,a=null,l=null){let u=a||l?n:null;if(this.intersectsTriangle(o,u))return(a||l)&&(a&&u.getCenter(a),l&&u.getCenter(l)),0;let c=1/0;for(let h=0;h<3;h++){let d,f=t[h],p=o[f];this.closestPointToPoint(p,r),d=p.distanceToSquared(r),d<c&&(c=d,a&&a.copy(r),l&&l.copy(p));let m=this[f];o.closestPointToPoint(m,r),d=m.distanceToSquared(r),d<c&&(c=d,a&&a.copy(m),l&&l.copy(r))}for(let h=0;h<3;h++){let d=t[h],f=t[(h+1)%3];n.set(this[d],this[f]);for(let p=0;p<3;p++){let m=t[p],g=t[(p+1)%3];i.set(o[m],o[g]),ah(n,i,r,e);let y=r.distanceToSquared(e);y<c&&(c=y,a&&a.copy(r),l&&l.copy(e))}}return Math.sqrt(c)}}();var yr=class extends Mt{constructor(...e){super(...e),this.isOrientedBox=!0,this.matrix=new _e,this.invMatrix=new _e,this.points=new Array(8).fill().map(()=>new A),this.satAxes=new Array(3).fill().map(()=>new A),this.satBounds=new Array(3).fill().map(()=>new mr),this.alignedSatBounds=new Array(3).fill().map(()=>new mr),this.needsUpdate=!1}set(e,t,n){super.set(e,t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){super.copy(e),this.matrix.copy(e.matrix),this.needsUpdate=!0}};yr.prototype.update=function(){return function(){let e=this.matrix,t=this.min,n=this.max,i=this.points;for(let u=0;u<=1;u++)for(let c=0;c<=1;c++)for(let h=0;h<=1;h++){let d=1*u|2*c|4*h,f=i[d];f.x=u?n.x:t.x,f.y=c?n.y:t.y,f.z=h?n.z:t.z,f.applyMatrix4(e)}let s=this.satBounds,o=this.satAxes,a=i[0];for(let u=0;u<3;u++){let c=o[u],h=s[u],d=1<<u,f=i[d];c.subVectors(a,f),h.setFromPoints(c,i)}let l=this.alignedSatBounds;l[0].setFromPointsField(i,"x"),l[1].setFromPointsField(i,"y"),l[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();yr.prototype.intersectsBox=function(){let r=new mr;return function(t){this.needsUpdate&&this.update();let n=t.min,i=t.max,s=this.satBounds,o=this.satAxes,a=this.alignedSatBounds;if(r.min=n.x,r.max=i.x,a[0].isSeparated(r)||(r.min=n.y,r.max=i.y,a[1].isSeparated(r))||(r.min=n.z,r.max=i.z,a[2].isSeparated(r)))return!1;for(let l=0;l<3;l++){let u=o[l],c=s[l];if(r.setFromBox(u,t),c.isSeparated(r))return!1}return!0}}();yr.prototype.intersectsTriangle=function(){let r=new gr,e=new Array(3),t=new mr,n=new mr,i=new A;return function(o){this.needsUpdate&&this.update(),o.isExtendedTriangle?o.needsUpdate&&o.update():(r.copy(o),r.update(),o=r);let a=this.satBounds,l=this.satAxes;e[0]=o.a,e[1]=o.b,e[2]=o.c;for(let d=0;d<3;d++){let f=a[d],p=l[d];if(t.setFromPoints(p,e),f.isSeparated(t))return!1}let u=o.satBounds,c=o.satAxes,h=this.points;for(let d=0;d<3;d++){let f=u[d],p=c[d];if(t.setFromPoints(p,h),f.isSeparated(t))return!1}for(let d=0;d<3;d++){let f=l[d];for(let p=0;p<4;p++){let m=c[p];if(i.crossVectors(f,m),t.setFromPoints(i,e),n.setFromPoints(i,h),t.isSeparated(n))return!1}}return!0}}();yr.prototype.closestPointToPoint=function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}}();yr.prototype.distanceToPoint=function(){let r=new A;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}}();yr.prototype.distanceToBox=function(){let r=["x","y","z"],e=new Array(12).fill().map(()=>new xn),t=new Array(12).fill().map(()=>new xn),n=new A,i=new A;return function(o,a=0,l=null,u=null){if(this.needsUpdate&&this.update(),this.intersectsBox(o))return(l||u)&&(o.getCenter(i),this.closestPointToPoint(i,n),o.closestPointToPoint(n,i),l&&l.copy(n),u&&u.copy(i)),0;let c=a*a,h=o.min,d=o.max,f=this.points,p=1/0;for(let g=0;g<8;g++){let y=f[g];i.copy(y).clamp(h,d);let v=y.distanceToSquared(i);if(v<p&&(p=v,l&&l.copy(y),u&&u.copy(i),v<c))return Math.sqrt(v)}let m=0;for(let g=0;g<3;g++)for(let y=0;y<=1;y++)for(let v=0;v<=1;v++){let w=(g+1)%3,b=(g+2)%3,S=y<<w|v<<b,_=1<<g|y<<w|v<<b,M=f[S],x=f[_];e[m].set(M,x);let E=r[g],C=r[w],D=r[b],I=t[m],R=I.start,F=I.end;R[E]=h[E],R[C]=y?h[C]:d[C],R[D]=v?h[D]:d[C],F[E]=d[E],F[C]=y?h[C]:d[C],F[D]=v?h[D]:d[C],m++}for(let g=0;g<=1;g++)for(let y=0;y<=1;y++)for(let v=0;v<=1;v++){i.x=g?d.x:h.x,i.y=y?d.y:h.y,i.z=v?d.z:h.z,this.closestPointToPoint(i,n);let w=i.distanceToSquared(n);if(w<p&&(p=w,l&&l.copy(n),u&&u.copy(i),w<c))return Math.sqrt(w)}for(let g=0;g<12;g++){let y=e[g];for(let v=0;v<12;v++){let w=t[v];ah(y,w,n,i);let b=n.distanceToSquared(i);if(b<p&&(p=b,l&&l.copy(n),u&&u.copy(i),b<c))return Math.sqrt(b)}}return Math.sqrt(p)}}();var Pp=new A,Dp=new A,Ip=new A,XA=new N,YA=new N,QA=new N,ZA=new A;function Ez(r,e,t,n,i,s){let o;return s===cn?o=r.intersectTriangle(n,t,e,!0,i):o=r.intersectTriangle(e,t,n,s!==un,i),o===null?null:{distance:r.origin.distanceTo(i),point:i.clone()}}function Cz(r,e,t,n,i,s,o){Pp.fromBufferAttribute(e,n),Dp.fromBufferAttribute(e,i),Ip.fromBufferAttribute(e,s);let a=Ez(r,Pp,Dp,Ip,ZA,o);if(a){t&&(XA.fromBufferAttribute(t,n),YA.fromBufferAttribute(t,i),QA.fromBufferAttribute(t,s),a.uv=In.getUV(ZA,Pp,Dp,Ip,XA,YA,QA,new N));let l={a:n,b:i,c:s,normal:new A,materialIndex:0};In.getNormal(Pp,Dp,Ip,l.normal),a.face=l,a.faceIndex=n}return a}function Bv(r,e,t,n,i){let s=n*3,o=r.index.getX(s),a=r.index.getX(s+1),l=r.index.getX(s+2),u=Cz(t,r.attributes.position,r.attributes.uv,o,a,l,e);return u?(u.faceIndex=n,i&&i.push(u),u):null}function KA(r,e,t,n,i,s){for(let o=n,a=n+i;o<a;o++)Bv(r,e,t,o,s)}function JA(r,e,t,n,i){let s=1/0,o=null;for(let a=n,l=n+i;a<l;a++){let u=Bv(r,e,t,a);u&&u.distance<s&&(o=u,s=u.distance)}return o}function Nv(r,e,t){return r===null||(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r.distance<t.near||r.distance>t.far)?null:r}function jr(r,e,t,n){let i=r.a,s=r.b,o=r.c,a=e,l=e+1,u=e+2;t&&(a=t.getX(e),l=t.getX(e+1),u=t.getX(e+2)),i.x=n.getX(a),i.y=n.getY(a),i.z=n.getZ(a),s.x=n.getX(l),s.y=n.getY(l),s.z=n.getZ(l),o.x=n.getX(u),o.y=n.getY(u),o.z=n.getZ(u)}function Fv(r,e,t,n,i,s,o){let a=t.index,l=t.attributes.position;for(let u=r,c=e+r;u<c;u++)if(jr(o,u*3,a,l),o.needsUpdate=!0,n(o,u,i,s))return!0;return!1}var $l=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}};function ws(r,e){return e[r+15]===65535}function la(r,e){return e[r+6]}function ec(r,e){return e[r+14]}function tc(r){return r+8}function nc(r,e){return e[r+6]}function $A(r,e){return e[r+7]}var rc=new Mt,Rp=new A,Dz=["x","y","z"];function Op(r,e,t,n,i){let s=r*2,o=ic,a=ao,l=lo;if(ws(s,a)){let c=la(r,l),h=ec(s,a);KA(e,t,n,c,h,i)}else{let c=tc(r);Np(c,o,n,Rp)&&Op(c,e,t,n,i);let h=nc(r,l);Np(h,o,n,Rp)&&Op(h,e,t,n,i)}}function Bp(r,e,t,n){let i=r*2,s=ic,o=ao,a=lo;if(ws(i,o)){let u=la(r,a),c=ec(i,o);return JA(e,t,n,u,c)}else{let u=$A(r,a),c=Dz[u],d=n.direction[c]>=0,f,p;d?(f=tc(r),p=nc(r,a)):(f=nc(r,a),p=tc(r));let g=Np(f,s,n,Rp)?Bp(f,e,t,n):null;if(g){let w=g.point[c];if(d?w<=s[p+u]:w>=s[p+u+3])return g}let v=Np(p,s,n,Rp)?Bp(p,e,t,n):null;return g&&v?g.distance<=v.distance?g:v:g||v||null}}var e_=function(){let r,e,t=[],n=new $l(()=>new Mt);return function(...o){r=n.getPrimitive(),e=n.getPrimitive(),t.push(r,e);let a=i(...o);n.releasePrimitive(r),n.releasePrimitive(e),t.pop(),t.pop();let l=t.length;return l>0&&(e=t[l-1],r=t[l-2]),a};function i(s,o,a,l,u=null,c=0,h=0){function d(w){let b=w*2,S=ao,_=lo;for(;!ws(b,S);)w=tc(w),b=w*2;return la(w,_)}function f(w){let b=w*2,S=ao,_=lo;for(;!ws(b,S);)w=nc(w,_),b=w*2;return la(w,_)+ec(b,S)}let p=s*2,m=ic,g=ao,y=lo;if(ws(p,g)){let w=la(s,y),b=ec(p,g);return Wr(s,m,r),l(w,b,!1,h,c+s,r)}else{let w=tc(s),b=nc(s,y),S=w,_=b,M,x,T,E;if(u&&(T=r,E=e,Wr(S,m,T),Wr(_,m,E),M=u(T),x=u(E),x<M)){S=b,_=w;let X=M;M=x,x=X,T=E}T||(T=r,Wr(S,m,T));let C=ws(S*2,g),D=a(T,C,M,h+1,c+S),I;if(D===2){let X=d(S),G=f(S)-X;I=l(X,G,!0,h+1,c+S,T)}else I=D&&i(S,o,a,l,u,c,h+1);if(I)return!0;E=e,Wr(_,m,E);let R=ws(_*2,g),F=a(E,R,x,h+1,c+_),B;if(F===2){let X=d(_),G=f(_)-X;B=l(X,G,!0,h+1,c+_,E)}else B=F&&i(_,o,a,l,u,c,h+1);return!!B}}}(),t_=function(){let r=new gr,e=new gr,t=new _e,n=new yr,i=new yr;return function s(o,a,l,u,c=null){let h=o*2,d=ic,f=ao,p=lo;if(c===null&&(l.boundingBox||l.computeBoundingBox(),n.set(l.boundingBox.min,l.boundingBox.max,u),c=n),ws(h,f)){let g=a,y=g.index,v=g.attributes.position,w=l.index,b=l.attributes.position,S=la(o,p),_=ec(h,f);if(t.copy(u).invert(),l.boundsTree)return Wr(o,d,i),i.matrix.copy(t),i.needsUpdate=!0,l.boundsTree.shapecast({intersectsBounds:x=>i.intersectsBox(x),intersectsTriangle:x=>{x.a.applyMatrix4(u),x.b.applyMatrix4(u),x.c.applyMatrix4(u),x.needsUpdate=!0;for(let T=S*3,E=(_+S)*3;T<E;T+=3)if(jr(e,T,y,v),e.needsUpdate=!0,x.intersectsTriangle(e))return!0;return!1}});for(let M=S*3,x=_+S*3;M<x;M+=3){jr(r,M,y,v),r.a.applyMatrix4(t),r.b.applyMatrix4(t),r.c.applyMatrix4(t),r.needsUpdate=!0;for(let T=0,E=w.count;T<E;T+=3)if(jr(e,T,w,b),e.needsUpdate=!0,r.intersectsTriangle(e))return!0}}else{let g=o+8,y=p[o+6];return Wr(g,d,rc),!!(c.intersectsBox(rc)&&s(g,a,l,u,c)||(Wr(y,d,rc),c.intersectsBox(rc)&&s(y,a,l,u,c)))}}}();function Np(r,e,t,n){return Wr(r,e,rc),t.intersectBox(rc,n)}var Uv=[],Lp,ic,ao,lo;function sc(r){Lp&&Uv.push(Lp),Lp=r,ic=new Float32Array(r),ao=new Uint16Array(r),lo=new Uint32Array(r)}function lh(){Lp=null,ic=null,ao=null,lo=null,Uv.length&&sc(Uv.pop())}var zv=Symbol("skip tree generation"),Gv=new Mt,kv=new Mt,oc=new _e,ca=new yr,ch=new yr,uh=new A,Fp=new A,Iz=new A,Lz=new A,Rz=new A,n_=new Mt,Bi=new $l(()=>new gr),$t=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),$t.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});t={cloneBuffers:!0,...t};let n=e.geometry,i=e._roots,s=n.getIndex(),o;return t.cloneBuffers?o={roots:i.map(a=>a.slice()),index:s.array.slice()}:o={roots:i,index:s.array},o}static deserialize(e,t,n={}){if(typeof n=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),$t.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});n={setIndex:!0,...n};let{index:i,roots:s}=e,o=new $t(t,{...n,[zv]:!0});if(o._roots=s,n.setIndex){let a=t.getIndex();if(a===null){let l=new Ge(e.index,1,!1);t.setIndex(l)}else a.array!==i&&(a.array.set(i),a.needsUpdate=!0)}return o}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[zv]:!1},t),t.useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[zv]||(this._roots=jA(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Mt))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t=this.geometry,n=t.index.array,i=t.attributes.position,s=i.array,o=i.offset||0,a=3;i.isInterleavedBufferAttribute&&(a=i.data.stride);let l,u,c,h,d=0,f=this._roots;for(let m=0,g=f.length;m<g;m++)l=f[m],u=new Uint32Array(l),c=new Uint16Array(l),h=new Float32Array(l),p(0,d),d+=l.byteLength;function p(m,g,y=!1){let v=m*2;if(c[v+15]===65535){let b=u[m+6],S=c[v+14],_=1/0,M=1/0,x=1/0,T=-1/0,E=-1/0,C=-1/0;for(let D=3*b,I=3*(b+S);D<I;D++){let R=n[D]*a+o,F=s[R+0],B=s[R+1],X=s[R+2];F<_&&(_=F),F>T&&(T=F),B<M&&(M=B),B>E&&(E=B),X<x&&(x=X),X>C&&(C=X)}return h[m+0]!==_||h[m+1]!==M||h[m+2]!==x||h[m+3]!==T||h[m+4]!==E||h[m+5]!==C?(h[m+0]=_,h[m+1]=M,h[m+2]=x,h[m+3]=T,h[m+4]=E,h[m+5]=C,!0):!1}else{let b=m+8,S=u[m+6],_=b+g,M=S+g,x=y,T=!1,E=!1;e?x||(T=e.has(_),E=e.has(M),x=!T&&!E):(T=!0,E=!0);let C=x||T,D=x||E,I=!1;C&&(I=p(b,g,x));let R=!1;D&&(R=p(S,g,x));let F=I||R;if(F)for(let B=0;B<3;B++){let X=b+B,Y=S+B,G=h[X],z=h[X+3],V=h[Y],U=h[Y+3];h[m+B]=G<V?G:V,h[m+B+3]=z>U?z:U}return F}}}traverse(e,t=0){let n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);o(0);function o(a,l=0){let u=a*2,c=s[u+15]===65535;if(c){let h=i[a+6],d=s[u+14];e(l,c,new Float32Array(n,a*4,6),h,d)}else{let h=a+32/4,d=i[a+6],f=i[a+7];e(l,c,new Float32Array(n,a*4,6),f)||(o(h,l+1),o(d,l+1))}}}raycast(e,t=Br){let n=this._roots,i=this.geometry,s=[],o=t.isMaterial,a=Array.isArray(t),l=i.groups,u=o?t.side:t;for(let c=0,h=n.length;c<h;c++){let d=a?t[l[c].materialIndex].side:u,f=s.length;if(sc(n[c]),Op(0,i,d,e,s),lh(),a){let p=l[c].materialIndex;for(let m=f,g=s.length;m<g;m++)s[m].face.materialIndex=p}}return s}raycastFirst(e,t=Br){let n=this._roots,i=this.geometry,s=t.isMaterial,o=Array.isArray(t),a=null,l=i.groups,u=s?t.side:t;for(let c=0,h=n.length;c<h;c++){let d=o?t[l[c].materialIndex].side:u;sc(n[c]);let f=Bp(0,i,d,e);lh(),f!=null&&(a==null||f.distance<a.distance)&&(a=f,o&&(f.face.materialIndex=l[c].materialIndex))}return a}intersectsGeometry(e,t){let n=this.geometry,i=!1;for(let s of this._roots)if(sc(s),i=t_(0,n,e,t),lh(),i)break;return i}shapecast(e,t,n){let i=this.geometry;if(e instanceof Function){if(t){let d=t;t=(f,p,m,g)=>{let y=p*3;return d(f,y,y+1,y+2,m,g)}}e={boundsTraverseOrder:n,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Bi.getPrimitive(),{boundsTraverseOrder:o,intersectsBounds:a,intersectsRange:l,intersectsTriangle:u}=e;if(l&&u){let d=l;l=(f,p,m,g,y)=>d(f,p,m,g,y)?!0:Fv(f,p,i,u,m,g,s)}else l||(u?l=(d,f,p,m)=>Fv(d,f,i,u,p,m,s):l=(d,f,p)=>p);let c=!1,h=0;for(let d of this._roots){if(sc(d),c=e_(0,i,a,l,o,h),lh(),c)break;h+=d.byteLength}return Bi.releasePrimitive(s),c}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n,o=this.geometry.index,a=this.geometry.attributes.position,l=e.geometry.index,u=e.geometry.attributes.position;oc.copy(t).invert();let c=Bi.getPrimitive(),h=Bi.getPrimitive();if(s){let f=function(p,m,g,y,v,w,b,S){for(let _=g,M=g+y;_<M;_++){jr(h,_*3,l,u),h.a.applyMatrix4(t),h.b.applyMatrix4(t),h.c.applyMatrix4(t),h.needsUpdate=!0;for(let x=p,T=p+m;x<T;x++)if(jr(c,x*3,o,a),c.needsUpdate=!0,s(c,h,x,_,v,w,b,S))return!0}return!1};if(i){let p=i;i=function(m,g,y,v,w,b,S,_){return p(m,g,y,v,w,b,S,_)?!0:f(m,g,y,v,w,b,S,_)}}else i=f}e.getBoundingBox(kv),kv.applyMatrix4(t);let d=this.shapecast({intersectsBounds:f=>kv.intersectsBox(f),intersectsRange:(f,p,m,g,y,v)=>(Gv.copy(v),Gv.applyMatrix4(oc),e.shapecast({intersectsBounds:w=>Gv.intersectsBox(w),intersectsRange:(w,b,S,_,M)=>i(f,p,w,b,g,y,_,M)}))});return Bi.releasePrimitive(c),Bi.releasePrimitive(h),d}intersectsBox(e,t){return ca.set(e.min,e.max,t),ca.needsUpdate=!0,this.shapecast({intersectsBounds:n=>ca.intersectsBox(n),intersectsTriangle:n=>ca.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,o=1/0){e.boundingBox||e.computeBoundingBox(),ca.set(e.boundingBox.min,e.boundingBox.max,t),ca.needsUpdate=!0;let a=this.geometry,l=a.attributes.position,u=a.index,c=e.attributes.position,h=e.index,d=Bi.getPrimitive(),f=Bi.getPrimitive(),p=Fp,m=Iz,g=null,y=null;i&&(g=Lz,y=Rz);let v=1/0,w=null,b=null;return oc.copy(t).invert(),ch.matrix.copy(oc),this.shapecast({boundsTraverseOrder:S=>ca.distanceToBox(S),intersectsBounds:(S,_,M)=>M<v&&M<o?(_&&(ch.min.copy(S.min),ch.max.copy(S.max),ch.needsUpdate=!0),!0):!1,intersectsRange:(S,_)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:M=>ch.distanceToBox(M),intersectsBounds:(M,x,T)=>T<v&&T<o,intersectsRange:(M,x)=>{for(let T=M*3,E=(M+x)*3;T<E;T+=3){jr(f,T,h,c),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let C=S*3,D=(S+_)*3;C<D;C+=3){jr(d,C,u,l),d.needsUpdate=!0;let I=d.distanceToTriangle(f,p,g);if(I<v&&(m.copy(p),y&&y.copy(g),v=I,w=C/3,b=T/3),I<s)return!0}}}});{let M=h?h.count:c.count;for(let x=0,T=M;x<T;x+=3){jr(f,x,h,c),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let E=S*3,C=(S+_)*3;E<C;E+=3){jr(d,E,u,l),d.needsUpdate=!0;let D=d.distanceToTriangle(f,p,g);if(D<v&&(m.copy(p),y&&y.copy(g),v=D,w=E/3,b=x/3),D<s)return!0}}}}}),Bi.releasePrimitive(d),Bi.releasePrimitive(f),v===1/0?null:(n.point?n.point.copy(m):n.point=m.clone(),n.distance=v,n.faceIndex=w,i&&(i.point?i.point.copy(y):i.point=y.clone(),i.point.applyMatrix4(oc),m.applyMatrix4(oc),i.distance=m.sub(i.point).length(),i.faceIndex=b),n)}closestPointToPoint(e,t={},n=0,i=1/0){let s=n*n,o=i*i,a=1/0,l=null;if(this.shapecast({boundsTraverseOrder:c=>(uh.copy(e).clamp(c.min,c.max),uh.distanceToSquared(e)),intersectsBounds:(c,h,d)=>d<a&&d<o,intersectsTriangle:(c,h)=>{c.closestPointToPoint(e,uh);let d=e.distanceToSquared(uh);return d<a&&(Fp.copy(uh),a=d,l=h),d<s}}),a===1/0)return null;let u=Math.sqrt(a);return t.point?t.point.copy(Fp):t.point=Fp.clone(),t.distance=u,t.faceIndex=l,t}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(n=>{Wr(0,new Float32Array(n),n_),e.union(n_)}),e}},r_=$t.prototype.raycast;$t.prototype.raycast=function(...r){if(r[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycast" has changed. See docs for new signature.');let[e,t,n,i]=r;return r_.call(this,n,e.material).forEach(o=>{o=Nv(o,e,t),o&&i.push(o)}),i}else return r_.apply(this,r)};var i_=$t.prototype.raycastFirst;$t.prototype.raycastFirst=function(...r){if(r[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycastFirst" has changed. See docs for new signature.');let[e,t,n]=r;return Nv(i_.call(this,n,e.material),e,t)}else return i_.apply(this,r)};var s_=$t.prototype.closestPointToPoint;$t.prototype.closestPointToPoint=function(...r){if(r[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "closestPointToPoint" has changed. See docs for new signature.'),r.unshift();let e=r[1],t={};return r[1]=t,s_.apply(this,r),e&&e.copy(t.point),t.distance}else return s_.apply(this,r)};var o_=$t.prototype.closestPointToGeometry;$t.prototype.closestPointToGeometry=function(...r){let e=r[2],t=r[3];if(e&&e.isVector3||t&&t.isVector3){console.warn('MeshBVH: The function signature and results frame for "closestPointToGeometry" has changed. See docs for new signature.');let n={},i={},s=r[1];return r[2]=n,r[3]=i,o_.apply(this,r),e&&e.copy(n.point),t&&t.copy(i.point).applyMatrix4(s),n.distance}else return o_.apply(this,r)};var a_=$t.prototype.refit;$t.prototype.refit=function(...r){let e=r[0],t=r[1];if(t&&(t instanceof Set||Array.isArray(t))){console.warn('MeshBVH: The function signature for "refit" has changed. See docs for new signature.');let n=new Set;t.forEach(i=>n.add(i)),e&&e.forEach(i=>n.add(i)),a_.call(this,n)}else a_.apply(this,r)};["intersectsGeometry","shapecast","intersectsBox","intersectsSphere"].forEach(r=>{let e=$t.prototype[r];$t.prototype[r]=function(...t){return(t[0]===null||t[0].isMesh)&&(t.shift(),console.warn(`MeshBVH: The function signature for "${r}" has changed and no longer takes Mesh. See docs for new signature.`)),e.apply(this,t)}});var Vv=class extends ot{},Up=class extends Vv{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 hh=class extends ot{constructor(t,n={}){super();this.object=t;let i=t.recursiveBBox.getSize(new A),s=.1;this.parameters=Zf.defaultData(i.toArray(),s),Qo(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 Up(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*ke.DEG2RAD,s=n.end*ke.DEG2RAD,o=i-s,a=new Qt(n.rotation[0]*ke.DEG2RAD,n.rotation[1]*ke.DEG2RAD,n.rotation[2]*ke.DEG2RAD),l;switch(n.axis){case"z":l=new A(0,0,1);break;case"y":l=new A(0,1,0);break;default:case"x":l=new A(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 Qt(n.rotation[0]*ke.DEG2RAD,n.rotation[1]*ke.DEG2RAD,n.rotation[2]*ke.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 A(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),Qo(this.parameters,t),this.update(),this}};var Ni=r=>{var e;return e=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new ur(30,30,30),e};var zp=new cs,Hv=new Ln,l_=new _e,Fi=(r,e,t,n,i=!1)=>{let s=e,o=r.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),Hv.copy(s.boundingSphere),Hv.applyMatrix4(o),t.ray.intersectsSphere(Hv)===!1||(l_.copy(o).invert(),zp.copy(t.ray).applyMatrix4(l_),s.boundingBox!==null&&zp.intersectsBox(s.boundingBox)===!1))return;let a,l,u,c,h=s.index,d=s.attributes.position,f=s.drawRange,p,m;if(i===!1){let y=Math.max(0,f.start),v=Math.min(h.count,f.start+f.count);for(p=y,m=v;p<m;p+=3)if(l=h.getX(p),u=h.getX(p+1),c=h.getX(p+2),a=g(r,t,zp,d,l,u,c),a){a.faceIndex=Math.floor(p/3),n.push(a);return}}else{let v=s.attributes.position,w=new A,b=new A,S=new A,_=new A,M=2,T=1/((r.scale.x+r.scale.y+r.scale.z)/3),E=T*T,C=Math.max(0,f.start),D=Math.min(v.count,f.start+f.count);for(let I=C,R=D-1;I<R;I+=M){if(w.fromBufferAttribute(v,I),b.fromBufferAttribute(v,I+1),zp.distanceSqToSegment(w,b,_,S)>E)continue;_.applyMatrix4(r.matrixWorld);let B=t.ray.origin.distanceTo(_);B<t.near||B>t.far||n.push({distance:B,point:S.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(y,v,w,b,S,_,M){let x=new A,T=new A,E=new A,C=new A,D=new A;if(x.fromBufferAttribute(b,S),T.fromBufferAttribute(b,_),E.fromBufferAttribute(b,M),w.intersectTriangle(x,T,E,!1,C)===null)return null;D.copy(C),D.applyMatrix4(y.matrixWorld);let R=v.ray.origin.distanceTo(D);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:D.clone(),object:y}}};var Gp=new A,qr=new ii,Wv=class extends ks{constructor(t){let n=new Ie,i=new Nr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new Ne(15711266),u=new Ne(15711266),c=new Ne(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,p,m){d(f,m),d(p,m)}function d(f,p){s.push(0,0,0),o.push(p.r,p.g,p.b),a[f]===void 0&&(a[f]=[]),a[f].push(s.length/3-1)}n.setAttribute("position",new we(s,3)),n.setAttribute("color",new we(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;qr.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;ui("n1",n,t,qr,-s,-o,a),ui("n2",n,t,qr,s,-o,a),ui("n3",n,t,qr,-s,o,a),ui("n4",n,t,qr,s,o,a);let l=a;ui("f1",n,t,qr,-s,-o,l),ui("f2",n,t,qr,s,-o,l),ui("f3",n,t,qr,-s,o,l),ui("f4",n,t,qr,s,o,l);let u=l,c=.5;ui("u1",n,t,qr,s*.7*c,o*1.1,u),ui("u2",n,t,qr,-s*.7*c,o*1.1,u),ui("u3",n,t,qr,0,o*(1.1+.9*c),u),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ui(r,e,t,n,i,s,o){Gp.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],Gp.x,Gp.y,Gp.z)}}var kp=class extends Ni(Wv){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){Fi(this.object,this.geometry,t,n,!0)}};var ac=class extends Ni(sf){constructor(t,n=15,i=10066329){super(t,n,i);this.object=t;this.added=!1;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,n){Fi(this.object,ac.geometryHelper,t,n)}};var lc=class extends Ni(of){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){Fi(this.object,lc.geometryHelper,t,n)}update(){}};var cc=class extends Ni(rf){constructor(t,n=15,i=6710886){super(t,n,i);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,n){Fi(this.object,cc.geometryHelper,t,n)}};var Vp=class extends Ni(nf){constructor(t,n=6710886){super(t,n);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,n){Fi(this.object,Vp.geometryHelper,t,n)}update(){if(this.object!==void 0){let t=Vp._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)}}},dh=Vp;dh._vector=new A;var fh=1e-12,uc=class{constructor(e){this.position=new N;this.startPosition=new N;this.uuid=ke.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 uc(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},hc=class extends uc{constructor(t){super(t.position);this.parent=t}copy(t){return super.copy(t),this}clone(){return new hc(this.parent).copy(this)}},hi=class extends uc{constructor(t,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=t,this.controls.push(new hc(this),new hc(this))}static create(t,n){let i=new hi(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 hi(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&&(c_(i,t),c_(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 c_(r,e=new N){let t=r.length();return e.set(-r.y/t,r.x/t)}var qv=r=>r,dc=new N,Hp=new N,Bz=new N,Nz=new N,Fz=new N,Uz=new N,h_=new A,d_=new A;function f_(r){let e=new N;e.addVectors(r.v0,dc.subVectors(r.v1,r.v0).multiplyScalar(2/3));let t=new N;return t.addVectors(r.v2,Hp.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new hr(r.v0,e,t,r.v2)}function ph(r,e,t=Number.EPSILON){return Math.abs(r-e)<t}function zz(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function Gz(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function Xv(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 p_(r,e,t){return u_(r,e)&&u_(e,t)&&jv(r.position,e.position,t.position)}function jv(r,e,t){return dc.copy(e).sub(r).cross(Hp.copy(t).sub(r))===0}function m_(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 g_(r,e,t){let n=r.distanceTo(t),i=e.distanceTo(t);return n<i?e:r}function y_(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 Xv(e,r,t)>Math.PI&&(c*=-1),ph(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 Yv(r,e){return r.position.equals(r.controls[1].position)&&e.position.equals(e.controls[0].position)}function u_(r,e){return jv(r.position,r.controls[1].position,e.position)&&jv(r.position,e.controls[0].position,e.position)}function v_(r,e,t,n,i=.5){let s=dc.subVectors(e,r).multiplyScalar(i).add(r),o=Hp.subVectors(t,e).multiplyScalar(i).add(e),a=Bz.subVectors(n,t).multiplyScalar(i).add(t),l=s,u=Nz.subVectors(o,s).multiplyScalar(i).add(s),c=Fz.subVectors(a,o).multiplyScalar(i).add(o),h=a,d=Uz.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 x_(r,e,t=12,n=!0){let i=d_.set(0,0,0),s,o=0,a=[];for(let l=0;l<e.length;l++){let u=qv(e[l]),c=dc,h=co(u,t);a.push(h);for(let d=0;d<=h;d++)if(u instanceof hr||u instanceof si||u instanceof dr){if(u.getPoint(d/h,c),i.set(c.x,c.y,0),s!==void 0&&Gz(s,i))continue;s===void 0&&(s=h_),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 b_(r,e,t,n=12,i=!0){let s=d_.set(0,0,0),o=0,a=[];for(let l=0;l<e.length;l++){if(t[l]===!1)continue;let u,c=qv(e[l]),h=dc,d=co(c,n);a.push(d);for(let f=0;f<=d;f++)if(c instanceof hr||c instanceof si||c instanceof dr){if(c.getPoint(f/d,h),s.set(h.x,h.y,0),u?.equals(s))continue;u===void 0?u=h_:(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 Qv(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=co(o.roundedCurveCorner,e)*.5;i>0&&(n[i-1]+=l),a+=l}o.curveAfter!==void 0&&(a+=co(o.curveAfter,e)),n.push(a)}return r.length>0&&t&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=co(r[0].roundedCurveCorner,e)*.5),n}function co(r,e=12){return r&&r instanceof zo?e*2:r&&(r instanceof dr||r instanceof bu)?1:r&&r instanceof Ka?e*r.points.length:e}function w_(r,e,t=12,n=!0){let i,s=0;for(let o=0;o<e.length;o++){let a=qv(e[o]),l=co(a,t),u=dc;for(let c=0;c<=l;c++)if(a instanceof hr||a instanceof si||a instanceof dr){if(a.getPoint(c/l,u),i!==void 0&&zz(i,u,fh))continue;i===void 0&&(i=Hp),i.copy(u),r.push(u.x,u.y),s++}}return ph(r[0],r[r.length-2],fh)&&ph(r[1],r[r.length-1],fh)&&(r.pop(),r.pop()),n&&s>1&&!(ph(r[s-1],r[1],fh)&&ph(r[s-2],r[0],fh))&&(r.push(r[0],r[1]),s++),r}var Zv=new N,kz=new N,Vz=new N,Hz=new N,Wz=new N,jz=new N,bt=class extends ri{constructor(t=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Bt;this.plane=new vn(new A(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=ke.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=t,this._height=n}static createFromState(t,n,i){let s=new bt;return s.isClosed=t.isClosed,s.points=t.points.map(o=>hi.create(o.id,o.data)),typeof t.roundness=="number"&&(s.roundness=t.roundness),s.shapeHoles=t.shapeHoles.map(o=>bt.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,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){let n=this.points.length;for(let i=0,s=this.shapeHoles.length;i<s;i++){let o=this.shapeHoles[i],a=t-n;if(a<=o.points.length-1)return o.points[a];n+=o.points.length}}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=Zv.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=ke.generateUUID()){let s;t instanceof N?s=t:s=new N(t,n);let o=new hi(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 x_(t,i?this.roundedCurves:this.curves,n,this.autoClose),s.reduce((o,a)=>o+a,0)+1}computeCurveDivisions(t=12){return this.curveDivisions=Qv(this.points,t,!1),this.roundedCurveDivisions=Qv(this.points,t,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(t,n,i=12){return b_(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),w_(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=co(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(Yv(s,o)){let h=s.position.distanceTo(o.position);return s.position.distanceTo(Zv.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){Yv(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&&p_(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 p=a.roundedCurveBefore,m=a.roundedCurveAfter,g=d.getLength(),y=f.getLength(),v=Math.min(c,g*.499),w=Math.min(c,y*.499),b=Math.min(v,w),S=1-b/g,_=b/y,M=d.getPointAt(S,Zv),x=f.getPointAt(_,kz);this._subSplitCurve(d,p,S,M,void 0),this._subSplitCurve(f,m,_,void 0,x);let T;if(this.useCubicForRoundedCorners){let E=Xv(M,a.position,x)/2,C=Math.tan(E)*M.distanceTo(a.position),[D,I]=m_(M,x,C,Vz,Hz),R=g_(D,I,a.position),[F,B]=y_(R,M,x,C,Wz,jz);T=new hr(M.clone(),F.clone(),B.clone(),x.clone())}else T=new si(M.clone(),a.position.clone(),x.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 dr)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=v_(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 bt(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 hi(ke.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 bt;return s.fromJSON(i),s}):[],this.isClosed=t.isClosed,this._roundness=t.roundness,this._update(),this}fromShape(t){let n=(s,o)=>{o instanceof hr&&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 si&&(s[a]=f_(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 hr?(f=this.createPoint(h.v0),f.controls[1].position.copy(h.v1)):h instanceof dr&&(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 hr?u.v3.equals(o[0].position)&&(o[0].controls[0].position.copy(u.v2),c=!0):u instanceof dr&&u.v2.equals(o[0].position)&&(c=!0),this.isClosed=c,o};return this.points=i(t.curves),t instanceof ri&&(this.shapeHoles=t.holes.map(s=>{let o=new bt;return o.fromShape(s),o})),this.update(),this}};var Vt;(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"})(Vt||(Vt={}));var An;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(An||(An={}));function He(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){He(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){He(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){He(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){He(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}(),mh=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}(),Wp=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}(),fc=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}(),S_=function(){function r(){var e=new fc,t=new mh,n=new Wp(0),i=new Wp(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 Wp(0),n=new Wp(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;He(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;He(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 fc,t=new fc,n=new mh,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 fc;this.makeVertex_(s,t,e.Org),e.Org.anEdge=e}if(!n){var o=new mh;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 mh;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 fc;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 mh;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){He(i.prev===s),l=i.anEdge;do He(l.Sym!==l),He(l.Sym.Sym===l),He(l.Lnext.Onext.Sym===l),He(l.Onext.Sym.Lnext===l),He(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(He(i.prev===s&&i.anEdge===null),a=t,a=t;(o=a.next)!==t;a=o){He(o.prev===a),l=o.anEdge;do He(l.Sym!==l),He(l.Sym.Sym===l),He(l.Lnext.Onext.Sym===l),He(l.Onext.Sym.Lnext===l),He(l.Org===o),l=l.Onext;while(l!==o.anEdge)}for(He(o.prev===a&&o.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)He(l.Sym.next===u.Sym),He(l.Sym!==l),He(l.Sym.Sym===l),He(l.Org!==null),He(l.Dst!==null),He(l.Lnext.Onext.Sym===l),He(l.Onext.Sym.Lnext===l);He(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}(),A_=function(){function r(){this.handle=null}return r}(),__=function(){function r(){this.key=null,this.node=0}return r}(),qz=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 A_,this.handles[n]=new __;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,He(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 A_;for(s=this.handles.length,this.handles.length=this.max+1,i=s;i<this.handles.length;i++)this.handles[i]=new __}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;He(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}(),Kv=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}(),M_=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),Xz=function(){function r(e,t){this.frame=e,this.leq=t,this.head=new M_,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 M_;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}(),Yz=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&&He(t.eUp.winding===0),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},r.fixUpperEdge=function(e,t,n){He(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 Kv;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 Vt.ODD:return(t&1)!==0;case Vt.NONZERO:return t!==0;case Vt.POSITIVE:return t>0;case Vt.NEGATIVE:return t<0;case Vt.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 He(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,He(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(He(!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 fc,f,p;if(He(!Ue.vertEq(u,l)),He(Ue.edgeSign(l,e.event,o)<=0),He(Ue.edgeSign(u,e.event,a)>=0),He(o!==e.event&&a!==e.event),He(!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),He(Math.min(o.t,l.t)<=d.t),He(d.t<=Math.max(a.t,u.t)),He(Math.min(u.s,l.s)<=d.s),He(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),p=r.regionBelow(t).eUp.Rprev,n.eUp=s.Oprev,s=r.finishLeftRegions(e,n,null),r.addRightEdges(e,t,s.Onext,i.Rprev,p,!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)){He(!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}He(!1),t=r.topRightRegion(t),l=r.regionBelow(t),o=l.eUp.Sym,s=a=o.Onext,l.fixUpperEdge&&(He(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 Kv;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);He(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 Kv,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 Xz(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||(He(t.fixUpperEdge),He(++n===1)),He(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 qz(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,He(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}(),Qz=function(){function r(){this.mesh=new S_,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=Vt.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],p=[null,null,null],m=this.mesh.vHead;t=m.next;for(var g=0;g<3;++g)s=t.coords[g],u[g]=s,p[g]=t,l[g]=s,f[g]=t;for(t=m.next;t!==m;t=t.next)for(var y=0;y<3;++y)s=t.coords[y],s<u[y]&&(u[y]=s,p[y]=t),s>l[y]&&(l[y]=s,f[y]=t);var v=0;if(l[1]-u[1]>l[0]-u[0]&&(v=1),l[2]-u[2]>l[v]-u[v]&&(v=2),u[v]>=l[v]){e[0]=0,e[1]=0,e[2]=1;return}for(a=0,n=p[v],i=f[v],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=m.next;t!==m;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===An.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===An.CONNECTED_POLYGONS){s=c.anEdge;do this.elements[d++]=this.getNeighbourFace_(s),s=s.Lnext;while(s!==c.anEdge);for(var p=l;p<n;++p)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 S_),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=Vt.ODD),t===void 0&&(t=An.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_(),Yz.computeInterior(this,o);var a=this.mesh;return t===An.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),o&&a.check(),t===An.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,t,n,i),!0},r}();function ua(r){var e=r.windingRule,t=e===void 0?Vt.ODD:e,n=r.elementType,i=n===void 0?An.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,p=f===void 0?!0:f,m=r.debug,g=m===void 0?!1:m;if(!d&&p)throw new Error("Contours can't be empty");if(!!d){var y=new Qz;r.edgeCreateCallback&&(y.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(y.vertexIdCallback=r.vertexIdCallback);for(var v=0;v<d.length;v++)y.addContour(l||2,d[v]);return y.tesselate(t,i,o,l,c,p),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:g?y.mesh:void 0}}}var i$=Vt.ODD,s$=Vt.NONZERO,o$=Vt.POSITIVE,a$=Vt.NEGATIVE,l$=Vt.ABS_GEQ_TWO,c$=An.POLYGONS,u$=An.CONNECTED_POLYGONS,h$=An.BOUNDARY_CONTOURS;var pc=class extends Ie{constructor(t,n=12,i={}){super();this.type="ShapeGeometry";this.windingRule=Vt.ODD;this.elementType=An.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=t,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:Vt.ODD,elementType:An.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let s=this._shape.extractShapePointsToFlatArray([],this._curveSegments),o=this._shape.shapeHoles.map(p=>p.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,u=!0,c,h;for(let p=0,m=s.length/2;p<m;p++){let g=p*2,y=s[g+0],v=s[g+1];if(c!==void 0&&y!==c&&(l=!1),h!==void 0&&v!==h&&(u=!1),c=y,h=v,!l&&!u)break}!l&&!u&&(a=ua({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 Ge(new Float32Array(d*3),3),this._normalAttribute=new Ge(new Float32Array(d*3),3),this._uvAttribute=new Ge(new Float32Array(d*2),2),this._indexAttribute=new Ge(new Uint32Array(f*3),1),a){let p=1/0,m=-1/0,g=1/0,y=-1/0;for(let b=0,S=d;b<S;b++){let _=b*2,M=a.vertices[_+0],x=a.vertices[_+1];M<p&&(p=M),M>m&&(m=M),x<g&&(g=x),x>y&&(y=x)}let v=m-p,w=y-g;for(let b=0,S=d;b<S;b++){let _=b*2,M=a.vertices[_+0],x=a.vertices[_+1],T=(M-p)/v,E=(x-g)/w;this._positionAttribute.setXYZ(b,M,x,0),this._normalAttribute.setXYZ(b,0,0,1),this._uvAttribute.setXY(b,T,E)}for(let b=0,S=f;b<S;b++){let _=b*3,M=a.elements[_+0],x=a.elements[_+1],T=a.elements[_+2];this._indexAttribute.setX(_+0,M),this._indexAttribute.setX(_+1,x),this._indexAttribute.setX(_+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 pc(this._shape,this._curveSegments);return t.userData=Uu(this.userData),t}};var jp=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*jp.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*jp.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)}},gh=jp;gh.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Jv=(r,e)=>([t,n])=>(n<t&&(n+=e),(r>=t?r:r+e)<=n),mc=class extends Ie{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 x=M.extractShapePointsToFlatArray([],s),T=[];for(let E=x.length-1;E>=1;E-=2){let C=x[E-1],D=x[E-0];T.push(C,D)}return T}),u=ua({windingRule:Vt.ODD,elementType:An.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),c=ua({windingRule:Vt.ODD,elementType:An.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 x=c.elements[M],T=M%2===0?u.vertexCount:0;u.elements.push(x+T)}for(let M=0;M<c.vertexIndices.length;M++){let x=c.vertexIndices[M],T=u.vertexCount;u.vertexIndices.push(x+T)}for(let M=0;M<c.vertices.length;M++){let x=c.vertices[M];u.vertices.push(x)}}let d=1/0,f=-1/0,p=1/0,m=-1/0;for(let M=0,x=u.vertexCount;M<x;M++){let T=M*2,E=u.vertices[T+0],C=u.vertices[T+1];E<d&&(d=E),E>f&&(f=E),C<p&&(p=C),C>m&&(m=C)}this._minX=d,this._minY=p,this._width=f-d,this._height=m-p;let g=u.vertexCount*2*(2+this._bevelSegments);this._buffer=new gh(g);let y=[],v=[];for(let M=u.elementCount-1;M>=0;M--){let x=M>=h,T=M*2,E=u.elements[T+0],C=u.elements[T+1],D=E+C,I={start:E,count:C,normals:[],continuous:[],concave:[]},R=E,F=D-1,B=E+1,X=this._shape.roundedCurves.length;do{let V=R-E,U=u.vertices[F*2+0],H=u.vertices[F*2+1],j=u.vertices[R*2+0],Q=u.vertices[R*2+1],q=u.vertices[B*2+0],ae=u.vertices[B*2+1],$=j-U,te=Q-H,W=Math.sqrt($*$+te*te);$/=W,te/=W;let le=j-q,ce=Q-ae,oe=Math.sqrt(le*le+ce*ce);le/=oe,ce/=oe,I.normals[V*2+0]=-ce,I.normals[V*2+1]=le,I.concave[V]=$*ce-te*le>0;let de=u.vertexIndices[R];if(Array.isArray(de))I.continuous[V]=!1;else{let[ge,fe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(fe>0&&fe<1)I.continuous[V]=!0;else{let Ee=fe===1?ge+1:ge-1;Ee=(Ee+X)%X;let Pe=fe===1?0:1,ye=this._shape.roundedCurves[ge].getTangent(fe),Oe=this._shape.roundedCurves[Ee].getTangent(Pe);I.continuous[V]=ye.dot(Oe)>.95}}x&&(I.normals[V*2+0]*=-1,I.normals[V*2+1]*=-1),[F,R,B]=[R,B,B+1],B>=D&&(B-=C)}while(B!==E+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:u.vertices.slice(E*2,D*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,U)=>[U,U]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:u.vertices.slice(E*2,D*2)});for(let V=1;V<=this._bevelSegments;V++){let U=V/this._bevelSegments*Math.PI/2,H=(1-Math.cos(U))*this._bevelSize,j=[],Q=[],q=[],ae=[],$=0;for(let W=0;W<C;W++){let le=W*2,ce=(W-1+C)%C*2,oe=u.vertices[I.start*2+le+0],de=u.vertices[I.start*2+le+1],ge=-I.normals[ce+0]*H,fe=-I.normals[ce+1]*H,Ee=-I.normals[le+0]*H,Pe=-I.normals[le+1]*H;if(I.concave[W]||!I.concave[W]&&x){let ye=Math.atan2(fe,ge),Oe=Math.atan2(Pe,Ee);Oe>ye&&(Oe-=Math.PI*2);let pt=Oe-ye;if(I.continuous[W]||x){let L=ye+pt/2,P=Math.cos(L)*H,K=Math.sin(L)*H;j[2*$+0]=oe+P*(x?-1:1),j[2*$+1]=de+K*(x?-1:1),ae[$]=W,$++}else{let L=Math.max(1,Math.floor(s/4*Math.abs(pt)/Math.PI));for(let P=0;P<=L;P++){let K=ye+pt*(P/L),he=Math.cos(K)*H,pe=Math.sin(K)*H;j[2*$+0]=oe+he,j[2*$+1]=de+pe,ae[$]=W,$++}}}else j[2*$+0]=oe+ge,j[2*$+1]=de+fe,ae[$]=W,Q[W]=$,$++,j[2*$+0]=oe,j[2*$+1]=de,ae[$]=W,$++,j[2*$+0]=oe+Ee,j[2*$+1]=de+Pe,ae[$]=W,q[W]=$,$++}let te=ua({windingRule:Vt.POSITIVE,elementType:An.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:W=>{let ce=W.Org.idx,oe=ae[ce],de=ae[(ce+1)%ae.length];W.idx=[oe,de],W.Sym.idx=[de,oe]},vertexIdCallback:W=>{let le=W.Lprev.idx;return[le?le[1]:0,W.idx[0]]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!te.vertexCount)break;for(let W=0;W<te.vertexIndices.length;W++){let[le,ce]=te.vertexIndices[W];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(!I.continuous[ge]||!I.continuous[fe]){te.vertexIndices[W]=[le,ge],te.vertexIndices.splice(W+1,0,[fe,ce]),te.vertices.splice((W+1)*2,0,te.vertices[W*2],te.vertices[W*2+1]);break}}}Y.push({bevelI:V,angle:U,size:H,boundary:te,reverseMap:ae,insetPoints:j})}let G=(V,U,H)=>{let j=0,Q=V.boundary.vertexIndices.length;for(;j<Q&&H(V.boundary.vertexIndices[U]);)U=(U+1)%Q,j++;return j},z=y.length;for(let V=1;V<Y.length;V++){let U=Y[V-1],H=Y[V],j=U.boundary.vertexIndices.length,Q=H.boundary.vertexIndices.length;if(!j||!Q)break;let q=I.concave.length,ae=0,$=Jv(ae,C);for(;!U.boundary.vertexIndices.filter($).length||!H.boundary.vertexIndices.filter($).length;)ae++,$=Jv(ae,C);let te=U.boundary.vertexIndices.findIndex($),W=H.boundary.vertexIndices.findIndex($);do te=(te+1)%j;while($(U.boundary.vertexIndices[te]));do W=(W+1)%Q;while($(H.boundary.vertexIndices[W]));ae=(ae+1)%C;let le=ae,ce=this.buildBevelVert(I,U,(te-1+j)%j),oe=this.buildBevelVert(I,H,(W-1+Q)%Q),de=ce,ge=oe,fe,Ee,Pe=!1;do{$=Jv(ae,C);let ye=G(U,te,$),Oe=G(H,W,$),pt=Pe;if(Pe=!1,ye&&!Oe){for(let L=0;L<ye;L++)fe=this.buildBevelVert(I,U,(te+L)%j,L/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe;Pe=!0}else if(!ye&&Oe)for(let L=0;L<Oe;L++)Ee=this.buildBevelVert(I,H,(W+L)%Q,L/(Oe-1)),y.push(ge.topN,de.topP,Ee.topP),y.push(de.bottomP,ge.bottomN,Ee.bottomP),ge=Ee;else if(ye&&Oe)if(fe=this.buildBevelVert(I,U,te,0),Ee=this.buildBevelVert(I,H,W,0),pt?(y.push(de.topN,Ee.topP,ge.topN),y.push(de.topN,fe.topP,Ee.topP),y.push(Ee.bottomP,de.bottomN,ge.bottomN),y.push(Ee.bottomP,fe.bottomP,de.bottomN)):(y.push(ge.topN,de.topN,fe.topP),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Ee.bottomP)),de=fe,ge=Ee,ye===Oe)for(let L=1;L<ye;L++)fe=this.buildBevelVert(I,U,(te+L)%j,L/(ye-1)),Ee=this.buildBevelVert(I,H,(W+L)%Q,L/(Oe-1)),y.push(de.topN,fe.topP,ge.topN),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Ee.bottomP),de=fe,ge=Ee;else if(ye>Oe){let L=ye/Oe,P=0;for(let K=1;K<ye;K++)fe=this.buildBevelVert(I,U,(te+K)%j,K/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe,K>(P+1)*L&&(P++,Ee=this.buildBevelVert(I,H,(W+P)%Q,P/(Oe-1)),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,ge.bottomN,Ee.bottomP),ge=Ee)}else{let L=Oe/ye,P=0;for(let K=1;K<Oe;K++)Ee=this.buildBevelVert(I,H,(W+K)%Q,K/(Oe-1)),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,ge.bottomN,Ee.bottomP),ge=Ee,K>(P+1)*L&&(P++,fe=this.buildBevelVert(I,U,(te+P)%j,P/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe)}te=(te+ye)%j,W=(W+Oe)%Q,ae=(ae+1)%q}while(ae!==le)}{let V=Y[0];for(let U=0,H=V.boundary.vertexCount;U<H;U++){let j=this.buildBevelVert(I,V,U),Q=this.buildBevelVert(I,V,(U+1)%H);y.push(Q.topP,j.topN,j.bottomN),y.push(Q.topP,j.bottomN,Q.bottomP)}}if(x){let V=[];for(let U=y.length-1;U>=z+2;U-=3){let H=y[U-2],j=y[U-1],Q=y[U-0];V.push(Q,j,H)}y.splice(z,y.length-z,...V)}if(x){let V=[];for(let U=Y[Y.length-1].boundary.vertices.length-1;U>=1;U-=2){let H=Y[Y.length-1].boundary.vertices[U-1],j=Y[Y.length-1].boundary.vertices[U-0];V.push(H,j)}v.push(V)}if(!x){let V=Y[Y.length-1],U=ua({windingRule:Y.length>1?Vt.POSITIVE:Vt.ODD,elementType:An.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]});if(!U)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let H=0;H<U.elementCount*3;H+=3){let j=this.buildSurfaceVert(U,U.elements[H+0]),Q=this.buildSurfaceVert(U,U.elements[H+1]),q=this.buildSurfaceVert(U,U.elements[H+2]);y.push(j.top,Q.top,q.top),y.push(q.bottom,Q.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new Ge(Uint32Array.from(y),1),b=new Ge(this._buffer.positions,3),S=new Ge(this._buffer.normals,3),_=new Ge(this._buffer.uvs,2);b.needsUpdate=!0,S.needsUpdate=!0,_.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",S),this.setAttribute("uv",_),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),p=Math.sin(n.angle),m=i*2,g=u*2,y=c*2,v=n.boundary.vertices[m+0],w=n.boundary.vertices[m+1],b=(1-p)*this._bevelSize,S=(v-this._minX)/this._width,_=(w-this._minY)/this._height,M=t.normals[g+0],x=t.normals[g+1],T=t.normals[y+0],E=t.normals[y+1];if(d){let F=T-M,B=E-x;M=M+F*(1-s),x=x+B*(1-s);let X=Math.sqrt(M*M+x*x);M/=X,x/=X}let C=this._buffer.get(h?2:4),D=C*3,I=C*2,R={i,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[D+0]=v,this._buffer.positions[D+1]=w,this._buffer.positions[D+2]=this._depth-b,this._buffer.normals[D+0]=M*f,this._buffer.normals[D+1]=x*f,this._buffer.normals[D+2]=p,this._buffer.uvs[I+0]=S,this._buffer.uvs[I+1]=_,this._buffer.positions[D+3]=v,this._buffer.positions[D+4]=w,this._buffer.positions[D+5]=b,this._buffer.normals[D+3]=M*f,this._buffer.normals[D+4]=x*f,this._buffer.normals[D+5]=-p,this._buffer.uvs[I+2]=_,this._buffer.uvs[I+3]=S,h||(C+=2,D+=6,I+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[D+0]=v,this._buffer.positions[D+1]=w,this._buffer.positions[D+2]=this._depth-b,this._buffer.normals[D+0]=T*f,this._buffer.normals[D+1]=E*f,this._buffer.normals[D+2]=p,this._buffer.uvs[I+0]=S,this._buffer.uvs[I+1]=_,this._buffer.positions[D+3]=v,this._buffer.positions[D+4]=w,this._buffer.positions[D+5]=b,this._buffer.normals[D+3]=T*f,this._buffer.normals[D+4]=E*f,this._buffer.normals[D+5]=-p,this._buffer.uvs[I+2]=_,this._buffer.uvs[I+3]=S),this.vertexCache[o]=R,R}clone(){let t=new mc(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return t.userData=Uu(this.userData),t}};var or=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 bt?(o.width!==n||o.height!==i)&&o.applySize(n,i):o=new bt(n,i).fromJSON(o),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&o.update(!1));let l=o??new bt(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 pc(r.shape,i):o=new mc(r.shape,e,t,i,n),Object.assign(o,{userData:{...r,type:"VectorGeometry"}})}};var E_=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,p;return h||f?p=new yh(u,c,n,i,s,o,a,l*Math.PI/180,h,h,d,f):p=new Go(u,c,n,i,s,o,a,l*Math.PI/180),p.scale(1,1,t/e),Object.assign(p,{userData:{...r,type:"CylinderGeometry"}})}};function uo(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function T_(r){return new N(r.y,-r.x)}var yh=class extends Ie{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 p=[],m=[],g=[],y=[],v=0,w=n/2,b=new A,S=new A;f&&e==0&&(e=u),f&&t==0&&(t=c);let _=new N(e,w),M=new N(t,-w),x=null,T=null,E=null,C=null,D=_.clone().sub(M),I=0,R=0,F=0;d>0&&(I=Math.min(e,t)*(1-d),R=e-I,F=t-I);let B=_.clone();B.x-=I;let X=Math.PI-D.angle(),Y=D.angle(),G=Math.tan(Y/2),z=Math.tan(X/2),V=G+z,U=d?V:z,H=d?V:G;if(u=Math.min(u,(e-R)/U,D.length()/V),c=Math.min(c,(t-F)/H,D.length()/V),u>0){let te=u/G;x=_.clone().sub(new N(te,u)),d&&(E=x.clone(),E.x-=I-V*u),_.sub(D.clone().setLength(te))}if(c>0){let te=c/z;T=M.clone().sub(new N(te,-c)),M.add(D.clone().setLength(te)),d&&(C=T.clone(),C.x-=I-V*c,B.sub(D.clone().setLength(te)))}D=_.clone().sub(M);let j=D.length()<.5,Q=[];for(let te=0;te<=i;te++){let W=[],le=te/i,ce=le*l+a,oe=new N(Math.sin(ce),Math.cos(ce));C&&T?(q(W,le,oe,X,c,C,-1,!0),q(W,le,oe,Y,c,T,-1,!1)):T?(ae(W,oe,T.x,0,-1),q(W,le,oe,Y,c,T,-1,!1)):o||ae(W,oe,t,F,-1);let de=T_(D).normalize();if(uo(de,oe,b),!j)for(let ge=0;ge<=s;ge++){let fe=ge/s,Ee=D.clone().multiplyScalar(fe).add(M);uo(Ee,oe,S),m.push(S.x,S.y,S.z),g.push(b.x,b.y,b.z),y.push(le,.5+S.y/n),W.push(v++)}if(E&&x?(q(W,le,oe,X,u,x,1,!1),q(W,le,oe,Y,u,E,1,!0)):x?(q(W,le,oe,X,u,x,1,!1),ae(W,oe,x.x,0,1)):o||ae(W,oe,e,R,1),d&&!j){let ge=T_(D).multiplyScalar(-1).normalize();uo(ge,oe,b);for(let fe=0;fe<=s;fe++){let Ee=fe/s,Pe=D.clone().multiplyScalar(-Ee).add(B);uo(Pe,oe,S),m.push(S.x,S.y,S.z),g.push(b.x,b.y,b.z),y.push(le,.5+S.y/n),W.push(v++)}}d&&!o&&W.push(W[0]),Q.push(W)}for(let te=0;te<Q.length-1;te++)for(let W=0;W<Q[0].length-1;W++){if(o&&d&&W==s)continue;let le=Q[te][W],ce=Q[te+1][W],oe=Q[te+1][W+1],de=Q[te][W+1],ge=m[oe*3+0],fe=m[oe*3+2];p.push(le,ce,de),(ge!=0||fe!=0)&&p.push(ce,oe,de)}l<Math.PI*2&&($(-1,Q[0],a),$(1,Q[Q.length-1],a+l)),this.setIndex(p),this.setAttribute("position",new we(m,3)),this.setAttribute("normal",new we(g,3)),this.setAttribute("uv",new we(y,2));function q(te,W,le,ce,oe,de,ge,fe){for(let Ee=0;Ee<h+1;Ee++){let Pe=Ee/h,ye=ge<0?Pe:1-Pe;fe&&(ye-=1),ye*=ce;let Oe=new N(Math.sin(ye),Math.cos(ye)*ge),pt=Oe.clone().multiplyScalar(oe).add(de);uo(pt,le,S),m.push(S.x,S.y,S.z),uo(Oe,le,b),g.push(b.x,b.y,b.z),y.push(W,.5+S.y/n),te.push(v++)}}function ae(te,W,le,ce,oe){let de=new A,ge=new N,fe=[le,ce];oe<0&&fe.reverse();for(let Ee of fe)ge.set(Ee,w*oe),uo(ge,W,de),m.push(de.x,de.y,de.z),g.push(0,oe,0),y.push(.5,.5),te.push(v++)}function $(te,W,le){let ce=new N(Math.sin(le),Math.cos(le)),oe=new N(-Math.cos(le),Math.sin(le)),de=new A,ge=te<0?(Pe,ye,Oe)=>p.push(Pe,ye,Oe):(Pe,ye,Oe)=>p.push(Pe,Oe,ye),fe=new N((e+t+R+F)/4,0);uo(fe,ce,de),m.push(de.x,de.y,de.z),g.push(oe.x,0,oe.y),y.push(.5,.5);let Ee=v++;for(let Pe of W){let ye=m.slice(Pe*3,Pe*3+3);m.push(...ye),g.push(oe.x,0,oe.y);let Oe=y.slice(Pe*2,Pe*2+2);y.push(...Oe),v++}for(let Pe=Ee+1;Pe<v-1;Pe++)ge(Ee,Pe,Pe+1);ge(Ee,v-1,Ee+1)}}};var C_=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 yh(0,e/2,n,i,s,o,a,l*Math.PI/180,u,c,h,0,!0):d=new $a(e/2,n,i,s,o),d.scale(1,1,t/e),Object.assign(d,{userData:{...r,type:"ConeGeometry"}})}};var P_=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 ur(e,t,n,i,s,o):u=new e0(e,t,n,i,s,o,a,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},$v=Math.PI/2,e0=class extends Ie{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=[],p=0,m=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),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new we(h,3)),this.setAttribute("normal",new we(d,3)),this.setAttribute("uv",new we(f,2));function g(w,b,S,_,M,x,T,E,C,D,I){let R=(x-2*a)/C,F=(T-2*a)/D,B=x/2-a,X=T/2-a,Y=E/2,G=C+1,z=D+1,V=0,U=0,H=new A;for(let j=0;j<z;j++){let Q=j*F-X;for(let q=0;q<G;q++){let ae=q*R-B;H[w]=ae*_,H[b]=Q*M,H[S]=Y,h.push(H.x,H.y,H.z),H[w]=0,H[b]=0,H[S]=E>0?1:-1,d.push(H.x,H.y,H.z),f.push(q/C),f.push(1-j/D),V+=1}}for(let j=0;j<D;j++)for(let Q=0;Q<C;Q++){let q=p+Q+G*j,ae=p+Q+G*(j+1),$=p+(Q+1)+G*(j+1),te=p+(Q+1)+G*j;c.push(q,ae,te),c.push(ae,$,te),U+=6}u.addGroup(m,U,I),m+=U,p+=V}function y(w,b,S,_,M,x,T,E,C,D,I){let R=(T-2*a)/D,F=T/2-a,B=E/2-a,X=C/2,Y=D+1,G=0,z=0,V=new A,U=new A;for(let H=0;H<l+1;H++){let j=H/l*$v,Q=Math.sin(j)*a,q=(1-Math.cos(j))*a,ae=Math.sin(j),$=Math.cos(j);V[b]=(B+Q)*M,V[S]=(X-q)*x,U[w]=0,U[b]=ae*Math.sign(V[b]),U[S]=$*Math.sign(V[S]);for(let te=0;te<Y;te++){let W=te*R-F;V[w]=W*_,h.push(V.x,V.y,V.z),d.push(U.x,U.y,U.z),f.push(te/D),f.push(0),G+=1}}for(let H=0;H<l;H++)for(let j=0;j<D;j++){let Q=p+j+Y*H,q=p+j+Y*(H+1),ae=p+(j+1)+Y*(H+1),$=p+(j+1)+Y*H;c.push(Q,q,$),c.push(q,ae,$),z+=6}u.addGroup(m,z,I),m+=z,p+=G}function v(w,b,S){let _=new A,M=new A(e/2,t/2,n/2);M.subScalar(a);let x=[],T=w*b*S>0?(C,D,I)=>c.push(C,D,I):(C,D,I)=>c.push(C,I,D);for(let C=0;C<=l;C++){let D=[],I=$v*(1-C/l),R=Math.cos(I),F=Math.sin(I),B=0;for(let X=0;X<=C;X++){let Y=Math.cos(B),G=Math.sin(B);_.x=R*Y,_.y=F,_.z=R*G;let z=M.clone().addScaledVector(_,a);h.push(w*z.x,b*z.y,S*z.z),d.push(w*_.x,b*_.y,S*_.z),f.push(0,0),D.push(p++),B+=$v/C}x.push(D)}let E=x.length-1;for(let C=0;C<E;C++){let D=x[C],I=x[C+1],R=D.length-1;T(D[0],I[1],I[0]);for(let F=1;F<=R;F++)T(D[F-1],D[F],I[F]),T(D[F],I[F+1],I[F])}}}};var ho=class extends Ie{constructor(e=[],t=[],n="",i=1,s=.2,o=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],u=[];c(),h(),this.setAttribute("position",new we(a,3)),this.setAttribute("normal",new we(u,3)),this.setAttribute("uv",new we(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],p=new A,m=p.clone(),g=new In,y=s*i,v=i-y,w=o+1,b=new A,S=(G,z)=>b.subVectors(G,z).normalize(),_=(G,z)=>Array(G).fill(void 0).map(z),M=_(e.length/3,(G,z)=>new A().fromArray(e,z*3).setLength(i)),x=[],T=1e6;for(let G=0;G<M.length;G++){let z=M[G],V=[],U,H,j,Q=1e10,q=-1;for(;(q=t.indexOf(G,q+1))!=-1;){let W=q-q%3;U=t[W+(q+1)%3],H=t[W+(q+2)%3],j=z.distanceToSquared(M[U]),Q=Math.min(Q,j),V.push([U,H,j])}Q+=1e-6;let ae=[],$=0,te=V.length;for(let W=0;W<te;W++){[U,H,j]=V[$];let le=x[U]?.includes(G)==!0;j<=Q&&ae.push(U+ +le*T),$=V.findIndex(ce=>ce[0]==H)}x.push(ae)}let E=[];{let G=0,z=0,V,U,H=f==3;for(let j=0;j<=o;j++){V=j*(j+1)/2,U=(j+1)*(j+2)/2;for(let Q=0;Q<o-j;Q++)[G,z]=[V+Q+j+2,U+Q+j+3],E.push(V,U,...H?[z,V]:[G,U],z,G),[V,U]=[G,z];E.push(V,U,V+o+2)}}let C=p.clone(),D=p.clone(),I=p.clone(),R=p.clone(),F=p.clone(),B=[],X=_(M.length,()=>_(f,()=>p.clone()));for(let G=0;G<M.length;G++){p.copy(M[G]).normalize(),C.copy(p).multiplyScalar(v);let z=x[G];for(let ae=0;ae<z.length;ae++){let $=z[ae],te=z[(ae+1)%f];g.setFromPointsAndIndices(M,G,$%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,X[G][ae])}let V=[],U=[],H=[],j=new A;o==0&&[...X[G]].reduce((ae,$)=>ae.add($),j).multiplyScalar(1/f);for(let ae=0;ae<f;ae++){let $=[],te=(ae-1+f)%f,W=X[G][te],le=X[G][ae];p.copy(W).sub(C),m.copy(le).sub(C);let ce=C.angleTo(p),oe=p.angleTo(m),de=Math.cos(ce)*y;o==0?D.copy(j):D.copy(C).setLength(v+de),U.push(de);let ge=[D,W,le];for(let fe=0;fe<2;fe++){let Ee=ge[fe],Pe=ge[fe+1];R.subVectors(Ee,C),F.subVectors(Pe,C),I.crossVectors(R,F).normalize();for(let ye=0;ye<w;ye++){let Oe=[ce,oe][fe]*ye/w;p.copy(R).applyAxisAngle(I,Oe).add(C),V.push(p.clone()),fe&&(S(p,C),$.push([ye==0?Ee:p.clone(),b.clone()]))}fe&&(S(Pe,C),$.push([Pe,b.clone()]))}H.push($)}B.push(H);let Q=2*w,q=2;for(let ae=0;ae<f;ae++){let $=Q*ae,te=Q*((ae+1)%f),W=[V[$]];for(let ce=1;ce<w;ce++){R=V[$+ce],F=V[te+ce],W.push(R);for(let oe=1,de=ce-q+1;oe<=de;oe++)p.lerpVectors(R,F,oe/(de+1)),p.sub(C).setLength(U[ae]).add(C),W.push(p.clone());W.push(F)}for(let ce=0;ce<w;ce++)W.push(V[ce+w+$]);W.push(V[te+w]);let le=E.map(ce=>W[ce]);a.push(...le.map(ce=>[ce.x,ce.y,ce.z]).flat()),u.push(...le.map(ce=>(S(ce,C),[b.x,b.y,b.z])).flat())}}let Y=[];for(let G=0;G<x.length;G++)for(let z=0;z<f;z++){let V=x[G][z];if(V<T){let U=x[V].findIndex(Q=>Q%T==G),H=B[G][z],j=B[V][U];for(let Q=0;Q<w;Q++){let q=H[Q],ae=j[w-Q],$=H[Q+1],te=j[w-(Q+1)];[q,ae,$,$,ae,te].forEach(W=>{a.push(W[0].x,W[0].y,W[0].z),u.push(W[1].x,W[1].y,W[1].z)})}Y.push(H[0][0],j[w][0],H[w][0],j[0][0])}}for(;Y.length;){let G,z,V,U;[G,z]=Y.splice(0,2);let H=[G];for(;G!=z;)H.push(z),V=Y.indexOf(z),U=V%2,z=Y.splice(V-U,2)[1-U];b.subVectors(H[0],H[1]).cross(p.subVectors(H[0],H[2])).normalize();let j=b.dot(H[0])<0;j&&b.negate();for(let Q=1;Q<=H.length-2;Q++)[H[Q+ +j],H[Q+1-+j],H[0]].forEach(q=>{a.push(q.x,q.y,q.z),u.push(b.x,b.y,b.z)})}}function h(){let d=new A;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 x=S(d)/2/Math.PI+.5,T=_(d)/Math.PI+.5;l.push(x,1-T)}let f=new A,p=new A,m=new A,g=new A,y=new N,v=new N,w=new N,b=(M,x,T,E)=>{E<0&&M.x===1&&(l[x]=M.x-1),T.x===0&&T.z===0&&(l[x]=E/2/Math.PI+.5)};for(let M=0,x=0;M<a.length;M+=9,x+=6){f.set(a[M+0],a[M+1],a[M+2]),p.set(a[M+3],a[M+4],a[M+5]),m.set(a[M+6],a[M+7],a[M+8]),y.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),w.set(l[x+4],l[x+5]),g.copy(f).add(p).add(m).divideScalar(3);let T=S(g);b(y,x+0,f,T),b(v,x+2,p,T),b(w,x+4,m,T)}for(let M=0;M<l.length;M+=6){let x=l[M+0],T=l[M+2],E=l[M+4],C=Math.max(x,T,E),D=Math.min(x,T,E);C>.9&&D<.1&&(x<.2&&(l[M+0]+=1),T<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function _(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(e){return new ho(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}};var D_=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 vh(e*.5,s,o):new tl(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"DodecahedronGeometry"}})}},vh=class extends ho{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 vh(e.radius,e.corner,e.cornerSides)}};var n0=Math.PI*2;function t0({x:r,y:e},t,n,i,s){return{x:r*t+i,y:e*n+s}}function Zz(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 I_(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 Kz(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),p=c*h-c*f-h*d;p<0&&(p=0),p/=c*f+h*d,p=Math.sqrt(p)*(l===u?-1:1);let m=p*i/s*a,g=p*-s/i*o,y=m+(r+t)/2,v=g+(e+n)/2,w=(o-m)/i,b=(a-g)/s,S=(-o-m)/i,_=(-a-g)/s,M=I_(1,0,w,b),x=I_(w,b,S,_);return!u&&x>0&&(x-=n0),u&&x<0&&(x+=n0),{centerx:y,centery:v,ang1:M,ang2:x}}function L_({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=Kz(r,e,t,n,i,s,u,c,o,a),{ang1:f,ang2:p}=d,{centerx:m,centery:g}=d,y=Math.abs(p)/(n0/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);p/=v;for(let w=0;w<v;w++)l.push(Zz(f,p)),f+=p;return l.map(w=>{let{x:b,y:S}=t0(w[0],i,s,m,g),{x:_,y:M}=t0(w[1],i,s,m,g),{x,y:T}=t0(w[2],i,s,m,g);return{x1:b,y1:S,x2:_,y2:M,x,y:T}})}var O_=Math.PI*2,B_=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 bt?r.shape:new bt,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=Jz(u,c,h,i*Math.PI/180,n,s);u.isClosed=!0,u.update();let f=or.create({shape:u,parameters:{subdivisions:d,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(f,{userData:{...r,type:"EllipseGeometry"}})}};function Jz(r,e,t,n,i,s){if(n>=O_)return i>30||i%4===0?(eG(r,e,t,s),Math.round(i/4)):R_(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=L_({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?$z(r,o.x,o.y,u,i,e,t,s):R_(r,n,i,e,t,s)}function $z(r,e,t,n,i,s,o,a){let l=Math.round(i/n.length);r.addPoint(gc(e,t));for(let u=0,c=n.length;u<c;u++){let h=n[u],d=r.points[u],f=gc(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?N_(r,s,o,a):r.addPoint(gc(0,0)),l}function R_(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(gc(u,c))}return e<O_?s>0?N_(r,n,i,s):r.addPoint(gc(0,0)):(r.removePoint(r.points[r.points.length-1]),s>0&&F_(r,n,i,s)),1}function eG(r,e,t,n=0,i=0,s=0){let o=.5522847498,a=e*o,l=t*o;r.addPoint(qp(i-e,s,i-e,s-l,i-e,s+l)),r.addPoint(qp(i,s+t,i-a,s+t,i+a,s+t)),r.addPoint(qp(i+e,s,i+e,s+l,i+e,s-l)),r.addPoint(qp(i,s-t,i+a,s-t,i-a,s-t)),n>0&&F_(r,e,t,n)}function gc(r,e){return new hi(ke.generateUUID(),new N(r,e))}function qp(r,e,t,n,i,s){let o=gc(r,e);return o.controls[0].position.set(t,n),o.controls[1].position.set(i,s),o}function N_(r,e,t,n){U_(r,e,t,n).forEach(s=>r.addPoint(s))}function F_(r,e,t,n){let i=U_(r,e,t,n),s=new bt;i.forEach(o=>s.addPoint(o)),s.isClosed=!0,r.shapeHoles.push(s)}function U_(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=ke.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 z_=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 xh(!1,e,t,n,i,s,o,a,l,u,c,h);return Object.assign(d,{userData:{...r,type:"HelixGeometry"}})}},xh=class extends Ie{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 p=()=>new A,m=new A,g=p(),y=p(),v=p(),w,b,S,_,M,x,T,E,C=p(),D=p(),I=p(),R=p(),F=p(),B=p(),X=p(),Y=p(),G=n-2*l+.001,z=G/o,V=Math.ceil(a*o),U=V+1,H=G/V,j=-G/2,Q=c+1,q=2*Math.PI/c,ae=Math.PI/2/d,$=.01,te=Math.min((1-h/100)*l,l-$),W=l-te,le=0,ce=2,oe=d*ce+ce,de=Q*oe/ce,ge=de+Q*U,fe=Q*(U+oe),[Ee,Pe,ye]=[3,3,2].map(ve=>Array(fe*ve).fill(0)),Oe=[],pt=s-l;function L(ve,k){let xe=Math.PI/2;x=k*H,E=2*Math.PI*(x%z)/z+xe,x+=j,T=Math.sin(E)*pt,M=Math.cos(E)*pt,e?ve.set(M,T,x):ve.set(M,x,T)}L(m,-1e-10),L(g,0),C.copy(m),L(m,1);let P=m.distanceTo(g),K=W+te,he=P*V+2*K,pe=te,Ce=he-K;for(let ve=0;ve<=V;ve++){L(y,ve),Y.subVectors(y,C).normalize(),C.copy(y),B.copy(y).setComponent(+e+1,0).normalize(),X.crossVectors(Y,B).normalize();let k=ve===0,xe=ve===V,Ae=k?3*Math.PI/2:ae,Ye=k?pe:Ce,Re=k?Q:ge,Qe=k?0:fe-Q,be=Y.clone().multiplyScalar(k?-W:W).add(y),Ze=Y.clone().multiplyScalar(k?-1:1).normalize();for(let et=0;et<Q;et++){let mt=et*q;if(D.addVectors(m.copy(B).multiplyScalar(l*Math.cos(mt)),g.copy(X).multiplyScalar(l*Math.sin(mt))),I.copy(D).normalize(),k||xe){f||(le=Qe+et,[0,1,2].forEach(St=>{Ee[le*3+St]=be.getComponent(St),Pe[le*3+St]=Ze.getComponent(St)}),ye[le*2]=+xe,ye[le*2+1]=et/c),g.copy(I).multiplyScalar(te),v.addVectors(y,g);for(let St=0;St<d;St++){let cr=St*ae+Ae;R.addVectors(m.copy(Y).multiplyScalar(W*Math.sin(cr)),g.copy(I).multiplyScalar(W*Math.cos(cr))),F.copy(R).normalize(),g.addVectors(v,R),R.normalize(),le=Re+St*Q+et,[0,1,2].forEach(_a=>{Ee[le*3+_a]=g.getComponent(_a),Pe[le*3+_a]=F.getComponent(_a)});let cd=+k+Math.sin(cr);ye[le*2]=(Ye+W*cd)/he,ye[le*2+1]=et/c}}g.addVectors(y,D),le=de+ve*Q+et,[0,1,2].forEach(St=>{Ee[le*3+St]=g.getComponent(St),Pe[le*3+St]=I.getComponent(St)}),ye[le*2]=(K+ve*P)/he,ye[le*2+1]=et/c}}let Fe=U+2*d+ce,re=1,[Be,Le]=f?[re,re+U-1]:[0,Fe-1];for(let ve=Be;ve<=Le-1;ve++){let k=f&&ve===Le-1;for(let xe=0;xe<Q-1;xe++)w=ve*Q+xe,b=w+1,S=(k?xe:w)+Q,_=(k?xe+1:b)+Q,ve===0?Oe.push(b,_,S):ve===Fe-2?Oe.push(w,b,S):Oe.push(w,b,S,b,_,S)}this.setIndex(Oe),this.setAttribute("position",new we(Ee,3)),this.setAttribute("normal",new we(Pe,3)),this.setAttribute("uv",new we(ye,2))}};var G_=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 bh(e*.5,s,o):new nl(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"IcosahedronGeometry"}})}},bh=class extends ho{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 bh(e.radius,e.corner,e.cornerSides)}};var k_=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 ri;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 Ja(i.extractPoints(n).shape,t);return s.rotateZ(Math.PI),Object.assign(s,{userData:{...r,type:"LatheGeometry"}})}};var Ui=new _e,r0=new ot,Xp=new A,fo=class extends Bt{constructor(){super(),this.uuid=ke.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 Wt().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 Ui.makeRotationX(e),this.applyMatrix4(Ui),this}rotateY(e){return Ui.makeRotationY(e),this.applyMatrix4(Ui),this}rotateZ(e){return Ui.makeRotationZ(e),this.applyMatrix4(Ui),this}translate(e,t,n){return Ui.makeTranslation(e,t,n),this.applyMatrix4(Ui),this}scale(e,t,n){return Ui.makeScale(e,t,n),this.applyMatrix4(Ui),this}lookAt(e){return r0.lookAt(e),r0.updateMatrix(),this.applyMatrix4(r0.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 A().fromBufferAttribute(s,d)),a!==void 0&&t.colors.push(new Ne().fromBufferAttribute(a,d));function c(d,f,p,m){let g=a===void 0?[]:[t.colors[d].clone(),t.colors[f].clone(),t.colors[p].clone()],y=o===void 0?[]:[new A().fromBufferAttribute(o,d),new A().fromBufferAttribute(o,f),new A().fromBufferAttribute(o,p)],v=new yc(d,f,p,y,g,m);t.faces.push(v),l!==void 0&&t.faceVertexUvs[0].push([new N().fromBufferAttribute(l,d),new N().fromBufferAttribute(l,f),new N().fromBufferAttribute(l,p)]),u!==void 0&&t.faceVertexUvs[1].push([new N().fromBufferAttribute(u,d),new N().fromBufferAttribute(u,f),new N().fromBufferAttribute(u,p)])}let h=e.groups;if(h.length>0)for(let d=0;d<h.length;d++){let f=h[d],p=f.start,m=f.count;for(let g=p,y=p+m;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(Xp).negate(),this.translate(Xp.x,Xp.y,Xp.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,n=t===0?1:1/t,i=new _e;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 A,t=new A;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 A;if(e){let n=new A,i=new A;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 fo;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 A,c={a:new A,b:new A,c:new A};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 Mt),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 Wt().getNormalMatrix(t));for(let d=0,f=a.length;d<f;d++){let m=a[d].clone();t!==void 0&&m.applyMatrix4(t),o.push(m)}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 p=u[d],m,g,y=p.vertexNormals,v=p.vertexColors,w=new yc(p.a+s,p.b+s,p.c+s);w.normal.copy(p.normal),i!==void 0&&w.normal.applyMatrix3(i).normalize();for(let b=0,S=y.length;b<S;b++)m=y[b].clone(),i!==void 0&&m.applyMatrix3(i).normalize(),w.vertexNormals.push(m);w.color.copy(p.color);for(let b=0,S=v.length;b<S;b++)g=v[b],w.vertexColors.push(g.clone());w.materialIndex=p.materialIndex+n,l.push(w)}for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,g=p.length;m<g;m++){let y=p[m],v=[];for(let w=0,b=y.length;w<b;w++)v.push(y[w].clone());this.faceVertexUvs[d].push(v)}}}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 A(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 p=this.parameters;for(let m in p)p[m]!==void 0&&(e[m]=p[m]);return e}let t=[];for(let p=0;p<this.vertices.length;p++){let m=this.vertices[p];t.push(m.x,m.y,m.z)}let n=[],i=[],s={},o=[],a={},l=[],u={};for(let p=0;p<this.faces.length;p++){let m=this.faces[p],g=!0,y=!1,v=this.faceVertexUvs[0][p]!==void 0,w=m.normal.length()>0,b=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.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,v),M=c(M,4,w),M=c(M,5,b),M=c(M,6,S),M=c(M,7,_),n.push(M),n.push(m.a,m.b,m.c),n.push(m.materialIndex),v){let x=this.faceVertexUvs[0][p];n.push(f(x[0]),f(x[1]),f(x[2]))}if(w&&n.push(h(m.normal)),b){let x=m.vertexNormals;n.push(h(x[0]),h(x[1]),h(x[2]))}if(S&&n.push(d(m.color)),_){let x=m.vertexColors;n.push(d(x[0]),d(x[1]),d(x[2]))}}function c(p,m,g){return g?p|1<<m:p&~(1<<m)}function h(p){let m=p.x.toString()+p.y.toString()+p.z.toString();return s[m]!==void 0||(s[m]=i.length/3,i.push(p.x,p.y,p.z)),s[m]}function d(p){let m=p.r.toString()+p.g.toString()+p.b.toString();return a[m]!==void 0||(a[m]=o.length,o.push(p.getHex())),a[m]}function f(p){let m=p.x.toString()+p.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(p.x,p.y)),u[m]}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 fo().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 p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,g=p.length;m<g;m++){let y=p[m],v=[];for(let w=0,b=y.length;w<b;w++){let S=y[w];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let s=e.morphTargets;for(let d=0,f=s.length;d<f;d++){let p={};if(p.name=s[d].name,s[d].vertices!==void 0){p.vertices=[];for(let m=0,g=s[d].vertices.length;m<g;m++)p.vertices.push(s[d].vertices[m].clone())}if(s[d].normals!==void 0){p.normals=[];for(let m=0,g=s[d].normals.length;m<g;m++)p.normals.push(s[d].normals[m].clone())}this.morphTargets.push(p)}let o=e.morphNormals;for(let d=0,f=o.length;d<f;d++){let p={};if(o[d].vertexNormals!==void 0){p.vertexNormals=[];for(let m=0,g=o[d].vertexNormals.length;m<g;m++){let y=o[d].vertexNormals[m],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),p.vertexNormals.push(v)}}if(o[d].faceNormals!==void 0){p.faceNormals=[];for(let m=0,g=o[d].faceNormals.length;m<g;m++)p.faceNormals.push(o[d].faceNormals[m].clone())}this.morphNormals.push(p)}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 i0().fromGeometry(this),t=new Ie,n=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new Ge(n,3).copyVector3sArray(e.vertices)),e.normals.length>0){let i=new Float32Array(e.normals.length*3);t.setAttribute("normal",new Ge(i,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let i=new Float32Array(e.colors.length*3);t.setAttribute("color",new Ge(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let i=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new Ge(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new Ge(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 we(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 we(e.skinIndices.length*4,4);t.setAttribute("skinIndex",i.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let i=new we(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 Ie,n=e.geometry;if(e.isPoints||e.isLine){let i=new we(n.vertices.length*3,3),s=new we(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 we(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}};fo.prototype.isGeometry=!0;var i0=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,p=e.skinWeights,m=f.length===n.length,g=p.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 v=t[y];this.vertices.push(n[v.a],n[v.b],n[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let b=v.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let S=v.color;this.colors.push(S,S,S)}if(s===!0){let S=i[0][y];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new N,new N,new N))}if(o===!0){let S=i[1][y];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new N,new N,new N))}for(let S=0;S<l;S++){let _=a[S].vertices;u[S].data.push(_[v.a],_[v.b],_[v.c])}for(let S=0;S<h;S++){let _=c[S].vertexNormals[y];d[S].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),g&&this.skinWeights.push(p[v.a],p[v.b],p[v.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}},yc=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 A,this.vertexNormals=Array.isArray(i)?i:[],this.color=s&&s.isColor?s:new Ne,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 tG=["a","b","c"];function nG(r,e){switch(e){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function s0(r,e,t){let n=Math.min(r,e),i=Math.max(r,e),s=n+"_"+i;return t.get(s)}function o0(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 rG(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],o0(o.a,o.b,r,n,o,t),o0(o.b,o.c,r,n,o,t),o0(o.c,o.a,r,n,o,t)}function Yp(r,e,t,n,i){r.push(new yc(e,t,n,void 0,void 0,i))}function vc(r,e){return Math.abs(e-r)/2+Math.min(r,e)}function Qp(r,e,t,n){r.push([e.clone(),t.clone(),n.clone()])}var Zp=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof Ie?e=new fo().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 A,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;rG(l,u,d,f);let p=[],m,g,y,v,w,b,S;for(let $ of Array.from(f.keys())){for(g=f.get($),y=new A,w=3/8,b=1/8,S=g.faces.length,S!=2&&(w=.5,b=0,S!=1),y.addVectors(g.a,g.b).multiplyScalar(w),t.set(0,0,0),o=0;o<S;o++){for(v=g.faces[o],a=0;a<3&&(m=l[nG(v,tG[a])],!(m!==g.a&&m!==g.b));a++);m&&t.add(m)}t.multiplyScalar(b),y.add(t),g.newEdge=p.length,p.push(y)}let _,M,x,T,E,C,D,I=[];for(i=0,s=l.length;i<s;i++){for(C=l[i],E=d[i].edges,n=E.length,n==3?_=3/16:n>3&&(_=3/(8*n)),M=1-n*Number(_),x=_,n<=2&&(n==2?(M=3/4,x=1/8):n==1||n==0),D=C.clone().multiplyScalar(M),t.set(0,0,0),o=0;o<n;o++)T=E[o],m=T.a!==C?T.a:T.b,t.add(m);t.multiplyScalar(Number(x)),D.add(t),I.push(D)}let R=I.concat(p),F=I.length,B,X,Y,G=[],z=[],V,U,H,j,Q=new N,q=new N,ae=new N;for(i=0,s=u.length;i<s;i++)v=u[i],B=Number(s0(v.a,v.b,f).newEdge)+F,X=Number(s0(v.b,v.c,f).newEdge)+F,Y=Number(s0(v.c,v.a,f).newEdge)+F,Yp(G,B,X,Y,v.materialIndex),Yp(G,v.a,B,Y,v.materialIndex),Yp(G,v.b,X,B,v.materialIndex),Yp(G,v.c,Y,X,v.materialIndex),h&&(V=c[i],U=V[0],H=V[1],j=V[2],Q.set(vc(U.x,H.x),vc(U.y,H.y)),q.set(vc(H.x,j.x),vc(H.y,j.y)),ae.set(vc(U.x,j.x),vc(U.y,j.y)),Qp(z,Q,q,ae),Qp(z,U,Q,ae),Qp(z,H,q,Q),Qp(z,j,ae,q));e.vertices=R,e.faces=G,h&&(e.faceVertexUvs[0]=z)}};var _n=new A,V_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=r.geometry??e?.geometry??new Ie().copy(new ur(100,100,100)),n;e===void 0?(t.computeBoundingBox(),t.boundingBox.getSize(_n),n={width:_n.x,height:_n.y,depth:_n.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 Ie().copy(new ur(100,100,100)),o=s.userData.parameters;o===void 0?(s.computeBoundingBox(),s.boundingBox.getSize(_n)):_n.set(o.width,o.height,o.depth),(e!==_n.x||t!==_n.y||n!==_n.z)&&s.scale(_n.x===0?1:e/_n.x,_n.y===0?1:t/_n.y,_n.z===0?1:n/_n.z);let a=s.originalGeometry;return i>0?(a===void 0||o?.subdivisions!==i)&&(a===void 0&&(a=s),s=new Zp(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 al(t).load(r,i=>{let s=this.normalizeInputs({geometry:i});i.boundingBox.getSize(_n);let o=100/_n.x;Object.assign(s.parameters,{width:100,height:_n.y*o,depth:_n.z*o}),e(this.build(s))})}};var H_=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 bt?r.shape:new bt,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 m=0;m<n;m++){let g=f*m,y=h+Math.sin(g)*u,v=d+Math.cos(g)*c;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let m=0,g=l.points.length;m<g;m++)l.points[m].roundness=i;l.roundness=i,l.update();let p=or.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...r,type:"PolygonGeometry"}})}};var W_=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 l0(e*.5,t,i,s,o,a,l);return u.scale(1,1,n/e),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function wh(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function a0(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 iG(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.projectOnVector(i),n.add(e)}var l0=class extends Ie{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,p=Math.PI/n,m=e*Math.cos(Math.PI/n),g=2*Math.PI/n,y=(n-2)*Math.PI/n,v=Math.PI-y,w=new A(0,-f,0),b=new A(0,f,0),S=new N(e,-f),_=new N(m,-f),M=new N(0,b.y).sub(_),x=new N(0,b.y).sub(S),T=new N(M.y,-M.x).normalize(),E=new N(x.y,-x.x).normalize(),D=e*Math.cos(Math.PI/n)*Math.tan((Math.PI-M.angle())/2)-1e-8;o=Math.min(o,D);let I;{let z=new A(T.x,T.y,0),V=new A(Math.cos(g)*z.x,z.y,Math.sin(g)*z.x);I=z.angleTo(V)}let R=o/Math.tan((Math.PI-M.angle())/2),F=o/Math.tan((Math.PI-I)/2),B=new A;if(!s){u.push(w.x,w.y,w.z),c.push(0,-1,0),h.push(0,0);let z=d++,V=[],U=S.clone(),H=R/Math.cos(Math.PI/n);U.x-=H;for(let j=0;j<n;j++){let Q=j/n*Math.PI*2+p,q=new N(Math.sin(Q),Math.cos(Q));wh(U,q,B),u.push(B.x,B.y,B.z),c.push(0,-1,0),h.push(0,0),V.push(d++)}for(let j=0;j<V.length;j++)l.push(V[j],z,V[(j+1)%V.length])}let X=[];{let z=new A,V=new A,U=new A,H=new A,j=new A,Q=new A;for(let q=0;q<n;q++){let ae=q/n*Math.PI*2+p,$=(q+.5)/n*Math.PI*2+p,te=(q+1)/n*Math.PI*2+p,W=new N(Math.sin(ae),Math.cos(ae)),le=new N(Math.sin($),Math.cos($)),ce=new N(Math.sin(te),Math.cos(te));wh(S,W,V),wh(S,ce,U),wh(T,le,z),a0(b,V,U,F,F,H),u.push(H.x,H.y,H.z),a0(V,b,U,F,R,j),u.push(j.x,j.y,j.z),a0(U,V,b,R,F,Q),u.push(Q.x,Q.y,Q.z),c.push(z.x,z.y,z.z),c.push(z.x,z.y,z.z),c.push(z.x,z.y,z.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 Pe=V.clone().add(U).multiplyScalar(.5),ye=b.clone().sub(Pe).normalize(),pt=w.clone().sub(Pe).normalize().add(ye).normalize().multiplyScalar(-1),L=Q.clone().sub(j);Y(Pe,L,pt,M.angle())}let fe,Ee;{let Pe=new A;wh(E,ce,Pe);let ye=Q.clone().add(H).multiplyScalar(.5);ye=iG(ye,U,b);let Oe=Q.clone().sub(H);[fe,Ee]=Y(ye,Oe,Pe,I,H.y)}{let Pe=fe,ye=Pe.clone().setY(0).normalize(),Oe=new A(0,-1,0),pt=ye.clone().cross(Oe);G(Pe,ye,Oe,pt)}X.concat(Ee);{let Pe=M.angle(),ye=Math.PI-Pe,Oe=b.clone();Oe.y-=o/Math.sin(Pe-Math.PI/2);let pt=new A,L=[];for(let K=0;K<a;K++){let he=[],pe=Math.PI/2-ye*K/a,Ce=Math.cos(pe),Fe=Math.sin(pe),re=$;for(let Be=0;Be<=K;Be++){let Le=Math.cos(re),ve=Math.sin(re);z.x=Ce*ve,z.y=Fe,z.z=Ce*Le,pt.copy(Oe).addScaledVector(z,o),u.push(pt.x,pt.y,pt.z),c.push(z.x,z.y,z.z),h.push(0,0),he.push(d++),re+=Math.PI*2/K/n}L.push(he)}Ee.reverse(),L.push(Ee);let P=L.length-1;for(let K=0;K<P;K++){let he=L[K],pe=L[K+1],Ce=he.length-1;l.push(pe[1],he[0],pe[0]);for(let Fe=1;Fe<=Ce;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 we(u,3)),this.setAttribute("normal",new we(c,3)),this.setAttribute("uv",new we(h,2));function Y(z,V,U,H,j){let Q=-H/2,q=(Math.PI-H)/2,ae=V.clone().normalize().cross(U);z.addScaledVector(U,-o/Math.sin(q));let $=new A,te=new A,W=1,le=d,ce=[];for(let oe=0;oe<=a;oe++){let de=Q+oe/a*H;te.set(0,0,0),te.addScaledVector(ae,Math.sin(de)),te.addScaledVector(U,Math.cos(de));for(let ge=0;ge<=W;ge++){let fe=ge/W-.5;if($.copy(z),$.addScaledVector(V,fe),$.addScaledVector(te,o),j!=null){let Ee=Math.max(0,$.y-j);$.addScaledVector(V,-Ee/V.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<W;de++){let ge=le+de+(W+1)*oe,fe=ge+(W+1),Ee=fe+1,Pe=ge+1;l.push(ge,fe,Pe),l.push(fe,Ee,Pe)}return[z.clone().addScaledVector(V,.5),ce]}function G(z,V,U,H){let j=Math.PI/2,Q=x.angle()-j,q=[],ae=new A,$=new A;for(let W=0;W<=a;W++){let le=[],ce=W/a;for(let oe=0;oe<=W;oe++){let ge=((W?oe/W:0)-.5)*v,fe=Math.cos(ge),Ee=Math.sin(ge),Pe=Math.atan(Math.tan(Q)*fe),ye=(j+Pe)*ce,Oe=Math.cos(ye),pt=Math.sin(ye);ae.set(0,0,0),ae.addScaledVector(V,pt*fe),ae.addScaledVector(U,Oe),ae.addScaledVector(H,pt*Ee),$.copy(z).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 W=0;W<te;W++){let le=q[W],ce=q[W+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 j_=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 bt?r.shape:new bt,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,S,_){return S>t&&_>n?Math.min(b*t/S,b*n/_):S>t?b*t/S:_>n?b*n/_: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 p=c.x,m=h.x,g=h.y,y=c.y;e.addPoint(e.createPoint(p,g)),e.addPoint(e.createPoint(m,g)),e.addPoint(e.createPoint(m,y)),e.addPoint(e.createPoint(p,y)),e.isClosed=!0;let v=!0;for(let b=0,S=e.points.length;b<S;b++)e.points[b].roundness=f[b],b>0&&f[b]!==f[b-1]&&(v=!1);v&&(e.roundness=f[0]),e.useCubicForRoundedCorners=s!==1,e.update();let w=or.create({shape:e,parameters:{depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...r,type:"RectangleGeometry"}})}};var q_=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 ko(.5*e,i,s,o,a,l,u);return c.scale(1,t/e,n/e),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};var X_=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 us(e,t,n,i);return s.scale(1,1,1),Object.assign(s,{userData:{...r,type:"PlaneGeometry"}})}};var Y_=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 c0(e,t,n,i,s,o);return Object.assign(a,{userData:{...r,type:"BackdropGeometry"}})}},c0=class extends Ie{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,W=0)=>new A($,te,W),p=f(),m=f(),[g,y,v]=[t/2,e/2,n/2],w=-y,b=+y,[S,_,M]=[f(w,-g,+v),f(w,-g,-v),f(w,+g,-v)],x=($,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-v,C=S.z-c;i<=d?(M.z=Math.min(E,C),M.z==C&&(M.y-=(E-C)/Math.tan(d-i))):_.z=Math.min(_.z-E-v,S.z-c),p.subVectors(S,_),m.subVectors(M,_);let D=Math.min(p.length(),m.length())*s/100,I=D*Math.tan(i/2),R=D/Math.cos(i/2),F=p.clone().normalize().add(m.normalize()).setLength(R).add(_);p.set(0,x(i,!0),T(i,!0)),h.push([M,p.clone()]);let B=(Math.PI-i)/o;for(let $=0;$<=o;$++){let te=d+i+$*B;p.set(0,Math.sin(te)*I,Math.cos(te)*I),p.add(F),m.set(0,x(te),T(te)),h.push([p.clone(),m.clone()])}h.push([S,f(0,1,0)]);let X=Math.sin(B/2)*I*2,Y=h.length-1,G=h[0][0].distanceTo(h[1][0]),z=h[Y-1][0].distanceTo(h[Y][0]),V=G+X*o+z;h[0].push(1);for(let $=0;$<=o;$++)h[$+1].push(1-(G+$*X)/V);h[Y].push(0);let[U,H,j]=h[0],Q,q,ae;for(let $=1;$<h.length;$++)[Q,q,ae]=h[$],a.push(w,U.y,U.z,w,Q.y,Q.z,b,U.y,U.z,b,U.y,U.z,w,Q.y,Q.z,b,Q.y,Q.z),l.push(0,H.y,H.z,0,q.y,q.z,0,H.y,H.z,0,H.y,H.z,0,q.y,q.z,0,q.y,q.z),u.push(0,j,0,ae,1,j,1,j,0,ae,1,ae),[U,H,j]=[Q,q,ae];this.setAttribute("position",new we(a,3)),this.setAttribute("normal",new we(l,3)),this.setAttribute("uv",new we(u,2))}};var Q_=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 bt?r.shape:new bt,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,p=0,m=o*Math.PI/360/i,g=Math.PI/2*3*-1,y=h*n/100,v=d*n/100;if(i===3&&n===50){m=2*Math.PI/i;for(let b=0;b<i;b++){let S=m*b,_=f+Math.sin(S)*h,M=p+Math.cos(S)*d;c.addPoint(c.createPoint(_,M))}}else for(let b=0;b<i;b++){let S=f+Math.cos(g)*h,_=p+Math.sin(g)*d;c.addPoint(c.createPoint(S,_)),g+=m,S=f+Math.cos(g)*y,_=p+Math.sin(g)*v,b<=i,c.addPoint(c.createPoint(S,_)),g+=m}c.isClosed=!0;for(let b=0,S=c.points.length;b<S;b++)c.points[b].roundness=s;c.roundness=s,c.update();let w=or.create({shape:c,parameters:{roundness:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...r,type:"StarGeometry"}})}};var Kp=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 us(e,t);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var Z_=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=sG(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 sG(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 xh(!0,r,e,t,n,i,s,o,a,l,u,c)}var K_=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 il(a,t,n,i,s,o);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var J_=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 bt?r.shape:new bt,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=or.create({shape:l,parameters:{roundness:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o}});return Object.assign(h,{userData:{...r,type:"TriangleGeometry"}})}};var eM,Jp=new Promise(r=>{eM=r}),$_=!1;async function tM(){if($_)return;let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.112/build",[t,n]=await Promise.all([import("./process.js"),fetch(`${e}/process.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:n});eM(s),$_=!0}function $p(r,e){return aG(r)}function aG(r){let e={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=bt.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 al().parse(r));let t;try{t=Sh(e)}catch(n){console.error(n)}if(!t){let n=bt.createFromState(jl.defaultData(),100,100);e.shape=n,t=Sh(e)}return t}var je;Jp.then(r=>{je=r});var nM=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),rM=new Uint32Array([0,1,2,3]),iM=new Uint8Array([4]),Xr=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&&(je.free_bvh(t),je.free_subdivision_surface(t));try{s=Xr.allocate(r,i)}catch(u){console.error(u,r),s=Xr.allocate({positionWASM:nM,indexWASM:rM,verticesPerFaceWASM:iM},i)}je.set_destination_refinement_level(s,0),o=Xr.buildLevel(s,!0,l)}else s=t,r.phongAngle!==void 0&&(o=Xr.buildLevel(s,!0,l));return r.subdivisions!==void 0&&(je.set_destination_refinement_level(s,r.subdivisions),r.subdivisions>0?a=Xr.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:$p(r),n,i,s,o;({positions:n,triIndices:o}=Ah(t.getAttribute("position"),t.getIndex()));let a;if(r.type==="CylinderGeometry"&&r.cornerRadius===0&&r.hollow===0&&r.openEnded===!1){let l=r.radialSegments*r.heightSegments*3*2,u=l+r.radialSegments*3;a=[l,u]}return{indices:i,verticesPerFace:s}=f0(n,o,t,a),{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=nM,n=rM,i=iM);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,p=h*Uint32Array.BYTES_PER_ELEMENT,m=je._malloc(d),g=new Float32Array(je.HEAPF32.buffer,m,c),y=new Uint32Array(je.HEAPU32.buffer,m+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 v;r?.scaleBaked?.some(b=>b!==1)&&(v=new _e().makeScale(...r.scaleBaked)),e&&(v?v.premultiply(e):v=e);let w=v?je.alloc_subdivision_surface2(m,a,m+f,l,m+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u,v.elements):je.alloc_subdivision_surface(m,a,m+f,l,m+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return je._free(m),w}static buildLevel(r,e,t,n,i){let s=i?je.get_mesh_data2(r,e?je.Level.CONTROL:je.Level.REFINED,t,i.elements):je.get_mesh_data(r,e?je.Level.CONTROL:je.Level.REFINED,t),o=8,a=je.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),u=0,c=je.HEAPU32[a[u]>>2],h=je.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let d=je.HEAPU32[a[u]>>2],f=je.HEAPF32.subarray(d>>2,(d>>2)+l[u]);u++;let p=je.HEAPU32[a[u]>>2],m=je.HEAPU32.subarray(p>>2,(p>>2)+l[u]);u++;let g=je.HEAPU32[a[u]>>2],y=je.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let v=new Ie;if(v.setIndex(new zs(y,1)),v.setAttribute("position",new we(h,3)),v.setAttribute("normal",new we(f,3)),e){v.setAttribute("faceMap",new zs(m,1));let w=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new Ge(w,4))}return je.free_mesh_data(s),v.userData.type="SubdivGeometry",v}n.getAttribute("position").copyArray(h),n.getAttribute("normal").copyArray(f),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,je.free_mesh_data(s)}static buildControlCageWireframe(r,e,t){let n=je.get_wireframe_data_for_base_level(r),i=4,s=je.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(2,2+2),a=0,l=je.HEAPU32[s[a]>>2],u=je.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let c=je.HEAPU32[s[a]>>2],h=je.HEAPU32.subarray(c>>2,(c>>2)+o[a]);if(e===void 0){let d=new Ie;d.setAttribute("position",new we(u,3));let f=new Float32Array(u.length);for(let p=0,m=u.length;p<m;)f[p++]=t.r,f[p++]=t.g,f[p++]=t.b;return d.setAttribute("color",new Ge(f,3)),d.setIndex(new zs(h,1)),je.free_wireframe_data_for_base_level(n),d}e.getAttribute("position").copyArray(u),e.attributes.position.needsUpdate=!0,je.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,e,t){let n=e===0;n||je.set_destination_refinement_level(r,e);let i=t?je.get_topological_data2(r,n?je.Level.CONTROL:je.Level.REFINED,t.elements):je.get_topological_data(r,n?je.Level.CONTROL:je.Level.REFINED),s=6,o=je.HEAPU32.subarray(i>>2,(i>>2)+s),a=o.subarray(3,3+3),l=0,u=je.HEAPU32[o[l]>>2],c=new Float32Array(je.HEAPF32.subarray(u>>2,(u>>2)+a[l]));l++;let h=je.HEAPU32[o[l]>>2],d=new Uint32Array(je.HEAPU32.subarray(h>>2,(h>>2)+a[l]));l++;let f=je.HEAPU32[o[l]>>2],p=new Uint8Array(je.HEAPU32.subarray(f>>2,(f>>2)+a[l]));return je.free_topological_data(i),{positions:c,indices:d,verticesPerFace:p}}};var sM=["getX","getY","getZ"];function Ah(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[sM[d]](c)*a)},`;if(h in t)s.push(t[h]);else{for(let d=0;d<3;d++)o.push(r[sM[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 em=new A,u0=new A,h0=new A,d0=new A;function f0(r,e,t,n){let i=[],s=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0&&t.userData.shape.shapeHoles.length===0){let o=t.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let u=0;u<o.length;u+=2)a+=(o[u]-o[(u===0?o.length:u)-2])*(o[u+1]+o[(u===0?o.length:u)-1]);r.length=0;let l=0;if(a<0)for(let u=0;u<o.length;u+=2)r.push(o[u],o[u+1],0),i.push(l++);else for(let u=o.length-2;u>=0;u-=2)r.push(o[u],o[u+1],0),i.push(l++);return s.push(l),{indices:i,verticesPerFace:s}}for(let o=0,a=t.capStartIndex??e.length;o<a;)if(e[o+1]===e[o+3]&&e[o+2]===e[o+5]||e[o+0]===e[o+3]&&e[o+2]===e[o+4]){em.set(r[e[o]*3],r[e[o]*3+1],r[e[o]*3+2]),u0.set(r[e[o+1]*3],r[e[o+1]*3+1],r[e[o+1]*3+2]),h0.set(r[e[o+4]*3],r[e[o+4]*3+1],r[e[o+4]*3+2]),d0.set(r[e[o+5]*3],r[e[o+5]*3+1],r[e[o+5]*3+2]),u0.sub(em).normalize(),h0.sub(em).normalize(),d0.sub(em).normalize();let l=u0.cross(h0).dot(d0);Math.abs(l)>.005||n&&n.some((u,c)=>c%2===1?!1:o>=n[c]&&o<n[c+1])?(i.push(e[o],e[o+1],e[o+2]),s.push(3),o+=3):(i.push(e[o],e[o+1],e[o+4],e[o+5]),s.push(4),o+=6)}else i.push(e[o],e[o+1],e[o+2]),s.push(3),o+=3;if(t.capStartIndex!==void 0){let o=[],a=[],l=0,u=new Float32Array([t.userData.parameters.depth])[0];for(let c=0,h=0;c<r.length;c+=3,h++)r[c+2]===0&&(o.push(h),l++),r[c+2]===u&&a.push(h);if(t.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}o.reverse(),i.push(...o,...a),s.push(l,l)}return{indices:i,verticesPerFace:s}}var di={};Mx(di,{calcBoolean:()=>uG,calcBooleanTopological:()=>cG,freeMeshSet:()=>fG,getMeshSet:()=>hG,transformMeshSet:()=>dG});var aM,lM=new Promise(r=>{aM=r}),oM=!1;async function cM(){if(oM)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.112/build",[t,n]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:n});aM(s),oM=!0}var it,xc;lM.then(r=>it=r);function lG(r,e,t){let n,{positions:i,triIndices:s}=Ah(r.getAttribute("position"),r.getIndex()),o;if(e&&t){let{indices:a,verticesPerFace:l}=f0(i,s,r);o=l.length,n=[];for(let u=0,c=0;u<o;u++){n.push(l[u]);for(let h=0;h<l[u];h++)n.push(a[c++])}}else{let a=s.length;n=Array(a+a/3),o=0;for(let l=0,u=0;u<n.length;)n[u++]=3,o++,n[u++]=s[l++],n[u++]=s[l++],n[u++]=s[l++]}return{positions:i,faceIndices:n,nFaces:o}}function uM(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 hM(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 cG(r,e){xc===void 0&&(xc=it.init_csg());let t=uM(r),n=it.csg_calc_topological(xc,t,r.length,hM(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 uG(r,e,t,n){xc===void 0&&(xc=it.init_csg());let i=uM(r),s=it.csg_calc(xc,i,r.length,n,hM(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 p=l[u];t.setAttribute("position",new we(h,3)),t.setAttribute("normal",new we(f,3));let m=it.HEAPF32.subarray((s>>2)+5,(s>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Ln),t.boundingSphere.center.set(m[0],m[1],m[2]),t.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,t.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},it.free_mesh_data(s),p}function hG(r,e,t){if(it===void 0)return-1;let n,i,s;if(e&&r.userData.positions!==void 0){let g=r.userData;s=g.verticesPerFace.length,n=g.positions,i=Array(g.verticesPerFace.reduce((y,v)=>y+v,0)+s);for(let y=0,v=0,w=0;y<g.verticesPerFace.length;y++){i[w++]=g.verticesPerFace[y];for(let b=0;b<g.verticesPerFace[y];b++)i[w++]=g.indices[v++]}}else({positions:n,faceIndices:i,nFaces:s}=lG(r,e,t));let o=n.length,a=i.length,l=n.length,u=i.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,h=l*Float32Array.BYTES_PER_ELEMENT,d=u*Uint32Array.BYTES_PER_ELEMENT,f=it._malloc(c),p=new Float32Array(it.HEAPF32.buffer,f,l),m=new Uint32Array(it.HEAPU32.buffer,f+h,u);return p.set(n,0),m.set(i,0),it.get_csg_mesh(f,o,f+h,a,s)}function dG(r,e){it.transform_csg_mesh(r,e.elements)}function fG(r){it.free_csg_mesh(r)}var p0={ConeGeometry:C_,CubeGeometry:P_,CylinderGeometry:E_,DodecahedronGeometry:D_,EllipseGeometry:B_,HelixGeometry:z_,IcosahedronGeometry:G_,LatheGeometry:k_,NonParametricGeometry:V_,PolygonGeometry:H_,PyramidGeometry:W_,RectangleGeometry:j_,SphereGeometry:q_,PlaneGeometry:X_,BackdropGeometry:Y_,StarGeometry:Q_,TextFrameGeometry:Kp,TorusGeometry:Z_,TorusKnotGeometry:K_,TriangleGeometry:J_,VectorGeometry:or},Sh=r=>p0[r.type].create(r);function fn(r,e){return e.color(r)}var Yr=r=>"isEntity"in r,vt=r=>"isAbstractMesh"in r,Et=r=>r!==null&&r.objectType==="BooleanObject",dM=r=>r.objectType==="CombinedCamera",fM=r=>Yr(r)&&(r.objectType==="LightDirectional"||r.objectType==="LightSpot"||r.objectType==="LightPoint");var m0=r=>r.objectType==="EmptyObject",tm=r=>"objectHelper"in r;function g0(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??Pi.identity)),t&&(r.updateMatrix(),Et(r.parent)&&vt(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 pG(r,e){g0(r,e),e.name!==void 0&&(r.name=e.name),e.visible!==void 0&&(r.visible=e.visible)}function pM(r,e,t){pG(r,e),e.color!==void 0&&(r.color=fn(e.color,t)),e.intensity!==void 0&&(r.intensity=e.intensity),e.shadows!==void 0&&!(r instanceof Wo)&&(r.castShadow=e.shadows),r.shadow&&!(r instanceof Wo)&&e.depth!==void 0&&(r.shadow.camera.far=e.depth,r.shadow.needsUpdate=!0)}function mM(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 nm=r=>class extends r{hasEntityChild(){return this.children.some(t=>Yr(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 _e().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),Yr(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 bc=new Mt,zi=new A,Gi=new A,wc=new _e,yM=[new A(-1,1,1),new A(-1,-1,1),new A(1,-1,1),new A(1,1,1),new A(-1,1,-1),new A(-1,-1,-1),new A(1,-1,-1),new A(1,1,-1)],mG=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],gG=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function yG(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 gM=(r,e,t)=>{if(vt(r)){let n=r.geometry.userData.parameters,i=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?zi.copy(r.originalGeometry.boundingSphere.center):i!==void 0&&(yG(bc,i,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:i.count),bc.getCenter(zi)),r.forceComputeSize?bc.getSize(Gi).multiplyScalar(.5):Gi.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(tm(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");bc.setFromArray(n.array),bc.getCenter(zi),bc.getSize(Gi).multiplyScalar(.5)}else zi.setScalar(0),Gi.setScalar(0);wc.copy(e).multiply(r.matrixWorld),Gi.x===0&&Gi.y===0&&Gi.z===0?t.push(new A(zi.x,zi.y,zi.z).applyMatrix4(wc)):yM.forEach(n=>{t.push(n.clone().multiply(Gi).add(zi).applyMatrix4(wc))})},_h=class extends Mt{constructor(){super(...arguments);this.matrix=new _e;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 _e().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&&gM(o,n,s)}):gM(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(wc.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(Gi).multiplyScalar(.5),this.getCenter(zi),wc.copy(this.matrix).setPosition(zi),this.vertices=yM.map(t=>t.clone().multiply(Gi).applyMatrix4(wc))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=mG.map(([t,n])=>new xn(this.vertices[t],this.vertices[n])),this.centerEdges=this.edges.map(t=>t.getCenter(new A))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=gG.map(([t,n])=>this.vertices[t].clone().add(this.vertices[n]).multiplyScalar(.5))}};var ki=r=>"isEntity"in r,vM=r=>"isAbstractMesh"in r,Qr=r=>class extends nm(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new _e;this._singleBBox=new _h;this._recursiveBBox=new _h;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=>{ki(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)ki(i)&&i.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let i of this.children)ki(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)ki(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let n=new _e,i=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(i);for(let s of this.children)ki(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 Ul(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 Ul(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 Mh=class{constructor(e){e=e??{},this.name=e.name,this.type=e.type,this.node=e.node,this.size=e.size,this.needsUpdate=e.needsUpdate}get value(){return this.node.value}set value(e){this.node.value=e}};var Nn=class{constructor(e){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=ke.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 Nn&&(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 y0=class{constructor(){this.nodes={};this.keywords={}}add(e){this.nodes[e.name]=e}addKeyword(e,t,n){n=n!==void 0?n:!0,this.keywords[e]={callback:t,cache:n}}remove(e){delete this.nodes[e.name]}removeKeyword(e){delete this.keywords[e]}get(e){return this.nodes[e]}getKeyword(e,t){return this.keywords[e].callback(t)}getKeywordData(e){return this.keywords[e]}contains(e){return this.nodes[e]!==void 0}containsKeyword(e){return this.keywords[e]!==void 0}},Mn=new y0;var ze=class extends Nn{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=ke.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 It=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 Fn=class extends It{constructor(t=0,n){super("v2");this.nodeType="Vector2";this.value=t instanceof N?t:new N(t,n)}get x(){return this.value.x}set x(t){this.value.x=t}get y(){return this.value.y}set y(t){this.value.y=t}generateReadonly(t,n,i,s,o,a){return t.format("vec2("+this.value.x+", "+this.value.y+")",s,n)}};var Vn=class extends It{constructor(t=0,n,i){super("v3");this.nodeType="Vector3";this.value=t instanceof A?t:new A(t,n,i)}get x(){return this.value.x}set x(t){this.value.x=t}get y(){return this.value.y}set y(t){this.value.y=t}get z(){return this.value.z}set z(t){this.value.z=t}generateReadonly(t,n,i,s,o,a){return t.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",s,n)}};var Tn=class extends Ne{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 Zr=class extends It{constructor(t){super("v4");this.nodeType="Vector4";this.value=t instanceof Tn?t:new Tn(t.r,t.g,t.b,t.a)}generateReadonly(t,n,i,s,o,a){return t.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",s,n)}};var vG=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,xM=/[a-z_0-9]+/gi,Me=class extends ze{constructor(t,n,i,s,o){super(o);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=o===void 0,this.isInterface=!1,this.parse(t,n,i,s)}getShared(t,n){return!this.isMethod}getType(t){return t.getTypeByFormat(this.type)}getInputByName(t){if(this.inputs){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===t)return this.inputs[n]}}getIncludeByName(t){if(this.includes){let n=this.includes.length;for(;n--;)if(this.includes[n].name===t)return this.includes[n]}}generate(t,n,i,s,o){let a,l=0,u=this.src;if(this.includes)for(let h=0;h<this.includes.length;h++)t.include(this.includes[h],this);for(let h in this.extensions)t.extensions[h]=!0;let c=[];for(;a=xM.exec(this.src);)c.push(a);for(let h=0;h<c.length;h++){let d=c[h],f=d[0],p=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&p&&Mn.containsKeyword(f)){let g=this.keywords[f];if(!g){let y=Mn.getKeywordData(f);y.cache&&(g=t.keywords[f]),g=g||Mn.getKeyword(f,t),y.cache&&(t.keywords[f]=g)}m=g.build(t)}f!==m&&u[d.index+l-1]!=="."&&(u=u.substring(0,d.index+l)+m+u.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Mn.contains(m)&&t.include(Mn.get(m))}return n==="source"?u:this.isMethod?(this.isInterface||t.include(this,void 0,u),this.name):t.format("( "+u+" )",this.getType(t),n)}parse(t,n,i,s){if(this.src=t||"",this.includes=n??[],this.extensions=i??{},this.keywords=s??{},this.isMethod){let o=vG.exec(this.src);if(this.inputs=[],o&&o.length==4){this.type=o[1],this.name=o[2];let a=o[3].match(xM);if(a){let l=0;for(;l<a.length;){let u=a[l++],c;u==="in"||u==="out"||u==="inout"?c=a[l++]:(c=u,u="");let h=a[l++];this.inputs.push({name:h,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var xG=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,v0=class extends ze{constructor(t="",n){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(t||v0.PI,void 0,void 0,void 0,n)}getType(t){return t.getTypeByFormat(this.type)}parse(t,n,i,s,o){this.src=t||"";let a,l,u="",c=xG.exec(t);this.useDefine=o??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],a=c[2],u=c[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=u}build(t,n){if(n==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return t.include(this),t.format(this.name,this.getType(t),n)}generate(t,n,i,s,o){return t.format(this.name,this.getType(t),n)}},ht=v0;ht.PI="PI",ht.PI2="PI2",ht.RECIPROCAL_PI="RECIPROCAL_PI",ht.RECIPROCAL_PI2="RECIPROCAL_PI2",ht.LOG2="LOG2",ht.EPSILON="EPSILON";var bG=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
3137
|
+
}`;function _L(r,e,t){let n=new vu,i=new N,s=new N,o=new Ve,a=new xu({depthPacking:_y}),l=new $g,u={},c=t.maxTextureSize,h={0:cn,1:Br,2:un},d=new ft({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new N},radius:{value:4}},vertexShader:SL,fragmentShader:AL}),f=d.clone();f.defines.HORIZONTAL_PASS=1;let p=new Ie;p.setAttribute("position",new Ge(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new jt(p,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=cf,this.render=function(b,S,_){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||b.length===0)return;let M=r.getRenderTarget(),x=r.getActiveCubeFace(),T=r.getActiveMipmapLevel(),E=r.state;E.setBlending(Ot),E.buffers.color.setClear(1,1,1,1),E.buffers.depth.setTest(!0),E.setScissorTest(!1);for(let C=0,D=b.length;C<D;C++){let I=b[C],R=I.shadow;if(R===void 0){console.warn("THREE.WebGLShadowMap:",I,"has no shadow.");continue}if(R.autoUpdate===!1&&R.needsUpdate===!1)continue;i.copy(R.mapSize);let F=R.getFrameExtents();if(i.multiply(F),s.copy(R.mapSize),(i.x>c||i.y>c)&&(i.x>c&&(s.x=Math.floor(c/F.x),i.x=s.x*F.x,R.mapSize.x=s.x),i.y>c&&(s.y=Math.floor(c/F.y),i.y=s.y*F.y,R.mapSize.y=s.y)),R.map===null){let X=this.type!==lu?{minFilter:Ft,magFilter:Ft}:{};R.map=new ut(i.x,i.y,X),R.map.texture.name=I.name+".shadowMap",R.camera.updateProjectionMatrix()}r.setRenderTarget(R.map),r.clear();let B=R.getViewportCount();for(let X=0;X<B;X++){let Y=R.getViewport(X);o.set(s.x*Y.x,s.y*Y.y,s.x*Y.z,s.y*Y.w),E.viewport(o),R.updateMatrices(I,X),n=R.getFrustum(),w(S,_,R.camera,I,this.type)}R.isPointLightShadow!==!0&&this.type===lu&&y(R,_),R.needsUpdate=!1}g.needsUpdate=!1,r.setRenderTarget(M,x,T)};function y(b,S){let _=e.update(m);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 ut(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(S,null,_,d,m,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(S,null,_,f,m,null)}function v(b,S,_,M,x,T){let E=null,C=_.isPointLight===!0?b.customDistanceMaterial:b.customDepthMaterial;if(C!==void 0?E=C:E=_.isPointLight===!0?l:a,r.localClippingEnabled&&S.clipShadows===!0&&Array.isArray(S.clippingPlanes)&&S.clippingPlanes.length!==0||S.displacementMap&&S.displacementScale!==0||S.alphaMap&&S.alphaTest>0){let D=E.uuid,I=S.uuid,R=u[D];R===void 0&&(R={},u[D]=R);let F=R[I];F===void 0&&(F=E.clone(),R[I]=F),E=F}return E.visible=S.visible,E.wireframe=S.wireframe,T===lu?E.side=S.shadowSide!==null?S.shadowSide:S.side:E.side=S.shadowSide!==null?S.shadowSide:h[S.side],E.alphaMap=S.alphaMap,E.alphaTest=S.alphaTest,E.clipShadows=S.clipShadows,E.clippingPlanes=S.clippingPlanes,E.clipIntersection=S.clipIntersection,E.displacementMap=S.displacementMap,E.displacementScale=S.displacementScale,E.displacementBias=S.displacementBias,E.wireframeLinewidth=S.wireframeLinewidth,E.linewidth=S.linewidth,_.isPointLight===!0&&E.isMeshDistanceMaterial===!0&&(E.referencePosition.setFromMatrixPosition(_.matrixWorld),E.nearDistance=M,E.farDistance=x),E}function w(b,S,_,M,x){if(b.visible===!1)return;if(b.layers.test(S.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&x===lu)&&(!b.frustumCulled||n.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(_.matrixWorldInverse,b.matrixWorld);let C=e.update(b),D=b.material;if(Array.isArray(D)){let I=C.groups;for(let R=0,F=I.length;R<F;R++){let B=I[R],X=D[B.materialIndex];if(X&&X.visible){let Y=v(b,X,M,_.near,_.far,x);r.renderBufferDirect(_,null,C,Y,b,B)}}}else if(D.visible){let I=v(b,D,M,_.near,_.far,x);r.renderBufferDirect(_,null,C,I,b,null)}}let E=b.children;for(let C=0,D=E.length;C<D;C++)w(E[C],S,_,M,x)}}function ML(r,e,t){let n=t.isWebGL2;function i(){let k=!1,xe=new Ve,Ae=null,Ye=new Ve(0,0,0,0);return{setMask:function(Re){Ae!==Re&&!k&&(r.colorMask(Re,Re,Re,Re),Ae=Re)},setLocked:function(Re){k=Re},setClear:function(Re,Qe,be,Ze,et){et===!0&&(Re*=Ze,Qe*=Ze,be*=Ze),xe.set(Re,Qe,be,Ze),Ye.equals(xe)===!1&&(r.clearColor(Re,Qe,be,Ze),Ye.copy(xe))},reset:function(){k=!1,Ae=null,Ye.set(-1,0,0,0)}}}function s(){let k=!1,xe=null,Ae=null,Ye=null;return{setTest:function(Re){Re?Q(2929):q(2929)},setMask:function(Re){xe!==Re&&!k&&(r.depthMask(Re),xe=Re)},setFunc:function(Re){if(Ae!==Re){if(Re)switch(Re){case eC:r.depthFunc(512);break;case tC:r.depthFunc(519);break;case nC:r.depthFunc(513);break;case Fg:r.depthFunc(515);break;case rC:r.depthFunc(514);break;case iC:r.depthFunc(518);break;case sC:r.depthFunc(516);break;case oC:r.depthFunc(517);break;default:r.depthFunc(515)}else r.depthFunc(515);Ae=Re}},setLocked:function(Re){k=Re},setClear:function(Re){Ye!==Re&&(r.clearDepth(Re),Ye=Re)},reset:function(){k=!1,xe=null,Ae=null,Ye=null}}}function o(){let k=!1,xe=null,Ae=null,Ye=null,Re=null,Qe=null,be=null,Ze=null,et=null;return{setTest:function(mt){k||(mt?Q(2960):q(2960))},setMask:function(mt){xe!==mt&&!k&&(r.stencilMask(mt),xe=mt)},setFunc:function(mt,St,cr){(Ae!==mt||Ye!==St||Re!==cr)&&(r.stencilFunc(mt,St,cr),Ae=mt,Ye=St,Re=cr)},setOp:function(mt,St,cr){(Qe!==mt||be!==St||Ze!==cr)&&(r.stencilOp(mt,St,cr),Qe=mt,be=St,Ze=cr)},setLocked:function(mt){k=mt},setClear:function(mt){et!==mt&&(r.clearStencil(mt),et=mt)},reset:function(){k=!1,xe=null,Ae=null,Ye=null,Re=null,Qe=null,be=null,Ze=null,et=null}}}let a=new i,l=new s,u=new o,c={},h={},d=new WeakMap,f=[],p=null,m=!1,g=null,y=null,v=null,w=null,b=null,S=null,_=null,M=!1,x=null,T=null,E=null,C=null,D=null,I=r.getParameter(35661),R=!1,F=0,B=r.getParameter(7938);B.indexOf("WebGL")!==-1?(F=parseFloat(/^WebGL (\d)/.exec(B)[1]),R=F>=1):B.indexOf("OpenGL ES")!==-1&&(F=parseFloat(/^OpenGL ES (\d)/.exec(B)[1]),R=F>=2);let X=null,Y={},G=r.getParameter(3088),z=r.getParameter(2978),V=new Ve().fromArray(G),U=new Ve().fromArray(z);function H(k,xe,Ae){let Ye=new Uint8Array(4),Re=r.createTexture();r.bindTexture(k,Re),r.texParameteri(k,10241,9728),r.texParameteri(k,10240,9728);for(let Qe=0;Qe<Ae;Qe++)r.texImage2D(xe+Qe,0,6408,1,1,0,6408,5121,Ye);return Re}let j={};j[3553]=H(3553,3553,1),j[34067]=H(34067,34069,6),a.setClear(0,0,0,1),l.setClear(1),u.setClear(0),Q(2929),l.setFunc(Fg),de(!1),ge(Ex),Q(2884),ce(Ot);function Q(k){c[k]!==!0&&(r.enable(k),c[k]=!0)}function q(k){c[k]!==!1&&(r.disable(k),c[k]=!1)}function ae(k,xe){return h[k]!==xe?(r.bindFramebuffer(k,xe),h[k]=xe,n&&(k===36009&&(h[36160]=xe),k===36160&&(h[36009]=xe)),!0):!1}function $(k,xe){let Ae=f,Ye=!1;if(k)if(Ae=d.get(xe),Ae===void 0&&(Ae=[],d.set(xe,Ae)),k.isWebGLMultipleRenderTargets){let Re=k.texture;if(Ae.length!==Re.length||Ae[0]!==36064){for(let Qe=0,be=Re.length;Qe<be;Qe++)Ae[Qe]=36064+Qe;Ae.length=Re.length,Ye=!0}}else Ae[0]!==36064&&(Ae[0]=36064,Ye=!0);else Ae[0]!==1029&&(Ae[0]=1029,Ye=!0);Ye&&(t.isWebGL2?r.drawBuffers(Ae):e.get("WEBGL_draw_buffers").drawBuffersWEBGL(Ae))}function te(k){return p!==k?(r.useProgram(k),p=k,!0):!1}let W={[Va]:32774,[HE]:32778,[WE]:32779};if(n)W[Ix]=32775,W[Lx]=32776;else{let k=e.get("EXT_blend_minmax");k!==null&&(W[Ix]=k.MIN_EXT,W[Lx]=k.MAX_EXT)}let le={[jE]:0,[qE]:1,[XE]:768,[sw]:770,[$E]:776,[KE]:774,[QE]:772,[YE]:769,[ow]:771,[JE]:775,[ZE]:773};function ce(k,xe,Ae,Ye,Re,Qe,be,Ze){if(k===Ot){m===!0&&(q(3042),m=!1);return}if(m===!1&&(Q(3042),m=!0),k!==VE){if(k!==g||Ze!==M){if((y!==Va||b!==Va)&&(r.blendEquation(32774),y=Va,b=Va),Ze)switch(k){case Rs:r.blendFuncSeparate(1,771,1,771);break;case Cx:r.blendFunc(1,1);break;case Px:r.blendFuncSeparate(0,769,0,1);break;case Dx:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}else switch(k){case Rs:r.blendFuncSeparate(770,771,1,771);break;case Cx:r.blendFunc(770,1);break;case Px:r.blendFuncSeparate(0,769,0,1);break;case Dx:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}v=null,w=null,S=null,_=null,g=k,M=Ze}return}Re=Re||xe,Qe=Qe||Ae,be=be||Ye,(xe!==y||Re!==b)&&(r.blendEquationSeparate(W[xe],W[Re]),y=xe,b=Re),(Ae!==v||Ye!==w||Qe!==S||be!==_)&&(r.blendFuncSeparate(le[Ae],le[Ye],le[Qe],le[be]),v=Ae,w=Ye,S=Qe,_=be),g=k,M=null}function oe(k,xe){k.side===un?q(2884):Q(2884);let Ae=k.side===cn;xe&&(Ae=!Ae),de(Ae),k.blending===Rs&&k.transparent===!1?ce(Ot):ce(k.blending,k.blendEquation,k.blendSrc,k.blendDst,k.blendEquationAlpha,k.blendSrcAlpha,k.blendDstAlpha,k.premultipliedAlpha),l.setFunc(k.depthFunc),l.setTest(k.depthTest),l.setMask(k.depthWrite),a.setMask(k.colorWrite);let Ye=k.stencilWrite;u.setTest(Ye),Ye&&(u.setMask(k.stencilWriteMask),u.setFunc(k.stencilFunc,k.stencilRef,k.stencilFuncMask),u.setOp(k.stencilFail,k.stencilZFail,k.stencilZPass)),Ee(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits),k.alphaToCoverage===!0?Q(32926):q(32926)}function de(k){x!==k&&(k?r.frontFace(2304):r.frontFace(2305),x=k)}function ge(k){k!==zE?(Q(2884),k!==T&&(k===Ex?r.cullFace(1029):k===GE?r.cullFace(1028):r.cullFace(1032))):q(2884),T=k}function fe(k){k!==E&&(R&&r.lineWidth(k),E=k)}function Ee(k,xe,Ae){k?(Q(32823),(C!==xe||D!==Ae)&&(r.polygonOffset(xe,Ae),C=xe,D=Ae)):q(32823)}function Pe(k){k?Q(3089):q(3089)}function ye(k){k===void 0&&(k=33984+I-1),X!==k&&(r.activeTexture(k),X=k)}function Oe(k,xe){X===null&&ye();let Ae=Y[X];Ae===void 0&&(Ae={type:void 0,texture:void 0},Y[X]=Ae),(Ae.type!==k||Ae.texture!==xe)&&(r.bindTexture(k,xe||j[k]),Ae.type=k,Ae.texture=xe)}function pt(){let k=Y[X];k!==void 0&&k.type!==void 0&&(r.bindTexture(k.type,null),k.type=void 0,k.texture=void 0)}function L(){try{r.compressedTexImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function P(){try{r.texSubImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function K(){try{r.texSubImage3D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function he(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function pe(){try{r.texStorage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Ce(){try{r.texStorage3D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Fe(){try{r.texImage2D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function re(){try{r.texImage3D.apply(r,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Be(k){V.equals(k)===!1&&(r.scissor(k.x,k.y,k.z,k.w),V.copy(k))}function Le(k){U.equals(k)===!1&&(r.viewport(k.x,k.y,k.z,k.w),U.copy(k))}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={},X=null,Y={},h={},d=new WeakMap,f=[],p=null,m=!1,g=null,y=null,v=null,w=null,b=null,S=null,_=null,M=!1,x=null,T=null,E=null,C=null,D=null,V.set(0,0,r.canvas.width,r.canvas.height),U.set(0,0,r.canvas.width,r.canvas.height),a.reset(),l.reset(),u.reset()}return{buffers:{color:a,depth:l,stencil:u},enable:Q,disable:q,bindFramebuffer:ae,drawBuffers:$,useProgram:te,setBlending:ce,setMaterial:oe,setFlipSided:de,setCullFace:ge,setLineWidth:fe,setPolygonOffset:Ee,setScissorTest:Pe,activeTexture:ye,bindTexture:Oe,unbindTexture:pt,compressedTexImage2D:L,texImage2D:Fe,texImage3D:re,texStorage2D:pe,texStorage3D:Ce,texSubImage2D:P,texSubImage3D:K,compressedTexSubImage2D:he,scissor:Be,viewport:Le,reset:ve}}function TL(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),p=new WeakMap,m,g=new WeakMap,y=!1;try{y=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function v(L,P){return y?new OffscreenCanvas(L,P):Wd("canvas")}function w(L,P,K,he){let pe=1;if((L.width>he||L.height>he)&&(pe=he/Math.max(L.width,L.height)),pe<1||P===!0)if(typeof HTMLImageElement<"u"&&L instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&L instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&L instanceof ImageBitmap){let Ce=P?Hd:Math.floor,Fe=Ce(pe*L.width),re=Ce(pe*L.height);m===void 0&&(m=v(Fe,re));let Be=K?v(Fe,re):m;return Be.width=Fe,Be.height=re,Be.getContext("2d").drawImage(L,0,0,Fe,re),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+L.width+"x"+L.height+") to ("+Fe+"x"+re+")."),Be}else return"data"in L&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+L.width+"x"+L.height+")."),L;return L}function b(L){return Hg(L.width)&&Hg(L.height)}function S(L){return a?!1:L.wrapS!==Jn||L.wrapT!==Jn||L.minFilter!==Ft&&L.minFilter!==rt}function _(L,P){return L.generateMipmaps&&P&&L.minFilter!==Ft&&L.minFilter!==rt}function M(L){r.generateMipmap(L)}function x(L,P,K,he,pe=!1){if(a===!1)return P;if(L!==null){if(r[L]!==void 0)return r[L];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+L+"'")}let Ce=P;return P===6403&&(K===5126&&(Ce=33326),K===5131&&(Ce=33325),K===5121&&(Ce=33321)),P===33319&&(K===5126&&(Ce=33328),K===5131&&(Ce=33327),K===5121&&(Ce=33323)),P===6408&&(K===5126&&(Ce=34836),K===5131&&(Ce=34842),K===5121&&(Ce=he===qe&&pe===!1?35907:32856),K===32819&&(Ce=32854),K===32820&&(Ce=32855)),(Ce===33325||Ce===33326||Ce===33327||Ce===33328||Ce===34842||Ce===34836)&&e.get("EXT_color_buffer_float"),Ce}function T(L,P,K){return _(L,K)===!0||L.isFramebufferTexture&&L.minFilter!==Ft&&L.minFilter!==rt?Math.log2(Math.max(P.width,P.height))+1:L.mipmaps!==void 0&&L.mipmaps.length>0?L.mipmaps.length:L.isCompressedTexture&&Array.isArray(L.image)?P.mipmaps.length:1}function E(L){return L===Ft||L===Rx||L===Ox?9728:9729}function C(L){let P=L.target;P.removeEventListener("dispose",C),I(P),P.isVideoTexture&&p.delete(P)}function D(L){let P=L.target;P.removeEventListener("dispose",D),F(P)}function I(L){let P=n.get(L);if(P.__webglInit===void 0)return;let K=L.source,he=g.get(K);if(he){let pe=he[P.__cacheKey];pe.usedTimes--,pe.usedTimes===0&&R(L),Object.keys(he).length===0&&g.delete(K)}n.remove(L)}function R(L){let P=n.get(L);r.deleteTexture(P.__webglTexture);let K=L.source,he=g.get(K);delete he[P.__cacheKey],o.memory.textures--}function F(L){let P=L.texture,K=n.get(L),he=n.get(P);if(he.__webglTexture!==void 0&&(r.deleteTexture(he.__webglTexture),o.memory.textures--),L.depthTexture&&L.depthTexture.dispose(),L.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(L.isWebGLMultipleRenderTargets)for(let pe=0,Ce=P.length;pe<Ce;pe++){let Fe=n.get(P[pe]);Fe.__webglTexture&&(r.deleteTexture(Fe.__webglTexture),o.memory.textures--),n.remove(P[pe])}n.remove(P),n.remove(L)}let B=0;function X(){B=0}function Y(){let L=B;return L>=l&&console.warn("THREE.WebGLTextures: Trying to use "+L+" texture units while this GPU supports only "+l),B+=1,L}function G(L){let P=[];return P.push(L.wrapS),P.push(L.wrapT),P.push(L.magFilter),P.push(L.minFilter),P.push(L.anisotropy),P.push(L.internalFormat),P.push(L.format),P.push(L.type),P.push(L.generateMipmaps),P.push(L.premultiplyAlpha),P.push(L.flipY),P.push(L.unpackAlignment),P.push(L.encoding),P.join()}function z(L,P){let K=n.get(L);if(L.isVideoTexture&&Oe(L),L.isRenderTargetTexture===!1&&L.version>0&&K.__version!==L.version){let he=L.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,L,P);return}}t.activeTexture(33984+P),t.bindTexture(3553,K.__webglTexture)}function V(L,P){let K=n.get(L);if(L.version>0&&K.__version!==L.version){$(K,L,P);return}t.activeTexture(33984+P),t.bindTexture(35866,K.__webglTexture)}function U(L,P){let K=n.get(L);if(L.version>0&&K.__version!==L.version){$(K,L,P);return}t.activeTexture(33984+P),t.bindTexture(32879,K.__webglTexture)}function H(L,P){let K=n.get(L);if(L.version>0&&K.__version!==L.version){te(K,L,P);return}t.activeTexture(33984+P),t.bindTexture(34067,K.__webglTexture)}let j={[qa]:10497,[Jn]:33071,[Gg]:33648},Q={[Ft]:9728,[Rx]:9984,[Ox]:9986,[rt]:9729,[pC]:9985,[ul]:9987};function q(L,P,K){if(K?(r.texParameteri(L,10242,j[P.wrapS]),r.texParameteri(L,10243,j[P.wrapT]),(L===32879||L===35866)&&r.texParameteri(L,32882,j[P.wrapR]),r.texParameteri(L,10240,Q[P.magFilter]),r.texParameteri(L,10241,Q[P.minFilter])):(r.texParameteri(L,10242,33071),r.texParameteri(L,10243,33071),(L===32879||L===35866)&&r.texParameteri(L,32882,33071),(P.wrapS!==Jn||P.wrapT!==Jn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(L,10240,E(P.magFilter)),r.texParameteri(L,10241,E(P.minFilter)),P.minFilter!==Ft&&P.minFilter!==rt&&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(P.type===_i&&e.has("OES_texture_float_linear")===!1||a===!1&&P.type===mu&&e.has("OES_texture_half_float_linear")===!1)return;(P.anisotropy>1||n.get(P).__currentAnisotropy)&&(r.texParameterf(L,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(P.anisotropy,i.getMaxAnisotropy())),n.get(P).__currentAnisotropy=P.anisotropy)}}function ae(L,P){let K=!1;L.__webglInit===void 0&&(L.__webglInit=!0,P.addEventListener("dispose",C));let he=P.source,pe=g.get(he);pe===void 0&&(pe={},g.set(he,pe));let Ce=G(P);if(Ce!==L.__cacheKey){pe[Ce]===void 0&&(pe[Ce]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,K=!0),pe[Ce].usedTimes++;let Fe=pe[L.__cacheKey];Fe!==void 0&&(pe[L.__cacheKey].usedTimes--,Fe.usedTimes===0&&R(P)),L.__cacheKey=Ce,L.__webglTexture=pe[Ce].texture}return K}function $(L,P,K){let he=3553;P.isDataArrayTexture&&(he=35866),P.isData3DTexture&&(he=32879);let pe=ae(L,P),Ce=P.source;if(t.activeTexture(33984+K),t.bindTexture(he,L.__webglTexture),Ce.version!==Ce.__currentVersion||pe===!0){r.pixelStorei(37440,P.flipY),r.pixelStorei(37441,P.premultiplyAlpha),r.pixelStorei(3317,P.unpackAlignment),r.pixelStorei(37443,0);let Fe=S(P)&&b(P.image)===!1,re=w(P.image,Fe,!1,c);re=pt(P,re);let Be=b(re)||a,Le=s.convert(P.format,P.encoding),ve=s.convert(P.type),k=x(P.internalFormat,Le,ve,P.encoding,P.isVideoTexture);q(he,P,Be);let xe,Ae=P.mipmaps,Ye=a&&P.isVideoTexture!==!0,Re=Ce.__currentVersion===void 0||pe===!0,Qe=T(P,re,Be);if(P.isDepthTexture)k=6402,a?P.type===_i?k=36012:P.type===as?k=33190:P.type===Os?k=35056:k=33189:P.type===_i&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),P.format===Oo&&k===6402&&P.type!==cw&&P.type!==as&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),P.type=as,ve=s.convert(P.type)),P.format===Us&&k===6402&&(k=34041,P.type!==Os&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),P.type=Os,ve=s.convert(P.type))),Re&&(Ye?t.texStorage2D(3553,1,k,re.width,re.height):t.texImage2D(3553,0,k,re.width,re.height,0,Le,ve,null));else if(P.isDataTexture)if(Ae.length>0&&Be){Ye&&Re&&t.texStorage2D(3553,Qe,k,Ae[0].width,Ae[0].height);for(let be=0,Ze=Ae.length;be<Ze;be++)xe=Ae[be],Ye?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Le,ve,xe.data):t.texImage2D(3553,be,k,xe.width,xe.height,0,Le,ve,xe.data);P.generateMipmaps=!1}else Ye?(Re&&t.texStorage2D(3553,Qe,k,re.width,re.height),t.texSubImage2D(3553,0,0,0,re.width,re.height,Le,ve,re.data)):t.texImage2D(3553,0,k,re.width,re.height,0,Le,ve,re.data);else if(P.isCompressedTexture){Ye&&Re&&t.texStorage2D(3553,Qe,k,Ae[0].width,Ae[0].height);for(let be=0,Ze=Ae.length;be<Ze;be++)xe=Ae[be],P.format!==ni?Le!==null?Ye?t.compressedTexSubImage2D(3553,be,0,0,xe.width,xe.height,Le,xe.data):t.compressedTexImage2D(3553,be,k,xe.width,xe.height,0,xe.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ye?t.texSubImage2D(3553,be,0,0,xe.width,xe.height,Le,ve,xe.data):t.texImage2D(3553,be,k,xe.width,xe.height,0,Le,ve,xe.data)}else if(P.isDataArrayTexture)Ye?(Re&&t.texStorage3D(35866,Qe,k,re.width,re.height,re.depth),t.texSubImage3D(35866,0,0,0,0,re.width,re.height,re.depth,Le,ve,re.data)):t.texImage3D(35866,0,k,re.width,re.height,re.depth,0,Le,ve,re.data);else if(P.isData3DTexture)Ye?(Re&&t.texStorage3D(32879,Qe,k,re.width,re.height,re.depth),t.texSubImage3D(32879,0,0,0,0,re.width,re.height,re.depth,Le,ve,re.data)):t.texImage3D(32879,0,k,re.width,re.height,re.depth,0,Le,ve,re.data);else if(P.isFramebufferTexture){if(Re)if(Ye)t.texStorage2D(3553,Qe,k,re.width,re.height);else{let be=re.width,Ze=re.height;for(let et=0;et<Qe;et++)t.texImage2D(3553,et,k,be,Ze,0,Le,ve,null),be>>=1,Ze>>=1}}else if(Ae.length>0&&Be){Ye&&Re&&t.texStorage2D(3553,Qe,k,Ae[0].width,Ae[0].height);for(let be=0,Ze=Ae.length;be<Ze;be++)xe=Ae[be],Ye?t.texSubImage2D(3553,be,0,0,Le,ve,xe):t.texImage2D(3553,be,k,Le,ve,xe);P.generateMipmaps=!1}else Ye?(Re&&t.texStorage2D(3553,Qe,k,re.width,re.height),t.texSubImage2D(3553,0,0,0,Le,ve,re)):t.texImage2D(3553,0,k,Le,ve,re);_(P,Be)&&M(he),Ce.__currentVersion=Ce.version,P.onUpdate&&P.onUpdate(P)}L.__version=P.version}function te(L,P,K){if(P.image.length!==6)return;let he=ae(L,P),pe=P.source;if(t.activeTexture(33984+K),t.bindTexture(34067,L.__webglTexture),pe.version!==pe.__currentVersion||he===!0){r.pixelStorei(37440,P.flipY),r.pixelStorei(37441,P.premultiplyAlpha),r.pixelStorei(3317,P.unpackAlignment),r.pixelStorei(37443,0);let Ce=P.isCompressedTexture||P.image[0].isCompressedTexture,Fe=P.image[0]&&P.image[0].isDataTexture,re=[];for(let be=0;be<6;be++)!Ce&&!Fe?re[be]=w(P.image[be],!1,!0,u):re[be]=Fe?P.image[be].image:P.image[be],re[be]=pt(P,re[be]);let Be=re[0],Le=b(Be)||a,ve=s.convert(P.format,P.encoding),k=s.convert(P.type),xe=x(P.internalFormat,ve,k,P.encoding),Ae=a&&P.isVideoTexture!==!0,Ye=pe.__currentVersion===void 0||he===!0,Re=T(P,Be,Le);q(34067,P,Le);let Qe;if(Ce){Ae&&Ye&&t.texStorage2D(34067,Re,xe,Be.width,Be.height);for(let be=0;be<6;be++){Qe=re[be].mipmaps;for(let Ze=0;Ze<Qe.length;Ze++){let et=Qe[Ze];P.format!==ni?ve!==null?Ae?t.compressedTexSubImage2D(34069+be,Ze,0,0,et.width,et.height,ve,et.data):t.compressedTexImage2D(34069+be,Ze,xe,et.width,et.height,0,et.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Ae?t.texSubImage2D(34069+be,Ze,0,0,et.width,et.height,ve,k,et.data):t.texImage2D(34069+be,Ze,xe,et.width,et.height,0,ve,k,et.data)}}}else{Qe=P.mipmaps,Ae&&Ye&&(Qe.length>0&&Re++,t.texStorage2D(34067,Re,xe,re[0].width,re[0].height));for(let be=0;be<6;be++)if(Fe){Ae?t.texSubImage2D(34069+be,0,0,0,re[be].width,re[be].height,ve,k,re[be].data):t.texImage2D(34069+be,0,xe,re[be].width,re[be].height,0,ve,k,re[be].data);for(let Ze=0;Ze<Qe.length;Ze++){let mt=Qe[Ze].image[be].image;Ae?t.texSubImage2D(34069+be,Ze+1,0,0,mt.width,mt.height,ve,k,mt.data):t.texImage2D(34069+be,Ze+1,xe,mt.width,mt.height,0,ve,k,mt.data)}}else{Ae?t.texSubImage2D(34069+be,0,0,0,ve,k,re[be]):t.texImage2D(34069+be,0,xe,ve,k,re[be]);for(let Ze=0;Ze<Qe.length;Ze++){let et=Qe[Ze];Ae?t.texSubImage2D(34069+be,Ze+1,0,0,ve,k,et.image[be]):t.texImage2D(34069+be,Ze+1,xe,ve,k,et.image[be])}}}_(P,Le)&&M(34067),pe.__currentVersion=pe.version,P.onUpdate&&P.onUpdate(P)}L.__version=P.version}function W(L,P,K,he,pe){let Ce=s.convert(K.format,K.encoding),Fe=s.convert(K.type),re=x(K.internalFormat,Ce,Fe,K.encoding);n.get(P).__hasExternalTextures||(pe===32879||pe===35866?t.texImage3D(pe,0,re,P.width,P.height,P.depth,0,Ce,Fe,null):t.texImage2D(pe,0,re,P.width,P.height,0,Ce,Fe,null)),t.bindFramebuffer(36160,L),ye(P)?d.framebufferTexture2DMultisampleEXT(36160,he,pe,n.get(K).__webglTexture,0,Pe(P)):r.framebufferTexture2D(36160,he,pe,n.get(K).__webglTexture,0),t.bindFramebuffer(36160,null)}function le(L,P,K){if(r.bindRenderbuffer(36161,L),P.depthBuffer&&!P.stencilBuffer){let he=33189;if(K||ye(P)){let pe=P.depthTexture;pe&&pe.isDepthTexture&&(pe.type===_i?he=36012:pe.type===as&&(he=33190));let Ce=Pe(P);ye(P)?d.renderbufferStorageMultisampleEXT(36161,Ce,he,P.width,P.height):r.renderbufferStorageMultisample(36161,Ce,he,P.width,P.height)}else r.renderbufferStorage(36161,he,P.width,P.height);r.framebufferRenderbuffer(36160,36096,36161,L)}else if(P.depthBuffer&&P.stencilBuffer){let he=Pe(P);K&&ye(P)===!1?r.renderbufferStorageMultisample(36161,he,35056,P.width,P.height):ye(P)?d.renderbufferStorageMultisampleEXT(36161,he,35056,P.width,P.height):r.renderbufferStorage(36161,34041,P.width,P.height),r.framebufferRenderbuffer(36160,33306,36161,L)}else{let he=P.isWebGLMultipleRenderTargets===!0?P.texture:[P.texture];for(let pe=0;pe<he.length;pe++){let Ce=he[pe],Fe=s.convert(Ce.format,Ce.encoding),re=s.convert(Ce.type),Be=x(Ce.internalFormat,Fe,re,Ce.encoding),Le=Pe(P);K&&ye(P)===!1?r.renderbufferStorageMultisample(36161,Le,Be,P.width,P.height):ye(P)?d.renderbufferStorageMultisampleEXT(36161,Le,Be,P.width,P.height):r.renderbufferStorage(36161,Be,P.width,P.height)}}r.bindRenderbuffer(36161,null)}function ce(L,P){if(P&&P.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(36160,L),!(P.depthTexture&&P.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(P.depthTexture).__webglTexture||P.depthTexture.image.width!==P.width||P.depthTexture.image.height!==P.height)&&(P.depthTexture.image.width=P.width,P.depthTexture.image.height=P.height,P.depthTexture.needsUpdate=!0),z(P.depthTexture,0);let he=n.get(P.depthTexture).__webglTexture,pe=Pe(P);if(P.depthTexture.format===Oo)ye(P)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,he,0,pe):r.framebufferTexture2D(36160,36096,3553,he,0);else if(P.depthTexture.format===Us)ye(P)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,he,0,pe):r.framebufferTexture2D(36160,33306,3553,he,0);else throw new Error("Unknown depthTexture format")}function oe(L){let P=n.get(L),K=L.isWebGLCubeRenderTarget===!0;if(L.depthTexture&&!P.__autoAllocateDepthBuffer){if(K)throw new Error("target.depthTexture not supported in Cube render targets");ce(P.__webglFramebuffer,L)}else if(K){P.__webglDepthbuffer=[];for(let he=0;he<6;he++)t.bindFramebuffer(36160,P.__webglFramebuffer[he]),P.__webglDepthbuffer[he]=r.createRenderbuffer(),le(P.__webglDepthbuffer[he],L,!1)}else t.bindFramebuffer(36160,P.__webglFramebuffer),P.__webglDepthbuffer=r.createRenderbuffer(),le(P.__webglDepthbuffer,L,!1);t.bindFramebuffer(36160,null)}function de(L,P,K){let he=n.get(L);P!==void 0&&W(he.__webglFramebuffer,L,L.texture,36064,3553),K!==void 0&&oe(L)}function ge(L){let P=L.texture,K=n.get(L),he=n.get(P);L.addEventListener("dispose",D),L.isWebGLMultipleRenderTargets!==!0&&(he.__webglTexture===void 0&&(he.__webglTexture=r.createTexture()),he.__version=P.version,o.memory.textures++);let pe=L.isWebGLCubeRenderTarget===!0,Ce=L.isWebGLMultipleRenderTargets===!0,Fe=b(L)||a;if(pe){K.__webglFramebuffer=[];for(let re=0;re<6;re++)K.__webglFramebuffer[re]=r.createFramebuffer()}else{if(K.__webglFramebuffer=r.createFramebuffer(),Ce)if(i.drawBuffers){let re=L.texture;for(let Be=0,Le=re.length;Be<Le;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&&L.samples>0&&ye(L)===!1){let re=Ce?P:[P];K.__webglMultisampledFramebuffer=r.createFramebuffer(),K.__webglColorRenderbuffer=[],t.bindFramebuffer(36160,K.__webglMultisampledFramebuffer);for(let Be=0;Be<re.length;Be++){let Le=re[Be];K.__webglColorRenderbuffer[Be]=r.createRenderbuffer(),r.bindRenderbuffer(36161,K.__webglColorRenderbuffer[Be]);let ve=s.convert(Le.format,Le.encoding),k=s.convert(Le.type),xe=x(Le.internalFormat,ve,k,Le.encoding),Ae=Pe(L);r.renderbufferStorageMultisample(36161,Ae,xe,L.width,L.height),r.framebufferRenderbuffer(36160,36064+Be,36161,K.__webglColorRenderbuffer[Be])}r.bindRenderbuffer(36161,null),L.depthBuffer&&(K.__webglDepthRenderbuffer=r.createRenderbuffer(),le(K.__webglDepthRenderbuffer,L,!0)),t.bindFramebuffer(36160,null)}}if(pe){t.bindTexture(34067,he.__webglTexture),q(34067,P,Fe);for(let re=0;re<6;re++)W(K.__webglFramebuffer[re],L,P,36064,34069+re);_(P,Fe)&&M(34067),t.unbindTexture()}else if(Ce){let re=L.texture;for(let Be=0,Le=re.length;Be<Le;Be++){let ve=re[Be],k=n.get(ve);t.bindTexture(3553,k.__webglTexture),q(3553,ve,Fe),W(K.__webglFramebuffer,L,ve,36064+Be,3553),_(ve,Fe)&&M(3553)}t.unbindTexture()}else{let re=3553;(L.isWebGL3DRenderTarget||L.isWebGLArrayRenderTarget)&&(a?re=L.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),t.bindTexture(re,he.__webglTexture),q(re,P,Fe),W(K.__webglFramebuffer,L,P,36064,re),_(P,Fe)&&M(re),t.unbindTexture()}L.depthBuffer&&oe(L)}function fe(L){let P=b(L)||a,K=L.isWebGLMultipleRenderTargets===!0?L.texture:[L.texture];for(let he=0,pe=K.length;he<pe;he++){let Ce=K[he];if(_(Ce,P)){let Fe=L.isWebGLCubeRenderTarget?34067:3553,re=n.get(Ce).__webglTexture;t.bindTexture(Fe,re),M(Fe),t.unbindTexture()}}}function Ee(L){if(a&&L.samples>0&&ye(L)===!1){let P=L.isWebGLMultipleRenderTargets?L.texture:[L.texture],K=L.width,he=L.height,pe=16384,Ce=[],Fe=L.stencilBuffer?33306:36096,re=n.get(L),Be=L.isWebGLMultipleRenderTargets===!0;if(Be)for(let Le=0;Le<P.length;Le++)t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Le,36161,null),t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Le,3553,null,0);t.bindFramebuffer(36008,re.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,re.__webglFramebuffer);for(let Le=0;Le<P.length;Le++){Ce.push(36064+Le),L.depthBuffer&&Ce.push(Fe);let ve=re.__ignoreDepthValues!==void 0?re.__ignoreDepthValues:!1;if(ve===!1&&(L.depthBuffer&&(pe|=256),L.stencilBuffer&&(pe|=1024)),Be&&r.framebufferRenderbuffer(36008,36064,36161,re.__webglColorRenderbuffer[Le]),ve===!0&&(r.invalidateFramebuffer(36008,[Fe]),r.invalidateFramebuffer(36009,[Fe])),Be){let k=n.get(P[Le]).__webglTexture;r.framebufferTexture2D(36009,36064,3553,k,0)}r.blitFramebuffer(0,0,K,he,0,0,K,he,pe,9728),f&&r.invalidateFramebuffer(36008,Ce)}if(t.bindFramebuffer(36008,null),t.bindFramebuffer(36009,null),Be)for(let Le=0;Le<P.length;Le++){t.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+Le,36161,re.__webglColorRenderbuffer[Le]);let ve=n.get(P[Le]).__webglTexture;t.bindFramebuffer(36160,re.__webglFramebuffer),r.framebufferTexture2D(36009,36064+Le,3553,ve,0)}t.bindFramebuffer(36009,re.__webglMultisampledFramebuffer)}}function Pe(L){return Math.min(h,L.samples)}function ye(L){let P=n.get(L);return a&&L.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&P.__useRenderToTexture!==!1}function Oe(L){let P=o.render.frame;p.get(L)!==P&&(p.set(L,P),L.update())}function pt(L,P){let K=L.encoding,he=L.format,pe=L.type;return L.isCompressedTexture===!0||L.isVideoTexture===!0||L.format===Vg||K!==Er&&(K===qe?a===!1?e.has("EXT_sRGB")===!0&&he===ni?(L.format=Vg,L.minFilter=rt,L.generateMipmaps=!1):P=jd.sRGBToLinear(P):(he!==ni||pe!==Ut)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",K)),P}this.allocateTextureUnit=Y,this.resetTextureUnits=X,this.setTexture2D=z,this.setTexture2DArray=V,this.setTexture3D=U,this.setTextureCube=H,this.rebindTextures=de,this.setupRenderTarget=ge,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=Ee,this.setupDepthRenderbuffer=oe,this.setupFrameBufferTexture=W,this.useMultisampledRTT=ye}function EL(r,e,t){let n=t.isWebGL2;function i(s,o=null){let a;if(s===Ut)return 5121;if(s===vC)return 32819;if(s===xC)return 32820;if(s===mC)return 5120;if(s===gC)return 5122;if(s===cw)return 5123;if(s===yC)return 5124;if(s===as)return 5125;if(s===_i)return 5126;if(s===mu)return n?5131:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===bC)return 6406;if(s===ni)return 6408;if(s===SC)return 6409;if(s===AC)return 6410;if(s===Oo)return 6402;if(s===Us)return 34041;if(s===_C)return 6403;if(s===wC)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===Vg)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===MC)return 36244;if(s===TC)return 33319;if(s===EC)return 33320;if(s===CC)return 36249;if(s===tg||s===ng||s===rg||s===ig)if(o===qe)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===tg)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===ng)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===rg)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===ig)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===tg)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===ng)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===rg)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===ig)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Bx||s===Nx||s===Fx||s===Ux)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Bx)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Nx)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Fx)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Ux)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===PC)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===zx||s===Gx)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===zx)return o===qe?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Gx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===kx||s===Vx||s===Hx||s===Wx||s===jx||s===qx||s===Xx||s===Yx||s===Qx||s===Zx||s===Kx||s===Jx||s===$x||s===eb)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===kx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Vx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Hx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Wx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===jx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===qx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Xx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Yx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===Qx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Zx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===Kx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Jx)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===$x)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===eb)return o===qe?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===tb)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===tb)return o===qe?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 ey=class extends tn{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},Ls=class extends ot{constructor(){super(),this.isGroup=!0,this.type="Group"}},CL={type:"move"},du=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ls,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 Ls,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new A,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new A),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ls,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new A,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new A),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 m of e.hand.values()){let g=t.getJointPose(m,n);if(u.joints[m.jointName]===void 0){let v=new Ls;v.matrixAutoUpdate=!1,v.visible=!1,u.joints[m.jointName]=v,u.add(v)}let y=u.joints[m.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,p=.005;u.inputState.pinching&&d>f+p?(u.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!u.inputState.pinching&&d<=f-p&&(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(CL)))}return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=s!==null),u!==null&&(u.visible=o!==null),this}},Gs=class extends Yt{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=as),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:Ft,this.minFilter=l!==void 0?l:Ft,this.flipY=!1,this.generateMipmaps=!1}},ty=class extends Bt{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,p=t.getContextAttributes(),m=null,g=null,y=[],v=[],w=new tn;w.layers.enable(1),w.viewport=new Ve;let b=new tn;b.layers.enable(2),b.viewport=new Ve;let S=[w,b],_=new ey;_.layers.enable(1),_.layers.enable(2);let M=null,x=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(G){let z=y[G];return z===void 0&&(z=new du,y[G]=z),z.getTargetRaySpace()},this.getControllerGrip=function(G){let z=y[G];return z===void 0&&(z=new du,y[G]=z),z.getGripSpace()},this.getHand=function(G){let z=y[G];return z===void 0&&(z=new du,y[G]=z),z.getHandSpace()};function T(G){let z=v.indexOf(G.inputSource);if(z===-1)return;let V=y[z];V!==void 0&&V.dispatchEvent({type:G.type,data:G.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 G=0;G<y.length;G++){let z=v[G];z!==null&&(v[G]=null,y[G].disconnect(z))}M=null,x=null,e.setRenderTarget(m),d=null,h=null,c=null,i=null,g=null,Y.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(G){s=G,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(G){a=G,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||o},this.setReferenceSpace=function(G){l=G},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(G){if(i=G,i!==null){if(m=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),p.xrCompatible!==!0&&await t.makeXRCompatible(),i.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let z={antialias:i.renderState.layers===void 0?p.antialias:!0,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(i,t,z),i.updateRenderState({baseLayer:d}),g=new ut(d.framebufferWidth,d.framebufferHeight,{format:ni,type:Ut,encoding:e.outputEncoding})}else{let z=null,V=null,U=null;p.depth&&(U=p.stencil?35056:33190,z=p.stencil?Us:Oo,V=p.stencil?Os:as);let H={colorFormat:32856,depthFormat:U,scaleFactor:s};c=new XRWebGLBinding(i,t),h=c.createProjectionLayer(H),i.updateRenderState({layers:[h]}),g=new ut(h.textureWidth,h.textureHeight,{format:ni,type:Ut,depthTexture:new Gs(h.textureWidth,h.textureHeight,V,void 0,void 0,void 0,void 0,void 0,void 0,z),stencilBuffer:p.stencil,encoding:e.outputEncoding,samples:p.antialias?4:0});let j=e.properties.get(g);j.__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(G){for(let z=0;z<G.removed.length;z++){let V=G.removed[z],U=v.indexOf(V);U>=0&&(v[U]=null,y[U].dispatchEvent({type:"disconnected",data:V}))}for(let z=0;z<G.added.length;z++){let V=G.added[z],U=v.indexOf(V);if(U===-1){for(let j=0;j<y.length;j++)if(j>=v.length){v.push(V),U=j;break}else if(v[j]===null){v[j]=V,U=j;break}if(U===-1)break}let H=y[U];H&&H.dispatchEvent({type:"connected",data:V})}}let D=new A,I=new A;function R(G,z,V){D.setFromMatrixPosition(z.matrixWorld),I.setFromMatrixPosition(V.matrixWorld);let U=D.distanceTo(I),H=z.projectionMatrix.elements,j=V.projectionMatrix.elements,Q=H[14]/(H[10]-1),q=H[14]/(H[10]+1),ae=(H[9]+1)/H[5],$=(H[9]-1)/H[5],te=(H[8]-1)/H[0],W=(j[8]+1)/j[0],le=Q*te,ce=Q*W,oe=U/(-te+W),de=oe*-te;z.matrixWorld.decompose(G.position,G.quaternion,G.scale),G.translateX(de),G.translateZ(oe),G.matrixWorld.compose(G.position,G.quaternion,G.scale),G.matrixWorldInverse.copy(G.matrixWorld).invert();let ge=Q+oe,fe=q+oe,Ee=le-de,Pe=ce+(U-de),ye=ae*q/fe*ge,Oe=$*q/fe*ge;G.projectionMatrix.makePerspective(Ee,Pe,ye,Oe,ge,fe)}function F(G,z){z===null?G.matrixWorld.copy(G.matrix):G.matrixWorld.multiplyMatrices(z.matrixWorld,G.matrix),G.matrixWorldInverse.copy(G.matrixWorld).invert()}this.updateCamera=function(G){if(i===null)return;_.near=b.near=w.near=G.near,_.far=b.far=w.far=G.far,(M!==_.near||x!==_.far)&&(i.updateRenderState({depthNear:_.near,depthFar:_.far}),M=_.near,x=_.far);let z=G.parent,V=_.cameras;F(_,z);for(let H=0;H<V.length;H++)F(V[H],z);_.matrixWorld.decompose(_.position,_.quaternion,_.scale),G.position.copy(_.position),G.quaternion.copy(_.quaternion),G.scale.copy(_.scale),G.matrix.copy(_.matrix),G.matrixWorld.copy(_.matrixWorld);let U=G.children;for(let H=0,j=U.length;H<j;H++)U[H].updateMatrixWorld(!0);V.length===2?R(_,w,b):_.projectionMatrix.copy(w.projectionMatrix)},this.getCamera=function(){return _},this.getFoveation=function(){if(h!==null)return h.fixedFoveation;if(d!==null)return d.fixedFoveation},this.setFoveation=function(G){h!==null&&(h.fixedFoveation=G),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=G)};let B=null;function X(G,z){if(u=z.getViewerPose(l||o),f=z,u!==null){let V=u.views;d!==null&&(e.setRenderTargetFramebuffer(g,d.framebuffer),e.setRenderTarget(g));let U=!1;V.length!==_.cameras.length&&(_.cameras.length=0,U=!0);for(let H=0;H<V.length;H++){let j=V[H],Q=null;if(d!==null)Q=d.getViewport(j);else{let ae=c.getViewSubImage(h,j);Q=ae.viewport,H===0&&(e.setRenderTargetTextures(g,ae.colorTexture,h.ignoreDepthValues?void 0:ae.depthStencilTexture),e.setRenderTarget(g))}let q=S[H];q===void 0&&(q=new tn,q.layers.enable(H),q.viewport=new Ve,S[H]=q),q.matrix.fromArray(j.transform.matrix),q.projectionMatrix.fromArray(j.projectionMatrix),q.viewport.set(Q.x,Q.y,Q.width,Q.height),H===0&&_.matrix.copy(q.matrix),U===!0&&_.cameras.push(q)}}for(let V=0;V<y.length;V++){let U=v[V],H=y[V];U!==null&&H!==void 0&&H.update(U,z,l||o)}B&&B(G,z),f=null}let Y=new dw;Y.setAnimationLoop(X),this.setAnimationLoop=function(G){B=G},this.dispose=function(){}}};function PL(r,e){function t(m,g){m.fogColor.value.copy(g.color),g.isFog?(m.fogNear.value=g.near,m.fogFar.value=g.far):g.isFogExp2&&(m.fogDensity.value=g.density)}function n(m,g,y,v,w){g.isMeshBasicMaterial||g.isMeshLambertMaterial?i(m,g):g.isMeshToonMaterial?(i(m,g),c(m,g)):g.isMeshPhongMaterial?(i(m,g),u(m,g)):g.isMeshStandardMaterial?(i(m,g),h(m,g),g.isMeshPhysicalMaterial&&d(m,g,w)):g.isMeshMatcapMaterial?(i(m,g),f(m,g)):g.isMeshDepthMaterial?i(m,g):g.isMeshDistanceMaterial?(i(m,g),p(m,g)):g.isMeshNormalMaterial?i(m,g):g.isLineBasicMaterial?(s(m,g),g.isLineDashedMaterial&&o(m,g)):g.isPointsMaterial?a(m,g,y,v):g.isSpriteMaterial?l(m,g):g.isShadowMaterial?(m.color.value.copy(g.color),m.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function i(m,g){m.opacity.value=g.opacity,g.color&&m.diffuse.value.copy(g.color),g.emissive&&m.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.bumpMap&&(m.bumpMap.value=g.bumpMap,m.bumpScale.value=g.bumpScale,g.side===cn&&(m.bumpScale.value*=-1)),g.displacementMap&&(m.displacementMap.value=g.displacementMap,m.displacementScale.value=g.displacementScale,m.displacementBias.value=g.displacementBias),g.emissiveMap&&(m.emissiveMap.value=g.emissiveMap),g.normalMap&&(m.normalMap.value=g.normalMap,m.normalScale.value.copy(g.normalScale),g.side===cn&&m.normalScale.value.negate()),g.specularMap&&(m.specularMap.value=g.specularMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let y=e.get(g).envMap;if(y&&(m.envMap.value=y,m.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,m.reflectivity.value=g.reflectivity,m.ior.value=g.ior,m.refractionRatio.value=g.refractionRatio),g.lightMap){m.lightMap.value=g.lightMap;let b=r.physicallyCorrectLights!==!0?Math.PI:1;m.lightMapIntensity.value=g.lightMapIntensity*b}g.aoMap&&(m.aoMap.value=g.aoMap,m.aoMapIntensity.value=g.aoMapIntensity);let v;g.map?v=g.map:g.specularMap?v=g.specularMap:g.displacementMap?v=g.displacementMap:g.normalMap?v=g.normalMap:g.bumpMap?v=g.bumpMap:g.roughnessMap?v=g.roughnessMap:g.metalnessMap?v=g.metalnessMap:g.alphaMap?v=g.alphaMap:g.emissiveMap?v=g.emissiveMap:g.clearcoatMap?v=g.clearcoatMap:g.clearcoatNormalMap?v=g.clearcoatNormalMap:g.clearcoatRoughnessMap?v=g.clearcoatRoughnessMap:g.iridescenceMap?v=g.iridescenceMap:g.iridescenceThicknessMap?v=g.iridescenceThicknessMap:g.specularIntensityMap?v=g.specularIntensityMap:g.specularColorMap?v=g.specularColorMap:g.transmissionMap?v=g.transmissionMap:g.thicknessMap?v=g.thicknessMap:g.sheenColorMap?v=g.sheenColorMap:g.sheenRoughnessMap&&(v=g.sheenRoughnessMap),v!==void 0&&(v.isWebGLRenderTarget&&(v=v.texture),v.matrixAutoUpdate===!0&&v.updateMatrix(),m.uvTransform.value.copy(v.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(),m.uv2Transform.value.copy(w.matrix))}function s(m,g){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity}function o(m,g){m.dashSize.value=g.dashSize,m.totalSize.value=g.dashSize+g.gapSize,m.scale.value=g.scale}function a(m,g,y,v){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity,m.size.value=g.size*y,m.scale.value=v*.5,g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let w;g.map?w=g.map:g.alphaMap&&(w=g.alphaMap),w!==void 0&&(w.matrixAutoUpdate===!0&&w.updateMatrix(),m.uvTransform.value.copy(w.matrix))}function l(m,g){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity,m.rotation.value=g.rotation,g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let y;g.map?y=g.map:g.alphaMap&&(y=g.alphaMap),y!==void 0&&(y.matrixAutoUpdate===!0&&y.updateMatrix(),m.uvTransform.value.copy(y.matrix))}function u(m,g){m.specular.value.copy(g.specular),m.shininess.value=Math.max(g.shininess,1e-4)}function c(m,g){g.gradientMap&&(m.gradientMap.value=g.gradientMap)}function h(m,g){m.roughness.value=g.roughness,m.metalness.value=g.metalness,g.roughnessMap&&(m.roughnessMap.value=g.roughnessMap),g.metalnessMap&&(m.metalnessMap.value=g.metalnessMap),e.get(g).envMap&&(m.envMapIntensity.value=g.envMapIntensity)}function d(m,g,y){m.ior.value=g.ior,g.sheen>0&&(m.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),m.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(m.sheenColorMap.value=g.sheenColorMap),g.sheenRoughnessMap&&(m.sheenRoughnessMap.value=g.sheenRoughnessMap)),g.clearcoat>0&&(m.clearcoat.value=g.clearcoat,m.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(m.clearcoatMap.value=g.clearcoatMap),g.clearcoatRoughnessMap&&(m.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap),g.clearcoatNormalMap&&(m.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),m.clearcoatNormalMap.value=g.clearcoatNormalMap,g.side===cn&&m.clearcoatNormalScale.value.negate())),g.iridescence>0&&(m.iridescence.value=g.iridescence,m.iridescenceIOR.value=g.iridescenceIOR,m.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],m.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(m.iridescenceMap.value=g.iridescenceMap),g.iridescenceThicknessMap&&(m.iridescenceThicknessMap.value=g.iridescenceThicknessMap)),g.transmission>0&&(m.transmission.value=g.transmission,m.transmissionSamplerMap.value=y.texture,m.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(m.transmissionMap.value=g.transmissionMap),m.thickness.value=g.thickness,g.thicknessMap&&(m.thicknessMap.value=g.thicknessMap),m.attenuationDistance.value=g.attenuationDistance,m.attenuationColor.value.copy(g.attenuationColor)),m.specularIntensity.value=g.specularIntensity,m.specularColor.value.copy(g.specularColor),g.specularIntensityMap&&(m.specularIntensityMap.value=g.specularIntensityMap),g.specularColorMap&&(m.specularColorMap.value=g.specularColorMap)}function f(m,g){g.matcap&&(m.matcap.value=g.matcap)}function p(m,g){m.referencePosition.value.copy(g.referencePosition),m.nearDistance.value=g.nearDistance,m.farDistance.value=g.farDistance}return{refreshFogUniforms:t,refreshMaterialUniforms:n}}function DL(){let r=Wd("canvas");return r.style.display="block",r}function Ey(r={}){this.isWebGLRenderer=!0;let e=r.canvas!==void 0?r.canvas:DL(),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=[],p=[];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=Er,this.physicallyCorrectLights=!1,this.toneMapping=ls,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 m=this,g=!1,y=0,v=0,w=null,b=-1,S=null,_=new Ve,M=new Ve,x=null,T=e.width,E=e.height,C=1,D=null,I=null,R=new Ve(0,0,T,E),F=new Ve(0,0,T,E),B=!1,X=new vu,Y=!1,G=!1,z=null,V=new _e,U=new N,H=new A,j={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Q(){return w===null?C:1}let q=t;function ae(O,J){for(let ie=0;ie<O.length;ie++){let ne=O[ie],ue=e.getContext(ne,J);if(ue!==null)return ue}return null}try{let O={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${qo}`),e.addEventListener("webglcontextlost",k,!1),e.addEventListener("webglcontextrestored",xe,!1),e.addEventListener("webglcontextcreationerror",Ae,!1),q===null){let J=["webgl2","webgl","experimental-webgl"];if(m.isWebGL1Renderer===!0&&J.shift(),q=ae(J,O),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(O){throw console.error("THREE.WebGLRenderer: "+O.message),O}let $,te,W,le,ce,oe,de,ge,fe,Ee,Pe,ye,Oe,pt,L,P,K,he,pe,Ce,Fe,re,Be;function Le(){$=new KD(q),te=new jD(q,$,r),$.init(te),re=new EL(q,$,te),W=new ML(q,$,te),le=new eI,ce=new fL,oe=new TL(q,$,W,ce,te,re,le),de=new XD(m),ge=new ZD(m),fe=new dP(q,te),Be=new HD(q,$,fe,te),Ee=new JD(q,fe,le,Be),Pe=new iI(q,Ee,fe,le),pe=new rI(q,te,oe),P=new qD(ce),ye=new dL(m,de,ge,$,te,Be,P),Oe=new PL(m,ce),pt=new mL,L=new wL($,te),he=new VD(m,de,W,Pe,c,o),K=new _L(m,Pe,te),Ce=new WD(q,$,le,te),Fe=new $D(q,$,le,te),le.programs=ye.programs,m.capabilities=te,m.extensions=$,m.properties=ce,m.renderLists=pt,m.shadowMap=K,m.state=W,m.info=le}Le();let ve=new ty(m,q);this.xr=ve,this.getContext=function(){return q},this.getContextAttributes=function(){return q.getContextAttributes()},this.forceContextLoss=function(){let O=$.get("WEBGL_lose_context");O&&O.loseContext()},this.forceContextRestore=function(){let O=$.get("WEBGL_lose_context");O&&O.restoreContext()},this.getPixelRatio=function(){return C},this.setPixelRatio=function(O){O!==void 0&&(C=O,this.setSize(T,E,!1))},this.getSize=function(O){return O.set(T,E)},this.setSize=function(O,J,ie){if(ve.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}T=O,E=J,e.width=Math.floor(O*C),e.height=Math.floor(J*C),ie!==!1&&(e.style.width=O+"px",e.style.height=J+"px"),this.setViewport(0,0,O,J)},this.getDrawingBufferSize=function(O){return O.set(T*C,E*C).floor()},this.setDrawingBufferSize=function(O,J,ie){T=O,E=J,C=ie,e.width=Math.floor(O*ie),e.height=Math.floor(J*ie),this.setViewport(0,0,O,J)},this.getCurrentViewport=function(O){return O.copy(_)},this.getViewport=function(O){return O.copy(R)},this.setViewport=function(O,J,ie,ne){O.isVector4?R.set(O.x,O.y,O.z,O.w):R.set(O,J,ie,ne),W.viewport(_.copy(R).multiplyScalar(C).floor())},this.getScissor=function(O){return O.copy(F)},this.setScissor=function(O,J,ie,ne){O.isVector4?F.set(O.x,O.y,O.z,O.w):F.set(O,J,ie,ne),W.scissor(M.copy(F).multiplyScalar(C).floor())},this.getScissorTest=function(){return B},this.setScissorTest=function(O){W.setScissorTest(B=O)},this.setOpaqueSort=function(O){D=O},this.setTransparentSort=function(O){I=O},this.getClearColor=function(O){return O.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(O=!0,J=!0,ie=!0){let ne=0;O&&(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",k,!1),e.removeEventListener("webglcontextrestored",xe,!1),e.removeEventListener("webglcontextcreationerror",Ae,!1),pt.dispose(),L.dispose(),ce.dispose(),de.dispose(),ge.dispose(),Pe.dispose(),Be.dispose(),ye.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",et),ve.removeEventListener("sessionend",mt),z&&(z.dispose(),z=null),St.stop()};function k(O){O.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),g=!0}function xe(){console.log("THREE.WebGLRenderer: Context Restored."),g=!1;let O=le.autoReset,J=K.enabled,ie=K.autoUpdate,ne=K.needsUpdate,ue=K.type;Le(),le.autoReset=O,K.enabled=J,K.autoUpdate=ie,K.needsUpdate=ne,K.type=ue}function Ae(O){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",O.statusMessage)}function Ye(O){let J=O.target;J.removeEventListener("dispose",Ye),Re(J)}function Re(O){Qe(O),ce.remove(O)}function Qe(O){let J=ce.get(O).programs;J!==void 0&&(J.forEach(function(ie){ye.releaseProgram(ie)}),O.isShaderMaterial&&ye.releaseShaderCache(O))}this.renderBufferDirect=function(O,J,ie,ne,ue,Ke){J===null&&(J=j);let $e=ue.isMesh&&ue.matrixWorld.determinant()<0,nt=DE(O,J,ie,ne,ue);W.setMaterial(ne,$e);let tt=ie.index,Dt=ie.attributes.position;if(tt===null){if(Dt===void 0||Dt.count===0)return}else if(tt.count===0)return;let dt=1;ne.wireframe===!0&&(tt=Ee.getWireframeAttribute(ie),dt=2),Be.setup(ue,ne,nt,ie,tt);let gt,qt=Ce;tt!==null&&(gt=fe.get(tt),qt=Fe,qt.setIndex(gt));let Eo=tt!==null?tt.count:Dt.count,Ma=ie.drawRange.start*dt,Ta=ie.drawRange.count*dt,bi=Ke!==null?Ke.start*dt:0,At=Ke!==null?Ke.count*dt:1/0,Ea=Math.max(Ma,bi),an=Math.min(Eo,Ma+Ta,bi+At)-1,wi=Math.max(0,an-Ea+1);if(wi!==0){if(ue.isMesh)ne.wireframe===!0?(W.setLineWidth(ne.wireframeLinewidth*Q()),qt.setMode(1)):qt.setMode(4);else if(ue.isLine){let _s=ne.linewidth;_s===void 0&&(_s=1),W.setLineWidth(_s*Q()),ue.isLineSegments?qt.setMode(1):ue.isLineLoop?qt.setMode(2):qt.setMode(3)}else ue.isPoints?qt.setMode(0):ue.isSprite&&qt.setMode(4);if(ue.isInstancedMesh)qt.renderInstances(Ea,wi,ue.count);else if(ie.isInstancedBufferGeometry){let _s=Math.min(ie.instanceCount,ie._maxInstanceCount);qt.renderInstances(Ea,wi,_s)}else qt.render(Ea,wi)}},this.compile=function(O,J){d=L.get(O),d.init(),p.push(d),O.traverseVisible(function(ie){ie.isLight&&ie.layers.test(J.layers)&&(d.pushLight(ie),ie.castShadow&&d.pushShadow(ie))}),d.setupLights(m.physicallyCorrectLights),O.traverse(function(ie){let ne=ie.material;if(ne)if(Array.isArray(ne))for(let ue=0;ue<ne.length;ue++){let Ke=ne[ue];Jm(Ke,O,ie)}else Jm(ne,O,ie)}),p.pop(),d=null};let be=null;function Ze(O){be&&be(O)}function et(){St.stop()}function mt(){St.start()}let St=new dw;St.setAnimationLoop(Ze),typeof self<"u"&&St.setContext(self),this.setAnimationLoop=function(O){be=O,ve.setAnimationLoop(O),O===null?St.stop():St.start()},ve.addEventListener("sessionstart",et),ve.addEventListener("sessionend",mt),this.render=function(O,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;O.autoUpdate===!0&&O.updateMatrixWorld(),J.parent===null&&J.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(J),J=ve.getCamera()),O.isScene===!0&&O.onBeforeRender(m,O,J,w),d=L.get(O,p.length),d.init(),p.push(d),V.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),X.setFromProjectionMatrix(V),G=this.localClippingEnabled,Y=P.init(this.clippingPlanes,G,J),h=pt.get(O,f.length),h.init(),f.push(h),cr(O,J,0,m.sortObjects),h.finish(),m.sortObjects===!0&&h.sort(D,I),Y===!0&&P.beginShadows();let ie=d.state.shadowsArray;if(K.render(ie,O,J),Y===!0&&P.endShadows(),this.info.autoReset===!0&&this.info.reset(),he.render(h,O),d.setupLights(m.physicallyCorrectLights),J.isArrayCamera){let ne=J.cameras;for(let ue=0,Ke=ne.length;ue<Ke;ue++){let $e=ne[ue];cd(h,O,$e,$e.viewport)}}else cd(h,O,J);w!==null&&(oe.updateMultisampleRenderTarget(w),oe.updateRenderTargetMipmap(w)),O.isScene===!0&&O.onAfterRender(m,O,J),Be.resetDefaultState(),b=-1,S=null,p.pop(),p.length>0?d=p[p.length-1]:d=null,f.pop(),f.length>0?h=f[f.length-1]:h=null};function cr(O,J,ie,ne){if(O.visible===!1)return;if(O.layers.test(J.layers)){if(O.isGroup)ie=O.renderOrder;else if(O.isLOD)O.autoUpdate===!0&&O.update(J);else if(O.isLight)d.pushLight(O),O.castShadow&&d.pushShadow(O);else if(O.isSprite){if(!O.frustumCulled||X.intersectsSprite(O)){ne&&H.setFromMatrixPosition(O.matrixWorld).applyMatrix4(V);let $e=Pe.update(O),nt=O.material;nt.visible&&h.push(O,$e,nt,ie,H.z,null)}}else if((O.isMesh||O.isLine||O.isPoints)&&(O.isSkinnedMesh&&O.skeleton.frame!==le.render.frame&&(O.skeleton.update(),O.skeleton.frame=le.render.frame),!O.frustumCulled||X.intersectsObject(O))){ne&&H.setFromMatrixPosition(O.matrixWorld).applyMatrix4(V);let $e=Pe.update(O),nt=O.material;if(Array.isArray(nt)){let tt=$e.groups;for(let Dt=0,dt=tt.length;Dt<dt;Dt++){let gt=tt[Dt],qt=nt[gt.materialIndex];qt&&qt.visible&&h.push(O,$e,qt,ie,H.z,gt)}}else nt.visible&&h.push(O,$e,nt,ie,H.z,null)}}let Ke=O.children;for(let $e=0,nt=Ke.length;$e<nt;$e++)cr(Ke[$e],J,ie,ne)}function cd(O,J,ie,ne){let ue=O.opaque,Ke=O.transmissive,$e=O.transparent;d.setupLightsView(ie),Ke.length>0&&_a(ue,J,ie),ne&&W.viewport(_.copy(ne)),ue.length>0&&ud(ue,J,ie),Ke.length>0&&ud(Ke,J,ie),$e.length>0&&ud($e,J,ie),W.buffers.depth.setTest(!0),W.buffers.depth.setMask(!0),W.buffers.color.setMask(!0),W.setPolygonOffset(!1)}function _a(O,J,ie){let ne=te.isWebGL2;z===null&&(z=new ut(1,1,{generateMipmaps:!0,type:$.has("EXT_color_buffer_half_float")?mu:Ut,minFilter:ul,samples:ne&&s===!0?4:0})),m.getDrawingBufferSize(U),ne?z.setSize(U.x,U.y):z.setSize(Hd(U.x),Hd(U.y));let ue=m.getRenderTarget();m.setRenderTarget(z),m.clear();let Ke=m.toneMapping;m.toneMapping=ls,ud(O,J,ie),m.toneMapping=Ke,oe.updateMultisampleRenderTarget(z),oe.updateRenderTargetMipmap(z),m.setRenderTarget(ue)}function ud(O,J,ie){let ne=J.isScene===!0?J.overrideMaterial:null;for(let ue=0,Ke=O.length;ue<Ke;ue++){let $e=O[ue],nt=$e.object,tt=$e.geometry,Dt=ne===null?$e.material:ne,dt=$e.group;nt.layers.test(ie.layers)&&PE(nt,J,ie,tt,Dt,dt)}}function PE(O,J,ie,ne,ue,Ke){O.onBeforeRender(m,J,ie,ne,ue,Ke),O.modelViewMatrix.multiplyMatrices(ie.matrixWorldInverse,O.matrixWorld),O.normalMatrix.getNormalMatrix(O.modelViewMatrix),ue.onBeforeRender(m,J,ie,ne,O,Ke),ue.transparent===!0&&ue.side===un?(ue.side=cn,ue.needsUpdate=!0,m.renderBufferDirect(ie,J,ne,ue,O,Ke),ue.side=Br,ue.needsUpdate=!0,m.renderBufferDirect(ie,J,ne,ue,O,Ke),ue.side=un):m.renderBufferDirect(ie,J,ne,ue,O,Ke),O.onAfterRender(m,J,ie,ne,ue,Ke)}function Jm(O,J,ie){J.isScene!==!0&&(J=j);let ne=ce.get(O),ue=d.state.lights,Ke=d.state.shadowsArray,$e=ue.state.version,nt=ye.getParameters(O,ue.state,Ke,J,ie),tt=ye.getProgramCacheKey(nt),Dt=ne.programs;ne.environment=O.isMeshStandardMaterial?J.environment:null,ne.fog=J.fog,ne.envMap=(O.isMeshStandardMaterial?ge:de).get(O.envMap||ne.environment),Dt===void 0&&(O.addEventListener("dispose",Ye),Dt=new Map,ne.programs=Dt);let dt=Dt.get(tt);if(dt!==void 0){if(ne.currentProgram===dt&&ne.lightsStateVersion===$e)return Ax(O,nt),dt}else nt.uniforms=ye.getUniforms(O),O.onBuild(ie,nt,m),O.onBeforeCompile(nt,m),dt=ye.acquireProgram(nt,tt),Dt.set(tt,dt),ne.uniforms=nt.uniforms;let gt=ne.uniforms;(!O.isShaderMaterial&&!O.isRawShaderMaterial||O.clipping===!0)&&(gt.clippingPlanes=P.uniform),Ax(O,nt),ne.needsLights=LE(O),ne.lightsStateVersion=$e,ne.needsLights&&(gt.ambientLightColor.value=ue.state.ambient,gt.lightProbe.value=ue.state.probe,gt.directionalLights.value=ue.state.directional,gt.directionalLightShadows.value=ue.state.directionalShadow,gt.spotLights.value=ue.state.spot,gt.spotLightShadows.value=ue.state.spotShadow,gt.rectAreaLights.value=ue.state.rectArea,gt.ltc_1.value=ue.state.rectAreaLTC1,gt.ltc_2.value=ue.state.rectAreaLTC2,gt.pointLights.value=ue.state.point,gt.pointLightShadows.value=ue.state.pointShadow,gt.hemisphereLights.value=ue.state.hemi,gt.directionalShadowMap.value=ue.state.directionalShadowMap,gt.directionalShadowMatrix.value=ue.state.directionalShadowMatrix,gt.spotShadowMap.value=ue.state.spotShadowMap,gt.spotShadowMatrix.value=ue.state.spotShadowMatrix,gt.pointShadowMap.value=ue.state.pointShadowMap,gt.pointShadowMatrix.value=ue.state.pointShadowMatrix);let qt=dt.getUniforms(),Eo=ja.seqWithValue(qt.seq,gt);return ne.currentProgram=dt,ne.uniformsList=Eo,dt}function Ax(O,J){let ie=ce.get(O);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 DE(O,J,ie,ne,ue){J.isScene!==!0&&(J=j),oe.resetTextureUnits();let Ke=J.fog,$e=ne.isMeshStandardMaterial?J.environment:null,nt=w===null?m.outputEncoding:w.isXRRenderTarget===!0?w.texture.encoding:Er,tt=(ne.isMeshStandardMaterial?ge:de).get(ne.envMap||$e),Dt=ne.vertexColors===!0&&!!ie.attributes.color&&ie.attributes.color.itemSize===4,dt=!!ne.normalMap&&!!ie.attributes.tangent,gt=!!ie.morphAttributes.position,qt=!!ie.morphAttributes.normal,Eo=!!ie.morphAttributes.color,Ma=ne.toneMapped?m.toneMapping:ls,Ta=ie.morphAttributes.position||ie.morphAttributes.normal||ie.morphAttributes.color,bi=Ta!==void 0?Ta.length:0,At=ce.get(ne),Ea=d.state.lights;if(Y===!0&&(G===!0||O!==S)){let Si=O===S&&ne.id===b;P.setState(ne,O,Si)}let an=!1;ne.version===At.__version?(At.needsLights&&At.lightsStateVersion!==Ea.state.version||At.outputEncoding!==nt||ue.isInstancedMesh&&At.instancing===!1||!ue.isInstancedMesh&&At.instancing===!0||ue.isSkinnedMesh&&At.skinning===!1||!ue.isSkinnedMesh&&At.skinning===!0||At.envMap!==tt||ne.fog===!0&&At.fog!==Ke||At.numClippingPlanes!==void 0&&(At.numClippingPlanes!==P.numPlanes||At.numIntersection!==P.numIntersection)||At.vertexAlphas!==Dt||At.vertexTangents!==dt||At.morphTargets!==gt||At.morphNormals!==qt||At.morphColors!==Eo||At.toneMapping!==Ma||te.isWebGL2===!0&&At.morphTargetsCount!==bi)&&(an=!0):(an=!0,At.__version=ne.version);let wi=At.currentProgram;an===!0&&(wi=Jm(ne,J,ue));let _s=!1,tu=!1,$m=!1,Zn=wi.getUniforms(),nu=At.uniforms;if(W.useProgram(wi.program)&&(_s=!0,tu=!0,$m=!0),ne.id!==b&&(b=ne.id,tu=!0),_s||S!==O){if(Zn.setValue(q,"projectionMatrix",O.projectionMatrix),te.logarithmicDepthBuffer&&Zn.setValue(q,"logDepthBufFC",2/(Math.log(O.far+1)/Math.LN2)),S!==O&&(S=O,tu=!0,$m=!0),ne.isShaderMaterial||ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshStandardMaterial||ne.envMap){let Si=Zn.map.cameraPosition;Si!==void 0&&Si.setValue(q,H.setFromMatrixPosition(O.matrixWorld))}(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial)&&Zn.setValue(q,"isOrthographic",O.isOrthographicCamera===!0),(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial||ne.isShadowMaterial||ue.isSkinnedMesh)&&Zn.setValue(q,"viewMatrix",O.matrixWorldInverse)}if(ue.isSkinnedMesh){Zn.setOptional(q,ue,"bindMatrix"),Zn.setOptional(q,ue,"bindMatrixInverse");let Si=ue.skeleton;Si&&(te.floatVertexTextures?(Si.boneTexture===null&&Si.computeBoneTexture(),Zn.setValue(q,"boneTexture",Si.boneTexture,oe),Zn.setValue(q,"boneTextureSize",Si.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 eg=ie.morphAttributes;return(eg.position!==void 0||eg.normal!==void 0||eg.color!==void 0&&te.isWebGL2===!0)&&pe.update(ue,ie,ne,wi),(tu||At.receiveShadow!==ue.receiveShadow)&&(At.receiveShadow=ue.receiveShadow,Zn.setValue(q,"receiveShadow",ue.receiveShadow)),tu&&(Zn.setValue(q,"toneMappingExposure",m.toneMappingExposure),At.needsLights&&IE(nu,$m),Ke&&ne.fog===!0&&Oe.refreshFogUniforms(nu,Ke),Oe.refreshMaterialUniforms(nu,ne,C,E,z),ja.upload(q,At.uniformsList,nu,oe)),ne.isShaderMaterial&&ne.uniformsNeedUpdate===!0&&(ja.upload(q,At.uniformsList,nu,oe),ne.uniformsNeedUpdate=!1),ne.isSpriteMaterial&&Zn.setValue(q,"center",ue.center),Zn.setValue(q,"modelViewMatrix",ue.modelViewMatrix),Zn.setValue(q,"normalMatrix",ue.normalMatrix),Zn.setValue(q,"modelMatrix",ue.matrixWorld),wi}function IE(O,J){O.ambientLightColor.needsUpdate=J,O.lightProbe.needsUpdate=J,O.directionalLights.needsUpdate=J,O.directionalLightShadows.needsUpdate=J,O.pointLights.needsUpdate=J,O.pointLightShadows.needsUpdate=J,O.spotLights.needsUpdate=J,O.spotLightShadows.needsUpdate=J,O.rectAreaLights.needsUpdate=J,O.hemisphereLights.needsUpdate=J}function LE(O){return O.isMeshLambertMaterial||O.isMeshToonMaterial||O.isMeshPhongMaterial||O.isMeshStandardMaterial||O.isShadowMaterial||O.isShaderMaterial&&O.lights===!0}this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return v},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(O,J,ie){ce.get(O.texture).__webglTexture=J,ce.get(O.depthTexture).__webglTexture=ie;let ne=ce.get(O);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(O,J){let ie=ce.get(O);ie.__webglFramebuffer=J,ie.__useDefaultFramebuffer=J===void 0},this.setRenderTarget=function(O,J=0,ie=0){w=O,y=J,v=ie;let ne=!0;if(O){let tt=ce.get(O);tt.__useDefaultFramebuffer!==void 0?(W.bindFramebuffer(36160,null),ne=!1):tt.__webglFramebuffer===void 0?oe.setupRenderTarget(O):tt.__hasExternalTextures&&oe.rebindTextures(O,ce.get(O.texture).__webglTexture,ce.get(O.depthTexture).__webglTexture)}let ue=null,Ke=!1,$e=!1;if(O){let tt=O.texture;(tt.isData3DTexture||tt.isDataArrayTexture)&&($e=!0);let Dt=ce.get(O).__webglFramebuffer;O.isWebGLCubeRenderTarget?(ue=Dt[J],Ke=!0):te.isWebGL2&&O.samples>0&&oe.useMultisampledRTT(O)===!1?ue=ce.get(O).__webglMultisampledFramebuffer:ue=Dt,_.copy(O.viewport),M.copy(O.scissor),x=O.scissorTest}else _.copy(R).multiplyScalar(C).floor(),M.copy(F).multiplyScalar(C).floor(),x=B;if(W.bindFramebuffer(36160,ue)&&te.drawBuffers&&ne&&W.drawBuffers(O,ue),W.viewport(_),W.scissor(M),W.setScissorTest(x),Ke){let tt=ce.get(O.texture);q.framebufferTexture2D(36160,36064,34069+J,tt.__webglTexture,ie)}else if($e){let tt=ce.get(O.texture),Dt=J||0;q.framebufferTextureLayer(36160,36064,tt.__webglTexture,ie||0,Dt)}b=-1},this.readRenderTargetPixels=function(O,J,ie,ne,ue,Ke,$e){if(!(O&&O.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let nt=ce.get(O).__webglFramebuffer;if(O.isWebGLCubeRenderTarget&&$e!==void 0&&(nt=nt[$e]),nt){W.bindFramebuffer(36160,nt);try{let tt=O.texture,Dt=tt.format,dt=tt.type;if(Dt!==ni&&re.convert(Dt)!==q.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let gt=dt===mu&&($.has("EXT_color_buffer_half_float")||te.isWebGL2&&$.has("EXT_color_buffer_float"));if(dt!==Ut&&re.convert(dt)!==q.getParameter(35738)&&!(dt===_i&&(te.isWebGL2||$.has("OES_texture_float")||$.has("WEBGL_color_buffer_float")))&&!gt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=O.width-ne&&ie>=0&&ie<=O.height-ue&&q.readPixels(J,ie,ne,ue,re.convert(Dt),re.convert(dt),Ke)}finally{let tt=w!==null?ce.get(w).__webglFramebuffer:null;W.bindFramebuffer(36160,tt)}}},this.copyFramebufferToTexture=function(O,J,ie=0){let ne=Math.pow(2,-ie),ue=Math.floor(J.image.width*ne),Ke=Math.floor(J.image.height*ne);oe.setTexture2D(J,0),q.copyTexSubImage2D(3553,ie,0,0,O.x,O.y,ue,Ke),W.unbindTexture()},this.copyTextureToTexture=function(O,J,ie,ne=0){let ue=J.image.width,Ke=J.image.height,$e=re.convert(ie.format),nt=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,O.x,O.y,ue,Ke,$e,nt,J.image.data):J.isCompressedTexture?q.compressedTexSubImage2D(3553,ne,O.x,O.y,J.mipmaps[0].width,J.mipmaps[0].height,$e,J.mipmaps[0].data):q.texSubImage2D(3553,ne,O.x,O.y,$e,nt,J.image),ne===0&&ie.generateMipmaps&&q.generateMipmap(3553),W.unbindTexture()},this.copyTextureToTexture3D=function(O,J,ie,ne,ue=0){if(m.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Ke=O.max.x-O.min.x+1,$e=O.max.y-O.min.y+1,nt=O.max.z-O.min.z+1,tt=re.convert(ne.format),Dt=re.convert(ne.type),dt;if(ne.isData3DTexture)oe.setTexture3D(ne,0),dt=32879;else if(ne.isDataArrayTexture)oe.setTexture2DArray(ne,0),dt=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 gt=q.getParameter(3314),qt=q.getParameter(32878),Eo=q.getParameter(3316),Ma=q.getParameter(3315),Ta=q.getParameter(32877),bi=ie.isCompressedTexture?ie.mipmaps[0]:ie.image;q.pixelStorei(3314,bi.width),q.pixelStorei(32878,bi.height),q.pixelStorei(3316,O.min.x),q.pixelStorei(3315,O.min.y),q.pixelStorei(32877,O.min.z),ie.isDataTexture||ie.isData3DTexture?q.texSubImage3D(dt,ue,J.x,J.y,J.z,Ke,$e,nt,tt,Dt,bi.data):ie.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),q.compressedTexSubImage3D(dt,ue,J.x,J.y,J.z,Ke,$e,nt,tt,bi.data)):q.texSubImage3D(dt,ue,J.x,J.y,J.z,Ke,$e,nt,tt,Dt,bi),q.pixelStorei(3314,gt),q.pixelStorei(32878,qt),q.pixelStorei(3316,Eo),q.pixelStorei(3315,Ma),q.pixelStorei(32877,Ta),ue===0&&ne.generateMipmaps&&q.generateMipmap(dt),W.unbindTexture()},this.initTexture=function(O){O.isCubeTexture?oe.setTextureCube(O,0):O.isData3DTexture?oe.setTexture3D(O,0):O.isDataArrayTexture?oe.setTexture2DArray(O,0):oe.setTexture2D(O,0),W.unbindTexture()},this.resetState=function(){y=0,v=0,w=null,W.reset(),Be.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var ny=class extends Ey{};ny.prototype.isWebGL1Renderer=!0;var Za=class{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new Ne(e),this.near=t,this.far=n}clone(){return new Za(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},tr=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}},Zd=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=kg,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Mi()}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=Mi()),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=Mi()),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}}},Kn=new A,Fo=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++)Kn.fromBufferAttribute(this,t),Kn.applyMatrix4(e),this.setXYZ(t,Kn.x,Kn.y,Kn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Kn.fromBufferAttribute(this,t),Kn.applyNormalMatrix(e),this.setXYZ(t,Kn.x,Kn.y,Kn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Kn.fromBufferAttribute(this,t),Kn.transformDirection(e),this.setXYZ(t,Kn.x,Kn.y,Kn.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 Ge(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 Fo(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 Kd=class extends Ge{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 Nr=class extends No{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ne(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}},zb=new A,Gb=new A,kb=new _e,Lg=new cs,Rd=new Ln,Uo=class extends ot{constructor(e=new Ie,t=new Nr){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++)zb.fromBufferAttribute(t,i-1),Gb.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=zb.distanceTo(Gb);e.setAttribute("lineDistance",new we(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(),Rd.copy(n.boundingSphere),Rd.applyMatrix4(i),Rd.radius+=s,e.ray.intersectsSphere(Rd)===!1)return;kb.copy(i).invert(),Lg.copy(e.ray).applyMatrix4(kb);let a=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=a*a,u=new A,c=new A,h=new A,d=new A,f=this.isLineSegments?2:1,p=n.index,g=n.attributes.position;if(p!==null){let y=Math.max(0,o.start),v=Math.min(p.count,o.start+o.count);for(let w=y,b=v-1;w<b;w+=f){let S=p.getX(w),_=p.getX(w+1);if(u.fromBufferAttribute(g,S),c.fromBufferAttribute(g,_),Lg.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let x=e.ray.origin.distanceTo(d);x<e.near||x>e.far||t.push({distance:x,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}else{let y=Math.max(0,o.start),v=Math.min(g.count,o.start+o.count);for(let w=y,b=v-1;w<b;w+=f){if(u.fromBufferAttribute(g,w),c.fromBufferAttribute(g,w+1),Lg.distanceSqToSegment(u,c,d,h)>l)continue;d.applyMatrix4(this.matrixWorld);let _=e.ray.origin.distanceTo(d);_<e.near||_>e.far||t.push({distance:_,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}}}}},Vb=new A,Hb=new A,ks=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)Vb.fromBufferAttribute(t,i),Hb.fromBufferAttribute(t,i+1),n[i]=i===0?0:n[i-1],n[i+1]=n[i]+Vb.distanceTo(Hb);e.setAttribute("lineDistance",new we(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}};var Fr=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 A);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 A,i=[],s=[],o=[],a=new A,l=new _e;for(let f=0;f<=e;f++){let p=f/e;i[f]=this.getTangentAt(p,new A)}s[0]=new A,o[0]=new A;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 p=Math.acos(yn(i[f-1].dot(i[f]),-1,1));s[f].applyMatrix4(l.makeRotationAxis(a,p))}o[f].crossVectors(i[f],s[f])}if(t===!0){let f=Math.acos(yn(s[0].dot(s[e]),-1,1));f/=e,i[0].dot(a.crossVectors(s[0],s[e]))>0&&(f=-f);for(let p=1;p<=e;p++)s[p].applyMatrix4(l.makeRotationAxis(i[p],f*p)),o[p].crossVectors(i[p],s[p])}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}},zo=class extends Fr{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}},ry=class extends zo{constructor(e,t,n,i,s,o){super(e,t,n,n,i,s,o),this.isArcCurve=!0,this.type="ArcCurve"}};function Cy(){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 Od=new A,Rg=new Cy,Og=new Cy,Bg=new Cy,iy=class extends Fr{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 A){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]:(Od.subVectors(i[0],i[1]).add(i[0]),u=Od);let h=i[a%s],d=i[(a+1)%s];if(this.closed||a+2<s?c=i[(a+2)%s]:(Od.subVectors(i[s-1],i[s-2]).add(i[s-1]),c=Od),this.curveType==="centripetal"||this.curveType==="chordal"){let f=this.curveType==="chordal"?.5:.25,p=Math.pow(u.distanceToSquared(h),f),m=Math.pow(h.distanceToSquared(d),f),g=Math.pow(d.distanceToSquared(c),f);m<1e-4&&(m=1),p<1e-4&&(p=m),g<1e-4&&(g=m),Rg.initNonuniformCatmullRom(u.x,h.x,d.x,c.x,p,m,g),Og.initNonuniformCatmullRom(u.y,h.y,d.y,c.y,p,m,g),Bg.initNonuniformCatmullRom(u.z,h.z,d.z,c.z,p,m,g)}else this.curveType==="catmullrom"&&(Rg.initCatmullRom(u.x,h.x,d.x,c.x,this.tension),Og.initCatmullRom(u.y,h.y,d.y,c.y,this.tension),Bg.initCatmullRom(u.z,h.z,d.z,c.z,this.tension));return n.set(Rg.calc(l),Og.calc(l),Bg.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 A().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function Wb(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 IL(r,e){let t=1-r;return t*t*e}function LL(r,e){return 2*(1-r)*r*e}function RL(r,e){return r*r*e}function fu(r,e,t,n){return IL(r,e)+LL(r,t)+RL(r,n)}function OL(r,e){let t=1-r;return t*t*t*e}function BL(r,e){let t=1-r;return 3*t*t*r*e}function NL(r,e){return 3*(1-r)*r*r*e}function FL(r,e){return r*r*r*e}function pu(r,e,t,n,i){return OL(r,e)+BL(r,t)+NL(r,n)+FL(r,i)}var hr=class extends Fr{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(pu(e,i.x,s.x,o.x,a.x),pu(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}},sy=class extends Fr{constructor(e=new A,t=new A,n=new A,i=new A){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new A){let n=t,i=this.v0,s=this.v1,o=this.v2,a=this.v3;return n.set(pu(e,i.x,s.x,o.x,a.x),pu(e,i.y,s.y,o.y,a.y),pu(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}},dr=class extends Fr{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}},bu=class extends Fr{constructor(e=new A,t=new A){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new A){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}},si=class extends Fr{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(fu(e,i.x,s.x,o.x),fu(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}},oy=class extends Fr{constructor(e=new A,t=new A,n=new A){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new A){let n=t,i=this.v0,s=this.v1,o=this.v2;return n.set(fu(e,i.x,s.x,o.x),fu(e,i.y,s.y,o.y),fu(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}},Ka=class extends Fr{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(Wb(a,l.x,u.x,c.x,h.x),Wb(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}},UL=Object.freeze({__proto__:null,ArcCurve:ry,CatmullRomCurve3:iy,CubicBezierCurve:hr,CubicBezierCurve3:sy,EllipseCurve:zo,LineCurve:dr,LineCurve3:bu,QuadraticBezierCurve:si,QuadraticBezierCurve3:oy,SplineCurve:Ka}),ay=class extends Fr{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 dr(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 UL[i.type]().fromJSON(i))}return this}},wu=class extends ay{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 dr(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 si(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 hr(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 Ka(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 zo(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}},Ja=class extends Ie{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=yn(i,0,Math.PI*2);let s=[],o=[],a=[],l=[],u=[],c=1/t,h=new A,d=new N,f=new A,p=new A,m=new A,g=0,y=0;for(let v=0;v<=e.length-1;v++)switch(v){case 0:g=e[v+1].x-e[v].x,y=e[v+1].y-e[v].y,f.x=y*1,f.y=-g,f.z=y*0,m.copy(f),f.normalize(),l.push(f.x,f.y,f.z);break;case e.length-1:l.push(m.x,m.y,m.z);break;default:g=e[v+1].x-e[v].x,y=e[v+1].y-e[v].y,f.x=y*1,f.y=-g,f.z=y*0,p.copy(f),f.x+=m.x,f.y+=m.y,f.z+=m.z,f.normalize(),l.push(f.x,f.y,f.z),m.copy(p)}for(let v=0;v<=t;v++){let w=n+v*c*i,b=Math.sin(w),S=Math.cos(w);for(let _=0;_<=e.length-1;_++){h.x=e[_].x*b,h.y=e[_].y,h.z=e[_].x*S,o.push(h.x,h.y,h.z),d.x=v/t,d.y=_/(e.length-1),a.push(d.x,d.y);let M=l[3*_+0]*b,x=l[3*_+1],T=l[3*_+0]*S;u.push(M,x,T)}}for(let v=0;v<t;v++)for(let w=0;w<e.length-1;w++){let b=w+v*e.length,S=b,_=b+e.length,M=b+e.length+1,x=b+1;s.push(S,_,x),s.push(M,x,_)}this.setIndex(s),this.setAttribute("position",new we(o,3)),this.setAttribute("uv",new we(a,2)),this.setAttribute("normal",new we(u,3))}static fromJSON(e){return new Ja(e.points,e.segments,e.phiStart,e.phiLength)}};var Go=class extends Ie{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=[],p=0,m=[],g=n/2,y=0;v(),o===!1&&(e>0&&w(!0),t>0&&w(!1)),this.setIndex(c),this.setAttribute("position",new we(h,3)),this.setAttribute("normal",new we(d,3)),this.setAttribute("uv",new we(f,2));function v(){let b=new A,S=new A,_=0,M=(t-e)/n;for(let x=0;x<=s;x++){let T=[],E=x/s,C=E*(t-e)+e;for(let D=0;D<=i;D++){let I=D/i,R=I*l+a,F=Math.sin(R),B=Math.cos(R);S.x=C*F,S.y=-E*n+g,S.z=C*B,h.push(S.x,S.y,S.z),b.set(F,M,B).normalize(),d.push(b.x,b.y,b.z),f.push(I,1-E),T.push(p++)}m.push(T)}for(let x=0;x<i;x++)for(let T=0;T<s;T++){let E=m[T][x],C=m[T+1][x],D=m[T+1][x+1],I=m[T][x+1];c.push(E,C,I),c.push(C,D,I),_+=6}u.addGroup(y,_,0),y+=_}function w(b){let S=p,_=new N,M=new A,x=0,T=b===!0?e:t,E=b===!0?1:-1;for(let D=1;D<=i;D++)h.push(0,g*E,0),d.push(0,E,0),f.push(.5,.5),p++;let C=p;for(let D=0;D<=i;D++){let R=D/i*l+a,F=Math.cos(R),B=Math.sin(R);M.x=T*B,M.y=g*E,M.z=T*F,h.push(M.x,M.y,M.z),d.push(0,E,0),_.x=F*.5+.5,_.y=B*.5*E+.5,f.push(_.x,_.y),p++}for(let D=0;D<i;D++){let I=S+D,R=C+D;b===!0?c.push(R,R+1,I):c.push(R+1,R,I),x+=3}u.addGroup(y,x,b===!0?1:2),y+=x}}static fromJSON(e){return new Go(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},$a=class extends Go{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 $a(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},el=class extends Ie{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 we(s,3)),this.setAttribute("normal",new we(s.slice(),3)),this.setAttribute("uv",new we(o,2)),i===0?this.computeVertexNormals():this.normalizeNormals();function a(v){let w=new A,b=new A,S=new A;for(let _=0;_<t.length;_+=3)f(t[_+0],w),f(t[_+1],b),f(t[_+2],S),l(w,b,S,v)}function l(v,w,b,S){let _=S+1,M=[];for(let x=0;x<=_;x++){M[x]=[];let T=v.clone().lerp(b,x/_),E=w.clone().lerp(b,x/_),C=_-x;for(let D=0;D<=C;D++)D===0&&x===_?M[x][D]=T:M[x][D]=T.clone().lerp(E,D/C)}for(let x=0;x<_;x++)for(let T=0;T<2*(_-x)-1;T++){let E=Math.floor(T/2);T%2===0?(d(M[x][E+1]),d(M[x+1][E]),d(M[x][E])):(d(M[x][E+1]),d(M[x+1][E+1]),d(M[x+1][E]))}}function u(v){let w=new A;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(v),s[b+0]=w.x,s[b+1]=w.y,s[b+2]=w.z}function c(){let v=new A;for(let w=0;w<s.length;w+=3){v.x=s[w+0],v.y=s[w+1],v.z=s[w+2];let b=g(v)/2/Math.PI+.5,S=y(v)/Math.PI+.5;o.push(b,1-S)}p(),h()}function h(){for(let v=0;v<o.length;v+=6){let w=o[v+0],b=o[v+2],S=o[v+4],_=Math.max(w,b,S),M=Math.min(w,b,S);_>.9&&M<.1&&(w<.2&&(o[v+0]+=1),b<.2&&(o[v+2]+=1),S<.2&&(o[v+4]+=1))}}function d(v){s.push(v.x,v.y,v.z)}function f(v,w){let b=v*3;w.x=e[b+0],w.y=e[b+1],w.z=e[b+2]}function p(){let v=new A,w=new A,b=new A,S=new A,_=new N,M=new N,x=new N;for(let T=0,E=0;T<s.length;T+=9,E+=6){v.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]),_.set(o[E+0],o[E+1]),M.set(o[E+2],o[E+3]),x.set(o[E+4],o[E+5]),S.copy(v).add(w).add(b).divideScalar(3);let C=g(S);m(_,E+0,v,C),m(M,E+2,w,C),m(x,E+4,b,C)}}function m(v,w,b,S){S<0&&v.x===1&&(o[w]=v.x-1),b.x===0&&b.z===0&&(o[w]=S/2/Math.PI+.5)}function g(v){return Math.atan2(v.z,-v.x)}function y(v){return Math.atan2(-v.y,Math.sqrt(v.x*v.x+v.z*v.z))}}static fromJSON(e){return new el(e.vertices,e.indices,e.radius,e.details)}},tl=class extends el{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 tl(e.radius,e.detail)}};var ri=class extends wu{constructor(e){super(e),this.uuid=Mi(),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 wu().fromJSON(i))}return this}},zL={triangulate:function(r,e,t=2){let n=e&&e.length,i=n?e[0]*t:r.length,s=vw(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=WL(r,e,s,t)),r.length>80*t){a=u=r[0],l=c=r[1];for(let p=t;p<i;p+=t)h=r[p],d=r[p+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 Su(s,o,t,a,l,f),o}};function vw(r,e,t,n,i){let s,o;if(i===t3(r,e,t,n)>0)for(s=e;s<t;s+=n)o=jb(s,r[s],r[s+1],o);else for(s=t-n;s>=e;s-=n)o=jb(s,r[s],r[s+1],o);return o&&hf(o,o.next)&&(_u(o),o=o.next),o}function Vs(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(hf(t,t.next)||Ht(t.prev,t,t.next)===0)){if(_u(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function Su(r,e,t,n,i,s,o){if(!r)return;!o&&s&&QL(r,n,i,s);let a=r,l,u;for(;r.prev!==r.next;){if(l=r.prev,u=r.next,s?kL(r,n,i,s):GL(r)){e.push(l.i/t),e.push(r.i/t),e.push(u.i/t),_u(r),r=u.next,a=u.next;continue}if(r=u,r===a){o?o===1?(r=VL(Vs(r),e,t),Su(r,e,t,n,i,s,2)):o===2&&HL(r,e,t,n,i,s):Su(Vs(r),e,t,n,i,s,1);break}}}function GL(r){let e=r.prev,t=r,n=r.next;if(Ht(e,t,n)>=0)return!1;let i=r.next.next;for(;i!==r.prev;){if(Wa(e.x,e.y,t.x,t.y,n.x,n.y,i.x,i.y)&&Ht(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function kL(r,e,t,n){let i=r.prev,s=r,o=r.next;if(Ht(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=ly(a,l,e,t,n),d=ly(u,c,e,t,n),f=r.prevZ,p=r.nextZ;for(;f&&f.z>=h&&p&&p.z<=d;){if(f!==r.prev&&f!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&Ht(f.prev,f,f.next)>=0||(f=f.prevZ,p!==r.prev&&p!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,p.x,p.y)&&Ht(p.prev,p,p.next)>=0))return!1;p=p.nextZ}for(;f&&f.z>=h;){if(f!==r.prev&&f!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,f.x,f.y)&&Ht(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;p&&p.z<=d;){if(p!==r.prev&&p!==r.next&&Wa(i.x,i.y,s.x,s.y,o.x,o.y,p.x,p.y)&&Ht(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function VL(r,e,t){let n=r;do{let i=n.prev,s=n.next.next;!hf(i,s)&&xw(i,n,n.next,s)&&Au(i,s)&&Au(s,i)&&(e.push(i.i/t),e.push(n.i/t),e.push(s.i/t),_u(n),_u(n.next),n=r=s),n=n.next}while(n!==r);return Vs(n)}function HL(r,e,t,n,i,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&JL(o,a)){let l=bw(o,a);o=Vs(o,o.next),l=Vs(l,l.next),Su(o,e,t,n,i,s),Su(l,e,t,n,i,s);return}a=a.next}o=o.next}while(o!==r)}function WL(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=vw(r,a,l,n,!1),u===u.next&&(u.steiner=!0),i.push(KL(u));for(i.sort(jL),s=0;s<i.length;s++)qL(i[s],t),t=Vs(t,t.next);return t}function jL(r,e){return r.x-e.x}function qL(r,e){if(e=XL(r,e),e){let t=bw(e,r);Vs(e,e.next),Vs(t,t.next)}}function XL(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&&Wa(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),Au(t,r)&&(h<c||h===c&&(t.x>o.x||t.x===o.x&&YL(o,t)))&&(o=t,c=h)),t=t.next;while(t!==a);return o}function YL(r,e){return Ht(r.prev,r,e.prev)<0&&Ht(e.next,r,r.next)<0}function QL(r,e,t,n){let i=r;do i.z===null&&(i.z=ly(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,ZL(i)}function ZL(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 ly(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 KL(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 Wa(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 JL(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!$L(r,e)&&(Au(r,e)&&Au(e,r)&&e3(r,e)&&(Ht(r.prev,r,e.prev)||Ht(r,e.prev,e))||hf(r,e)&&Ht(r.prev,r,r.next)>0&&Ht(e.prev,e,e.next)>0)}function Ht(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function hf(r,e){return r.x===e.x&&r.y===e.y}function xw(r,e,t,n){let i=Nd(Ht(r,e,t)),s=Nd(Ht(r,e,n)),o=Nd(Ht(t,n,r)),a=Nd(Ht(t,n,e));return!!(i!==s&&o!==a||i===0&&Bd(r,t,e)||s===0&&Bd(r,n,e)||o===0&&Bd(t,r,n)||a===0&&Bd(t,e,n))}function Bd(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 Nd(r){return r>0?1:r<0?-1:0}function $L(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&&xw(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function Au(r,e){return Ht(r.prev,r,r.next)<0?Ht(r,e,r.next)>=0&&Ht(r,r.prev,e)>=0:Ht(r,e,r.prev)<0||Ht(r,r.next,e)<0}function e3(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 bw(r,e){let t=new cy(r.i,r.x,r.y),n=new cy(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 jb(r,e,t,n){let i=new cy(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 _u(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 cy(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 t3(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 Bs=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 Bs.area(e)<0}static triangulateShape(e,t){let n=[],i=[],s=[];qb(e),Xb(n,e);let o=e.length;t.forEach(qb);for(let l=0;l<t.length;l++)i.push(o),o+=t[l].length,Xb(n,t[l]);let a=zL.triangulate(n,i);for(let l=0;l<a.length;l+=3)s.push(a.slice(l,l+3));return s}};function qb(r){let e=r.length;e>2&&r[e-1].equals(r[0])&&r.pop()}function Xb(r,e){for(let t=0;t<e.length;t++)r.push(e[t].x),r.push(e[t].y)}var nl=class extends el{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 nl(e.radius,e.detail)}};var rl=class extends Ie{constructor(e=new ri([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 we(i,3)),this.setAttribute("normal",new we(s,3)),this.setAttribute("uv",new we(o,2));function u(c){let h=i.length/3,d=c.extractPoints(t),f=d.shape,p=d.holes;Bs.isClockWise(f)===!1&&(f=f.reverse());for(let g=0,y=p.length;g<y;g++){let v=p[g];Bs.isClockWise(v)===!0&&(p[g]=v.reverse())}let m=Bs.triangulateShape(f,p);for(let g=0,y=p.length;g<y;g++){let v=p[g];f=f.concat(v)}for(let g=0,y=f.length;g<y;g++){let v=f[g];i.push(v.x,v.y,0),s.push(0,0,1),o.push(v.x,v.y)}for(let g=0,y=m.length;g<y;g++){let v=m[g],w=v[0]+h,b=v[1]+h,S=v[2]+h;n.push(w,b,S),l+=3}}}toJSON(){let e=super.toJSON(),t=this.parameters.shapes;return n3(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 rl(n,e.curveSegments)}};function n3(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 ko=class extends Ie{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 A,d=new A,f=[],p=[],m=[],g=[];for(let y=0;y<=n;y++){let v=[],w=y/n,b=0;y==0&&o==0?b=.5/t:y==n&&l==Math.PI&&(b=-.5/t);for(let S=0;S<=t;S++){let _=S/t;h.x=-e*Math.cos(i+_*s)*Math.sin(o+w*a),h.y=e*Math.cos(o+w*a),h.z=e*Math.sin(i+_*s)*Math.sin(o+w*a),p.push(h.x,h.y,h.z),d.copy(h).normalize(),m.push(d.x,d.y,d.z),g.push(_+b,1-w),v.push(u++)}c.push(v)}for(let y=0;y<n;y++)for(let v=0;v<t;v++){let w=c[y][v+1],b=c[y][v],S=c[y+1][v],_=c[y+1][v+1];(y!==0||o>0)&&f.push(w,b,_),(y!==n-1||l<Math.PI)&&f.push(b,S,_)}this.setIndex(f),this.setAttribute("position",new we(p,3)),this.setAttribute("normal",new we(m,3)),this.setAttribute("uv",new we(g,2))}static fromJSON(e){return new ko(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}};var il=class extends Ie{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 A,d=new A,f=new A,p=new A,m=new A,g=new A,y=new A;for(let w=0;w<=n;++w){let b=w/n*s*Math.PI*2;v(b,s,o,e,f),v(b+.01,s,o,e,p),g.subVectors(p,f),y.addVectors(p,f),m.crossVectors(g,y),y.crossVectors(m,g),m.normalize(),y.normalize();for(let S=0;S<=i;++S){let _=S/i*Math.PI*2,M=-t*Math.cos(_),x=t*Math.sin(_);h.x=f.x+(M*y.x+x*m.x),h.y=f.y+(M*y.y+x*m.y),h.z=f.z+(M*y.z+x*m.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(S/i)}}for(let w=1;w<=n;w++)for(let b=1;b<=i;b++){let S=(i+1)*(w-1)+(b-1),_=(i+1)*w+(b-1),M=(i+1)*w+b,x=(i+1)*(w-1)+b;a.push(S,_,x),a.push(_,M,x)}this.setIndex(a),this.setAttribute("position",new we(l,3)),this.setAttribute("normal",new we(u,3)),this.setAttribute("uv",new we(c,2));function v(w,b,S,_,M){let x=Math.cos(w),T=Math.sin(w),E=S/b*w,C=Math.cos(E);M.x=_*(2+C)*.5*x,M.y=_*(2+C)*T*.5,M.z=_*Math.sin(E)*.5}}static fromJSON(e){return new il(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}};var gn={arraySlice:function(r,e,t){return gn.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 p=u.times[f]*i;if(!(p<t||p>=n)){h.push(u.times[f]);for(let m=0;m<c;++m)d.push(u.values[f*c+m])}}h.length!==0&&(u.times=gn.convertArray(h,u.times.constructor),u.values=gn.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 p=a.times.length-1,m;if(s<=a.times[0]){let y=c,v=h-c;m=gn.arraySlice(a.values,y,v)}else if(s>=a.times[p]){let y=p*h+c,v=y+h-c;m=gn.arraySlice(a.values,y,v)}else{let y=a.createInterpolant(),v=c,w=h-c;y.evaluate(s),m=gn.arraySlice(y.resultBuffer,v,w)}l==="quaternion"&&new st().fromArray(m).normalize().conjugate().toArray(m);let g=u.times.length;for(let y=0;y<g;++y){let v=y*f+d;if(l==="quaternion")st.multiplyQuaternionsFlat(u.values,v,m,0,u.values,v);else{let w=f-d*2;for(let b=0;b<w;++b)u.values[v+b]-=m[b]}}}return r.blendMode=DC,r}},sl=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_(){}},uy=class extends sl{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:nb,endingEnd:nb}}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 rb:s=e,a=2*t-n;break;case ib: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 rb:o=e,l=2*n-t;break;case ib: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,p=(n-t)/(i-t),m=p*p,g=m*p,y=-d*g+2*d*m-d*p,v=(1+d)*g+(-1.5-2*d)*m+(-.5+d)*p+1,w=(-1-f)*g+(1.5+f)*m+.5*p,b=f*g-f*m;for(let S=0;S!==a;++S)s[S]=y*o[c+S]+v*o[u+S]+w*o[l+S]+b*o[h+S];return s}},hy=class extends sl{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}},dy=class extends sl{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}},oi=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=gn.convertArray(t,this.TimeBufferType),this.values=gn.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:gn.convertArray(e.times,Array),values:gn.convertArray(e.values,Array)};let i=e.getInterpolation();i!==e.DefaultInterpolation&&(n.interpolation=i)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new dy(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new hy(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new uy(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case kd:t=this.InterpolantFactoryMethodDiscrete;break;case Vd:t=this.InterpolantFactoryMethodLinear;break;case sg: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 kd;case this.InterpolantFactoryMethodLinear:return Vd;case this.InterpolantFactoryMethodSmooth:return sg}}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=gn.arraySlice(n,s,o),this.values=gn.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&&gn.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=gn.arraySlice(this.times),t=gn.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===sg,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 p=0;p!==n;++p){let m=t[h+p];if(m!==t[d+p]||m!==t[f+p]){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=gn.arraySlice(e,0,o),this.values=gn.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=gn.arraySlice(this.times,0),t=gn.arraySlice(this.values,0),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};oi.prototype.TimeBufferType=Float32Array;oi.prototype.ValueBufferType=Float32Array;oi.prototype.DefaultInterpolation=Vd;var Vo=class extends oi{};Vo.prototype.ValueTypeName="bool";Vo.prototype.ValueBufferType=Array;Vo.prototype.DefaultInterpolation=kd;Vo.prototype.InterpolantFactoryMethodLinear=void 0;Vo.prototype.InterpolantFactoryMethodSmooth=void 0;var fy=class extends oi{};fy.prototype.ValueTypeName="color";var py=class extends oi{};py.prototype.ValueTypeName="number";var my=class extends sl{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)st.slerpFlat(s,0,o,u-a,o,u,l);return s}},Mu=class extends oi{InterpolantFactoryMethodLinear(e){return new my(this.times,this.values,this.getValueSize(),e)}};Mu.prototype.ValueTypeName="quaternion";Mu.prototype.DefaultInterpolation=Vd;Mu.prototype.InterpolantFactoryMethodSmooth=void 0;var Ho=class extends oi{};Ho.prototype.ValueTypeName="string";Ho.prototype.ValueBufferType=Array;Ho.prototype.DefaultInterpolation=kd;Ho.prototype.InterpolantFactoryMethodLinear=void 0;Ho.prototype.InterpolantFactoryMethodSmooth=void 0;var gy=class extends oi{};gy.prototype.ValueTypeName="vector";var Yb={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={}}},Tu=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],p=u[h+1];if(f.global&&(f.lastIndex=0),f.test(c))return p}return null}}},r3=new Tu,Hs=class{constructor(e){this.manager=e!==void 0?e:r3,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}},ss={},Ws=class extends Hs{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=Yb.get(e);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(ss[e]!==void 0){ss[e].push({onLoad:t,onProgress:n,onError:i});return}ss[e]=[],ss[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=ss[e],h=u.body.getReader(),d=u.headers.get("Content-Length"),f=d?parseInt(d):0,p=f!==0,m=0,g=new ReadableStream({start(y){v();function v(){h.read().then(({done:w,value:b})=>{if(w)y.close();else{m+=b.byteLength;let S=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:f});for(let _=0,M=c.length;_<M;_++){let x=c[_];x.onProgress&&x.onProgress(S)}y.enqueue(b),v()}})}}});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(p=>f.decode(p))}}}).then(u=>{Yb.add(e,u);let c=ss[e];delete ss[e];for(let h=0,d=c.length;h<d;h++){let f=c[h];f.onLoad&&f.onLoad(u)}}).catch(u=>{let c=ss[e];if(c===void 0)throw this.manager.itemError(e),u;delete ss[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 ol=class extends ot{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ne(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}},Wo=class extends ol{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ot.DefaultUp),this.updateMatrix(),this.groundColor=new Ne(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},Qb=new _e,Zb=new A,Kb=new A,Eu=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 _e,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new vu,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;Zb.setFromMatrixPosition(e.matrixWorld),t.position.copy(Zb),Kb.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Kb),t.updateMatrixWorld(),Qb.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Qb),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}},yy=class extends Eu{constructor(){super(new tn(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,n=gu*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}},Jd=class extends ol{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 yy}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}},Jb=new _e,au=new A,Ng=new A,vy=class extends Eu{constructor(){super(new tn(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 A(1,0,0),new A(-1,0,0),new A(0,0,1),new A(0,0,-1),new A(0,1,0),new A(0,-1,0)],this._cubeUps=[new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,0,1),new A(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()),au.setFromMatrixPosition(e.matrixWorld),n.position.copy(au),Ng.copy(n.position),Ng.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(Ng),n.updateMatrixWorld(),i.makeTranslation(-au.x,-au.y,-au.z),Jb.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Jb)}},$d=class extends ol{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 vy}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}},xy=class extends Eu{constructor(){super(new Qa(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},ef=class extends ol{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 xy}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};var by=class extends Ie{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}},al=class extends Hs{constructor(e){super(e)}load(e,t,n,i){let s=this,o=new Ws(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,p){if(t[p]!==void 0)return t[p];let g=f.interleavedBuffers[p],y=s(f,g.buffer),v=dd(g.type,y),w=new Zd(v,g.stride);return w.uuid=g.uuid,t[p]=w,w}function s(f,p){if(n[p]!==void 0)return n[p];let g=f.arrayBuffers[p],y=new Uint32Array(g).buffer;return n[p]=y,y}let o=e.isInstancedBufferGeometry?new by:new Ie,a=e.data.index;if(a!==void 0){let f=dd(a.type,a.array);o.setIndex(new Ge(f,1))}let l=e.data.attributes;for(let f in l){let p=l[f],m;if(p.isInterleavedBufferAttribute){let g=i(e.data,p.data);m=new Fo(g,p.itemSize,p.offset,p.normalized)}else{let g=dd(p.type,p.array),y=p.isInstancedBufferAttribute?Kd:Ge;m=new y(g,p.itemSize,p.normalized)}p.name!==void 0&&(m.name=p.name),p.usage!==void 0&&m.setUsage(p.usage),p.updateRange!==void 0&&(m.updateRange.offset=p.updateRange.offset,m.updateRange.count=p.updateRange.count),o.setAttribute(f,m)}let u=e.data.morphAttributes;if(u)for(let f in u){let p=u[f],m=[];for(let g=0,y=p.length;g<y;g++){let v=p[g],w;if(v.isInterleavedBufferAttribute){let b=i(e.data,v.data);w=new Fo(b,v.itemSize,v.offset,v.normalized)}else{let b=dd(v.type,v.array);w=new Ge(b,v.itemSize,v.normalized)}v.name!==void 0&&(w.name=v.name),m.push(w)}o.morphAttributes[f]=m}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,p=h.length;f!==p;++f){let m=h[f];o.addGroup(m.start,m.count,m.materialIndex)}let d=e.data.boundingSphere;if(d!==void 0){let f=new A;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 tf=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=$b(),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=$b();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function $b(){return(typeof performance>"u"?Date:performance).now()}var Py="\\[\\]\\.:\\/",i3=new RegExp("["+Py+"]","g"),Dy="[^"+Py+"]",s3="[^"+Py.replace("\\.","")+"]",o3=/((?:WC+[\/:])*)/.source.replace("WC",Dy),a3=/(WCOD+)?/.source.replace("WCOD",s3),l3=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Dy),c3=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Dy),u3=new RegExp("^"+o3+a3+l3+c3+"$"),h3=["material","materials","bones"],wy=class{constructor(e,t,n){let i=n||_t.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()}},_t=class{constructor(e,t,n){this.path=t,this.parsedPath=n||_t.parseTrackName(t),this.node=_t.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 _t.Composite(e,t,n):new _t(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(i3,"")}static parseTrackName(e){let t=u3.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);h3.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=_t.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}};_t.Composite=wy;_t.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};_t.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};_t.prototype.GetterByBindingType=[_t.prototype._getValue_direct,_t.prototype._getValue_array,_t.prototype._getValue_arrayElement,_t.prototype._getValue_toArray];_t.prototype.SetterByBindingTypeAndVersioning=[[_t.prototype._setValue_direct,_t.prototype._setValue_direct_setNeedsUpdate,_t.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[_t.prototype._setValue_array,_t.prototype._setValue_array_setNeedsUpdate,_t.prototype._setValue_array_setMatrixWorldNeedsUpdate],[_t.prototype._setValue_arrayElement,_t.prototype._setValue_arrayElement_setNeedsUpdate,_t.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[_t.prototype._setValue_fromArray,_t.prototype._setValue_fromArray_setNeedsUpdate,_t.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Se=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 Se(this.value.clone===void 0?this.value:this.value.clone())}};var ll=class{constructor(e,t,n=0,i=1/0){this.ray=new cs(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new yu,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 Sy(e,this,n,t),n.sort(ew),n}intersectObjects(e,t=!0,n=[]){for(let i=0,s=e.length;i<s;i++)Sy(e[i],this,n,t);return n.sort(ew),n}};function ew(r,e){return r.distance-e.distance}function Sy(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++)Sy(i[s],e,t,!0)}}var Cu=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(yn(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}};var tw=new A,Fd=new A,xn=class{constructor(e=new A,t=new A){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){tw.subVectors(e,this.start),Fd.subVectors(this.end,this.start);let n=Fd.dot(Fd),s=Fd.dot(tw)/n;return t&&(s=yn(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)}},nw=new A,nf=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 Ie,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 we(i,3));let s=new Nr({fog:!1,toneMapped:!1});this.cone=new ks(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),nw.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(nw),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}};var rf=class extends jt{constructor(e,t,n){let i=new ko(t,4,2),s=new Ti({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 rw=new A,Ud=new A,iw=new A,sf=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 Ie;i.setAttribute("position",new we([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let s=new Nr({fog:!1,toneMapped:!1});this.lightPlane=new Uo(i,s),this.add(this.lightPlane),i=new Ie,i.setAttribute("position",new we([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(){rw.setFromMatrixPosition(this.light.matrixWorld),Ud.setFromMatrixPosition(this.light.target.matrixWorld),iw.subVectors(Ud,rw),this.lightPlane.lookAt(Ud),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(Ud),this.targetLine.scale.z=iw.length()}},zd=new A,Xt=new ii,Ur=class extends ks{constructor(e){let t=new Ie,n=new Nr({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(p,m){l(p),l(m)}function l(p){i.push(0,0,0),s.push(0,0,0),o[p]===void 0&&(o[p]=[]),o[p].push(i.length/3-1)}t.setAttribute("position",new we(i,3)),t.setAttribute("color",new we(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 Ne(16755200),c=new Ne(16711680),h=new Ne(43775),d=new Ne(16777215),f=new Ne(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;Xt.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),en("c",t,e,Xt,0,0,-1),en("t",t,e,Xt,0,0,1),en("n1",t,e,Xt,-n,-i,-1),en("n2",t,e,Xt,n,-i,-1),en("n3",t,e,Xt,-n,i,-1),en("n4",t,e,Xt,n,i,-1),en("f1",t,e,Xt,-n,-i,1),en("f2",t,e,Xt,n,-i,1),en("f3",t,e,Xt,-n,i,1),en("f4",t,e,Xt,n,i,1),en("u1",t,e,Xt,n*.7,i*1.1,-1),en("u2",t,e,Xt,-n*.7,i*1.1,-1),en("u3",t,e,Xt,0,i*2,-1),en("cf1",t,e,Xt,-n,0,1),en("cf2",t,e,Xt,n,0,1),en("cf3",t,e,Xt,0,-i,1),en("cf4",t,e,Xt,0,i,1),en("cn1",t,e,Xt,-n,0,-1),en("cn2",t,e,Xt,n,0,-1),en("cn3",t,e,Xt,0,-i,-1),en("cn4",t,e,Xt,0,i,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function en(r,e,t,n,i,s,o){zd.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],zd.x,zd.y,zd.z)}}var jo=class extends ks{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 Ie;s.setIndex(new Ge(n,1)),s.setAttribute("position",new we(i,3)),super(s,new Nr({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 of=class extends ks{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 Ie;i.setAttribute("position",new we(t,3)),i.setAttribute("color",new we(n,3));let s=new Nr({vertexColors:!0,toneMapped:!1});super(i,s),this.type="AxesHelper"}setColors(e,t,n){let i=new Ne,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()}},af=class{constructor(){this.type="ShapePath",this.color=new Ne,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new wu,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(v){let w=[];for(let b=0,S=v.length;b<S;b++){let _=v[b],M=new ri;M.curves=_.curves,w.push(M)}return w}function i(v,w){let b=w.length,S=!1;for(let _=b-1,M=0;M<b;_=M++){let x=w[_],T=w[M],E=T.x-x.x,C=T.y-x.y;if(Math.abs(C)>Number.EPSILON){if(C<0&&(x=w[M],E=-E,T=w[_],C=-C),v.y<x.y||v.y>T.y)continue;if(v.y===x.y){if(v.x===x.x)return!0}else{let D=C*(v.x-x.x)-E*(v.y-x.y);if(D===0)return!0;if(D<0)continue;S=!S}}else{if(v.y!==x.y)continue;if(T.x<=v.x&&v.x<=x.x||x.x<=v.x&&v.x<=T.x)return!0}}return S}let s=Bs.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 ri,u.curves=l.curves,c.push(u),c;let h=!s(o[0].getPoints());h=e?!h:h;let d=[],f=[],p=[],m=0,g;f[m]=void 0,p[m]=[];for(let v=0,w=o.length;v<w;v++)l=o[v],g=l.getPoints(),a=s(g),a=e?!a:a,a?(!h&&f[m]&&m++,f[m]={s:new ri,p:g},f[m].s.curves=l.curves,h&&m++,p[m]=[]):p[m].push({h:l,p:g[0]});if(!f[0])return n(o);if(f.length>1){let v=!1,w=0;for(let b=0,S=f.length;b<S;b++)d[b]=[];for(let b=0,S=f.length;b<S;b++){let _=p[b];for(let M=0;M<_.length;M++){let x=_[M],T=!0;for(let E=0;E<f.length;E++)i(x.p,f[E].p)&&(b!==E&&w++,T?(T=!1,d[E].push(x)):v=!0);T&&d[b].push(x)}}w>0&&v===!1&&(p=d)}let y;for(let v=0,w=f.length;v<w;v++){u=f[v].s,c.push(u),y=p[v];for(let b=0,S=y.length;b<S;b++)u.holes.push(y[b].h)}return c}},{floatView:_4,uint32View:M4,baseTable:T4,shiftTable:E4,mantissaTable:C4,exponentTable:P4,offsetTable:D4}=d3();function d3(){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 lf=class extends ut{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:qo}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=qo);var dl=".",Pu=Symbol("target"),Iy=Symbol("unsubscribe");function Du(r){return r instanceof Date||r instanceof Set||r instanceof Map||r instanceof WeakSet||r instanceof WeakMap||ArrayBuffer.isView(r)}function ww(r){return(typeof r=="object"?r===null:typeof r!="function")||r instanceof RegExp}var Pr=Array.isArray;function Xo(r){return typeof r=="symbol"}var f3={after:(r,e)=>Pr(r)?r.slice(e.length):e===""?r:r.slice(e.length+1),concat:(r,e)=>Pr(r)?(r=[...r],e&&r.push(e),r):e&&e.toString!==void 0?(r!==""&&(r+=dl),Xo(e)?r+e.toString():r+e):r,initial:r=>{if(Pr(r))return r.slice(0,-1);if(r==="")return r;let e=r.lastIndexOf(dl);return e===-1?"":r.slice(0,e)},last:r=>{if(Pr(r))return r[r.length-1]||"";if(r==="")return r;let e=r.lastIndexOf(dl);return e===-1?r:r.slice(e+1)},walk:(r,e)=>{if(Pr(r))for(let t of r)e(t);else if(r!==""){let t=0,n=r.indexOf(dl);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(dl,t)}},get(r,e){return this.walk(e,t=>{r&&(r=r[t])}),r}},nr=f3;function Ly(r){return typeof r=="object"&&typeof r.next=="function"}function Ry(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[Pu].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 df(r,e,t){return r.isUnsubscribed||e.ignoreSymbols&&Xo(t)||e.ignoreUnderscores&&t.charAt(0)==="_"||"ignoreKeys"in e&&e.ignoreKeys.includes(t)}var Iu=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,nr.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 fl(r){return toString.call(r)==="[object Object]"}function pl(){return!0}function js(r,e){return r.length!==e.length||r.some((t,n)=>e[n]!==t)}var ff=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]);var p3=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),Oy={push:pl,pop:pl,shift:pl,unshift:pl,copyWithin:js,reverse:js,sort:js,splice:js,flat:js,fill:js},Sw=new Set([...ff,...p3,...Object.keys(Oy)]);function ml(r,e){if(r.size!==e.size)return!0;for(let t of r)if(!e.has(t))return!0;return!1}var By=["keys","values","entries"],Ny=new Set(["has","toString"]),Fy={add:ml,clear:ml,delete:ml,forEach:ml},Aw=new Set([...Ny,...Object.keys(Fy),...By]);function gl(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 m3=new Set([...Ny,"get"]),Uy={set:gl,clear:gl,delete:gl,forEach:gl},_w=new Set([...m3,...Object.keys(Uy),...By]);var On=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 ff.has(e)}_shallowClone(e){let t=e;if(fl(e))t={...e};else if(Pr(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?(Pr(i)?this._onIsChanged=Oy[t]:i instanceof Set?this._onIsChanged=Fy[t]:i instanceof Map&&(this._onIsChanged=Uy[t]),i):n}update(e,t,n){let i=nr.after(e,this._path);if(t!=="length"){let s=this.clone;nr.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],nr.get(e,t.path)[t.property]=t.previous}isChanged(e){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,e)}};var yl=class extends On{static isHandledMethod(e){return Sw.has(e)}};var Lu=class extends On{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}};var vl=class extends On{static isHandledMethod(e){return Aw.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 xl=class extends On{static isHandledMethod(e){return _w.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 Ru=class extends On{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 Ou=class extends On{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 li=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return fl(e)||Pr(e)||Du(e)}static isHandledMethod(e,t){return fl(e)?On.isHandledMethod(t):Pr(e)?yl.isHandledMethod(t):e instanceof Set?vl.isHandledMethod(t):e instanceof Map?xl.isHandledMethod(t):Du(e)}get isCloning(){return this._stack.length>0}start(e,t,n){let i=On;Pr(e)?i=yl:e instanceof Date?i=Lu:e instanceof Set?i=vl:e instanceof Map?i=xl:e instanceof WeakSet?i=Ru:e instanceof WeakMap&&(i=Ou),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=li.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 g3={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},zy=(r,e,t={})=>{t={...g3,...t};let n=Symbol("ProxyTarget"),{equals:i,isShallow:s,ignoreDetached:o,details:a}=t,l=new Iu(i),u=typeof t.onValidate=="function",c=new li(u),h=(v,w,b,S,_)=>!u||c.isCloning||t.onValidate(nr.concat(l.getPath(v),w),b,S,_)===!0,d=(v,w,b,S)=>{!df(l,t,w)&&!(o&&l.isDetached(v,r))&&f(l.getPath(v),w,b,S)},f=(v,w,b,S,_)=>{c.isCloning?c.update(v,w,S):e(nr.concat(v,w),b,S,_)},p=v=>v&&(v[n]||v),m=(v,w,b,S)=>ww(v)||b==="constructor"||s&&!li.isHandledMethod(w,b)||df(l,t,b)||l.isGetInvariant(w,b)||o&&l.isDetached(w,r)?v:(S===void 0&&(S=l.getPath(w)),l.getProxy(v,nr.concat(S,b),g,n)),g={get(v,w,b){if(Xo(w)){if(w===n||w===Pu)return v;if(w===Iy&&!l.isUnsubscribed&&l.getPath(v).length===0)return l.unsubscribe(),v}let S=Du(v)?Reflect.get(v,w):Reflect.get(v,w,b);return m(S,v,w)},set(v,w,b,S){b=p(b);let _=v[n]||v,M=_[w];if(i(M,b)&&w in v)return!0;let x=h(v,w,b,M);return x&&l.setProperty(_,w,b,S,M)?(d(v,w,v[w],M),!0):!x},defineProperty(v,w,b){if(!l.isSameDescriptor(b,v,w)){let S=v[w];h(v,w,b.value,S)&&l.defineProperty(v,w,b,S)&&d(v,w,b.value,S)}return!0},deleteProperty(v,w){if(!Reflect.has(v,w))return!0;let b=Reflect.get(v,w),S=h(v,w,void 0,b);return S&&l.deleteProperty(v,w,b)?(d(v,w,void 0,b),!0):!S},apply(v,w,b){let S=w[n]||w;if(l.isUnsubscribed)return Reflect.apply(v,S,b);if((a===!1||a!==!0&&!a.includes(v.name))&&li.isHandledType(S)){let _=nr.initial(l.getPath(v)),M=li.isHandledMethod(S,v.name);c.start(S,_,b);let x=Reflect.apply(v,c.preferredThisArg(v,w,S),M?b.map(C=>p(C)):b),T=c.isChanged(S,i),E=c.stop();if(li.isHandledType(x)&&M&&(w instanceof Map&&v.name==="get"&&(_=nr.concat(_,b[0])),x=l.getProxy(x,_,g)),T){let C={name:v.name,args:b,result:x},D=c.isCloning?nr.initial(_):_,I=c.isCloning?nr.last(_):"";h(nr.get(r,D),I,S,E,C)?f(D,I,S,E,C):c.undo(S)}return(w instanceof Map||w instanceof Set)&&Ly(x)?Ry(x,v,w,_,m):x}return Reflect.apply(v,w,b)}},y=l.getProxy(r,t.pathAsArray?[]:"",g);return e=e.bind(y),u&&(t.onValidate=t.onValidate.bind(y)),y};zy.target=r=>r&&r[Pu]||r;zy.unsubscribe=r=>r[Iy]||r;var Gy=zy;var y3=typeof global=="object"&&global&&global.Object===Object&&global,pf=y3;var v3=typeof self=="object"&&self&&self.Object===Object&&self,x3=pf||v3||Function("return this")(),Zt=x3;var b3=Zt.Symbol,rr=b3;var Mw=Object.prototype,w3=Mw.hasOwnProperty,S3=Mw.toString,Bu=rr?rr.toStringTag:void 0;function A3(r){var e=w3.call(r,Bu),t=r[Bu];try{r[Bu]=void 0;var n=!0}catch{}var i=S3.call(r);return n&&(e?r[Bu]=t:delete r[Bu]),i}var Tw=A3;var _3=Object.prototype,M3=_3.toString;function T3(r){return M3.call(r)}var Ew=T3;var E3="[object Null]",C3="[object Undefined]",Cw=rr?rr.toStringTag:void 0;function P3(r){return r==null?r===void 0?C3:E3:Cw&&Cw in Object(r)?Tw(r):Ew(r)}var Dr=P3;function D3(r){return r!=null&&typeof r=="object"}var jn=D3;var I3="[object Symbol]";function L3(r){return typeof r=="symbol"||jn(r)&&Dr(r)==I3}var qs=L3;function R3(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 mf=R3;var O3=Array.isArray,bn=O3;var B3=1/0,Pw=rr?rr.prototype:void 0,Dw=Pw?Pw.toString:void 0;function Iw(r){if(typeof r=="string")return r;if(bn(r))return mf(r,Iw)+"";if(qs(r))return Dw?Dw.call(r):"";var e=r+"";return e=="0"&&1/r==-B3?"-0":e}var Lw=Iw;var N3=/\s/;function F3(r){for(var e=r.length;e--&&N3.test(r.charAt(e)););return e}var Rw=F3;var U3=/^\s+/;function z3(r){return r&&r.slice(0,Rw(r)+1).replace(U3,"")}var Ow=z3;function G3(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var kt=G3;var Bw=0/0,k3=/^[-+]0x[0-9a-f]+$/i,V3=/^0b[01]+$/i,H3=/^0o[0-7]+$/i,W3=parseInt;function j3(r){if(typeof r=="number")return r;if(qs(r))return Bw;if(kt(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=kt(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=Ow(r);var t=V3.test(r);return t||H3.test(r)?W3(r.slice(2),t?2:8):k3.test(r)?Bw:+r}var ky=j3;function q3(r){return r}var gf=q3;var X3="[object AsyncFunction]",Y3="[object Function]",Q3="[object GeneratorFunction]",Z3="[object Proxy]";function K3(r){if(!kt(r))return!1;var e=Dr(r);return e==Y3||e==Q3||e==X3||e==Z3}var bl=K3;var J3=Zt["__core-js_shared__"],yf=J3;var Nw=function(){var r=/[^.]+$/.exec(yf&&yf.keys&&yf.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function $3(r){return!!Nw&&Nw in r}var Fw=$3;var eR=Function.prototype,tR=eR.toString;function nR(r){if(r!=null){try{return tR.call(r)}catch{}try{return r+""}catch{}}return""}var hs=nR;var rR=/[\\^$.*+?()[\]{}|]/g,iR=/^\[object .+?Constructor\]$/,sR=Function.prototype,oR=Object.prototype,aR=sR.toString,lR=oR.hasOwnProperty,cR=RegExp("^"+aR.call(lR).replace(rR,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function uR(r){if(!kt(r)||Fw(r))return!1;var e=bl(r)?cR:iR;return e.test(hs(r))}var Uw=uR;function hR(r,e){return r?.[e]}var zw=hR;function dR(r,e){var t=zw(r,e);return Uw(t)?t:void 0}var fr=dR;var fR=fr(Zt,"WeakMap"),vf=fR;var Gw=Object.create,pR=function(){function r(){}return function(e){if(!kt(e))return{};if(Gw)return Gw(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}(),kw=pR;function mR(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 Vw=mR;function gR(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++t<n;)e[t]=r[t];return e}var xf=gR;var yR=800,vR=16,xR=Date.now;function bR(r){var e=0,t=0;return function(){var n=xR(),i=vR-(n-t);if(t=n,i>0){if(++e>=yR)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}var Hw=bR;function wR(r){return function(){return r}}var Ww=wR;var SR=function(){try{var r=fr(Object,"defineProperty");return r({},"",{}),r}catch{}}(),wl=SR;var AR=wl?function(r,e){return wl(r,"toString",{configurable:!0,enumerable:!1,value:Ww(e),writable:!0})}:gf,jw=AR;var _R=Hw(jw),bf=_R;function MR(r,e){for(var t=-1,n=r==null?0:r.length;++t<n&&e(r[t],t,r)!==!1;);return r}var qw=MR;var TR=9007199254740991,ER=/^(?:0|[1-9]\d*)$/;function CR(r,e){var t=typeof r;return e=e??TR,!!e&&(t=="number"||t!="symbol"&&ER.test(r))&&r>-1&&r%1==0&&r<e}var Xs=CR;function PR(r,e,t){e=="__proto__"&&wl?wl(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}var Sl=PR;function DR(r,e){return r===e||r!==r&&e!==e}var Ys=DR;var IR=Object.prototype,LR=IR.hasOwnProperty;function RR(r,e,t){var n=r[e];(!(LR.call(r,e)&&Ys(n,t))||t===void 0&&!(e in r))&&Sl(r,e,t)}var Al=RR;function OR(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?Sl(t,a,l):Al(t,a,l)}return t}var zr=OR;var Xw=Math.max;function BR(r,e,t){return e=Xw(e===void 0?r.length-1:e,0),function(){for(var n=arguments,i=-1,s=Xw(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),Vw(r,this,a)}}var wf=BR;function NR(r,e){return bf(wf(r,e,gf),r+"")}var Yw=NR;var FR=9007199254740991;function UR(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=FR}var _l=UR;function zR(r){return r!=null&&_l(r.length)&&!bl(r)}var Qs=zR;function GR(r,e,t){if(!kt(t))return!1;var n=typeof e;return(n=="number"?Qs(t)&&Xs(e,t.length):n=="string"&&e in t)?Ys(t[e],r):!1}var Qw=GR;function kR(r){return Yw(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&&Qw(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 Zw=kR;var VR=Object.prototype;function HR(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||VR;return r===t}var Ml=HR;function WR(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var Kw=WR;var jR="[object Arguments]";function qR(r){return jn(r)&&Dr(r)==jR}var Vy=qR;var Jw=Object.prototype,XR=Jw.hasOwnProperty,YR=Jw.propertyIsEnumerable,QR=Vy(function(){return arguments}())?Vy:function(r){return jn(r)&&XR.call(r,"callee")&&!YR.call(r,"callee")},ds=QR;function ZR(){return!1}var $w=ZR;var nS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eS=nS&&typeof module=="object"&&module&&!module.nodeType&&module,KR=eS&&eS.exports===nS,tS=KR?Zt.Buffer:void 0,JR=tS?tS.isBuffer:void 0,$R=JR||$w,Tl=$R;var eO="[object Arguments]",tO="[object Array]",nO="[object Boolean]",rO="[object Date]",iO="[object Error]",sO="[object Function]",oO="[object Map]",aO="[object Number]",lO="[object Object]",cO="[object RegExp]",uO="[object Set]",hO="[object String]",dO="[object WeakMap]",fO="[object ArrayBuffer]",pO="[object DataView]",mO="[object Float32Array]",gO="[object Float64Array]",yO="[object Int8Array]",vO="[object Int16Array]",xO="[object Int32Array]",bO="[object Uint8Array]",wO="[object Uint8ClampedArray]",SO="[object Uint16Array]",AO="[object Uint32Array]",zt={};zt[mO]=zt[gO]=zt[yO]=zt[vO]=zt[xO]=zt[bO]=zt[wO]=zt[SO]=zt[AO]=!0;zt[eO]=zt[tO]=zt[fO]=zt[nO]=zt[pO]=zt[rO]=zt[iO]=zt[sO]=zt[oO]=zt[aO]=zt[lO]=zt[cO]=zt[uO]=zt[hO]=zt[dO]=!1;function _O(r){return jn(r)&&_l(r.length)&&!!zt[Dr(r)]}var rS=_O;function MO(r){return function(e){return r(e)}}var El=MO;var iS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nu=iS&&typeof module=="object"&&module&&!module.nodeType&&module,TO=Nu&&Nu.exports===iS,Hy=TO&&pf.process,EO=function(){try{var r=Nu&&Nu.require&&Nu.require("util").types;return r||Hy&&Hy.binding&&Hy.binding("util")}catch{}}(),fs=EO;var sS=fs&&fs.isTypedArray,CO=sS?El(sS):rS,Sf=CO;var PO=Object.prototype,DO=PO.hasOwnProperty;function IO(r,e){var t=bn(r),n=!t&&ds(r),i=!t&&!n&&Tl(r),s=!t&&!n&&!i&&Sf(r),o=t||n||i||s,a=o?Kw(r.length,String):[],l=a.length;for(var u in r)(e||DO.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 Af=IO;function LO(r,e){return function(t){return r(e(t))}}var _f=LO;var RO=_f(Object.keys,Object),oS=RO;var OO=Object.prototype,BO=OO.hasOwnProperty;function NO(r){if(!Ml(r))return oS(r);var e=[];for(var t in Object(r))BO.call(r,t)&&t!="constructor"&&e.push(t);return e}var aS=NO;function FO(r){return Qs(r)?Af(r):aS(r)}var Cl=FO;function UO(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var lS=UO;var zO=Object.prototype,GO=zO.hasOwnProperty;function kO(r){if(!kt(r))return lS(r);var e=Ml(r),t=[];for(var n in r)n=="constructor"&&(e||!GO.call(r,n))||t.push(n);return t}var cS=kO;function VO(r){return Qs(r)?Af(r,!0):cS(r)}var Ei=VO;var HO=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WO=/^\w*$/;function jO(r,e){if(bn(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||qs(r)?!0:WO.test(r)||!HO.test(r)||e!=null&&r in Object(e)}var uS=jO;var qO=fr(Object,"create"),ps=qO;function XO(){this.__data__=ps?ps(null):{},this.size=0}var hS=XO;function YO(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var dS=YO;var QO="__lodash_hash_undefined__",ZO=Object.prototype,KO=ZO.hasOwnProperty;function JO(r){var e=this.__data__;if(ps){var t=e[r];return t===QO?void 0:t}return KO.call(e,r)?e[r]:void 0}var fS=JO;var $O=Object.prototype,eB=$O.hasOwnProperty;function tB(r){var e=this.__data__;return ps?e[r]!==void 0:eB.call(e,r)}var pS=tB;var nB="__lodash_hash_undefined__";function rB(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=ps&&e===void 0?nB:e,this}var mS=rB;function Pl(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])}}Pl.prototype.clear=hS;Pl.prototype.delete=dS;Pl.prototype.get=fS;Pl.prototype.has=pS;Pl.prototype.set=mS;var Wy=Pl;function iB(){this.__data__=[],this.size=0}var gS=iB;function sB(r,e){for(var t=r.length;t--;)if(Ys(r[t][0],e))return t;return-1}var Zs=sB;var oB=Array.prototype,aB=oB.splice;function lB(r){var e=this.__data__,t=Zs(e,r);if(t<0)return!1;var n=e.length-1;return t==n?e.pop():aB.call(e,t,1),--this.size,!0}var yS=lB;function cB(r){var e=this.__data__,t=Zs(e,r);return t<0?void 0:e[t][1]}var vS=cB;function uB(r){return Zs(this.__data__,r)>-1}var xS=uB;function hB(r,e){var t=this.__data__,n=Zs(t,r);return n<0?(++this.size,t.push([r,e])):t[n][1]=e,this}var bS=hB;function Dl(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])}}Dl.prototype.clear=gS;Dl.prototype.delete=yS;Dl.prototype.get=vS;Dl.prototype.has=xS;Dl.prototype.set=bS;var Ks=Dl;var dB=fr(Zt,"Map"),Js=dB;function fB(){this.size=0,this.__data__={hash:new Wy,map:new(Js||Ks),string:new Wy}}var wS=fB;function pB(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var SS=pB;function mB(r,e){var t=r.__data__;return SS(e)?t[typeof e=="string"?"string":"hash"]:t.map}var $s=mB;function gB(r){var e=$s(this,r).delete(r);return this.size-=e?1:0,e}var AS=gB;function yB(r){return $s(this,r).get(r)}var _S=yB;function vB(r){return $s(this,r).has(r)}var MS=vB;function xB(r,e){var t=$s(this,r),n=t.size;return t.set(r,e),this.size+=t.size==n?0:1,this}var TS=xB;function Il(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])}}Il.prototype.clear=wS;Il.prototype.delete=AS;Il.prototype.get=_S;Il.prototype.has=MS;Il.prototype.set=TS;var Fu=Il;var bB="Expected a function";function jy(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(bB);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(jy.Cache||Fu),t}jy.Cache=Fu;var ES=jy;var wB=500;function SB(r){var e=ES(r,function(n){return t.size===wB&&t.clear(),n}),t=e.cache;return e}var CS=SB;var AB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_B=/\\(\\)?/g,MB=CS(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(AB,function(t,n,i,s){e.push(i?s.replace(_B,"$1"):n||t)}),e}),PS=MB;function TB(r){return r==null?"":Lw(r)}var DS=TB;function EB(r,e){return bn(r)?r:uS(r,e)?[r]:PS(DS(r))}var Gr=EB;var CB=1/0;function PB(r){if(typeof r=="string"||qs(r))return r;var e=r+"";return e=="0"&&1/r==-CB?"-0":e}var eo=PB;function DB(r,e){e=Gr(e,r);for(var t=0,n=e.length;r!=null&&t<n;)r=r[eo(e[t++])];return t&&t==n?r:void 0}var Mf=DB;function IB(r,e){for(var t=-1,n=e.length,i=r.length;++t<n;)r[i+t]=e[t];return r}var Ll=IB;var IS=rr?rr.isConcatSpreadable:void 0;function LB(r){return bn(r)||ds(r)||!!(IS&&r&&r[IS])}var LS=LB;function RS(r,e,t,n,i){var s=-1,o=r.length;for(t||(t=LS),i||(i=[]);++s<o;){var a=r[s];e>0&&t(a)?e>1?RS(a,e-1,t,n,i):Ll(i,a):n||(i[i.length]=a)}return i}var OS=RS;function RB(r){var e=r==null?0:r.length;return e?OS(r,1):[]}var BS=RB;function OB(r){return bf(wf(r,void 0,BS),r+"")}var Tf=OB;var BB=_f(Object.getPrototypeOf,Object),Rl=BB;var NB="[object Object]",FB=Function.prototype,UB=Object.prototype,NS=FB.toString,zB=UB.hasOwnProperty,GB=NS.call(Object);function kB(r){if(!jn(r)||Dr(r)!=NB)return!1;var e=Rl(r);if(e===null)return!0;var t=zB.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&NS.call(t)==GB}var Ef=kB;function VB(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 FS=VB;function HB(){this.__data__=new Ks,this.size=0}var US=HB;function WB(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}var zS=WB;function jB(r){return this.__data__.get(r)}var GS=jB;function qB(r){return this.__data__.has(r)}var kS=qB;var XB=200;function YB(r,e){var t=this.__data__;if(t instanceof Ks){var n=t.__data__;if(!Js||n.length<XB-1)return n.push([r,e]),this.size=++t.size,this;t=this.__data__=new Fu(n)}return t.set(r,e),this.size=t.size,this}var VS=YB;function Ol(r){var e=this.__data__=new Ks(r);this.size=e.size}Ol.prototype.clear=US;Ol.prototype.delete=zS;Ol.prototype.get=GS;Ol.prototype.has=kS;Ol.prototype.set=VS;var Cf=Ol;function QB(r,e){return r&&zr(e,Cl(e),r)}var HS=QB;function ZB(r,e){return r&&zr(e,Ei(e),r)}var WS=ZB;var YS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,jS=YS&&typeof module=="object"&&module&&!module.nodeType&&module,KB=jS&&jS.exports===YS,qS=KB?Zt.Buffer:void 0,XS=qS?qS.allocUnsafe:void 0;function JB(r,e){if(e)return r.slice();var t=r.length,n=XS?XS(t):new r.constructor(t);return r.copy(n),n}var Pf=JB;function $B(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 QS=$B;function eN(){return[]}var Df=eN;var tN=Object.prototype,nN=tN.propertyIsEnumerable,ZS=Object.getOwnPropertySymbols,rN=ZS?function(r){return r==null?[]:(r=Object(r),QS(ZS(r),function(e){return nN.call(r,e)}))}:Df,Bl=rN;function iN(r,e){return zr(r,Bl(r),e)}var KS=iN;var sN=Object.getOwnPropertySymbols,oN=sN?function(r){for(var e=[];r;)Ll(e,Bl(r)),r=Rl(r);return e}:Df,If=oN;function aN(r,e){return zr(r,If(r),e)}var JS=aN;function lN(r,e,t){var n=e(r);return bn(r)?n:Ll(n,t(r))}var Lf=lN;function cN(r){return Lf(r,Cl,Bl)}var $S=cN;function uN(r){return Lf(r,Ei,If)}var Rf=uN;var hN=fr(Zt,"DataView"),Of=hN;var dN=fr(Zt,"Promise"),Bf=dN;var fN=fr(Zt,"Set"),Nf=fN;var e1="[object Map]",pN="[object Object]",t1="[object Promise]",n1="[object Set]",r1="[object WeakMap]",i1="[object DataView]",mN=hs(Of),gN=hs(Js),yN=hs(Bf),vN=hs(Nf),xN=hs(vf),Yo=Dr;(Of&&Yo(new Of(new ArrayBuffer(1)))!=i1||Js&&Yo(new Js)!=e1||Bf&&Yo(Bf.resolve())!=t1||Nf&&Yo(new Nf)!=n1||vf&&Yo(new vf)!=r1)&&(Yo=function(r){var e=Dr(r),t=e==pN?r.constructor:void 0,n=t?hs(t):"";if(n)switch(n){case mN:return i1;case gN:return e1;case yN:return t1;case vN:return n1;case xN:return r1}return e});var Nl=Yo;var bN=Object.prototype,wN=bN.hasOwnProperty;function SN(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&wN.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var s1=SN;var AN=Zt.Uint8Array,qy=AN;function _N(r){var e=new r.constructor(r.byteLength);return new qy(e).set(new qy(r)),e}var Fl=_N;function MN(r,e){var t=e?Fl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}var o1=MN;var TN=/\w*$/;function EN(r){var e=new r.constructor(r.source,TN.exec(r));return e.lastIndex=r.lastIndex,e}var a1=EN;var l1=rr?rr.prototype:void 0,c1=l1?l1.valueOf:void 0;function CN(r){return c1?Object(c1.call(r)):{}}var u1=CN;function PN(r,e){var t=e?Fl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Ff=PN;var DN="[object Boolean]",IN="[object Date]",LN="[object Map]",RN="[object Number]",ON="[object RegExp]",BN="[object Set]",NN="[object String]",FN="[object Symbol]",UN="[object ArrayBuffer]",zN="[object DataView]",GN="[object Float32Array]",kN="[object Float64Array]",VN="[object Int8Array]",HN="[object Int16Array]",WN="[object Int32Array]",jN="[object Uint8Array]",qN="[object Uint8ClampedArray]",XN="[object Uint16Array]",YN="[object Uint32Array]";function QN(r,e,t){var n=r.constructor;switch(e){case UN:return Fl(r);case DN:case IN:return new n(+r);case zN:return o1(r,t);case GN:case kN:case VN:case HN:case WN:case jN:case qN:case XN:case YN:return Ff(r,t);case LN:return new n;case RN:case NN:return new n(r);case ON:return a1(r);case BN:return new n;case FN:return u1(r)}}var h1=QN;function ZN(r){return typeof r.constructor=="function"&&!Ml(r)?kw(Rl(r)):{}}var Uf=ZN;var KN="[object Map]";function JN(r){return jn(r)&&Nl(r)==KN}var d1=JN;var f1=fs&&fs.isMap,$N=f1?El(f1):d1,p1=$N;var eF="[object Set]";function tF(r){return jn(r)&&Nl(r)==eF}var m1=tF;var g1=fs&&fs.isSet,nF=g1?El(g1):m1,y1=nF;var rF=1,iF=2,sF=4,v1="[object Arguments]",oF="[object Array]",aF="[object Boolean]",lF="[object Date]",cF="[object Error]",x1="[object Function]",uF="[object GeneratorFunction]",hF="[object Map]",dF="[object Number]",b1="[object Object]",fF="[object RegExp]",pF="[object Set]",mF="[object String]",gF="[object Symbol]",yF="[object WeakMap]",vF="[object ArrayBuffer]",xF="[object DataView]",bF="[object Float32Array]",wF="[object Float64Array]",SF="[object Int8Array]",AF="[object Int16Array]",_F="[object Int32Array]",MF="[object Uint8Array]",TF="[object Uint8ClampedArray]",EF="[object Uint16Array]",CF="[object Uint32Array]",Nt={};Nt[v1]=Nt[oF]=Nt[vF]=Nt[xF]=Nt[aF]=Nt[lF]=Nt[bF]=Nt[wF]=Nt[SF]=Nt[AF]=Nt[_F]=Nt[hF]=Nt[dF]=Nt[b1]=Nt[fF]=Nt[pF]=Nt[mF]=Nt[gF]=Nt[MF]=Nt[TF]=Nt[EF]=Nt[CF]=!0;Nt[cF]=Nt[x1]=Nt[yF]=!1;function zf(r,e,t,n,i,s){var o,a=e&rF,l=e&iF,u=e&sF;if(t&&(o=i?t(r,n,i,s):t(r)),o!==void 0)return o;if(!kt(r))return r;var c=bn(r);if(c){if(o=s1(r),!a)return xf(r,o)}else{var h=Nl(r),d=h==x1||h==uF;if(Tl(r))return Pf(r,a);if(h==b1||h==v1||d&&!i){if(o=l||d?{}:Uf(r),!a)return l?JS(r,WS(o,r)):KS(r,HS(o,r))}else{if(!Nt[h])return i?r:{};o=h1(r,h,a)}}s||(s=new Cf);var f=s.get(r);if(f)return f;s.set(r,o),y1(r)?r.forEach(function(g){o.add(zf(g,e,t,g,r,s))}):p1(r)&&r.forEach(function(g,y){o.set(y,zf(g,e,t,y,r,s))});var p=u?l?Rf:$S:l?Ei:Cl,m=c?void 0:p(r);return qw(m||r,function(g,y){m&&(y=g,g=r[y]),Al(o,y,zf(g,e,t,y,r,s))}),o}var Gf=zf;var PF=1,DF=4;function IF(r){return Gf(r,PF|DF)}var Uu=IF;function LF(r,e){return r!=null&&e in Object(r)}var w1=LF;function RF(r,e,t){e=Gr(e,r);for(var n=-1,i=e.length,s=!1;++n<i;){var o=eo(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&&_l(i)&&Xs(o,i)&&(bn(r)||ds(r)))}var S1=RF;function OF(r,e){return r!=null&&S1(r,e,w1)}var A1=OF;function BF(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 _1=BF;var NF=_1(),M1=NF;var FF=function(){return Zt.Date.now()},kf=FF;var UF="Expected a function",zF=Math.max,GF=Math.min;function kF(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(UF);e=ky(e)||0,kt(t)&&(c=!!t.leading,h="maxWait"in t,s=h?zF(ky(t.maxWait)||0,e):s,d="trailing"in t?!!t.trailing:d);function f(_){var M=n,x=i;return n=i=void 0,u=_,o=r.apply(x,M),o}function p(_){return u=_,a=setTimeout(y,e),c?f(_):o}function m(_){var M=_-l,x=_-u,T=e-M;return h?GF(T,s-x):T}function g(_){var M=_-l,x=_-u;return l===void 0||M>=e||M<0||h&&x>=s}function y(){var _=kf();if(g(_))return v(_);a=setTimeout(y,m(_))}function v(_){return a=void 0,d&&n?f(_):(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:v(kf())}function S(){var _=kf(),M=g(_);if(n=arguments,i=this,l=_,M){if(a===void 0)return p(l);if(h)return clearTimeout(a),a=setTimeout(y,e),f(l)}return a===void 0&&(a=setTimeout(y,e)),o}return S.cancel=w,S.flush=b,S}var zu=kF;function VF(r,e,t){(t!==void 0&&!Ys(r[e],t)||t===void 0&&!(e in r))&&Sl(r,e,t)}var Gu=VF;function HF(r){return jn(r)&&Qs(r)}var T1=HF;function WF(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}var ku=WF;function jF(r){return zr(r,Ei(r))}var E1=jF;function qF(r,e,t,n,i,s,o){var a=ku(r,t),l=ku(e,t),u=o.get(l);if(u){Gu(r,t,u);return}var c=s?s(a,l,t+"",r,e,o):void 0,h=c===void 0;if(h){var d=bn(l),f=!d&&Tl(l),p=!d&&!f&&Sf(l);c=l,d||f||p?bn(a)?c=a:T1(a)?c=xf(a):f?(h=!1,c=Pf(l,!0)):p?(h=!1,c=Ff(l,!0)):c=[]:Ef(l)||ds(l)?(c=a,ds(a)?c=E1(a):(!kt(a)||bl(a))&&(c=Uf(l))):h=!1}h&&(o.set(l,c),i(c,l,n,s,o),o.delete(l)),Gu(r,t,c)}var C1=qF;function P1(r,e,t,n,i){r!==e&&M1(e,function(s,o){if(i||(i=new Cf),kt(s))C1(r,e,o,t,P1,n,i);else{var a=n?n(ku(r,o),s,o+"",r,e,i):void 0;a===void 0&&(a=s),Gu(r,o,a)}},Ei)}var D1=P1;function XF(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var I1=XF;function YF(r,e){return e.length<2?r:Mf(r,FS(e,0,-1))}var L1=YF;var QF=Zw(function(r,e,t){D1(r,e,t)}),Qo=QF;function ZF(r,e){return e=Gr(e,r),r=L1(r,e),r==null||delete r[eo(I1(e))]}var R1=ZF;function KF(r){return Ef(r)?void 0:r}var O1=KF;var JF=1,$F=2,eU=4,tU=Tf(function(r,e){var t={};if(r==null)return t;var n=!1;e=mf(e,function(s){return s=Gr(s,r),n||(n=s.length>1),s}),zr(r,Rf(r),t),n&&(t=Gf(t,JF|$F|eU,O1));for(var i=e.length;i--;)R1(t,e[i]);return t}),Ul=tU;function nU(r,e,t,n){if(!kt(r))return r;e=Gr(e,r);for(var i=-1,s=e.length,o=s-1,a=r;a!=null&&++i<s;){var l=eo(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=kt(c)?c:Xs(e[i+1])?[]:{})}Al(a,l,u),a=a[l]}return r}var B1=nU;function rU(r,e,t){for(var n=-1,i=e.length,s={};++n<i;){var o=e[n],a=Mf(r,o);t(a,o)&&B1(s,Gr(o,r),a)}return s}var N1=rU;function iU(r,e){return N1(r,e,function(t,n){return A1(r,n)})}var F1=iU;var sU=Tf(function(r,e){return r==null?{}:F1(r,e)}),Xy=sU;function Vf(r,e){return Object.setPrototypeOf(r,e),r}var oU=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),aU=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),lU=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||Zo&&"ontouchend"in document,cU=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,uU=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,hU=()=>{if(typeof window>"u")return!1;let r=navigator.userAgent,e=navigator.vendor;return/Safari/i.test(r)&&/Apple Computer/.test(e)},dU=()=>{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]},G7=oU(),Zo=aU(),Vu=lU(),U1=cU(),Lt=uU(),zl=hU(),Gl=Number(dU());function z1(r){return Array.isArray(r)?r:[r]}function Hu(r){return Zo?r.metaKey:r.ctrlKey}var ct=[],Wf={},Wu={},Hf={};function G1(r){ct.includes(r)||ct.push(r)}function kl(r){delete Wf[r.pointerId];for(let e=0;e<ct.length;e++)if(ct[e].pointerId===r.pointerId){ct.splice(e,1);break}}function jf(r){if(r.pointerType!=="touch")return;let e=Wf[r.pointerId];e===void 0&&(e={x:0,y:0},Wf[r.pointerId]=e),e.x=r.pageX,e.y=r.pageY}function qf(r){let e=r.pointerId===ct[0].pointerId?ct[1]:ct[0];return Wf[e.pointerId]}function k1(r){Wu[r.key]=!0,Hf[r.key]=Hf[r.key]===void 0?1:Hf[r.key]+1}function V1(r){if(Zo&&Wu.Meta)for(let e in Wu)Wu[e]=!1;else Wu[r.key]=!1;Hf={}}function H1(r){r.addEventListener("pointerdown",G1,!0),r.addEventListener("pointerdown",jf,!0),r.addEventListener("pointermove",jf,!0),r.addEventListener("pointerup",kl,!0),r.addEventListener("pointercancel",kl,!0),r.addEventListener("pointerleave",kl,!0),window.addEventListener("keydown",k1,!0),window.addEventListener("keyup",V1,!0)}function W1(r){r.removeEventListener("pointerdown",G1,!0),r.removeEventListener("pointerdown",jf,!0),r.removeEventListener("pointermove",jf,!0),r.removeEventListener("pointerup",kl,!0),r.removeEventListener("pointercancel",kl,!0),r.removeEventListener("pointerleave",kl,!0),window.removeEventListener("keydown",k1,!0),window.removeEventListener("keyup",V1,!0)}var Ci;(t=>{t.all=["PerspectiveCamera","OrthographicCamera"];function e(n){return t.all.includes(n)}t.is=e})(Ci||(Ci={}));var Ko;(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})(Ko||(Ko={}));var ms;(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})(ms||(ms={}));var hn;(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})(hn||(hn={}));var ju;(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})(ju||(ju={}));var Pi;(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})(Pi||(Pi={}));var Kt;(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})(Kt||(Kt={}));var wn;(a=>{a.white={...Kt.white,a:1},a.transparent={...Kt.white,a:0};function t(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}a.from0to1=t;function n(l,u){return{...Kt.fromHex(l),a:u}}a.fromHexAndA=n;function i(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}a.toRgb255a1=i;function s(l,u){return Kt.equals(l,u)&&l.a===u.a}a.equals=s;function o(l,u,c){return{r:l.r+(u.r-l.r)*c,g:l.g+(u.g-l.g)*c,b:l.b+(u.b-l.b)*c,a:l.a+(u.a-l.a)*c}}a.lerp=o})(wn||(wn={}));var Xf;(e=>e.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Xf||(Xf={}));var Yf;(e=>e.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Yf||(Yf={}));var Qf;(e=>e.defaultData={control1:[.5,.05],control2:[.1,.3]})(Qf||(Qf={}));var Zf;(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})(Zf||(Zf={}));var dn=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,dn.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,dn.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,dn.prototype),delete s[n],{data:s,actual:e,reverse:{type:1,id:n,data:i}}}}throw new Error("illegal arg")}};function qu(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"&&qu(n)}return Object.freeze(r)}function j1(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 Kf=class extends Error{};function Di(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 Jo(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 q1(){return typeof process<"u"}function X1(r,e){for(let t of r)e(t.id,t.data),X1(t.children,e)}function Y1(r,e){e(r.id,r.data);for(let t of r.children)Y1(t,e)}var Gn=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Gn.prototype)}deepFreeze(){let t=0;for(;t<this.length;)qu(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&&Y1(i,n)}}traverse(t){X1(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,Gn.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 Kf("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,p)=>f.fi-p.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)=>j1(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 Di(0,i,i);{let o=s[0].fi;return Di(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 Di(l,l+i,i)}else return Di(o.fi,a.fi,i)}}};var Jf;(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})(Jf||(Jf={}));var Gt=class extends Array{constructor(...t){super(...t);Object.setPrototypeOf(this,Gt.prototype)}deepFreeze(){let t=0;for(;t<this.length;)qu(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,Gt.prototype);let n=t;return q1()||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 Di(0,n,n);{let s=i[0].fi;return Di(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 Di(a,a+n,n)}else return Di(s.fi,o.fi,n)}}};var gs=class{unusedFun(e){}runOp(e){let t=[],n=this,i=0,s={};for(;i<e.path.length;)t.push(n),n=n===void 0?void 0:n[e.path[i]],i+=1;n={...n};for(let[l,u]of Object.entries(e.props)){let c=n[l];s[l]=c,u===void 0?delete n[l]:n[l]=u}for(;i>0;)Object.keys(n).length===0?(n={...t[i-1]},delete n[e.path[i-1]]):n={...t[i-1],[e.path[i-1]]:n},i-=1;let o=Object.setPrototypeOf(n,gs.prototype),a={...e,props:s};return{data:o,actual:e,reverse:a}}},Q1;(t=>{function r(n,i){return Xu(n,i)??n}t.apply=r;function e(n,i){if(i.type===0){let s=$o.zoom(n,i.path);if(s===void 0)return i;if(typeof s=="string"||typeof s=="number"||Jo(s))return;if(s&&typeof s=="object"){let o={...i.props};for(let a of Object.keys(s))delete o[a];return{...i,props:o}}else return}else if(i.type===1||i.type===4||i.type===7){let s=$o.zoom(n,[...i.path,i.id]);if(s===void 0)return i;if(typeof s=="string"||typeof s=="number"||Jo(s))return;if(s&&typeof s=="object"){let o={...i.data,...s};return{...i,data:o}}else return}else return i}t.filterOp=e})(Q1||(Q1={}));function Z1(r,e){if(e===void 0)return;let t=!1,n=r.map(i=>{let s=i.id,o=Xu(i.data,e[s]);t=t||o!==void 0,o===void 0&&(o=i.data);let a=Z1(i.children,e);return a!==void 0?t=!0:a=i.children,{...i,id:s,data:o,children:a}});if(t)return n}function fU(r,e){if(e===void 0)return;let t=!1,n=r.map(i=>{let s=i.id,o=Xu(i.data,e[s]);return t=t||o!==void 0,o===void 0&&(o=i.data),{...i,id:s,data:o}});if(t)return Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n}function Xu(r,e){if(e!==void 0)if(r instanceof Gn){let t=Z1(r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t}else{if(r instanceof Gt)return fU(r,e);if(Array.isArray(r)){let t=!1,n=r.map((i,s)=>{let o=Xu(i,e[s]);return t=t||o!==void 0,o===void 0&&(o=i),o});return t?(Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n):void 0}else if(r&&typeof r=="object"){let t={},n=!1;for(let[i,s]of Object.entries(r)){let o=Xu(s,e[i]);n=n||o!==void 0,o===void 0&&(o=s),t[i]=o}return n?(Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t):void 0}else return e??r}}var K1=Symbol(),Yu=Symbol(),ea=class{reportOp(e,t,n=[]){let i=this;if(t===null)return;i._current=t.data;let s=n;for(;!(i instanceof $f);){let o=i._path,a=i._current;if(o!==""&&s.splice(0,0,o),i=i._parent,i===null)return;i.update(o,a)}i.push(s,e,t.actual,t.reverse)}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let n=t[Yu];n&&n(),delete this._children[e]}}}},Qy=class extends ea{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,Jf.runOp(this._current,e),e.path)}},Zy=class extends ea{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,dn.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},J1={get(r,e){if(e===Yu)return()=>{r._parent=null};if(e===K1)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=ep(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]}}},pU={...J1,set(r,e,t){let n={type:0,props:{[e]:ci(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}},mU={...J1,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}},Vl=class extends ea{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Yu]=()=>{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=ep(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)}},Ky=class extends ea{constructor(e,t,n){super(),this._parent=e,this._path=t,this._current=n,this[Yu]=()=>{this._parent=null}}feedOp(e){let{path:t,...n}=e;this.reportOp(n,this._current.runOp(e),t)}},Hl=class extends ea{constructor(e,t,n){super(),this._children={},this._parent=e,this._path=t,this._current=n,this[Yu]=()=>{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=ep(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 Yy(r,e,t){if(r.length>0){let n=r[r.length-1];if(n.type===0&&e.type===0&&$o.equal(n.path,t)){Object.assign(n.props,e.props);return}}r.push({...e,path:t})}var $f=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){Yy(this.ts,t,e),Yy(this.actual,n,e),Yy(this.reverse,i,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ep(r,e,t){return t instanceof Gn?new Vl(r,e,t):t instanceof Gt?new Hl(r,e,t):t instanceof gs?new Ky(r,e,t):t instanceof dn?new Proxy(new Zy(r,e,t),mU):t!==null&&typeof t=="object"?Jo(t)?t:new Proxy(new Qy(r,e,t),pU):t}function Jy(r){let e=new $f(r);return[ep(e,"",r),e]}function $y(r,e){let[t,n]=Jy(r);return e(t),n.result()}function ci(r){return r instanceof Vl||r instanceof Hl?r._current:r!==null&&typeof r=="object"?r[K1]:r}var $o;(i=>{function r(s,o){if(o.length===s.length)for(var a=0;a<s.length;){if(s[a]!==o[a])return!1;a+=1}else return!1;return!0}i.equal=r;function e(s,o,a){let l=n(a,s);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...o};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return o}i.removeOverridden=e;function t(s,o){if((s instanceof Gn||s instanceof Vl)&&typeof o=="string")return s.data(o);if((s instanceof Gt||s instanceof Hl)&&typeof o=="string")return s.data(o);if(typeof o=="number"&&Array.isArray(s))return s[o];if(typeof o=="string"&&typeof s=="object")return s[o]}i.zoomOnce=t;function n(s,o,a=0){for(;a<o.length&&s!==void 0;)s=t(s,o[a]),a+=1;return s}i.zoom=n})($o||($o={}));var tp=class{},Qu=class extends tp{constructor(t){super();this.id=t}},Zu=class extends tp{constructor(t){super();this.data=t}};var tv;try{tv=new TextDecoder}catch{}var De,no,Z=0;var oA=[],nv=oA,rv=0,pr={},yt,to,kr=0,Ii=0,Ir,ys,ir=[],Tt,$1={useRecords:!1,mapsAsObjects:!0},Ku=class{},sv=new Ku;sv.name="MessagePack 0xC1";var Wl=!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 hA(()=>(rp(),this?this.unpack(e,t):Li.prototype.unpack.call($1,e,t)));no=t>-1?t:e.length,Z=0,rv=0,Ii=0,to=null,nv=oA,Ir=null,De=e;try{Tt=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(pr=this,this.structures)return yt=this.structures,np();(!yt||yt.length>0)&&(yt=[])}else pr=$1,(!yt||yt.length>0)&&(yt=[]);return np()}unpackMultiple(e,t){let n,i=0;try{Wl=!0;let s=e.length,o=this?this.unpack(e,s):op.unpack(e,s);if(t){for(t(o);Z<s;)if(i=Z,t(np())===!1)return}else{for(n=[o];Z<s;)i=Z,n.push(np());return n}}catch(s){throw s.lastPosition=i,s.values=n,s}finally{Wl=!1,rp()}}_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 np(){try{if(!pr.trusted&&!Wl){let e=yt.sharedLength||0;e<yt.length&&(yt.length=e)}let r=Jt();if(Z==no)yt.restoreStructures&&eA(),yt=null,De=null,ys&&(ys=null);else if(Z>no){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}else if(!Wl)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw yt.restoreStructures&&eA(),rp(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function eA(){for(let r in yt.restoreStructures)yt[r]=yt.restoreStructures[r];yt.restoreStructures=null}function Jt(){let r=De[Z++];if(r<160)if(r<128){if(r<64)return r;{let e=yt[r&63]||pr.getStructures&&aA()[r&63];return e?(e.read||(e.read=ov(e,r&63)),e.read()):r}}else if(r<144)if(r-=128,pr.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[cA()]=Jt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Jt(),Jt());return e}else{r-=144;let e=new Array(r);for(let t=0;t<r;t++)e[t]=Jt();return e}else if(r<192){let e=r-160;if(Ii>=Z)return to.slice(Z-kr,(Z+=e)-kr);if(Ii==0&&no<140){let t=e<16?av(e):lA(e);if(t!=null)return t}return iv(e)}else{let e;switch(r){case 192:return null;case 193:return Ir?(e=Jt(),e>0?Ir[1].slice(Ir.position1,Ir.position1+=e):Ir[0].slice(Ir.position0,Ir.position0-=e)):sv;case 194:return!1;case 195:return!0;case 196:return ev(De[Z++]);case 197:return e=Tt.getUint16(Z),Z+=2,ev(e);case 198:return e=Tt.getUint32(Z),Z+=4,ev(e);case 199:return ta(De[Z++]);case 200:return e=Tt.getUint16(Z),Z+=2,ta(e);case 201:return e=Tt.getUint32(Z),Z+=4,ta(e);case 202:if(e=Tt.getFloat32(Z),pr.useFloat32>2){let t=sp[(De[Z]&127)<<1|De[Z+1]>>7];return Z+=4,(t*e+(e>0?.5:-.5)>>0)/t}return Z+=4,e;case 203:return e=Tt.getFloat64(Z),Z+=8,e;case 204:return De[Z++];case 205:return e=Tt.getUint16(Z),Z+=2,e;case 206:return e=Tt.getUint32(Z),Z+=4,e;case 207:return pr.int64AsNumber?(e=Tt.getUint32(Z)*4294967296,e+=Tt.getUint32(Z+4)):e=Tt.getBigUint64(Z),Z+=8,e;case 208:return Tt.getInt8(Z++);case 209:return e=Tt.getInt16(Z),Z+=2,e;case 210:return e=Tt.getInt32(Z),Z+=4,e;case 211:return pr.int64AsNumber?(e=Tt.getInt32(Z)*4294967296,e+=Tt.getUint32(Z+4)):e=Tt.getBigInt64(Z),Z+=8,e;case 212:if(e=De[Z++],e==114)return sA(De[Z++]&63);{let t=ir[e];if(t)return t.read?(Z++,t.read(Jt())):t.noBuffer?(Z++,t()):t(De.subarray(Z,++Z));throw new Error("Unknown extension "+e)}case 213:return e=De[Z],e==114?(Z++,sA(De[Z++]&63,De[Z++])):ta(2);case 214:return ta(4);case 215:return ta(8);case 216:return ta(16);case 217:return e=De[Z++],Ii>=Z?to.slice(Z-kr,(Z+=e)-kr):yU(e);case 218:return e=Tt.getUint16(Z),Z+=2,Ii>=Z?to.slice(Z-kr,(Z+=e)-kr):vU(e);case 219:return e=Tt.getUint32(Z),Z+=4,Ii>=Z?to.slice(Z-kr,(Z+=e)-kr):xU(e);case 220:return e=Tt.getUint16(Z),Z+=2,nA(e);case 221:return e=Tt.getUint32(Z),Z+=4,nA(e);case 222:return e=Tt.getUint16(Z),Z+=2,rA(e);case 223:return e=Tt.getUint32(Z),Z+=4,rA(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 gU=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ov(r,e){function t(){if(t.count++>2){let i=r.read=new Function("r","return function(){return {"+r.map(s=>gU.test(s)?s+":r()":"["+JSON.stringify(s)+"]:r()").join(",")+"}}")(Jt);return r.highByte===0&&(r.read=tA(e,r.read)),i()}let n={};for(let i=0,s=r.length;i<s;i++){let o=r[i];n[o]=Jt()}return n}return t.count=0,r.highByte===0?tA(e,t):t}var tA=(r,e)=>function(){let t=De[Z++];if(t===0)return e();let n=r<32?-(r+(t<<5)):r+(t<<5),i=yt[n]||aA()[n];if(!i)throw new Error("Record id is not defined for "+n);return i.read||(i.read=ov(i,r)),i.read()};function aA(){let r=hA(()=>(De=null,pr.getStructures()));return yt=pr._mergeStructures(r,yt)}var iv=ip,yU=ip,vU=ip,xU=ip;function ip(r){let e;if(r<16&&(e=av(r)))return e;if(r>64&&tv)return tv.decode(De.subarray(Z,Z+=r));let t=Z+r,n=[];for(e="";Z<t;){let i=De[Z++];if((i&128)===0)n.push(i);else if((i&224)===192){let s=De[Z++]&63;n.push((i&31)<<6|s)}else if((i&240)===224){let s=De[Z++]&63,o=De[Z++]&63;n.push((i&31)<<12|s<<6|o)}else if((i&248)===240){let s=De[Z++]&63,o=De[Z++]&63,a=De[Z++]&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+=Bn.apply(String,n),n.length=0)}return n.length>0&&(e+=Bn.apply(String,n)),e}function nA(r){let e=new Array(r);for(let t=0;t<r;t++)e[t]=Jt();return e}function rA(r){if(pr.mapsAsObjects){let e={};for(let t=0;t<r;t++)e[cA()]=Jt();return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Jt(),Jt());return e}}var Bn=String.fromCharCode;function lA(r){let e=Z,t=new Array(r);for(let n=0;n<r;n++){let i=De[Z++];if((i&128)>0){Z=e;return}t[n]=i}return Bn.apply(String,t)}function av(r){if(r<4)if(r<2){if(r===0)return"";{let e=De[Z++];if((e&128)>1){Z-=1;return}return Bn(e)}}else{let e=De[Z++],t=De[Z++];if((e&128)>0||(t&128)>0){Z-=2;return}if(r<3)return Bn(e,t);let n=De[Z++];if((n&128)>0){Z-=3;return}return Bn(e,t,n)}else{let e=De[Z++],t=De[Z++],n=De[Z++],i=De[Z++];if((e&128)>0||(t&128)>0||(n&128)>0||(i&128)>0){Z-=4;return}if(r<6){if(r===4)return Bn(e,t,n,i);{let s=De[Z++];if((s&128)>0){Z-=5;return}return Bn(e,t,n,i,s)}}else if(r<8){let s=De[Z++],o=De[Z++];if((s&128)>0||(o&128)>0){Z-=6;return}if(r<7)return Bn(e,t,n,i,s,o);let a=De[Z++];if((a&128)>0){Z-=7;return}return Bn(e,t,n,i,s,o,a)}else{let s=De[Z++],o=De[Z++],a=De[Z++],l=De[Z++];if((s&128)>0||(o&128)>0||(a&128)>0||(l&128)>0){Z-=8;return}if(r<10){if(r===8)return Bn(e,t,n,i,s,o,a,l);{let u=De[Z++];if((u&128)>0){Z-=9;return}return Bn(e,t,n,i,s,o,a,l,u)}}else if(r<12){let u=De[Z++],c=De[Z++];if((u&128)>0||(c&128)>0){Z-=10;return}if(r<11)return Bn(e,t,n,i,s,o,a,l,u,c);let h=De[Z++];if((h&128)>0){Z-=11;return}return Bn(e,t,n,i,s,o,a,l,u,c,h)}else{let u=De[Z++],c=De[Z++],h=De[Z++],d=De[Z++];if((u&128)>0||(c&128)>0||(h&128)>0||(d&128)>0){Z-=12;return}if(r<14){if(r===12)return Bn(e,t,n,i,s,o,a,l,u,c,h,d);{let f=De[Z++];if((f&128)>0){Z-=13;return}return Bn(e,t,n,i,s,o,a,l,u,c,h,d,f)}}else{let f=De[Z++],p=De[Z++];if((f&128)>0||(p&128)>0){Z-=14;return}if(r<15)return Bn(e,t,n,i,s,o,a,l,u,c,h,d,f,p);let m=De[Z++];if((m&128)>0){Z-=15;return}return Bn(e,t,n,i,s,o,a,l,u,c,h,d,f,p,m)}}}}}function ev(r){return pr.copyBuffers?Uint8Array.prototype.slice.call(De,Z,Z+=r):De.subarray(Z,Z+=r)}function ta(r){let e=De[Z++];if(ir[e])return ir[e](De.subarray(Z,Z+=r));throw new Error("Unknown extension type "+e)}var iA=new Array(4096);function cA(){let r=De[Z++];if(r>=160&&r<192){if(r=r-160,Ii>=Z)return to.slice(Z-kr,(Z+=r)-kr);if(!(Ii==0&&no<180))return iv(r)}else return Z--,Jt();let e=(r<<5^(r>1?Tt.getUint16(Z):r>0?De[Z]:0))&4095,t=iA[e],n=Z,i=Z+r-3,s,o=0;if(t&&t.bytes==r){for(;n<i;){if(s=Tt.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 Z=n,t.string;i-=3,n=Z}for(t=[],iA[e]=t,t.bytes=r;n<i;)s=Tt.getUint32(n),t.push(s),n+=4;for(i+=3;n<i;)s=De[n++],t.push(s);let a=r<16?av(r):lA(r);return a!=null?t.string=a:t.string=iv(r)}var sA=(r,e)=>{var t=Jt();let n=r;e!==void 0&&(r=r<32?-((e<<5)+r):(e<<5)+r,t.highByte=e);let i=yt[r];return i&&i.isShared&&((yt.restoreStructures||(yt.restoreStructures=[]))[r]=i),yt[r]=t,t.read=ov(t,n),t.read()},uA=typeof self=="object"?self:global;ir[0]=()=>{};ir[0].noBuffer=!0;ir[101]=()=>{let r=Jt();return(uA[r[0]]||Error)(r[1])};ir[105]=r=>{let e=Tt.getUint32(Z-4);ys||(ys=new Map);let t=De[Z],n;t>=144&&t<160||t==220||t==221?n=[]:n={};let i={target:n};ys.set(e,i);let s=Jt();return i.used?Object.assign(n,s):(i.target=s,s)};ir[112]=r=>{let e=Tt.getUint32(Z-4),t=ys.get(e);return t.used=!0,t.target};ir[115]=()=>new Set(Jt());var lv=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");ir[116]=r=>{let e=r[0],t=lv[e];if(!t)throw new Error("Could not find typed array for code "+e);return new uA[t](Uint8Array.prototype.slice.call(r,1).buffer)};ir[120]=()=>{let r=Jt();return new RegExp(r[0],r[1])};ir[98]=r=>{let e=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],t=Z;Z+=e-4,Ir=[Jt(),Jt()],Ir.position0=0,Ir.position1=0;let n=Z;Z=t;try{return Jt()}finally{Z=n}};ir[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 hA(r){let e=no,t=Z,n=rv,i=kr,s=Ii,o=to,a=nv,l=ys,u=Ir,c=new Uint8Array(De.slice(0,no)),h=yt,d=yt.slice(0,yt.length),f=pr,p=Wl,m=r();return no=e,Z=t,rv=n,kr=i,Ii=s,to=o,nv=a,ys=l,Ir=u,De=c,Wl=p,yt=h,yt.splice(0,yt.length,...d),pr=f,Tt=new DataView(De.buffer,De.byteOffset,De.byteLength),m}function rp(){De=null,ys=null,yt=null}function dA(r){r.unpack?ir[r.type]=r.unpack:ir[r.type]=r}var sp=new Array(147);for(let r=0;r<256;r++)sp[r]=+("1e"+Math.floor(45.15-r*.30103));var op=new Li({useRecords:!1}),bU=op.unpack,wU=op.unpackMultiple,SU=op.unpack,ap={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},AU=new Float32Array(1),DY=new Uint8Array(AU.buffer,0,4);var lp;try{lp=new TextEncoder}catch{}var cp,uv,up=typeof Buffer<"u",cv=up?Buffer.allocUnsafeSlow:Uint8Array,gA=up?Buffer:Uint8Array,fA=up?4294967296:2144337920,se,nn,ee=0,Ri,Oi=null,_U=/[\u0080-\uFFFF]/,Ju=Symbol("record-id"),na=class extends Li{constructor(e){super(e),this.offset=0;let t,n,i,s,o,a,l=0,u=gA.prototype.utf8Write?function(x,T,E){return se.utf8Write(x,T,E)}:lp&&lp.encodeInto?function(x,T){return lp.encodeInto(x,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 p=e.maxOwnStructures;p==null&&(p=d?32:64),h&&!e.saveStructures&&(this.structures=[]);let m=f>32||p+f>64,g=f+64,y=f+p+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,b=0;this.pack=this.encode=function(x,T){if(se||(se=new cv(8192),nn=new DataView(se.buffer,0,8192),ee=0),Ri=se.length-10,Ri-ee<2048?(se=new cv(se.length),nn=new DataView(se.buffer,0,se.length),Ri=se.length-10,ee=0):ee=ee+7&2147483640,n=ee,a=c.structuredClone?new Map:null,c.bundleStrings?(Oi=["",""],se[ee++]=214,se[ee++]=98,Oi.position=ee-n,ee+=4):Oi=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 D=i[C];if(!D)continue;let I,R=i.transitions;for(let F=0,B=D.length;F<B;F++){let X=D[F];I=R[X],I||(I=R[X]=Object.create(null)),R=I}R[Ju]=C+64}l=E}h||(i.nextId=E+64)}s&&(s=!1),o=i||[];try{if(S(x),Oi){nn.setUint32(Oi.position+n,ee-Oi.position-n);let E=Oi;Oi=null,S(E[0]),S(E[1])}if(c.offset=ee,a&&a.idsToInsert){ee+=a.idsToInsert.length*6,ee>Ri&&M(ee),c.offset=ee;let E=TU(se.subarray(n,ee),a.idsToInsert);return a=null,E}return T&vA?(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,v.length>0&&(v=[]);else if(v.length>0&&!h){for(let E=0,C=v.length;E<C;E++)v[E][Ju]=0;v=[]}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(x)):(l=E,C)}}T&RU&&(ee=n)}};let S=x=>{ee>Ri&&(se=M(ee));var T=typeof x,E;if(T==="string"){let C=x.length;if(Oi&&C>=8&&C<4096){let R=_U.test(x);Oi[R?0:1]+=x,se[ee++]=193,S(R?-C:C);return}let D;C<32?D=1:C<256?D=2:C<65536?D=3:D=5;let I=C*3;if(ee+I>Ri&&(se=M(ee+I)),C<64||!u){let R,F,B,X=ee+D;for(R=0;R<C;R++)F=x.charCodeAt(R),F<128?se[X++]=F:F<2048?(se[X++]=F>>6|192,se[X++]=F&63|128):(F&64512)===55296&&((B=x.charCodeAt(R+1))&64512)===56320?(F=65536+((F&1023)<<10)+(B&1023),R++,se[X++]=F>>18|240,se[X++]=F>>12&63|128,se[X++]=F>>6&63|128,se[X++]=F&63|128):(se[X++]=F>>12|224,se[X++]=F>>6&63|128,se[X++]=F&63|128);E=X-ee-D}else E=u(x,ee+D,I);E<32?se[ee++]=160|E:E<256?(D<2&&se.copyWithin(ee+2,ee+1,ee+1+E),se[ee++]=217,se[ee++]=E):E<65536?(D<3&&se.copyWithin(ee+3,ee+2,ee+2+E),se[ee++]=218,se[ee++]=E>>8,se[ee++]=E&255):(D<5&&se.copyWithin(ee+5,ee+3,ee+3+E),se[ee++]=219,nn.setUint32(ee,E),ee+=4),ee+=E}else if(T==="number")if(x>>>0===x)x<64?se[ee++]=x:x<256?(se[ee++]=204,se[ee++]=x):x<65536?(se[ee++]=205,se[ee++]=x>>8,se[ee++]=x&255):(se[ee++]=206,nn.setUint32(ee,x),ee+=4);else if(x>>0===x)x>=-32?se[ee++]=256+x:x>=-128?(se[ee++]=208,se[ee++]=x+256):x>=-32768?(se[ee++]=209,nn.setInt16(ee,x),ee+=2):(se[ee++]=210,nn.setInt32(ee,x),ee+=4);else{let C;if((C=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){se[ee++]=202,nn.setFloat32(ee,x);let D;if(C<4||(D=x*sp[(se[ee]&127)<<1|se[ee+1]>>7])>>0===D){ee+=4;return}else ee--}se[ee++]=203,nn.setFloat64(ee,x),ee+=8}else if(T==="object")if(!x)se[ee++]=192;else{if(a){let D=a.get(x);if(D){if(!D.id){let I=a.idsToInsert||(a.idsToInsert=[]);D.id=I.push(D)}se[ee++]=214,se[ee++]=112,nn.setUint32(ee,D.id),ee+=4;return}else a.set(x,{offset:ee-n})}let C=x.constructor;if(C===Object)_(x,!0);else if(C===Array){E=x.length,E<16?se[ee++]=144|E:E<65536?(se[ee++]=220,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=221,nn.setUint32(ee,E),ee+=4);for(let D=0;D<E;D++)S(x[D])}else if(C===Map){E=x.size,E<16?se[ee++]=128|E:E<65536?(se[ee++]=222,se[ee++]=E>>8,se[ee++]=E&255):(se[ee++]=223,nn.setUint32(ee,E),ee+=4);for(let[D,I]of x)S(D),S(I)}else{for(let D=0,I=cp.length;D<I;D++){let R=uv[D];if(x instanceof R){let F=cp[D];if(F.write){F.type&&(se[ee++]=212,se[ee++]=F.type,se[ee++]=0),S(F.write.call(this,x));return}let B=se,X=nn,Y=ee;se=null;let G;try{G=F.pack.call(this,x,z=>(se=B,B=null,ee+=z,ee>Ri&&M(ee),{target:se,targetView:nn,position:ee-z}),S)}finally{B&&(se=B,nn=X,ee=Y,Ri=se.length-10)}G&&(G.length+ee>Ri&&M(G.length+ee),ee=MU(G,se,ee,F.type));return}}_(x,!x.hasOwnProperty)}}else if(T==="boolean")se[ee++]=x?195:194;else if(T==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))se[ee++]=211,nn.setBigInt64(ee,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)se[ee++]=207,nn.setBigUint64(ee,x);else if(this.largeBigIntToFloat)se[ee++]=203,nn.setFloat64(ee,Number(x));else throw new RangeError(x+" 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")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+T)},_=this.useRecords===!1?this.variableMapSize?x=>{let T=Object.keys(x),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,nn.setUint32(ee,E),ee+=4);let C;for(let D=0;D<E;D++)S(C=T[D]),S(x[C])}:(x,T)=>{se[ee++]=222;let E=ee-n;ee+=2;let C=0;for(let D in x)(T||x.hasOwnProperty(D))&&(S(D),S(x[D]),C++);se[E+++n]=C>>8,se[E+n]=C&255}:x=>{let T=Object.keys(x),E,C=o.transitions||(o.transitions=Object.create(null)),D=0;for(let R=0,F=T.length;R<F;R++){let B=T[R];E=C[B],E||(E=C[B]=Object.create(null),D++),C=E}let I=C[Ju];if(I)I>=96&&m?(se[ee++]=((I-=96)&31)+96,se[ee++]=I>>5):se[ee++]=I;else{I=o.nextId,I||(I=64),I<g&&this.shouldShareStructure&&!this.shouldShareStructure(T)?(I=o.nextOwnId,I<y||(I=g),o.nextOwnId=I+1):(I>=y&&(I=g),o.nextId=I+1);let R=T.highByte=I>=96&&m?I-96>>5:-1;C[Ju]=I,o[I-64]=T,I<g?(T.isShared=!0,o.sharedLength=I-63,s=!0,R>=0?(se[ee++]=(I&31)+96,se[ee++]=R):se[ee++]=I):(R>=0?(se[ee++]=213,se[ee++]=114,se[ee++]=(I&31)+96,se[ee++]=R):(se[ee++]=212,se[ee++]=114,se[ee++]=I),D&&(w+=b*D),v.length>=p&&(v.shift()[Ju]=0),v.push(C),S(T))}for(let R=0,F=T.length;R<F;R++)S(x[T[R]])},M=x=>{let T;if(x>16777216){if(x-n>fA)throw new Error("Packed buffer would be larger than maximum buffer size");T=Math.min(fA,Math.round(Math.max((x-n)*(x>67108864?1.25:2),4194304)/4096)*4096)}else T=(Math.max(x-n<<2,se.length-1)>>12)+1<<12;let E=new cv(T);return nn=new DataView(E.buffer,0,T),se.copy?se.copy(E,0,n,x):E.set(se.slice(n,x)),ee-=n,n=0,Ri=E.length-10,se=E}}useBuffer(e){se=e,nn=new DataView(se.buffer,se.byteOffset,se.byteLength),ee=0}};uv=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ku];cp=[{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?pA(r,16,e):mA(up?Buffer.from(r):new Uint8Array(r),e)}},{pack(r,e){let t=r.constructor;t!==gA&&this.structuredClone?pA(r,lv.indexOf(t.name),e):mA(r,e)}},{pack(r,e){let{target:t,position:n}=e(1);t[n]=193}}];function pA(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 mA(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 MU(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 TU(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 ro(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)");uv.unshift(r.Class),cp.unshift(r)}dA(r)}var yA=new na({useRecords:!1}),EU=yA.pack,CU=yA.pack;var{NEVER:PU,ALWAYS:DU,DECIMAL_ROUND:IU,DECIMAL_FIT:LU}=ap,vA=512,RU=1024;var xA=new na({structuredClone:!0});ro({Class:dn.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,dn.prototype),r}});ro({Class:Gt.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Gt.prototype),r}});ro({Class:Gn.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Gn.prototype),r}});ro({Class:Qu.prototype.constructor,type:4,write(r){return r.id},read(r){return new Qu(r)}});ro({Class:Zu.prototype.constructor,type:5,write(r){return r.data},read(r){return new Zu(r)}});ro({Class:gs.prototype.constructor,type:6,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,gs.prototype),r}});function OU(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 hv(r){if(Jo(r))return r;if(Array.isArray(r))return r.map(hv);if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r).sort())e[t]=hv(r[t]);return Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else return r}var hp;(n=>{function r(i){return xA.pack(i)}n.serialize=r;function e(i){return xA.unpack(i)}n.deserialize=e;function t(i){return OU(r(hv(i))).toString()}n.checksum=t})(hp||(hp={}));var ra;(t=>{let r={opacity:1,blendFunction:13,enabled:!1};t.defaultData={enabled:!1,pixelation:{...r,blendFunction:16,granularity:15},bloom:{...r,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...r,offset:[2,2]},vignette:{...r,darkness:1,offset:0},hueSaturation:{...r,hue:3,saturation:0},brightnessContrast:{...r,brightness:.25,contrast:0},depthOfField:{...r,focalLength:2,focusDistance:2,bokehScale:2},noise:{...r,blendFunction:16}}})(ra||(ra={}));var dp;(t=>{t.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function e(n){return t.all.includes(n)}t.is=e})(dp||(dp={}));var fp;(t=>{function r(n){return e(n)}t.defaultData=r;function e(n){if(n==="PointLight")return{type:n,color:wn.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:wn.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:wn.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(fp||(fp={}));var dv;(t=>{t.defaultData={castShadow:!0,receiveShadow:!0};function e(n,i){return n.castShadow===i.castShadow&&n.receiveShadow===i.receiveShadow}t.equals=e})(dv||(dv={}));var fv;(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})(fv||(fv={}));var pp;(e=>e.defaultData={...fv.defaultData,...dv.defaultData,cloner:null,booleanExclude:null})(pp||(pp={}));var pv=(i=>(i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Center=3]="Center",i[i.Justify=4]="Justify",i))(pv||{}),mv=(n=>(n[n.Top=1]="Top",n[n.Center=2]="Center",n[n.Bottom=3]="Bottom",n))(mv||{}),gv=(n=>(n[n.None=1]="None",n[n.Upper=2]="Upper",n[n.Lower=3]="Lower",n))(gv||{}),mp;(e=>e.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:wn.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(mp||(mp={}));var gp=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],bA=["wrapping","image"],io;(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:Kt.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]],steps:[0,1],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:{...Kt.fromHex(6710886),a:1},colorB:{...Kt.fromHex(6710886),a:1},colorC:{...Kt.fromHex(16777215),a:1},colorD:{...Kt.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:wn.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:wn.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:wn.fromHexAndA(0,1),contourColor:wn.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}}}})(io||(io={}));var sr;(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 Gt}}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 Gt;return h.push({fi:0,data:io.defaultData("light",l),id:u}),h.push({fi:1,data:io.defaultData("color"),id:c}),{layers:h}}a.defaultTwoLayerData=s;function o(l,u="basic",c="layer1",h="layer2"){let d=io.defaultData("texture");Object.assign(d.texture,{image:l});let f=new Gt;return f.push({fi:0,data:d,id:c}),f.push({fi:1,data:io.defaultData("light",u),id:h}),{layers:f}}a.defaultTwoLayerTextureData=o})(sr||(sr={}));var jl;(e=>{function r(){return{points:new Gt,roundness:0,shapeHoles:[],isClosed:!1}}e.defaultData=r})(jl||(jl={}));var yp;(e=>{function r(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=r})(yp||(yp={}));var $u;(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:jl.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})($u||($u={}));var eh;(i=>{i.identity={...Xf.identity,hiddenMatrix:Pi.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:hn.isEqual(s.position,o.position)?null:o.position,rotation:hn.isEqual(s.rotation,o.rotation)?null:o.rotation,scale:hn.isEqual(s.scale,o.scale)?null:o.scale,hiddenMatrix:Pi.isEqual(s.hiddenMatrix,o.hiddenMatrix)?null:o.hiddenMatrix}}i.diff=n})(eh||(eh={}));var yv;(e=>e.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(yv||(yv={}));var vs;(e=>e.defaultData={states:new Gt,events:new Gt,visible:!0,raycastLock:!1,physics:null,...eh.identity})(vs||(vs={}));var wA;(e=>e.defaultData={type:"Empty",...vs.defaultData})(wA||(wA={}));var vp;(e=>e.defaultData={type:"Mesh",...vs.defaultData,...pp.defaultData})(vp||(vp={}));var SA;(e=>e.defaultData={type:"TextFrame",...vs.defaultData,...mp.defaultData})(SA||(SA={}));var xp;(e=>e.defaultData={...vs.defaultData,...eh.identity,...Ko.defaultData})(xp||(xp={}));var bp;(e=>{function r(t){return{...vs.defaultData,...fp.defaultData(t)}}e.defaultData=r})(bp||(bp={}));var wp;(n=>(n.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Pi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:yv.defaultData,states:new Gt,events:new Gt,...Ko.defaultData},n.defaultMeshObject={name:"Rectangle",...vs.defaultData,...vp.defaultData,geometry:$u.defaultData("RectangleGeometry"),material:sr.defaultTwoLayerData("basic","layer1","layer2")},n.defaultBooleanObject={name:"Boolean",...vs.defaultData,...vp.defaultData,geometry:$u.defaultData("BooleanGeometry"),material:sr.defaultTwoLayerData("phong","layer1","layer2")}))(wp||(wp={}));var th;(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=$y(s.material,o=>{if(typeof o!="string")for(let[a,l]of Object.entries(i.material.layers)){let u=o.layers.data(a);u&&Qo(u,l)}}).data),s.materials&&i.materials&&(s.materials=$y(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&&Qo(h,c)}}}).data),s}t.patchMaterialState=r;function e(n,i){if(i===void 0)return n;let s={...n};if(Object.assign(s,eh.merge(s,i)),Ci.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(dp.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=Kt.clone(o.color))}return s}t.patch=e})(th||(th={}));var nh;(e=>e.defaultData={enabled:!1,useBackgroundColor:!1,color:Kt.white,near:.1,far:2e3})(nh||(nh={}));var ql;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3})(ql||(ql={}));var xs;(e=>e.defaultData={orbitControls:ql.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((t,n)=>{let i=0,s=0;return n<5?s=-30:n<10&&(s=30),n===0||n===10||n===5?i=30:(n===4||n===11||n===9)&&(i=-30),[120,[i,s],"show"]}),gameControlObject:null})(xs||(xs={}));var Vr;(e=>e.defaultData={ambientLight:{enabled:!0,type:"HemisphereLight",color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75,depth:100,groundColor:{r:.5098039215686274,g:.5098039215686274,b:.5098039215686274},softShadows:!1,softShadowQuality:"low"},usePhysics:!1,gravity:-10,pixelsPerMeter:200})(Vr||(Vr={}));var AA;(n=>{function r(){let i=new Gn,s=wp.defaultMeshObject;return i.push({fi:-1,data:{...bp.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7},id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),i.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:s,children:[]}),i}n.defaultData={backgroundColor:wn.fromHexAndA(1184534,1),postprocessing:ra.defaultData,fog:nh.defaultData,objects:r(),environment:Vr.defaultData,publish:xs.defaultData},n.emptyData=function(){return{backgroundColor:wn.fromHexAndA(1184534,1),postprocessing:ra.defaultData,fog:nh.defaultData,objects:new Gn,environment:Vr.defaultData,publish:xs.defaultData}}})(AA||(AA={}));var Sp;(t=>{function r(){let n={};return n["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Vf(n,dn.prototype)}t.defaultColors=r;function e(){return{materials:new dn,images:new dn,colors:new dn,audios:new dn,penumbraSize:[.5,.5,.5]}}t.emptyData=e})(Sp||(Sp={}));function _A(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={...Xy(ci(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={...ci(e),near:Math.max(e.near,0),far:Math.max(e.far,0)};Object.assign(e,t)}})}function vv(r,e){Object.values(r.shared.materials).forEach(t=>e(t))}function xv(r,e){r.scene.objects.traverse((t,n)=>{"materials"in n?n.materials.forEach(i=>{typeof i!="string"&&e(i)}):"material"in n&&typeof n.material!="string"&&e(n.material)})}function BU(r){Object.assign(r.scene.publish,{orbitControls:{...ql.defaultData,...ci(r.scene.publish.orbitControls)}})}function NU(r){Object.assign(r.scene.publish.settings,{video:{...xs.defaultData.settings.video,...ci(r.scene.publish.settings.video)}})}function FU(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((gp.includes(i)||typeof s=="boolean")&&delete n[i],i==="texture")for(let[o,a]of Object.entries(s))(bA.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 UU(r){r.scene.publish.withBackground=!0}function zU(r){r.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function GU(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 kU(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 VU(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 MA(r){r.layers===void 0&&Object.assign(r,sr.defaultTwoLayerData("lambert"))}function bv(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={...ci(e),colors:t,steps:n};Object.assign(e,i)}})}function HU(r){r.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="BooleanGeometry"||t.geometry.type==="SubdivGeometry")&&(t.geometry.phongAngle=35)})}function TA(r){r.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(n=>{typeof n!="string"&&bv(n)}):"material"in t&&typeof t.material!="string"&&bv(t.material)}),Object.values(r.shared.materials).forEach(e=>bv(e))}function WU(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 jU(r){r.shared.audios=Vf({},dn.prototype)}function qU(r){let e=r.shared.materials;Object.entries(e).forEach(([t,n])=>{if(!n.layers){let i={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(e,{[t]:i})}})}function XU(r){Object.entries(ci(r.shared.images)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.images[n]}),Object.entries(ci(r.shared.audios)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.audios[n]})}function YU(r){r.scene.publish.settings.web.preload=!1}function EA(r){r.layers&&r.layers.forEach(e=>{e.type==="depth"&&e.num!==void 0&&(e.colors=e.colors.slice(0,e.num),e.steps=e.steps.slice(0,e.num),delete e.num)})}var CA=19;function PA(r){let e=r.schema??0;e!==CA&&(console.warn("updating from ",e,"to ",CA),e<1&&(xv(r,_A),vv(r,_A),r.schema=1),e<2&&(BU(r),r.schema=2),e<3&&(FU(r),r.schema=3),e<4&&(UU(r),r.schema=4),e<5&&(zU(r),r.schema=5),e<6&&(GU(r),r.schema=6),e<7&&(kU(r),r.schema=7),e<8&&(VU(r),r.schema=8),e<9&&(TA(r),r.schema=9),e<10&&(HU(r),r.schema=10),e<11&&(WU(r),r.schema=11),e<12&&(TA(r),r.schema=12),e<13&&(jU(r),r.schema=13),e<14&&(qU(r),r.schema=14),e<15&&(XU(r),r.schema=15),e<16&&(YU(r),r.schema=16),e<17&&(xv(r,EA),vv(r,EA),r.schema=17),e<18&&(xv(r,MA),vv(r,MA),r.schema=18),e<19&&(NU(r),r.schema=19))}var Ap;(e=>e.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Ap||(Ap={}));var DA;(e=>e.defaultData={object:null,state:null,repeat:!1,cycle:!1,rewind:!1,easing:4,delay:0,delayDirection:"start-once",duration:1e3})(DA||(DA={}));var IA;(n=>(n.defaultData={type:12,trigger:"mouseDown",interaction:"play",volume:.5,delay:0,loop:0},n.isPlayable=i=>i.type===12&&i.interaction==="play",n.isPausable=i=>i.type===12&&i.interaction!=="play"))(IA||(IA={}));var _p;(e=>{function r(t){return t.type===0||t.type===1||t.type===5||t.type===6}e.is=r})(_p||(_p={}));function ia(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 Ie,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 p=0;p<f.count;++p)h.push(f.getX(p)+c);c+=r[d].attributes.position.count}l.setIndex(h)}for(let c in s){let h=LA(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 m=0;m<o[c].length;++m)f.push(o[c][m][d]);let p=LA(f);if(!p)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+c+" morphAttribute."),null;l.morphAttributes[c].push(p)}}return l}function LA(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 Ge(s,t,n)}var wv={type:"change"},RA={type:"changeZoom"},QU={type:"changePan"},Yl={type:"start"},rh={type:"end"},Sv=new st,ZU=new N,KU=2*Math.PI,JU=1e-8,$U=.01,OA=2,Av=.125,BA=2,_v=1,Mv=1,Tv=.1;var Ql=class extends Bt{constructor(t,n,i=!1){super();this.object=t;this.domElement=n;this.isExport=i;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.mouseButtons=[0,5];this.mouseButtonsPlay=[3,4,5];this.touches=[null,Cr.DOLLY_ROTATE,Cr.PAN];this.offset=new A;this.eye=new A;this.lastPosition=new A;this.lastQuaternion=new st;this.current=new N;this.overShoot=new N;this.overRatio=new N;this.spherical=new Cu;this.sphericalDelta=new Cu;this.panOffset=new A;this.panLeftV=new A;this.panUpV=new A;this.panV=new A;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(Sv.copy(this.object.quaternion).invert()),this.panOffset.applyQuaternion(Sv),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-Av),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%KU;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-Av,this.sphericalDelta.phi*=1-Av):this.sphericalDelta.set(0,0,0),this.scale=1,this.zoomChanged||this.lastPosition.distanceToSquared(this.object.position)>$U||8*(1-this.lastQuaternion.dot(this.object.quaternion))>JU?(this.dispatchEvent(wv),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,ct.length===1&&(this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)),t.pointerType==="touch"||t.pointerType==="pen"?this.onPointerDownTouch(t):this.onPointerDownMouse(t))};this.onPointerMove=t=>{this.enabled!==!1&&(t.pointerType==="touch"||t.pointerType==="pen"?this.onPointerMoveTouch(t):this.onPointerMoveMouse(t))};this.onPointerUp=t=>{this.isPointerDown=!1,ct.length===0&&(this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp)),this.dispatchEvent(rh),this.state=-1};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&&!Hu(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(Hu(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(Hu(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(Yl)};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(this.touches[ct.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(Yl)};this.onPointerMoveTouch=t=>{switch(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=zu(()=>this.dispatchEvent(rh),33);this.onMouseWheel=t=>{this.enabled===!1||this.enableZoom===!1&&this.enablePan===!1||(this.isExport===!1&&this.domElement.clientHeight===document.body.clientHeight&&this.domElement.clientWidth===document.body.clientWidth&&t.preventDefault(),this.dispatchEvent(Yl),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(Yl),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(rh)};this.onContextMenu=t=>{this.enabled!==!1&&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(ct[0]))};this.onPointerHover=t=>{if(!(t.pointerType!=="mouse"||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,Tv):this.hoverRotatePanMode===1&&this.handleMouseMoveRotate(t,Tv),this.timerHover=window.setTimeout(()=>{this.isPointerDown=!1},30)}};this.target=this.object.getTarget(),this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.isUpVectorFlipped0=this.object.isUpVectorFlipped,this.connect(),this.update()}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.isUpVectorFlipped=this.isUpVectorFlipped0,this.object.updateProjectionMatrix(),this.dispatchEvent(wv),this.isFirstHover=!0,this.update(),this.state=-1}resetTo(t,n,i,s=!1){this.target.copy(t),this.object.position.copy(n),this.object.zoom=i,this.object.isUpVectorFlipped=s,this.object.updateProjectionMatrix(),this.dispatchEvent(wv),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),Tv=(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,OA=t.autoRotateSpeed,this.autoRotateClockwise=t.autoRotateClockwise;let i=this.object.getTarget().applyQuaternion(Sv.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=so(this.spherical.phi-t.rotationVerticalOffset.min),this.maxPhi=so(this.spherical.phi+t.rotationVerticalOffset.max),this.minTheta=so(this.spherical.theta-t.rotationHorizontalOffset.min),this.maxTheta=so(this.spherical.theta+t.rotationHorizontalOffset.max),this.isThetaFlipped=this.minTheta>this.maxTheta,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("wheel",this.onMouseWheel),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keyup",this.onKeyUp,!1),Vu||(this.domElement.addEventListener("gesturestart",this.onGesture),this.domElement.addEventListener("gesturechange",this.onGesture),this.domElement.addEventListener("gestureend",this.onGesture)),this.domElement.addEventListener("touchend",this.onTouchEnd)}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("wheel",this.onMouseWheel),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keyup",this.onKeyUp,!1),this.domElement.removeEventListener("pointermove",this.onPointerHover),Vu||(this.domElement.removeEventListener("gesturestart",this.onGesture),this.domElement.removeEventListener("gesturechange",this.onGesture),this.domElement.removeEventListener("gestureend",this.onGesture)),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 A?(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(so(this.spherical.theta),so(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=so(this.overShoot.x),this.overShoot.y=so(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=NA(Math.abs(this.overRatio.x)),this.overRatio.y=NA(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 A?(t.x=c,t.y=h):(t.theta=c,t.phi=h)}setEnableDampingSpeed(t){this.enableDamping=t,_v=t===!0?.2:1}stopDamping(){this.sphericalDelta.theta=0,this.sphericalDelta.phi=0}getAutoRotationAngle(){return 2*Math.PI/60/60*OA}getZoomScale(){return Math.pow(.95,BA)}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(QU)}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(RA)}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(RA)}zoomOut(t=this.getZoomScale()){this.dispatchEvent(Yl),this.dollyOut(t),this.dispatchEvent(rh)}zoomIn(t=this.getZoomScale()){this.dispatchEvent(Yl),this.dollyIn(t),this.dispatchEvent(rh)}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){zl&&Gl<15.5&&!Lt?(this.rotateEnd.set(t.clientX,t.clientY),this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart),this.rotateStart.copy(this.rotateEnd)):this.rotateDelta.set(t.movementX,t.movementY),this.rotateDelta.multiplyScalar(_v*n).rotateAround(ZU,-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.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){zl&&Gl<15.5&&!Lt?(this.panEnd.set(t.clientX,t.clientY),this.panDelta.subVectors(this.panEnd,this.panStart),this.panStart.copy(this.panEnd)):this.panDelta.set(t.movementX,t.movementY),this.panDelta.multiplyScalar(Mv*n),this.pan(this.panDelta.x,this.panDelta.y),this.update()}handleMouseWheel(t){if(U1===!1&&Hu(t)===!1&&ez(t)===!0){if(this.enablePan===!1)return;this.gesture?(this.panDelta.set(-t.deltaX,-t.deltaY).multiplyScalar(Mv),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(ct.length===2){let t=.5*(ct[0].pageX+ct[1].pageX),n=.5*(ct[0].pageY+ct[1].pageY);this.rotateStart.set(t,n)}else this.rotateStart.set(ct[0].pageX,ct[0].pageY)}handleTouchStartPan(){if(ct.length===2){let t=.5*(ct[0].pageX+ct[1].pageX),n=.5*(ct[0].pageY+ct[1].pageY);this.panStart.set(t,n)}else this.panStart.set(ct[0].pageX,ct[0].pageY)}handleTouchStartDolly(){let t=ct[0].pageX-ct[1].pageX,n=ct[0].pageY-ct[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(ct.length===2){let i=qf(t),s=.5*(t.pageX+i.x),o=.5*(t.pageY+i.y);this.rotateEnd.set(s,o)}else{if(t.pointerId!==ct[0].pointerId)return;this.rotateEnd.set(t.pageX,t.pageY)}this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(_v);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(ct.length===2){let n=qf(t),i=.5*(t.pageX+n.x),s=.5*(t.pageY+n.y);this.panEnd.set(i,s)}else{if(t.pointerId!==ct[0].pointerId)return;this.panEnd.set(t.pageX,t.pageY)}this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(Mv),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}handleTouchMoveDolly(t){let n=qf(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,BA)),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 so(r){let e=Math.PI*2;for(;r<=-Math.PI;)r+=e;for(;r>Math.PI;)r-=e;return r}function NA(r){return 1-Math.pow(1-r,4)}function ez(r){return r.wheelDeltaY===0||r.deltaY===0?Zo&&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 Ev={type:"change"},tz={type:"lock"},nz={type:"unlock"},rz=new A,iz=new A,sz=new A,Sn=new A,kn=new A,sa=new A,Mp=new _e,FA=new _e,oz=new _e,az=new _e,Zl=new st,ih=new st,lz=new Qt(0,0,0,"YXZ"),oa=new A(0,1,0),Cv=new A(1,1,1),cz=1,uz=.025,hz=16e-6,dz=12,fz=20,qn=new xn,Hr=new Mt,Tp=class extends Bt{constructor(t,n,i,s,o,a,l){super();this.object=t;this.domElement=n;this.sharedGameControlGlobals=o;this.cameraFollow=a;this.camera=l;this.enableDamping=!0;this.position0=new A;this.rotation0=new Qt(0,0,0,"XYZ");this.scale0=new A;this.hiddenMatrix0=new _e;this.target0=new A;this.zoom0=1;this.rotForce=1;this.moveForce=1;this.euler0=new Qt(0,0,0,"YXZ");this.position0Cam=new A;this.quat0Cam=new st;this.scale0Cam=new A;this.hiddenMatrix0Cam=new _e;this.threshEndTranslate=.01;this.threshEndRotate=1e-8;this.collider={radius:40,segment:new xn(new A(0,-40,0),new A(0,40,0)),matrix:new _e,position:new A,rotation:new st};this.euler=new Qt(0,0,0,"YXZ");this.eulerDelta=new A;this.lastQuaternion=new st;this.lastPosition=new A;this.lastCameraQuaternion=new st;this.lastCameraPosition=new A;this.PI_2=Math.PI/2;this.prevMouse=new N;this.velocityTarget=new A;this.velocity=new A;this.directionXZ=new A;this.rotVelocityStick=new A;this.rotVelocityTarget=new A;this.rotVelocity=new A;this.rotDirection=new A;this.objectRot={x:0,y:0};this.firstPointerId=-1;this.actionStates={moveNegZ:0,movePosZ:0,moveNegX:0,movePosX:0,moveNegY:0,movePosY:0,rotPosX:0,rotNegX:0,rotPosY:0,rotNegY:0,jump:0};this.onObject=!1;this.slopeAdjust=!1;this.keyAssignments=[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","ArrowUp"],["rotPosY","ArrowLeft"],["rotNegX","ArrowDown"],["rotNegY","ArrowRight"],["jump"," "]];this.collisionEnabled=!0;this.offsetMatrix=new _e;this.objectToTarget=new A;this.objectToTarget0=new A;this.objectToCamXZ=new A;this.objectToCamXZ0=new A;this.targetToCamera=new A;this.targetToCamera0=new A;this.cameraPolarAxis0=new A;this.targetPos=new A;this.targetQuat=new st;this.lerpFactorPos=new A().setScalar(.3);this.lerpFactorPosStart=.3;this.lerpFactorPosEnd=.3;this.lerpFactorRotStart=.3;this.lerpFactorRotEnd=.3;this.lerpFactorPosCamera=.3;this.lerpFactorRotCamera=.3;this.objXZQuat=new st;this.objXZQuatInv=new st;this.objXZRotMat=new _e;this.isFirstPerson=!1;this.lastDummyPos=new A;this.lastDummyPosDelta=new A;this.hit=null;this.groundVelocity=new A;this.pushedVelocity=new A;this.groundYRotation=0;this.colliderWorldQuat=new st;this.groundNormal=new A;this.onPointerDown=t=>{t.target!==this.domElement||this.firstPointerId!==-1||(this.firstPointerId=t.pointerId,this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),this.rotBy!=="keys"&&!Lt&&(!zl||Gl>=15.5)&&this.domElement.requestPointerLock(),this.prevMouse.set(t.clientX,t.clientY))};this.onPointerUp=t=>{this.firstPointerId=-1,this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),t.pointerType==="mouse"&&this.domElement.ownerDocument.exitPointerLock()};this.onPointerMove=t=>{if(t.pointerId!==this.firstPointerId)return;let n=t.clientX-this.prevMouse.x,i=t.clientY-this.prevMouse.y;this.prevMouse.set(t.clientX,t.clientY),t.pointerType==="mouse"&&this.rotBy!=="keys"&&(zl&&Gl<15.5&&!Lt?(this.eulerDelta.y=-n*this.mouseOrbitSensitivity,this.eulerDelta.x=-i*this.mouseOrbitSensitivity):(this.eulerDelta.y=-t.movementX*this.mouseOrbitSensitivity,this.eulerDelta.x=-t.movementY*this.mouseOrbitSensitivity)),t.pointerType!=="mouse"&&this.rotByTouch==="drag"&&(this.eulerDelta.y=-n*this.mouseOrbitSensitivity*5,this.eulerDelta.x=-i*this.mouseOrbitSensitivity*5),this.dispatchEvent(Ev)};this.onPointerlockChange=t=>{this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(tz),Tp.isLocked=!0):(this.dispatchEvent(nz),Tp.isLocked=!1)};this.onPointerlockError=()=>{console.error("SPE.GameControls: Unable to use Pointer Lock API")};this.onKeyDown=t=>{t.preventDefault();for(let n of this.keyAssignments)if(t.key.toUpperCase()===n[1]||t.key===n[1]){this.actionStates[n[0]]=1;break}this.dispatchEvent(Ev)};this.onKeyUp=t=>{for(let n of this.keyAssignments)if(t.key.toUpperCase()===n[1]||t.key===n[1]||t.code.slice(3,t.code.length).toUpperCase()===n[1]){this.actionStates[n[0]]=0;break}};t.objectType==="CombinedCamera"&&(this.isFirstPerson=!0),this.position0.copy(this.object.position),this.rotation0.copy(this.object.rotation),this.scale0.copy(this.object.scale),this.hiddenMatrix0.copy(this.object.hiddenMatrix),this.object.matrix.premultiply(this.object.hiddenMatrix),this.object.hiddenMatrix.identity(),this.object.matrix.decompose(this.object.position,this.object.quaternion,this.object.scale),this.object.rotation.reorder("YXZ"),this.euler0.copy(this.object.rotation);let u=Mp.multiplyMatrices(this.object.matrixWorld,this.object.matrix.clone().invert()),c=u.clone().invert();if(this.object.hiddenMatrix.multiply(c),this.object.matrix.premultiply(u),this.object.matrix.decompose(this.object.position,this.object.quaternion,this.object.scale),this.isFirstPerson===!1){let f=this.object.rotation.y;this.object.rotation.y=0,this.objXZQuat.copy(this.object.quaternion),this.objXZQuatInv.copy(this.objXZQuat).invert(),this.objXZRotMat.makeRotationFromQuaternion(this.object.quaternion),this.object.rotation.set(0,f,0)}if(this.object.matrixAutoUpdate=!1,this.isFirstPerson){let f=this.object;this.target0.copy(f.getTarget()),this.zoom0=f.zoom}else this.cameraFollow===!0&&(this.target0.copy(this.camera.getTarget()),this.zoom0=this.camera.zoom);if(this.cameraFollow===!0){if(this.position0Cam.copy(this.camera.position),this.quat0Cam.copy(this.camera.quaternion),this.scale0Cam.copy(this.camera.scale),this.hiddenMatrix0Cam.copy(this.camera.hiddenMatrix),this.camera?.parent?.parent){let y=this.camera.matrix.clone().invert().premultiply(this.camera.matrixWorld),v=y.clone().invert();this.camera.hiddenMatrix.multiply(v),this.camera.matrix.premultiply(y),this.camera.matrixWorld.decompose(this.camera.position,this.camera.quaternion,this.camera.scale)}this.camera.matrixAutoUpdate=!1,this.offsetMatrix.copy(this.object.matrix).invert().multiply(this.camera.matrix);let f=new A(0,0,-1).applyQuaternion(this.camera.quaternion),p=new A().subVectors(this.object.position,this.camera.position);this.objectToCamXZ.copy(p),this.objectToCamXZ.y=0,this.objectToCamXZ0.copy(this.objectToCamXZ);let m;if(Math.abs(f.y)<1e-6){p.y=0,f.y=0;let y=p.projectOnVector(f);this.targetToCamera0.copy(y).negate(),m=this.camera.position.clone().add(y)}else{let y=f.multiplyScalar(p.y/f.y);this.targetToCamera0.copy(y).negate(),m=y.clone().add(this.camera.position)}this.objectToTarget0.subVectors(m,this.object.position);let g=new Qt().setFromQuaternion(this.camera.quaternion,"YXZ");this.cameraPolarOffset=-g.x,g.x=0,g.z=0,g.y-=Math.PI/2,this.cameraPolarAxis0.set(0,0,-1).applyEuler(g)}if(this.isObjectCamera=this.object.objectType==="CombinedCamera",this.euler.setFromQuaternion(this.object.quaternion,"YXZ"),this.connect(),this.rotByTouch=i.rotByTouch??"joystick",this.rotBy=i.rotBy??"keys",this.rotationMode=i.rotationMode??"normal",this.moveMode=i.moveMode??"walk",this.collisionEnabled=i.collisionEnabled,this.speedTranslate=(i.speedTranslate??250)*cz,this.speedOrbit=(i.speedRotate??100)*uz,this.mouseOrbitSensitivity=(i.speedRotate??100)*hz,this.keyAssignments=i.keyAssignments.map(f=>{let p=[f[0],f[1]];return p[1]==="\u25B2"?p[1]="ArrowUp":p[1]==="\u25C0"?p[1]="ArrowLeft":p[1]==="\u25BC"?p[1]="ArrowDown":p[1]==="\u25B6"?p[1]="ArrowRight":p[1]==="\u21E7"?p[1]="Shift":p[1]==="\u21B5"?p[1]="Enter":p[1]==="Space"?p[1]=" ":p[1]==="\u2318"?p[1]="Meta":p[1]==="Ctrl"?p[1]="Control":p[1]==="Esc"&&(p[1]="Escape"),p}),i.rotBy==="mouse"){let f;f=this.keyAssignments.findIndex(p=>p[0]==="rotNegX"),f!==-1&&(this.keyAssignments[f][1]=""),f=this.keyAssignments.findIndex(p=>p[0]==="rotPosX"),f!==-1&&(this.keyAssignments[f][1]=""),f=this.keyAssignments.findIndex(p=>p[0]==="rotPosY"),f!==-1&&(this.keyAssignments[f][1]=""),f=this.keyAssignments.findIndex(p=>p[0]==="rotNegY"),f!==-1&&(this.keyAssignments[f][1]="")}this.lerpFactorPosStart=1-.02**(1/((i.delayPos[0]??.3)*60)),this.lerpFactorPosEnd=1-.02**(1/((i.delayPos[1]??.3)*60)),this.lerpFactorPos.setScalar(this.lerpFactorPosStart),this.lerpFactorRotStart=1-.02**(1/((i.delayRot[0]??.3)*60)),this.lerpFactorRotEnd=1-.02**(1/((i.delayRot[1]??.3)*60)),this.lerpFactorPosCamera=1-.02**(1/((i.delayPosCamera??.3)*60)),this.lerpFactorRotCamera=1-.02**(1/((i.delayRotCamera??.3)*60)),this.gravity=(s.gravity??Vr.defaultData.gravity)*dz,this.pixelsPerMeter=s.pixelsPerMeter??Vr.defaultData.pixelsPerMeter,this.usePhysics=s.usePhysics??Vr.defaultData.usePhysics,this.jumpPower=i.jumpPower*fz,this.resetYPosition=i.resetYPosition,this.orientMode=i.autoOrientMove?i.orientMode:"none",i.collider.type==="capsule"?(this.collider.radius=i.collider.radius,this.collider.segment.start.y=i.collider.height/2-i.collider.radius,this.collider.segment.end.y=-this.collider.segment.start.y):i.collider.type==="sphere"&&(this.collider.radius=i.collider.radius,this.collider.segment.start.y=0,this.collider.segment.end.y=0);let h=new A().fromArray(i.collider.position),d=new st().setFromEuler(new Qt().fromArray([...i.collider.rotation,"XYZ"]));this.collider.position.copy(h),this.collider.rotation.copy(d),this.collider.matrix.compose(h,d,Cv),i.cameraXAxis!==void 0&&(this.cameraXAxis=i.cameraXAxis,this.cameraYAxis=i.cameraYAxis,this.minPolarAngle=i.cameraRotXLimits[0],this.maxPolarAngle=i.cameraRotXLimits[1],this.minAzimuthAngleRel=i.cameraRotYLimits[0],this.maxAzimuthAngleRel=i.cameraRotYLimits[1])}reset(t=!1){if(this.object.rotation.copy(this.rotation0),this.object.position.copy(this.position0),this.object.scale.copy(this.scale0),this.object.hiddenMatrix.copy(this.hiddenMatrix0),t===!0){if(this.object.rotation.reorder("YXZ"),this.isFirstPerson===!1){let n=this.object.rotation.y;this.object.rotation.y=0,this.objXZQuat.copy(this.object.quaternion),this.objXZQuatInv.copy(this.objXZQuat).invert(),this.objXZRotMat.makeRotationFromQuaternion(this.object.quaternion),this.object.rotation.set(0,n,0)}this.euler.setFromQuaternion(this.object.quaternion,"YXZ"),this.velocityTarget.set(0,0,0),this.velocity.set(0,0,0)}this.isObjectCamera?this.object.matrixAutoUpdate=!0:this.object.updateMatrix(),this.cameraFollow===!0&&(this.camera.quaternion.copy(this.quat0Cam),this.camera.position.copy(this.position0Cam),this.camera.scale.copy(this.scale0Cam),this.camera.hiddenMatrix.copy(this.hiddenMatrix0Cam),this.camera.matrixAutoUpdate=!0),this.dispatchEvent(Ev)}connect(){this.domElement.ownerDocument.addEventListener("pointerdown",this.onPointerDown),this.domElement.ownerDocument.addEventListener("keydown",this.onKeyDown),this.domElement.ownerDocument.addEventListener("keyup",this.onKeyUp),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError)}disconnect(){this.domElement.ownerDocument.removeEventListener("pointerdown",this.onPointerDown),this.domElement.ownerDocument.removeEventListener("keydown",this.onKeyDown),this.domElement.ownerDocument.removeEventListener("keyup",this.onKeyUp),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError)}dispose(){this.disconnect()}resetTo(t,n,i){}update(t){if(this.gravity<0?this.object.position.y<this.resetYPosition:this.object.position.y>this.resetYPosition)return this.reset(!0),!0;let n=t/1e3,i=n*60;if(this.usePhysics){let o=kn.set(0,-(this.jumpPower+this.gravity*i)*n*.5,0).divideScalar(this.pixelsPerMeter),a=this.sharedGameControlGlobals.rapierWorld.castShape(Sn.addVectors(this.object.position,this.collider.position).divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,o,this.object.rigidBody?.collider(0).shape,1,void 0,void 0,void 0,this.object.rigidBody);if(this.slopeAdjust=!1,a){this.slopeAdjust=!1,this.groundNormal.set(a.normal2.x,a.normal2.y,a.normal2.z).applyQuaternion(this.colliderWorldQuat).negate(),Math.acos(this.groundNormal.y)*180/Math.PI>45?this.onObject=!0:(this.slopeAdjust=!0,this.onObject=!0);let l=a.collider._parent;this.groundYRotation=0,this.groundVelocity.set(0,0,0);for(let u of this.sharedGameControlGlobals.entitiesWithTransformAnim)if(u.rigidBody===l){u.matrixWorld.decompose(Sn,ih,kn),this.groundVelocity.subVectors(Sn,u.prevT),this.object.getWorldPosition(kn).add(this.collider.position).sub(u.position),this.groundYRotation=lz.setFromQuaternion(ih).y-u.prevR.y,sa.copy(kn).applyAxisAngle(oa,this.groundYRotation),this.groundVelocity.add(sa.sub(kn)).divideScalar(n);break}}else this.onObject=!1}this.moveMode==="walk"&&this.collisionEnabled&&(this.actionStates.jump===1&&this.onObject&&(this.velocityTarget.y=this.jumpPower,this.actionStates.jump=0,this.onObject=!1),this.velocityTarget.y+=this.onObject?0:this.gravity*i),this.moveMode==="fly"&&(this.velocityTarget.y=(this.actionStates.movePosY-this.actionStates.moveNegY)*this.speedTranslate),this.directionXZ.z=this.actionStates.movePosZ-this.actionStates.moveNegZ,this.directionXZ.x=this.actionStates.movePosX-this.actionStates.moveNegX,this.directionXZ.normalize(),this.actionStates.moveNegZ||this.actionStates.movePosZ?this.velocityTarget.z=this.directionXZ.z*this.speedTranslate*this.moveForce:this.velocityTarget.z=0,this.actionStates.moveNegX||this.actionStates.movePosX?this.velocityTarget.x=this.directionXZ.x*this.speedTranslate*this.moveForce:this.velocityTarget.x=0,(this.moveMode==="walk"?this.velocityTarget.x+this.velocityTarget.z===0:this.velocityTarget.manhattanLength()===0)?this.lerpFactorPos.setScalar(this.lerpFactorPosEnd):this.lerpFactorPos.setScalar(this.lerpFactorPosStart),this.moveMode==="walk"&&(this.lerpFactorPos.y=1),this.hit===null&&this.pushedVelocity.manhattanLength()===0||this.usePhysics===!1?(this.velocity.x+=(this.velocityTarget.x-this.velocity.x)*(1-(1-this.lerpFactorPos.x)**i),this.velocity.y+=(this.velocityTarget.y-this.velocity.y)*(1-(1-this.lerpFactorPos.y)**i),this.velocity.z+=(this.velocityTarget.z-this.velocity.z)*(1-(1-this.lerpFactorPos.z)**i)):this.velocity.copy(this.velocityTarget);let s=sz.copy(this.velocity);if(this.orientMode!=="none"&&this.isFirstPerson===!1){let o=kn.copy(s);o.y=0,s.set(0,s.y,o.length()*-1)}if(s.applyQuaternion(this.object.quaternion),this.slopeAdjust&&(ih.setFromUnitVectors(oa,this.groundNormal),s.applyQuaternion(ih)),this.usePhysics===!0){let o=kn;this.pushedVelocity.set(0,0,0);for(let a of this.sharedGameControlGlobals.entitiesWithTransformAnim){let l=sa.subVectors(a.position,a.prevT).divideScalar(n);l.divideScalar(this.pixelsPerMeter);let u=a.rigidBody.collider(0).castCollider(l,this.object.rigidBody.collider(0),Sn.copy(s).divideScalar(this.pixelsPerMeter),n);if(l.multiplyScalar(this.pixelsPerMeter),u!==null){this.pushedVelocity.copy(l),o.copy(u.normal1).applyQuaternion(a.quaternion);break}}if(this.pushedVelocity.manhattanLength()!==0){let a=o.dot(s);a<0&&s.addScaledVector(o,-a),s.add(this.pushedVelocity)}else s.add(this.groundVelocity)}if(this.rotDirection.y=Number(this.actionStates.rotPosY)-Number(this.actionStates.rotNegY),this.rotDirection.x=Number(this.actionStates.rotPosX)-Number(this.actionStates.rotNegX),this.rotDirection.normalize(),this.rotationMode==="normal"&&(this.actionStates.rotPosX||this.actionStates.rotNegX)||this.rotationMode==="steer"&&(this.actionStates.rotPosX||this.actionStates.rotNegX)&&(this.actionStates.movePosZ||this.actionStates.moveNegZ||this.moveMode==="walk")?this.rotVelocityStick.x=-this.rotDirection.x*this.speedOrbit*this.rotForce:this.rotVelocityStick.x=0,this.rotationMode==="normal"&&(this.actionStates.rotPosY||this.actionStates.rotNegY)||this.rotationMode==="steer"&&(this.actionStates.rotPosY||this.actionStates.rotNegY)&&(this.actionStates.movePosZ||this.actionStates.moveNegZ)?this.rotVelocityStick.y=-this.rotDirection.y*this.speedOrbit*this.rotForce:this.rotVelocityStick.y=0,this.rotVelocityTarget.subVectors(this.eulerDelta.divideScalar(n),this.rotVelocityStick),this.rotVelocityTarget.manhattanLength()===0?this.rotVelocity.lerp(this.rotVelocityTarget,1-(1-this.lerpFactorRotEnd)**i):this.rotVelocity.lerp(this.rotVelocityTarget,1-(1-this.lerpFactorRotStart)**i),this.euler.x+=this.rotVelocity.x*n,this.euler.y+=this.rotVelocity.y*n+this.groundYRotation,this.isFirstPerson===!1&&this.orientMode!=="none"&&this.directionXZ.manhattanLength()>0){let o=Sn,a=kn.copy(this.directionXZ);a.x*=-1,this.camera.getWorldDirection(o);let l=sa.copy(oa).multiplyScalar(o.dot(oa));if(o.sub(l),this.object.rotation.y=o.angleTo(a)*(o.cross(a).y>0?-1:1),this.orientMode==="radial"){this.objectToCamXZ.copy(this.objectToCamXZ0).applyAxisAngle(oa,this.euler.y-this.euler0.y);let u=kn.copy(this.objectToCamXZ).normalize(),c=sa.copy(s).multiplyScalar(n);c.y=0;let h=c.sub(Sn.copy(u).multiplyScalar(c.dot(u))).cross(u).y;this.euler.y-=Math.atan2(h,this.objectToCamXZ.length())}}if(this.cameraFollow===!0&&this.moveMode==="walk"&&this.isFirstPerson===!1?this.cameraXAxis==="Limit"?this.euler.x=ke.clamp(this.euler.x,-this.maxPolarAngle+this.cameraPolarOffset+1e-6,-this.minPolarAngle+this.cameraPolarOffset-1e-6):this.euler.x=ke.clamp(this.euler.x,-this.PI_2+this.cameraPolarOffset,this.PI_2+this.cameraPolarOffset):(this.cameraXAxis==="Limit"||this.isFirstPerson||this.cameraFollow===!0)&&(this.euler.x=ke.clamp(this.euler.x,-this.PI_2,this.PI_2)),(this.isFirstPerson||this.moveMode!=="walk")&&(this.object.rotation.x=this.euler.x),(this.isFirstPerson||this.orientMode==="none")&&(this.object.rotation.y=this.euler.y),this.object.rotation.x=ke.clamp(this.object.rotation.x,-this.PI_2,this.PI_2),this.objectRot.x=this.euler.x,this.objectRot.y=this.euler.y,this.colliderWorldQuat.copy(this.object.quaternion).multiply(this.objXZQuat).multiply(this.collider.rotation),this.collisionEnabled)if(this.usePhysics){if(this.hit=this.sharedGameControlGlobals.rapierWorld.castShape(Sn.addVectors(this.object.position,this.collider.position).divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,kn.copy(s).divideScalar(this.pixelsPerMeter),this.object.rigidBody?.collider(0).shape,n,8,void 0,void 0,this.object.rigidBody),this.hit!==null){let o=Sn.set(this.hit.normal2.x,this.hit.normal2.y,this.hit.normal2.z).applyQuaternion(this.colliderWorldQuat);if(this.hit.toi>0){let a=kn.copy(s).multiplyScalar(this.hit?.toi).dot(o),l=this.hit.toi;a>2&&(l=this.hit.toi*(a-2)/a,this.object.position.addScaledVector(s,l));let u=kn.copy(s).multiplyScalar(n-l);o.multiplyScalar(u.dot(o));let c=u.sub(o),h=this.sharedGameControlGlobals.rapierWorld.castShape(Sn.addVectors(this.object.position,this.collider.position).divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,sa.copy(c).divideScalar(this.pixelsPerMeter),this.object.rigidBody?.collider(0).shape,20,8,void 0,void 0,this.object.rigidBody);if(h===null)this.object.position.add(c);else if(h.toi>1){let d=Sn.set(h.normal2.x,h.normal2.y,h.normal2.z).applyQuaternion(this.colliderWorldQuat);kn.copy(c).dot(d)>2&&this.object.position.add(c)}this.lastDummyPosDelta.subVectors(this.object.position,this.lastDummyPos),this.lastDummyPos.copy(this.object.position)}}else this.object.position.addScaledVector(s,n);this.object.rigidBody?.setTranslation(Sn.copy(this.object.position).divideScalar(this.pixelsPerMeter),!0),this.object.rigidBody?.setRotation(Zl.copy(this.object.quaternion).multiply(this.objXZQuat),!0)}else{let o=this.onObject?1:5,a=s.multiplyScalar(n/o);for(let l=0;l<o;l++)this.object.position.add(a),this.collisionAdjustment(n/o)}else this.object.position.addScaledVector(s,n);if(this.moveMode==="walk"&&this.onObject&&(this.velocityTarget.y=0,this.velocity.y=0),this.isFirstPerson===!1&&this.object.quaternion.multiply(this.objXZQuat),this.isObjectCamera||this.object.updateMatrix(),this.isFirstPerson===!1&&this.object.quaternion.multiply(this.objXZQuatInv),this.cameraFollow===!0){this.updateFollowArms();let o=this.objectToTarget.add(this.object.position),a=this.targetToCamera.add(o);Mp.lookAt(a,o,oa).setPosition(a),Mp.decompose(this.targetPos,this.targetQuat,Sn),this.camera.quaternion.slerp(this.targetQuat,1-(1-this.lerpFactorRotCamera)**i),this.camera.position.lerp(this.targetPos,1-(1-this.lerpFactorPosCamera)**i),this.camera.updateMatrix(),this.camera.matrixWorldNeedsUpdate=!0,this.cameraYAxis==="Limit"&&this.orientMode==="cartesian"&&(this.euler.y=ke.clamp(this.euler.y,this.minAzimuthAngleRel,this.maxAzimuthAngleRel)),this.euler.x=ke.clamp(this.euler.x,-this.PI_2+(this.cameraPolarOffset<0?this.cameraPolarOffset:0),this.PI_2+(this.cameraPolarOffset>0?this.cameraPolarOffset:0))}return this.eulerDelta.set(0,0,0),this.lastPosition.distanceToSquared(this.object.position)<this.threshEndTranslate&&8*(1-this.lastQuaternion.dot(this.object.quaternion))<this.threshEndRotate&&(!this.camera||this.lastCameraPosition.distanceToSquared(this.camera.position)<this.threshEndTranslate&&8*(1-this.lastCameraQuaternion.dot(this.camera.quaternion))<this.threshEndRotate)&&(this.moveMode!=="walk"||this.onObject===!0||this.collisionEnabled===!1)?!1:(this.camera&&(this.lastCameraPosition.copy(this.camera.position),this.lastCameraQuaternion.copy(this.camera.quaternion)),this.lastPosition.copy(this.object.position),this.lastQuaternion.copy(this.object.quaternion),!0)}updateFollowArms(){this.objectToTarget.copy(this.objectToTarget0),this.targetToCamera.copy(this.targetToCamera0);let t=Zl.setFromAxisAngle(oa,this.cameraYAxis==="Limit"&&this.orientMode!=="radial"?ke.clamp(this.objectRot.y-this.euler0.y,this.minAzimuthAngleRel,this.maxAzimuthAngleRel):this.objectRot.y-this.euler0.y);(this.cameraYAxis!=="Locked"||this.orientMode==="radial")&&this.objectToTarget.applyQuaternion(t);let n;this.cameraXAxis==="Limit"?n=ke.clamp(this.objectRot.x,-this.maxPolarAngle+this.cameraPolarOffset+1e-6,-this.minPolarAngle+this.cameraPolarOffset-1e-6):n=ke.clamp(this.objectRot.x,-this.PI_2+this.cameraPolarOffset+1e-6,this.PI_2+this.cameraPolarOffset-1e-6);let i=Sn.copy(this.cameraPolarAxis0);(this.cameraYAxis!=="Locked"||this.orientMode==="radial")&&i.applyQuaternion(t);let s=ih.setFromAxisAngle(i,n);this.cameraYAxis!=="Locked"&&this.targetToCamera.applyQuaternion(t),this.cameraXAxis!=="Locked"&&this.targetToCamera.applyQuaternion(s)}collisionAdjustment(t){let n=iz.set(0,0,0);this.object.updateMatrix();let i=Mp.multiplyMatrices(this.object.matrix,this.objXZRotMat).multiply(this.collider.matrix).decompose(Sn,Zl,kn).compose(Sn,Zl,Cv);this.sharedGameControlGlobals.entitiesWithTransformAnim.forEach(o=>{if(o===this.object||o.isDescendantOf(this.object))return;Hr.makeEmpty();let a=az.copy(o.matrixWorld).decompose(Sn,Zl,kn).compose(Sn,Zl,Cv),l=FA.copy(a).invert(),u=oz.copy(FA).multiply(i);qn.copy(this.collider.segment),qn.start.applyMatrix4(u),qn.end.applyMatrix4(u);let c=rz.copy(this.object.position).applyMatrix4(l);Hr.expandByPoint(qn.start),Hr.expandByPoint(qn.end),Hr.min.addScalar(-this.collider.radius),Hr.max.addScalar(this.collider.radius),o.boundsTree.shapecast({intersectsBounds:h=>h.intersectsBox(Hr),intersectsTriangle:h=>{let d=Sn,f=kn,p=h.closestPointToSegment(qn,d,f);if(p<this.collider.radius){let m=this.collider.radius-p,g=f.sub(d).normalize(),y=sa.copy(c);y.addScaledVector(g,m);let v=y.applyMatrix4(a).sub(this.object.position);n.add(v),qn.start.addScaledVector(g,m),qn.end.addScaledVector(g,m)}}})}),Hr.makeEmpty(),qn.copy(this.collider.segment),qn.start.applyMatrix4(i),qn.end.applyMatrix4(i),Hr.expandByPoint(qn.start),Hr.expandByPoint(qn.end),Hr.min.addScalar(-this.collider.radius),Hr.max.addScalar(this.collider.radius),this.sharedGameControlGlobals.staticMeshBVH?.shapecast({intersectsBounds:o=>o.intersectsBox(Hr),intersectsTriangle:o=>{let a=Sn,l=kn,u=o.closestPointToSegment(qn,a,l);if(u<this.collider.radius){let c=this.collider.radius-u,h=l.sub(a).normalize();n.addScaledVector(h,c),qn.start.addScaledVector(h,c),qn.end.addScaledVector(h,c)}}}),this.onObject=n.y>Math.abs(t*this.velocity.y*.25);let s=Math.max(0,n.length()-1e-5);n.normalize().multiplyScalar(s),this.object.position.add(n)}},sh=Tp;sh.isLocked=!1;var zA,GA=new Promise(r=>{zA=r}),UA=!1;async function kA(){if(UA)return;let r=await import("./physics.js");await r.init(),zA(r),UA=!0}var VA=Math.pow(2,-24);var aa=class{constructor(){}};function Wr(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function Pv(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){let i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function Dv(r,e){e.set(r)}function Iv(r,e,t){let n,i;for(let s=0;s<3;s++){let o=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[o],i=e[o],t[o]=n>i?n:i}}function oh(r,e,t){for(let n=0;n<3;n++){let i=e[r+2*n],s=e[r+2*n+1],o=i-s,a=i+s;o<t[n]&&(t[n]=o),a>t[n+3]&&(t[n+3]=a)}}function Kl(r){let e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}function gz(r,e){if(!r.index){let t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;t>65535?i=new Uint32Array(new n(4*t)):i=new Uint16Array(new n(2*t)),r.setIndex(new Ge(i,1));for(let s=0;s<t;s++)i[s]=s}}function yz(r){if(!r.groups||!r.groups.length)return[{offset:0,count:r.index.count/3}];let e=[],t=new Set;for(let i of r.groups)t.add(i.start),t.add(i.start+i.count);let n=Array.from(t.values()).sort((i,s)=>i-s);for(let i=0;i<n.length-1;i++){let s=n[i],o=n[i+1];e.push({offset:s/3,count:(o-s)/3})}return e}function Rv(r,e,t,n,i=null){let s=1/0,o=1/0,a=1/0,l=-1/0,u=-1/0,c=-1/0,h=1/0,d=1/0,f=1/0,p=-1/0,m=-1/0,g=-1/0,y=i!==null;for(let v=e*6,w=(e+t)*6;v<w;v+=6){let b=r[v+0],S=r[v+1],_=b-S,M=b+S;_<s&&(s=_),M>l&&(l=M),y&&b<h&&(h=b),y&&b>p&&(p=b);let x=r[v+2],T=r[v+3],E=x-T,C=x+T;E<o&&(o=E),C>u&&(u=C),y&&x<d&&(d=x),y&&x>m&&(m=x);let D=r[v+4],I=r[v+5],R=D-I,F=D+I;R<a&&(a=R),F>c&&(c=F),y&&D<f&&(f=D),y&&D>g&&(g=D)}n[0]=s,n[1]=o,n[2]=a,n[3]=l,n[4]=u,n[5]=c,y&&(i[0]=h,i[1]=d,i[2]=f,i[3]=p,i[4]=m,i[5]=g)}function vz(r,e,t,n){let i=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,u=-1/0;for(let c=e*6,h=(e+t)*6;c<h;c+=6){let d=r[c+0];d<i&&(i=d),d>a&&(a=d);let f=r[c+2];f<s&&(s=f),f>l&&(l=f);let p=r[c+4];p<o&&(o=p),p>u&&(u=p)}n[0]=i,n[1]=s,n[2]=o,n[3]=a,n[4]=l,n[5]=u}function xz(r,e,t,n,i){let s=t,o=t+n-1,a=i.pos,l=i.axis*2;for(;;){for(;s<=o&&e[s*6+l]<a;)s++;for(;s<=o&&e[o*6+l]>=a;)o--;if(s<o){for(let u=0;u<3;u++){let c=r[s*3+u];r[s*3+u]=r[o*3+u],r[o*3+u]=c;let h=e[s*6+u*2+0];e[s*6+u*2+0]=e[o*6+u*2+0],e[o*6+u*2+0]=h;let d=e[s*6+u*2+1];e[s*6+u*2+1]=e[o*6+u*2+1],e[o*6+u*2+1]=d}s++,o--}else return s}}var bs=32,bz=(r,e)=>r.candidate-e.candidate,oo=new Array(bs).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ep=new Float32Array(6);function wz(r,e,t,n,i,s){let o=-1,a=0;if(s===0)o=Pv(e),o!==-1&&(a=(e[o]+e[o+3])/2);else if(s===1)o=Pv(r),o!==-1&&(a=Sz(t,n,i,o));else if(s===2){let l=Kl(r),u=1.25*i,c=n*6,h=(n+i)*6;for(let d=0;d<3;d++){let f=e[d],g=(e[d+3]-f)/bs;if(i<bs/4){let y=[...oo];y.length=i;let v=0;for(let b=c;b<h;b+=6,v++){let S=y[v];S.candidate=t[b+2*d],S.count=0;let{bounds:_,leftCacheBounds:M,rightCacheBounds:x}=S;for(let T=0;T<3;T++)x[T]=1/0,x[T+3]=-1/0,M[T]=1/0,M[T+3]=-1/0,_[T]=1/0,_[T+3]=-1/0;oh(b,t,_)}y.sort(bz);let w=i;for(let b=0;b<w;b++){let S=y[b];for(;b+1<w&&y[b+1].candidate===S.candidate;)y.splice(b+1,1),w--}for(let b=c;b<h;b+=6){let S=t[b+2*d];for(let _=0;_<w;_++){let M=y[_];S>=M.candidate?oh(b,t,M.rightCacheBounds):(oh(b,t,M.leftCacheBounds),M.count++)}}for(let b=0;b<w;b++){let S=y[b],_=S.count,M=i-S.count,x=S.leftCacheBounds,T=S.rightCacheBounds,E=0;_!==0&&(E=Kl(x)/l);let C=0;M!==0&&(C=Kl(T)/l);let D=1+1.25*(E*_+C*M);D<u&&(o=d,u=D,a=S.candidate)}}else{for(let w=0;w<bs;w++){let b=oo[w];b.count=0,b.candidate=f+g+w*g;let S=b.bounds;for(let _=0;_<3;_++)S[_]=1/0,S[_+3]=-1/0}for(let w=c;w<h;w+=6){let _=~~((t[w+2*d]-f)/g);_>=bs&&(_=bs-1);let M=oo[_];M.count++,oh(w,t,M.bounds)}let y=oo[bs-1];Dv(y.bounds,y.rightCacheBounds);for(let w=bs-2;w>=0;w--){let b=oo[w],S=oo[w+1];Iv(b.bounds,S.rightCacheBounds,b.rightCacheBounds)}let v=0;for(let w=0;w<bs-1;w++){let b=oo[w],S=b.count,_=b.bounds,x=oo[w+1].rightCacheBounds;S!==0&&(v===0?Dv(_,Ep):Iv(_,Ep,Ep)),v+=S;let T=0,E=0;v!==0&&(T=Kl(Ep)/l);let C=i-v;C!==0&&(E=Kl(x)/l);let D=1+1.25*(T*v+E*C);D<u&&(o=d,u=D,a=b.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:o,pos:a}}function Sz(r,e,t,n){let i=0;for(let s=e,o=e+t;s<o;s++)i+=r[s*6+n*2];return i/t}function Az(r,e){let t=r.attributes.position,n=t.array,i=r.index.array,s=i.length/3,o=new Float32Array(s*6),a=t.offset||0,l=3;t.isInterleavedBufferAttribute&&(l=t.data.stride);for(let u=0;u<s;u++){let c=u*3,h=u*6,d=i[c+0]*l+a,f=i[c+1]*l+a,p=i[c+2]*l+a;for(let m=0;m<3;m++){let g=n[d+m],y=n[f+m],v=n[p+m],w=g;y<w&&(w=y),v<w&&(w=v);let b=g;y>b&&(b=y),v>b&&(b=v);let S=(b-w)/2,_=m*2;o[h+_+0]=w+S,o[h+_+1]=S+(Math.abs(w)+S)*VA,w<e[m]&&(e[m]=w),b>e[m+3]&&(e[m+3]=b)}}return o}function _z(r,e){function t(y){d&&d(y/f)}function n(y,v,w,b=null,S=0){if(!p&&S>=l&&(p=!0,u&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(r))),w<=c||S>=l)return t(v+w),y.offset=v,y.count=w,y;let _=wz(y.boundingData,b,o,v,w,h);if(_.axis===-1)return t(v+w),y.offset=v,y.count=w,y;let M=xz(a,o,v,w,_);if(M===v||M===v+w)t(v+w),y.offset=v,y.count=w;else{y.splitAxis=_.axis;let x=new aa,T=v,E=M-v;y.left=x,x.boundingData=new Float32Array(6),Rv(o,T,E,x.boundingData,s),n(x,T,E,s,S+1);let C=new aa,D=M,I=w-E;y.right=C,C.boundingData=new Float32Array(6),Rv(o,D,I,C.boundingData,s),n(C,D,I,s,S+1)}return y}gz(r,e);let i=new Float32Array(6),s=new Float32Array(6),o=Az(r,i),a=r.index.array,l=e.maxDepth,u=e.verbose,c=e.maxLeafTris,h=e.strategy,d=e.onProgress,f=r.index.count/3,p=!1,m=[],g=yz(r);if(g.length===1){let y=g[0],v=new aa;v.boundingData=i,vz(o,y.offset,y.count,s),n(v,y.offset,y.count,s),m.push(v)}else for(let y of g){let v=new aa;v.boundingData=new Float32Array(6),Rv(o,y.offset,y.count,v.boundingData,s),n(v,y.offset,y.count,s),m.push(v)}return m}function jA(r,e){let t=_z(r,e),n,i,s,o=[],a=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let c=0;c<t.length;c++){let h=t[c],d=l(h),f=new a(32*d);n=new Float32Array(f),i=new Uint32Array(f),s=new Uint16Array(f),u(0,h),o.push(f)}return o;function l(c){return c.count?1:1+l(c.left)+l(c.right)}function u(c,h){let d=c/4,f=c/2,p=!!h.count,m=h.boundingData;for(let g=0;g<6;g++)n[d+g]=m[g];if(p){let g=h.offset,y=h.count;return i[d+6]=g,s[f+14]=y,s[f+15]=65535,c+32}else{let g=h.left,y=h.right,v=h.splitAxis,w;if(w=u(c+32,g),w/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[d+6]=w/4,w=u(w,y),i[d+7]=v,w}}}var mr=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,o=e.length;s<o;s++){let l=e[s][t];n=l<n?l:n,i=l>i?l:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,o=t.length;s<o;s++){let a=t[s],l=e.dot(a);n=l<n?l:n,i=l>i?l:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}};mr.prototype.setFromBox=function(){let r=new A;return function(t,n){let i=n.min,s=n.max,o=1/0,a=-1/0;for(let l=0;l<=1;l++)for(let u=0;u<=1;u++)for(let c=0;c<=1;c++){r.x=i.x*l+s.x*(1-l),r.y=i.y*u+s.y*(1-u),r.z=i.z*c+s.z*(1-c);let h=t.dot(r);o=Math.min(h,o),a=Math.max(h,a)}this.min=o,this.max=a}}();var qZ=function(){let r=new mr;return function(t,n){let i=t.points,s=t.satAxes,o=t.satBounds,a=n.points,l=n.satAxes,u=n.satBounds;for(let c=0;c<3;c++){let h=o[c],d=s[c];if(r.setFromPoints(d,a),h.isSeparated(r))return!1}for(let c=0;c<3;c++){let h=u[c],d=l[c];if(r.setFromPoints(d,i),h.isSeparated(r))return!1}}}();var Mz=function(){let r=new A,e=new A,t=new A;return function(i,s,o){let a=i.start,l=r,u=s.start,c=e;t.subVectors(a,u),r.subVectors(i.end,s.start),e.subVectors(s.end,s.start);let h=t.dot(c),d=c.dot(l),f=c.dot(c),p=t.dot(l),g=l.dot(l)*f-d*d,y,v;g!==0?y=(h*d-p*f)/g:y=0,v=(h+y*d)/f,o.x=y,o.y=v}}(),ah=function(){let r=new N,e=new A,t=new A;return function(i,s,o,a){Mz(i,s,r);let l=r.x,u=r.y;if(l>=0&&l<=1&&u>=0&&u<=1){i.at(l,o),s.at(u,a);return}else if(l>=0&&l<=1){u<0?s.at(0,a):s.at(1,a),i.closestPointToPoint(a,!0,o);return}else if(u>=0&&u<=1){l<0?i.at(0,o):i.at(1,o),s.closestPointToPoint(o,!0,a);return}else{let c;l<0?c=i.start:c=i.end;let h;u<0?h=s.start:h=s.end;let d=e,f=t;if(i.closestPointToPoint(h,!0,e),s.closestPointToPoint(c,!0,t),d.distanceToSquared(h)<=f.distanceToSquared(c)){o.copy(d),a.copy(h);return}else{o.copy(c),a.copy(f);return}}}}(),qA=function(){let r=new A,e=new A,t=new vn,n=new xn;return function(s,o){let{radius:a,center:l}=s,{a:u,b:c,c:h}=o;if(n.start=u,n.end=c,n.closestPointToPoint(l,!0,r).distanceTo(l)<=a||(n.start=u,n.end=h,n.closestPointToPoint(l,!0,r).distanceTo(l)<=a)||(n.start=c,n.end=h,n.closestPointToPoint(l,!0,r).distanceTo(l)<=a))return!0;let m=o.getPlane(t);if(Math.abs(m.distanceToPoint(l))<=a){let y=m.projectPoint(l,e);if(o.containsPoint(y))return!0}return!1}}();var Tz=1e-15;function Jl(r){return Math.abs(r)<Tz}var gr=class extends In{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new A),this.satBounds=new Array(4).fill().map(()=>new mr),this.points=[this.a,this.b,this.c],this.sphere=new Ln,this.plane=new vn,this.needsUpdate=!0}intersectsSphere(e){return qA(e,this)}update(){let e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,o=this.satBounds,a=s[0],l=o[0];this.getNormal(a),l.setFromPoints(a,i);let u=s[1],c=o[1];u.subVectors(e,t),c.setFromPoints(u,i);let h=s[2],d=o[2];h.subVectors(t,n),d.setFromPoints(h,i);let f=s[3],p=o[3];f.subVectors(n,e),p.setFromPoints(f,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(a,e),this.needsUpdate=!1}};gr.prototype.closestPointToSegment=function(){let r=new A,e=new A,t=new xn;return function(i,s=null,o=null){let{start:a,end:l}=i,u=this.points,c,h=1/0;for(let d=0;d<3;d++){let f=(d+1)%3;t.start.copy(u[d]),t.end.copy(u[f]),ah(t,i,r,e),c=r.distanceToSquared(e),c<h&&(h=c,s&&s.copy(r),o&&o.copy(e))}return this.closestPointToPoint(a,r),c=a.distanceToSquared(r),c<h&&(h=c,s&&s.copy(r),o&&o.copy(a)),this.closestPointToPoint(l,r),c=l.distanceToSquared(r),c<h&&(h=c,s&&s.copy(r),o&&o.copy(l)),Math.sqrt(h)}}();gr.prototype.intersectsTriangle=function(){let r=new gr,e=new Array(3),t=new Array(3),n=new mr,i=new mr,s=new A,o=new A,a=new A,l=new A,u=new xn,c=new xn,h=new xn;return function(f,p=null){this.needsUpdate&&this.update(),f.isExtendedTriangle?f.needsUpdate&&f.update():(r.copy(f),r.update(),f=r);let m=this.plane,g=f.plane;if(Math.abs(m.normal.dot(g.normal))>1-1e-10){let y=this.satBounds,v=this.satAxes;t[0]=f.a,t[1]=f.b,t[2]=f.c;for(let S=0;S<4;S++){let _=y[S],M=v[S];if(n.setFromPoints(M,t),_.isSeparated(n))return!1}let w=f.satBounds,b=f.satAxes;e[0]=this.a,e[1]=this.b,e[2]=this.c;for(let S=0;S<4;S++){let _=w[S],M=b[S];if(n.setFromPoints(M,e),_.isSeparated(n))return!1}for(let S=0;S<4;S++){let _=v[S];for(let M=0;M<4;M++){let x=b[M];if(s.crossVectors(_,x),n.setFromPoints(s,e),i.setFromPoints(s,t),n.isSeparated(i))return!1}}return p&&(console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),p.start.set(0,0,0),p.end.set(0,0,0)),!0}else{let y=this.points,v=!1,w=0;for(let I=0;I<3;I++){let R=y[I],F=y[(I+1)%3];u.start.copy(R),u.end.copy(F),u.delta(o);let B=v?c.start:c.end,X=Jl(g.distanceToPoint(R));if(Jl(g.normal.dot(o))&&X){c.copy(u),w=2;break}if((g.intersectLine(u,B)||X)&&!Jl(B.distanceTo(F))){if(w++,v)break;v=!0}}if(w===1&&this.containsPoint(c.start))return p&&(p.start.copy(c.start),p.end.copy(c.start)),!0;if(w!==2)return!1;let b=f.points,S=!1,_=0;for(let I=0;I<3;I++){let R=b[I],F=b[(I+1)%3];u.start.copy(R),u.end.copy(F),u.delta(a);let B=S?h.start:h.end,X=Jl(m.distanceToPoint(R));if(Jl(m.normal.dot(a))&&X){h.copy(u),_=2;break}if((m.intersectLine(u,B)||X)&&!Jl(B.distanceTo(F))){if(_++,S)break;S=!0}}if(_===1&&this.containsPoint(h.start))return p&&(p.start.copy(h.start),p.end.copy(h.start)),!0;if(_!==2)return!1;if(c.delta(o),h.delta(a),o.dot(a)<0){let I=h.start;h.start=h.end,h.end=I}let M=c.start.dot(o),x=c.end.dot(o),T=h.start.dot(o),E=h.end.dot(o),C=x<T,D=M<E;return M!==E&&T!==x&&C===D?!1:(p&&(l.subVectors(c.start,h.start),l.dot(o)>0?p.start.copy(c.start):p.start.copy(h.start),l.subVectors(c.end,h.end),l.dot(o)<0?p.end.copy(c.end):p.end.copy(h.end)),!0)}}}();gr.prototype.distanceToPoint=function(){let r=new A;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}}();gr.prototype.distanceToTriangle=function(){let r=new A,e=new A,t=["a","b","c"],n=new xn,i=new xn;return function(o,a=null,l=null){let u=a||l?n:null;if(this.intersectsTriangle(o,u))return(a||l)&&(a&&u.getCenter(a),l&&u.getCenter(l)),0;let c=1/0;for(let h=0;h<3;h++){let d,f=t[h],p=o[f];this.closestPointToPoint(p,r),d=p.distanceToSquared(r),d<c&&(c=d,a&&a.copy(r),l&&l.copy(p));let m=this[f];o.closestPointToPoint(m,r),d=m.distanceToSquared(r),d<c&&(c=d,a&&a.copy(m),l&&l.copy(r))}for(let h=0;h<3;h++){let d=t[h],f=t[(h+1)%3];n.set(this[d],this[f]);for(let p=0;p<3;p++){let m=t[p],g=t[(p+1)%3];i.set(o[m],o[g]),ah(n,i,r,e);let y=r.distanceToSquared(e);y<c&&(c=y,a&&a.copy(r),l&&l.copy(e))}}return Math.sqrt(c)}}();var yr=class extends Mt{constructor(...e){super(...e),this.isOrientedBox=!0,this.matrix=new _e,this.invMatrix=new _e,this.points=new Array(8).fill().map(()=>new A),this.satAxes=new Array(3).fill().map(()=>new A),this.satBounds=new Array(3).fill().map(()=>new mr),this.alignedSatBounds=new Array(3).fill().map(()=>new mr),this.needsUpdate=!1}set(e,t,n){super.set(e,t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){super.copy(e),this.matrix.copy(e.matrix),this.needsUpdate=!0}};yr.prototype.update=function(){return function(){let e=this.matrix,t=this.min,n=this.max,i=this.points;for(let u=0;u<=1;u++)for(let c=0;c<=1;c++)for(let h=0;h<=1;h++){let d=1*u|2*c|4*h,f=i[d];f.x=u?n.x:t.x,f.y=c?n.y:t.y,f.z=h?n.z:t.z,f.applyMatrix4(e)}let s=this.satBounds,o=this.satAxes,a=i[0];for(let u=0;u<3;u++){let c=o[u],h=s[u],d=1<<u,f=i[d];c.subVectors(a,f),h.setFromPoints(c,i)}let l=this.alignedSatBounds;l[0].setFromPointsField(i,"x"),l[1].setFromPointsField(i,"y"),l[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();yr.prototype.intersectsBox=function(){let r=new mr;return function(t){this.needsUpdate&&this.update();let n=t.min,i=t.max,s=this.satBounds,o=this.satAxes,a=this.alignedSatBounds;if(r.min=n.x,r.max=i.x,a[0].isSeparated(r)||(r.min=n.y,r.max=i.y,a[1].isSeparated(r))||(r.min=n.z,r.max=i.z,a[2].isSeparated(r)))return!1;for(let l=0;l<3;l++){let u=o[l],c=s[l];if(r.setFromBox(u,t),c.isSeparated(r))return!1}return!0}}();yr.prototype.intersectsTriangle=function(){let r=new gr,e=new Array(3),t=new mr,n=new mr,i=new A;return function(o){this.needsUpdate&&this.update(),o.isExtendedTriangle?o.needsUpdate&&o.update():(r.copy(o),r.update(),o=r);let a=this.satBounds,l=this.satAxes;e[0]=o.a,e[1]=o.b,e[2]=o.c;for(let d=0;d<3;d++){let f=a[d],p=l[d];if(t.setFromPoints(p,e),f.isSeparated(t))return!1}let u=o.satBounds,c=o.satAxes,h=this.points;for(let d=0;d<3;d++){let f=u[d],p=c[d];if(t.setFromPoints(p,h),f.isSeparated(t))return!1}for(let d=0;d<3;d++){let f=l[d];for(let p=0;p<4;p++){let m=c[p];if(i.crossVectors(f,m),t.setFromPoints(i,e),n.setFromPoints(i,h),t.isSeparated(n))return!1}}return!0}}();yr.prototype.closestPointToPoint=function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}}();yr.prototype.distanceToPoint=function(){let r=new A;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}}();yr.prototype.distanceToBox=function(){let r=["x","y","z"],e=new Array(12).fill().map(()=>new xn),t=new Array(12).fill().map(()=>new xn),n=new A,i=new A;return function(o,a=0,l=null,u=null){if(this.needsUpdate&&this.update(),this.intersectsBox(o))return(l||u)&&(o.getCenter(i),this.closestPointToPoint(i,n),o.closestPointToPoint(n,i),l&&l.copy(n),u&&u.copy(i)),0;let c=a*a,h=o.min,d=o.max,f=this.points,p=1/0;for(let g=0;g<8;g++){let y=f[g];i.copy(y).clamp(h,d);let v=y.distanceToSquared(i);if(v<p&&(p=v,l&&l.copy(y),u&&u.copy(i),v<c))return Math.sqrt(v)}let m=0;for(let g=0;g<3;g++)for(let y=0;y<=1;y++)for(let v=0;v<=1;v++){let w=(g+1)%3,b=(g+2)%3,S=y<<w|v<<b,_=1<<g|y<<w|v<<b,M=f[S],x=f[_];e[m].set(M,x);let E=r[g],C=r[w],D=r[b],I=t[m],R=I.start,F=I.end;R[E]=h[E],R[C]=y?h[C]:d[C],R[D]=v?h[D]:d[C],F[E]=d[E],F[C]=y?h[C]:d[C],F[D]=v?h[D]:d[C],m++}for(let g=0;g<=1;g++)for(let y=0;y<=1;y++)for(let v=0;v<=1;v++){i.x=g?d.x:h.x,i.y=y?d.y:h.y,i.z=v?d.z:h.z,this.closestPointToPoint(i,n);let w=i.distanceToSquared(n);if(w<p&&(p=w,l&&l.copy(n),u&&u.copy(i),w<c))return Math.sqrt(w)}for(let g=0;g<12;g++){let y=e[g];for(let v=0;v<12;v++){let w=t[v];ah(y,w,n,i);let b=n.distanceToSquared(i);if(b<p&&(p=b,l&&l.copy(n),u&&u.copy(i),b<c))return Math.sqrt(b)}}return Math.sqrt(p)}}();var Pp=new A,Dp=new A,Ip=new A,XA=new N,YA=new N,QA=new N,ZA=new A;function Ez(r,e,t,n,i,s){let o;return s===cn?o=r.intersectTriangle(n,t,e,!0,i):o=r.intersectTriangle(e,t,n,s!==un,i),o===null?null:{distance:r.origin.distanceTo(i),point:i.clone()}}function Cz(r,e,t,n,i,s,o){Pp.fromBufferAttribute(e,n),Dp.fromBufferAttribute(e,i),Ip.fromBufferAttribute(e,s);let a=Ez(r,Pp,Dp,Ip,ZA,o);if(a){t&&(XA.fromBufferAttribute(t,n),YA.fromBufferAttribute(t,i),QA.fromBufferAttribute(t,s),a.uv=In.getUV(ZA,Pp,Dp,Ip,XA,YA,QA,new N));let l={a:n,b:i,c:s,normal:new A,materialIndex:0};In.getNormal(Pp,Dp,Ip,l.normal),a.face=l,a.faceIndex=n}return a}function Bv(r,e,t,n,i){let s=n*3,o=r.index.getX(s),a=r.index.getX(s+1),l=r.index.getX(s+2),u=Cz(t,r.attributes.position,r.attributes.uv,o,a,l,e);return u?(u.faceIndex=n,i&&i.push(u),u):null}function KA(r,e,t,n,i,s){for(let o=n,a=n+i;o<a;o++)Bv(r,e,t,o,s)}function JA(r,e,t,n,i){let s=1/0,o=null;for(let a=n,l=n+i;a<l;a++){let u=Bv(r,e,t,a);u&&u.distance<s&&(o=u,s=u.distance)}return o}function Nv(r,e,t){return r===null||(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r.distance<t.near||r.distance>t.far)?null:r}function jr(r,e,t,n){let i=r.a,s=r.b,o=r.c,a=e,l=e+1,u=e+2;t&&(a=t.getX(e),l=t.getX(e+1),u=t.getX(e+2)),i.x=n.getX(a),i.y=n.getY(a),i.z=n.getZ(a),s.x=n.getX(l),s.y=n.getY(l),s.z=n.getZ(l),o.x=n.getX(u),o.y=n.getY(u),o.z=n.getZ(u)}function Fv(r,e,t,n,i,s,o){let a=t.index,l=t.attributes.position;for(let u=r,c=e+r;u<c;u++)if(jr(o,u*3,a,l),o.needsUpdate=!0,n(o,u,i,s))return!0;return!1}var $l=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}};function ws(r,e){return e[r+15]===65535}function la(r,e){return e[r+6]}function ec(r,e){return e[r+14]}function tc(r){return r+8}function nc(r,e){return e[r+6]}function $A(r,e){return e[r+7]}var rc=new Mt,Rp=new A,Dz=["x","y","z"];function Op(r,e,t,n,i){let s=r*2,o=ic,a=ao,l=lo;if(ws(s,a)){let c=la(r,l),h=ec(s,a);KA(e,t,n,c,h,i)}else{let c=tc(r);Np(c,o,n,Rp)&&Op(c,e,t,n,i);let h=nc(r,l);Np(h,o,n,Rp)&&Op(h,e,t,n,i)}}function Bp(r,e,t,n){let i=r*2,s=ic,o=ao,a=lo;if(ws(i,o)){let u=la(r,a),c=ec(i,o);return JA(e,t,n,u,c)}else{let u=$A(r,a),c=Dz[u],d=n.direction[c]>=0,f,p;d?(f=tc(r),p=nc(r,a)):(f=nc(r,a),p=tc(r));let g=Np(f,s,n,Rp)?Bp(f,e,t,n):null;if(g){let w=g.point[c];if(d?w<=s[p+u]:w>=s[p+u+3])return g}let v=Np(p,s,n,Rp)?Bp(p,e,t,n):null;return g&&v?g.distance<=v.distance?g:v:g||v||null}}var e_=function(){let r,e,t=[],n=new $l(()=>new Mt);return function(...o){r=n.getPrimitive(),e=n.getPrimitive(),t.push(r,e);let a=i(...o);n.releasePrimitive(r),n.releasePrimitive(e),t.pop(),t.pop();let l=t.length;return l>0&&(e=t[l-1],r=t[l-2]),a};function i(s,o,a,l,u=null,c=0,h=0){function d(w){let b=w*2,S=ao,_=lo;for(;!ws(b,S);)w=tc(w),b=w*2;return la(w,_)}function f(w){let b=w*2,S=ao,_=lo;for(;!ws(b,S);)w=nc(w,_),b=w*2;return la(w,_)+ec(b,S)}let p=s*2,m=ic,g=ao,y=lo;if(ws(p,g)){let w=la(s,y),b=ec(p,g);return Wr(s,m,r),l(w,b,!1,h,c+s,r)}else{let w=tc(s),b=nc(s,y),S=w,_=b,M,x,T,E;if(u&&(T=r,E=e,Wr(S,m,T),Wr(_,m,E),M=u(T),x=u(E),x<M)){S=b,_=w;let X=M;M=x,x=X,T=E}T||(T=r,Wr(S,m,T));let C=ws(S*2,g),D=a(T,C,M,h+1,c+S),I;if(D===2){let X=d(S),G=f(S)-X;I=l(X,G,!0,h+1,c+S,T)}else I=D&&i(S,o,a,l,u,c,h+1);if(I)return!0;E=e,Wr(_,m,E);let R=ws(_*2,g),F=a(E,R,x,h+1,c+_),B;if(F===2){let X=d(_),G=f(_)-X;B=l(X,G,!0,h+1,c+_,E)}else B=F&&i(_,o,a,l,u,c,h+1);return!!B}}}(),t_=function(){let r=new gr,e=new gr,t=new _e,n=new yr,i=new yr;return function s(o,a,l,u,c=null){let h=o*2,d=ic,f=ao,p=lo;if(c===null&&(l.boundingBox||l.computeBoundingBox(),n.set(l.boundingBox.min,l.boundingBox.max,u),c=n),ws(h,f)){let g=a,y=g.index,v=g.attributes.position,w=l.index,b=l.attributes.position,S=la(o,p),_=ec(h,f);if(t.copy(u).invert(),l.boundsTree)return Wr(o,d,i),i.matrix.copy(t),i.needsUpdate=!0,l.boundsTree.shapecast({intersectsBounds:x=>i.intersectsBox(x),intersectsTriangle:x=>{x.a.applyMatrix4(u),x.b.applyMatrix4(u),x.c.applyMatrix4(u),x.needsUpdate=!0;for(let T=S*3,E=(_+S)*3;T<E;T+=3)if(jr(e,T,y,v),e.needsUpdate=!0,x.intersectsTriangle(e))return!0;return!1}});for(let M=S*3,x=_+S*3;M<x;M+=3){jr(r,M,y,v),r.a.applyMatrix4(t),r.b.applyMatrix4(t),r.c.applyMatrix4(t),r.needsUpdate=!0;for(let T=0,E=w.count;T<E;T+=3)if(jr(e,T,w,b),e.needsUpdate=!0,r.intersectsTriangle(e))return!0}}else{let g=o+8,y=p[o+6];return Wr(g,d,rc),!!(c.intersectsBox(rc)&&s(g,a,l,u,c)||(Wr(y,d,rc),c.intersectsBox(rc)&&s(y,a,l,u,c)))}}}();function Np(r,e,t,n){return Wr(r,e,rc),t.intersectBox(rc,n)}var Uv=[],Lp,ic,ao,lo;function sc(r){Lp&&Uv.push(Lp),Lp=r,ic=new Float32Array(r),ao=new Uint16Array(r),lo=new Uint32Array(r)}function lh(){Lp=null,ic=null,ao=null,lo=null,Uv.length&&sc(Uv.pop())}var zv=Symbol("skip tree generation"),Gv=new Mt,kv=new Mt,oc=new _e,ca=new yr,ch=new yr,uh=new A,Fp=new A,Iz=new A,Lz=new A,Rz=new A,n_=new Mt,Bi=new $l(()=>new gr),$t=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),$t.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});t={cloneBuffers:!0,...t};let n=e.geometry,i=e._roots,s=n.getIndex(),o;return t.cloneBuffers?o={roots:i.map(a=>a.slice()),index:s.array.slice()}:o={roots:i,index:s.array},o}static deserialize(e,t,n={}){if(typeof n=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),$t.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});n={setIndex:!0,...n};let{index:i,roots:s}=e,o=new $t(t,{...n,[zv]:!0});if(o._roots=s,n.setIndex){let a=t.getIndex();if(a===null){let l=new Ge(e.index,1,!1);t.setIndex(l)}else a.array!==i&&(a.array.set(i),a.needsUpdate=!0)}return o}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[zv]:!1},t),t.useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[zv]||(this._roots=jA(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Mt))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t=this.geometry,n=t.index.array,i=t.attributes.position,s=i.array,o=i.offset||0,a=3;i.isInterleavedBufferAttribute&&(a=i.data.stride);let l,u,c,h,d=0,f=this._roots;for(let m=0,g=f.length;m<g;m++)l=f[m],u=new Uint32Array(l),c=new Uint16Array(l),h=new Float32Array(l),p(0,d),d+=l.byteLength;function p(m,g,y=!1){let v=m*2;if(c[v+15]===65535){let b=u[m+6],S=c[v+14],_=1/0,M=1/0,x=1/0,T=-1/0,E=-1/0,C=-1/0;for(let D=3*b,I=3*(b+S);D<I;D++){let R=n[D]*a+o,F=s[R+0],B=s[R+1],X=s[R+2];F<_&&(_=F),F>T&&(T=F),B<M&&(M=B),B>E&&(E=B),X<x&&(x=X),X>C&&(C=X)}return h[m+0]!==_||h[m+1]!==M||h[m+2]!==x||h[m+3]!==T||h[m+4]!==E||h[m+5]!==C?(h[m+0]=_,h[m+1]=M,h[m+2]=x,h[m+3]=T,h[m+4]=E,h[m+5]=C,!0):!1}else{let b=m+8,S=u[m+6],_=b+g,M=S+g,x=y,T=!1,E=!1;e?x||(T=e.has(_),E=e.has(M),x=!T&&!E):(T=!0,E=!0);let C=x||T,D=x||E,I=!1;C&&(I=p(b,g,x));let R=!1;D&&(R=p(S,g,x));let F=I||R;if(F)for(let B=0;B<3;B++){let X=b+B,Y=S+B,G=h[X],z=h[X+3],V=h[Y],U=h[Y+3];h[m+B]=G<V?G:V,h[m+B+3]=z>U?z:U}return F}}}traverse(e,t=0){let n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);o(0);function o(a,l=0){let u=a*2,c=s[u+15]===65535;if(c){let h=i[a+6],d=s[u+14];e(l,c,new Float32Array(n,a*4,6),h,d)}else{let h=a+32/4,d=i[a+6],f=i[a+7];e(l,c,new Float32Array(n,a*4,6),f)||(o(h,l+1),o(d,l+1))}}}raycast(e,t=Br){let n=this._roots,i=this.geometry,s=[],o=t.isMaterial,a=Array.isArray(t),l=i.groups,u=o?t.side:t;for(let c=0,h=n.length;c<h;c++){let d=a?t[l[c].materialIndex].side:u,f=s.length;if(sc(n[c]),Op(0,i,d,e,s),lh(),a){let p=l[c].materialIndex;for(let m=f,g=s.length;m<g;m++)s[m].face.materialIndex=p}}return s}raycastFirst(e,t=Br){let n=this._roots,i=this.geometry,s=t.isMaterial,o=Array.isArray(t),a=null,l=i.groups,u=s?t.side:t;for(let c=0,h=n.length;c<h;c++){let d=o?t[l[c].materialIndex].side:u;sc(n[c]);let f=Bp(0,i,d,e);lh(),f!=null&&(a==null||f.distance<a.distance)&&(a=f,o&&(f.face.materialIndex=l[c].materialIndex))}return a}intersectsGeometry(e,t){let n=this.geometry,i=!1;for(let s of this._roots)if(sc(s),i=t_(0,n,e,t),lh(),i)break;return i}shapecast(e,t,n){let i=this.geometry;if(e instanceof Function){if(t){let d=t;t=(f,p,m,g)=>{let y=p*3;return d(f,y,y+1,y+2,m,g)}}e={boundsTraverseOrder:n,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Bi.getPrimitive(),{boundsTraverseOrder:o,intersectsBounds:a,intersectsRange:l,intersectsTriangle:u}=e;if(l&&u){let d=l;l=(f,p,m,g,y)=>d(f,p,m,g,y)?!0:Fv(f,p,i,u,m,g,s)}else l||(u?l=(d,f,p,m)=>Fv(d,f,i,u,p,m,s):l=(d,f,p)=>p);let c=!1,h=0;for(let d of this._roots){if(sc(d),c=e_(0,i,a,l,o,h),lh(),c)break;h+=d.byteLength}return Bi.releasePrimitive(s),c}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n,o=this.geometry.index,a=this.geometry.attributes.position,l=e.geometry.index,u=e.geometry.attributes.position;oc.copy(t).invert();let c=Bi.getPrimitive(),h=Bi.getPrimitive();if(s){let f=function(p,m,g,y,v,w,b,S){for(let _=g,M=g+y;_<M;_++){jr(h,_*3,l,u),h.a.applyMatrix4(t),h.b.applyMatrix4(t),h.c.applyMatrix4(t),h.needsUpdate=!0;for(let x=p,T=p+m;x<T;x++)if(jr(c,x*3,o,a),c.needsUpdate=!0,s(c,h,x,_,v,w,b,S))return!0}return!1};if(i){let p=i;i=function(m,g,y,v,w,b,S,_){return p(m,g,y,v,w,b,S,_)?!0:f(m,g,y,v,w,b,S,_)}}else i=f}e.getBoundingBox(kv),kv.applyMatrix4(t);let d=this.shapecast({intersectsBounds:f=>kv.intersectsBox(f),intersectsRange:(f,p,m,g,y,v)=>(Gv.copy(v),Gv.applyMatrix4(oc),e.shapecast({intersectsBounds:w=>Gv.intersectsBox(w),intersectsRange:(w,b,S,_,M)=>i(f,p,w,b,g,y,_,M)}))});return Bi.releasePrimitive(c),Bi.releasePrimitive(h),d}intersectsBox(e,t){return ca.set(e.min,e.max,t),ca.needsUpdate=!0,this.shapecast({intersectsBounds:n=>ca.intersectsBox(n),intersectsTriangle:n=>ca.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,o=1/0){e.boundingBox||e.computeBoundingBox(),ca.set(e.boundingBox.min,e.boundingBox.max,t),ca.needsUpdate=!0;let a=this.geometry,l=a.attributes.position,u=a.index,c=e.attributes.position,h=e.index,d=Bi.getPrimitive(),f=Bi.getPrimitive(),p=Fp,m=Iz,g=null,y=null;i&&(g=Lz,y=Rz);let v=1/0,w=null,b=null;return oc.copy(t).invert(),ch.matrix.copy(oc),this.shapecast({boundsTraverseOrder:S=>ca.distanceToBox(S),intersectsBounds:(S,_,M)=>M<v&&M<o?(_&&(ch.min.copy(S.min),ch.max.copy(S.max),ch.needsUpdate=!0),!0):!1,intersectsRange:(S,_)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:M=>ch.distanceToBox(M),intersectsBounds:(M,x,T)=>T<v&&T<o,intersectsRange:(M,x)=>{for(let T=M*3,E=(M+x)*3;T<E;T+=3){jr(f,T,h,c),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let C=S*3,D=(S+_)*3;C<D;C+=3){jr(d,C,u,l),d.needsUpdate=!0;let I=d.distanceToTriangle(f,p,g);if(I<v&&(m.copy(p),y&&y.copy(g),v=I,w=C/3,b=T/3),I<s)return!0}}}});{let M=h?h.count:c.count;for(let x=0,T=M;x<T;x+=3){jr(f,x,h,c),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let E=S*3,C=(S+_)*3;E<C;E+=3){jr(d,E,u,l),d.needsUpdate=!0;let D=d.distanceToTriangle(f,p,g);if(D<v&&(m.copy(p),y&&y.copy(g),v=D,w=E/3,b=x/3),D<s)return!0}}}}}),Bi.releasePrimitive(d),Bi.releasePrimitive(f),v===1/0?null:(n.point?n.point.copy(m):n.point=m.clone(),n.distance=v,n.faceIndex=w,i&&(i.point?i.point.copy(y):i.point=y.clone(),i.point.applyMatrix4(oc),m.applyMatrix4(oc),i.distance=m.sub(i.point).length(),i.faceIndex=b),n)}closestPointToPoint(e,t={},n=0,i=1/0){let s=n*n,o=i*i,a=1/0,l=null;if(this.shapecast({boundsTraverseOrder:c=>(uh.copy(e).clamp(c.min,c.max),uh.distanceToSquared(e)),intersectsBounds:(c,h,d)=>d<a&&d<o,intersectsTriangle:(c,h)=>{c.closestPointToPoint(e,uh);let d=e.distanceToSquared(uh);return d<a&&(Fp.copy(uh),a=d,l=h),d<s}}),a===1/0)return null;let u=Math.sqrt(a);return t.point?t.point.copy(Fp):t.point=Fp.clone(),t.distance=u,t.faceIndex=l,t}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(n=>{Wr(0,new Float32Array(n),n_),e.union(n_)}),e}},r_=$t.prototype.raycast;$t.prototype.raycast=function(...r){if(r[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycast" has changed. See docs for new signature.');let[e,t,n,i]=r;return r_.call(this,n,e.material).forEach(o=>{o=Nv(o,e,t),o&&i.push(o)}),i}else return r_.apply(this,r)};var i_=$t.prototype.raycastFirst;$t.prototype.raycastFirst=function(...r){if(r[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycastFirst" has changed. See docs for new signature.');let[e,t,n]=r;return Nv(i_.call(this,n,e.material),e,t)}else return i_.apply(this,r)};var s_=$t.prototype.closestPointToPoint;$t.prototype.closestPointToPoint=function(...r){if(r[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "closestPointToPoint" has changed. See docs for new signature.'),r.unshift();let e=r[1],t={};return r[1]=t,s_.apply(this,r),e&&e.copy(t.point),t.distance}else return s_.apply(this,r)};var o_=$t.prototype.closestPointToGeometry;$t.prototype.closestPointToGeometry=function(...r){let e=r[2],t=r[3];if(e&&e.isVector3||t&&t.isVector3){console.warn('MeshBVH: The function signature and results frame for "closestPointToGeometry" has changed. See docs for new signature.');let n={},i={},s=r[1];return r[2]=n,r[3]=i,o_.apply(this,r),e&&e.copy(n.point),t&&t.copy(i.point).applyMatrix4(s),n.distance}else return o_.apply(this,r)};var a_=$t.prototype.refit;$t.prototype.refit=function(...r){let e=r[0],t=r[1];if(t&&(t instanceof Set||Array.isArray(t))){console.warn('MeshBVH: The function signature for "refit" has changed. See docs for new signature.');let n=new Set;t.forEach(i=>n.add(i)),e&&e.forEach(i=>n.add(i)),a_.call(this,n)}else a_.apply(this,r)};["intersectsGeometry","shapecast","intersectsBox","intersectsSphere"].forEach(r=>{let e=$t.prototype[r];$t.prototype[r]=function(...t){return(t[0]===null||t[0].isMesh)&&(t.shift(),console.warn(`MeshBVH: The function signature for "${r}" has changed and no longer takes Mesh. See docs for new signature.`)),e.apply(this,t)}});var Vv=class extends ot{},Up=class extends Vv{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 hh=class extends ot{constructor(t,n={}){super();this.object=t;let i=t.recursiveBBox.getSize(new A),s=.1;this.parameters=Zf.defaultData(i.toArray(),s),Qo(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 Up(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*ke.DEG2RAD,s=n.end*ke.DEG2RAD,o=i-s,a=new Qt(n.rotation[0]*ke.DEG2RAD,n.rotation[1]*ke.DEG2RAD,n.rotation[2]*ke.DEG2RAD),l;switch(n.axis){case"z":l=new A(0,0,1);break;case"y":l=new A(0,1,0);break;default:case"x":l=new A(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 Qt(n.rotation[0]*ke.DEG2RAD,n.rotation[1]*ke.DEG2RAD,n.rotation[2]*ke.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 A(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),Qo(this.parameters,t),this.update(),this}};var Ni=r=>{var e;return e=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new ur(30,30,30),e};var zp=new cs,Hv=new Ln,l_=new _e,Fi=(r,e,t,n,i=!1)=>{let s=e,o=r.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),Hv.copy(s.boundingSphere),Hv.applyMatrix4(o),t.ray.intersectsSphere(Hv)===!1||(l_.copy(o).invert(),zp.copy(t.ray).applyMatrix4(l_),s.boundingBox!==null&&zp.intersectsBox(s.boundingBox)===!1))return;let a,l,u,c,h=s.index,d=s.attributes.position,f=s.drawRange,p,m;if(i===!1){let y=Math.max(0,f.start),v=Math.min(h.count,f.start+f.count);for(p=y,m=v;p<m;p+=3)if(l=h.getX(p),u=h.getX(p+1),c=h.getX(p+2),a=g(r,t,zp,d,l,u,c),a){a.faceIndex=Math.floor(p/3),n.push(a);return}}else{let v=s.attributes.position,w=new A,b=new A,S=new A,_=new A,M=2,T=1/((r.scale.x+r.scale.y+r.scale.z)/3),E=T*T,C=Math.max(0,f.start),D=Math.min(v.count,f.start+f.count);for(let I=C,R=D-1;I<R;I+=M){if(w.fromBufferAttribute(v,I),b.fromBufferAttribute(v,I+1),zp.distanceSqToSegment(w,b,_,S)>E)continue;_.applyMatrix4(r.matrixWorld);let B=t.ray.origin.distanceTo(_);B<t.near||B>t.far||n.push({distance:B,point:S.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(y,v,w,b,S,_,M){let x=new A,T=new A,E=new A,C=new A,D=new A;if(x.fromBufferAttribute(b,S),T.fromBufferAttribute(b,_),E.fromBufferAttribute(b,M),w.intersectTriangle(x,T,E,!1,C)===null)return null;D.copy(C),D.applyMatrix4(y.matrixWorld);let R=v.ray.origin.distanceTo(D);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:D.clone(),object:y}}};var Gp=new A,qr=new ii,Wv=class extends ks{constructor(t){let n=new Ie,i=new Nr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new Ne(15711266),u=new Ne(15711266),c=new Ne(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,p,m){d(f,m),d(p,m)}function d(f,p){s.push(0,0,0),o.push(p.r,p.g,p.b),a[f]===void 0&&(a[f]=[]),a[f].push(s.length/3-1)}n.setAttribute("position",new we(s,3)),n.setAttribute("color",new we(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;qr.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;ui("n1",n,t,qr,-s,-o,a),ui("n2",n,t,qr,s,-o,a),ui("n3",n,t,qr,-s,o,a),ui("n4",n,t,qr,s,o,a);let l=a;ui("f1",n,t,qr,-s,-o,l),ui("f2",n,t,qr,s,-o,l),ui("f3",n,t,qr,-s,o,l),ui("f4",n,t,qr,s,o,l);let u=l,c=.5;ui("u1",n,t,qr,s*.7*c,o*1.1,u),ui("u2",n,t,qr,-s*.7*c,o*1.1,u),ui("u3",n,t,qr,0,o*(1.1+.9*c),u),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ui(r,e,t,n,i,s,o){Gp.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],Gp.x,Gp.y,Gp.z)}}var kp=class extends Ni(Wv){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){Fi(this.object,this.geometry,t,n,!0)}};var ac=class extends Ni(sf){constructor(t,n=15,i=10066329){super(t,n,i);this.object=t;this.added=!1;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,n){Fi(this.object,ac.geometryHelper,t,n)}};var lc=class extends Ni(of){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){Fi(this.object,lc.geometryHelper,t,n)}update(){}};var cc=class extends Ni(rf){constructor(t,n=15,i=6710886){super(t,n,i);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,n){Fi(this.object,cc.geometryHelper,t,n)}};var Vp=class extends Ni(nf){constructor(t,n=6710886){super(t,n);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,n){Fi(this.object,Vp.geometryHelper,t,n)}update(){if(this.object!==void 0){let t=Vp._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)}}},dh=Vp;dh._vector=new A;var fh=1e-12,uc=class{constructor(e){this.position=new N;this.startPosition=new N;this.uuid=ke.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 uc(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},hc=class extends uc{constructor(t){super(t.position);this.parent=t}copy(t){return super.copy(t),this}clone(){return new hc(this.parent).copy(this)}},hi=class extends uc{constructor(t,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=t,this.controls.push(new hc(this),new hc(this))}static create(t,n){let i=new hi(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 hi(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&&(c_(i,t),c_(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 c_(r,e=new N){let t=r.length();return e.set(-r.y/t,r.x/t)}var qv=r=>r,dc=new N,Hp=new N,Bz=new N,Nz=new N,Fz=new N,Uz=new N,h_=new A,d_=new A;function f_(r){let e=new N;e.addVectors(r.v0,dc.subVectors(r.v1,r.v0).multiplyScalar(2/3));let t=new N;return t.addVectors(r.v2,Hp.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new hr(r.v0,e,t,r.v2)}function ph(r,e,t=Number.EPSILON){return Math.abs(r-e)<t}function zz(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function Gz(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function Xv(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 p_(r,e,t){return u_(r,e)&&u_(e,t)&&jv(r.position,e.position,t.position)}function jv(r,e,t){return dc.copy(e).sub(r).cross(Hp.copy(t).sub(r))===0}function m_(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 g_(r,e,t){let n=r.distanceTo(t),i=e.distanceTo(t);return n<i?e:r}function y_(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 Xv(e,r,t)>Math.PI&&(c*=-1),ph(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 Yv(r,e){return r.position.equals(r.controls[1].position)&&e.position.equals(e.controls[0].position)}function u_(r,e){return jv(r.position,r.controls[1].position,e.position)&&jv(r.position,e.controls[0].position,e.position)}function v_(r,e,t,n,i=.5){let s=dc.subVectors(e,r).multiplyScalar(i).add(r),o=Hp.subVectors(t,e).multiplyScalar(i).add(e),a=Bz.subVectors(n,t).multiplyScalar(i).add(t),l=s,u=Nz.subVectors(o,s).multiplyScalar(i).add(s),c=Fz.subVectors(a,o).multiplyScalar(i).add(o),h=a,d=Uz.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 x_(r,e,t=12,n=!0){let i=d_.set(0,0,0),s,o=0,a=[];for(let l=0;l<e.length;l++){let u=qv(e[l]),c=dc,h=co(u,t);a.push(h);for(let d=0;d<=h;d++)if(u instanceof hr||u instanceof si||u instanceof dr){if(u.getPoint(d/h,c),i.set(c.x,c.y,0),s!==void 0&&Gz(s,i))continue;s===void 0&&(s=h_),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 b_(r,e,t,n=12,i=!0){let s=d_.set(0,0,0),o=0,a=[];for(let l=0;l<e.length;l++){if(t[l]===!1)continue;let u,c=qv(e[l]),h=dc,d=co(c,n);a.push(d);for(let f=0;f<=d;f++)if(c instanceof hr||c instanceof si||c instanceof dr){if(c.getPoint(f/d,h),s.set(h.x,h.y,0),u?.equals(s))continue;u===void 0?u=h_:(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 Qv(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=co(o.roundedCurveCorner,e)*.5;i>0&&(n[i-1]+=l),a+=l}o.curveAfter!==void 0&&(a+=co(o.curveAfter,e)),n.push(a)}return r.length>0&&t&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=co(r[0].roundedCurveCorner,e)*.5),n}function co(r,e=12){return r&&r instanceof zo?e*2:r&&(r instanceof dr||r instanceof bu)?1:r&&r instanceof Ka?e*r.points.length:e}function w_(r,e,t=12,n=!0){let i,s=0;for(let o=0;o<e.length;o++){let a=qv(e[o]),l=co(a,t),u=dc;for(let c=0;c<=l;c++)if(a instanceof hr||a instanceof si||a instanceof dr){if(a.getPoint(c/l,u),i!==void 0&&zz(i,u,fh))continue;i===void 0&&(i=Hp),i.copy(u),r.push(u.x,u.y),s++}}return ph(r[0],r[r.length-2],fh)&&ph(r[1],r[r.length-1],fh)&&(r.pop(),r.pop()),n&&s>1&&!(ph(r[s-1],r[1],fh)&&ph(r[s-2],r[0],fh))&&(r.push(r[0],r[1]),s++),r}var Zv=new N,kz=new N,Vz=new N,Hz=new N,Wz=new N,jz=new N,bt=class extends ri{constructor(t=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Bt;this.plane=new vn(new A(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=ke.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=t,this._height=n}static createFromState(t,n,i){let s=new bt;return s.isClosed=t.isClosed,s.points=t.points.map(o=>hi.create(o.id,o.data)),typeof t.roundness=="number"&&(s.roundness=t.roundness),s.shapeHoles=t.shapeHoles.map(o=>bt.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,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){let n=this.points.length;for(let i=0,s=this.shapeHoles.length;i<s;i++){let o=this.shapeHoles[i],a=t-n;if(a<=o.points.length-1)return o.points[a];n+=o.points.length}}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=Zv.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=ke.generateUUID()){let s;t instanceof N?s=t:s=new N(t,n);let o=new hi(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 x_(t,i?this.roundedCurves:this.curves,n,this.autoClose),s.reduce((o,a)=>o+a,0)+1}computeCurveDivisions(t=12){return this.curveDivisions=Qv(this.points,t,!1),this.roundedCurveDivisions=Qv(this.points,t,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(t,n,i=12){return b_(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),w_(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=co(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(Yv(s,o)){let h=s.position.distanceTo(o.position);return s.position.distanceTo(Zv.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){Yv(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&&p_(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 p=a.roundedCurveBefore,m=a.roundedCurveAfter,g=d.getLength(),y=f.getLength(),v=Math.min(c,g*.499),w=Math.min(c,y*.499),b=Math.min(v,w),S=1-b/g,_=b/y,M=d.getPointAt(S,Zv),x=f.getPointAt(_,kz);this._subSplitCurve(d,p,S,M,void 0),this._subSplitCurve(f,m,_,void 0,x);let T;if(this.useCubicForRoundedCorners){let E=Xv(M,a.position,x)/2,C=Math.tan(E)*M.distanceTo(a.position),[D,I]=m_(M,x,C,Vz,Hz),R=g_(D,I,a.position),[F,B]=y_(R,M,x,C,Wz,jz);T=new hr(M.clone(),F.clone(),B.clone(),x.clone())}else T=new si(M.clone(),a.position.clone(),x.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 dr)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=v_(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 bt(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 hi(ke.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 bt;return s.fromJSON(i),s}):[],this.isClosed=t.isClosed,this._roundness=t.roundness,this._update(),this}fromShape(t){let n=(s,o)=>{o instanceof hr&&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 si&&(s[a]=f_(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 hr?(f=this.createPoint(h.v0),f.controls[1].position.copy(h.v1)):h instanceof dr&&(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 hr?u.v3.equals(o[0].position)&&(o[0].controls[0].position.copy(u.v2),c=!0):u instanceof dr&&u.v2.equals(o[0].position)&&(c=!0),this.isClosed=c,o};return this.points=i(t.curves),t instanceof ri&&(this.shapeHoles=t.holes.map(s=>{let o=new bt;return o.fromShape(s),o})),this.update(),this}};var Vt;(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"})(Vt||(Vt={}));var An;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(An||(An={}));function He(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){He(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){He(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){He(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){He(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}(),mh=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}(),Wp=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}(),fc=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}(),S_=function(){function r(){var e=new fc,t=new mh,n=new Wp(0),i=new Wp(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 Wp(0),n=new Wp(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;He(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;He(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 fc,t=new fc,n=new mh,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 fc;this.makeVertex_(s,t,e.Org),e.Org.anEdge=e}if(!n){var o=new mh;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 mh;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 fc;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 mh;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){He(i.prev===s),l=i.anEdge;do He(l.Sym!==l),He(l.Sym.Sym===l),He(l.Lnext.Onext.Sym===l),He(l.Onext.Sym.Lnext===l),He(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(He(i.prev===s&&i.anEdge===null),a=t,a=t;(o=a.next)!==t;a=o){He(o.prev===a),l=o.anEdge;do He(l.Sym!==l),He(l.Sym.Sym===l),He(l.Lnext.Onext.Sym===l),He(l.Onext.Sym.Lnext===l),He(l.Org===o),l=l.Onext;while(l!==o.anEdge)}for(He(o.prev===a&&o.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)He(l.Sym.next===u.Sym),He(l.Sym!==l),He(l.Sym.Sym===l),He(l.Org!==null),He(l.Dst!==null),He(l.Lnext.Onext.Sym===l),He(l.Onext.Sym.Lnext===l);He(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}(),A_=function(){function r(){this.handle=null}return r}(),__=function(){function r(){this.key=null,this.node=0}return r}(),qz=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 A_,this.handles[n]=new __;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,He(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 A_;for(s=this.handles.length,this.handles.length=this.max+1,i=s;i<this.handles.length;i++)this.handles[i]=new __}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;He(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}(),Kv=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}(),M_=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),Xz=function(){function r(e,t){this.frame=e,this.leq=t,this.head=new M_,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 M_;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}(),Yz=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&&He(t.eUp.winding===0),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},r.fixUpperEdge=function(e,t,n){He(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 Kv;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 Vt.ODD:return(t&1)!==0;case Vt.NONZERO:return t!==0;case Vt.POSITIVE:return t>0;case Vt.NEGATIVE:return t<0;case Vt.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 He(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,He(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(He(!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 fc,f,p;if(He(!Ue.vertEq(u,l)),He(Ue.edgeSign(l,e.event,o)<=0),He(Ue.edgeSign(u,e.event,a)>=0),He(o!==e.event&&a!==e.event),He(!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),He(Math.min(o.t,l.t)<=d.t),He(d.t<=Math.max(a.t,u.t)),He(Math.min(u.s,l.s)<=d.s),He(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),p=r.regionBelow(t).eUp.Rprev,n.eUp=s.Oprev,s=r.finishLeftRegions(e,n,null),r.addRightEdges(e,t,s.Onext,i.Rprev,p,!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)){He(!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}He(!1),t=r.topRightRegion(t),l=r.regionBelow(t),o=l.eUp.Sym,s=a=o.Onext,l.fixUpperEdge&&(He(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 Kv;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);He(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 Kv,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 Xz(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||(He(t.fixUpperEdge),He(++n===1)),He(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 qz(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,He(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}(),Qz=function(){function r(){this.mesh=new S_,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=Vt.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],p=[null,null,null],m=this.mesh.vHead;t=m.next;for(var g=0;g<3;++g)s=t.coords[g],u[g]=s,p[g]=t,l[g]=s,f[g]=t;for(t=m.next;t!==m;t=t.next)for(var y=0;y<3;++y)s=t.coords[y],s<u[y]&&(u[y]=s,p[y]=t),s>l[y]&&(l[y]=s,f[y]=t);var v=0;if(l[1]-u[1]>l[0]-u[0]&&(v=1),l[2]-u[2]>l[v]-u[v]&&(v=2),u[v]>=l[v]){e[0]=0,e[1]=0,e[2]=1;return}for(a=0,n=p[v],i=f[v],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=m.next;t!==m;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===An.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===An.CONNECTED_POLYGONS){s=c.anEdge;do this.elements[d++]=this.getNeighbourFace_(s),s=s.Lnext;while(s!==c.anEdge);for(var p=l;p<n;++p)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 S_),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=Vt.ODD),t===void 0&&(t=An.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_(),Yz.computeInterior(this,o);var a=this.mesh;return t===An.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),o&&a.check(),t===An.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,t,n,i),!0},r}();function ua(r){var e=r.windingRule,t=e===void 0?Vt.ODD:e,n=r.elementType,i=n===void 0?An.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,p=f===void 0?!0:f,m=r.debug,g=m===void 0?!1:m;if(!d&&p)throw new Error("Contours can't be empty");if(!!d){var y=new Qz;r.edgeCreateCallback&&(y.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(y.vertexIdCallback=r.vertexIdCallback);for(var v=0;v<d.length;v++)y.addContour(l||2,d[v]);return y.tesselate(t,i,o,l,c,p),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:g?y.mesh:void 0}}}var i$=Vt.ODD,s$=Vt.NONZERO,o$=Vt.POSITIVE,a$=Vt.NEGATIVE,l$=Vt.ABS_GEQ_TWO,c$=An.POLYGONS,u$=An.CONNECTED_POLYGONS,h$=An.BOUNDARY_CONTOURS;var pc=class extends Ie{constructor(t,n=12,i={}){super();this.type="ShapeGeometry";this.windingRule=Vt.ODD;this.elementType=An.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=t,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:Vt.ODD,elementType:An.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let s=this._shape.extractShapePointsToFlatArray([],this._curveSegments),o=this._shape.shapeHoles.map(p=>p.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,u=!0,c,h;for(let p=0,m=s.length/2;p<m;p++){let g=p*2,y=s[g+0],v=s[g+1];if(c!==void 0&&y!==c&&(l=!1),h!==void 0&&v!==h&&(u=!1),c=y,h=v,!l&&!u)break}!l&&!u&&(a=ua({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 Ge(new Float32Array(d*3),3),this._normalAttribute=new Ge(new Float32Array(d*3),3),this._uvAttribute=new Ge(new Float32Array(d*2),2),this._indexAttribute=new Ge(new Uint32Array(f*3),1),a){let p=1/0,m=-1/0,g=1/0,y=-1/0;for(let b=0,S=d;b<S;b++){let _=b*2,M=a.vertices[_+0],x=a.vertices[_+1];M<p&&(p=M),M>m&&(m=M),x<g&&(g=x),x>y&&(y=x)}let v=m-p,w=y-g;for(let b=0,S=d;b<S;b++){let _=b*2,M=a.vertices[_+0],x=a.vertices[_+1],T=(M-p)/v,E=(x-g)/w;this._positionAttribute.setXYZ(b,M,x,0),this._normalAttribute.setXYZ(b,0,0,1),this._uvAttribute.setXY(b,T,E)}for(let b=0,S=f;b<S;b++){let _=b*3,M=a.elements[_+0],x=a.elements[_+1],T=a.elements[_+2];this._indexAttribute.setX(_+0,M),this._indexAttribute.setX(_+1,x),this._indexAttribute.setX(_+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 pc(this._shape,this._curveSegments);return t.userData=Uu(this.userData),t}};var jp=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*jp.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*jp.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)}},gh=jp;gh.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Jv=(r,e)=>([t,n])=>(n<t&&(n+=e),(r>=t?r:r+e)<=n),mc=class extends Ie{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 x=M.extractShapePointsToFlatArray([],s),T=[];for(let E=x.length-1;E>=1;E-=2){let C=x[E-1],D=x[E-0];T.push(C,D)}return T}),u=ua({windingRule:Vt.ODD,elementType:An.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),c=ua({windingRule:Vt.ODD,elementType:An.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 x=c.elements[M],T=M%2===0?u.vertexCount:0;u.elements.push(x+T)}for(let M=0;M<c.vertexIndices.length;M++){let x=c.vertexIndices[M],T=u.vertexCount;u.vertexIndices.push(x+T)}for(let M=0;M<c.vertices.length;M++){let x=c.vertices[M];u.vertices.push(x)}}let d=1/0,f=-1/0,p=1/0,m=-1/0;for(let M=0,x=u.vertexCount;M<x;M++){let T=M*2,E=u.vertices[T+0],C=u.vertices[T+1];E<d&&(d=E),E>f&&(f=E),C<p&&(p=C),C>m&&(m=C)}this._minX=d,this._minY=p,this._width=f-d,this._height=m-p;let g=u.vertexCount*2*(2+this._bevelSegments);this._buffer=new gh(g);let y=[],v=[];for(let M=u.elementCount-1;M>=0;M--){let x=M>=h,T=M*2,E=u.elements[T+0],C=u.elements[T+1],D=E+C,I={start:E,count:C,normals:[],continuous:[],concave:[]},R=E,F=D-1,B=E+1,X=this._shape.roundedCurves.length;do{let V=R-E,U=u.vertices[F*2+0],H=u.vertices[F*2+1],j=u.vertices[R*2+0],Q=u.vertices[R*2+1],q=u.vertices[B*2+0],ae=u.vertices[B*2+1],$=j-U,te=Q-H,W=Math.sqrt($*$+te*te);$/=W,te/=W;let le=j-q,ce=Q-ae,oe=Math.sqrt(le*le+ce*ce);le/=oe,ce/=oe,I.normals[V*2+0]=-ce,I.normals[V*2+1]=le,I.concave[V]=$*ce-te*le>0;let de=u.vertexIndices[R];if(Array.isArray(de))I.continuous[V]=!1;else{let[ge,fe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(fe>0&&fe<1)I.continuous[V]=!0;else{let Ee=fe===1?ge+1:ge-1;Ee=(Ee+X)%X;let Pe=fe===1?0:1,ye=this._shape.roundedCurves[ge].getTangent(fe),Oe=this._shape.roundedCurves[Ee].getTangent(Pe);I.continuous[V]=ye.dot(Oe)>.95}}x&&(I.normals[V*2+0]*=-1,I.normals[V*2+1]*=-1),[F,R,B]=[R,B,B+1],B>=D&&(B-=C)}while(B!==E+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:u.vertices.slice(E*2,D*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,U)=>[U,U]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:u.vertices.slice(E*2,D*2)});for(let V=1;V<=this._bevelSegments;V++){let U=V/this._bevelSegments*Math.PI/2,H=(1-Math.cos(U))*this._bevelSize,j=[],Q=[],q=[],ae=[],$=0;for(let W=0;W<C;W++){let le=W*2,ce=(W-1+C)%C*2,oe=u.vertices[I.start*2+le+0],de=u.vertices[I.start*2+le+1],ge=-I.normals[ce+0]*H,fe=-I.normals[ce+1]*H,Ee=-I.normals[le+0]*H,Pe=-I.normals[le+1]*H;if(I.concave[W]||!I.concave[W]&&x){let ye=Math.atan2(fe,ge),Oe=Math.atan2(Pe,Ee);Oe>ye&&(Oe-=Math.PI*2);let pt=Oe-ye;if(I.continuous[W]||x){let L=ye+pt/2,P=Math.cos(L)*H,K=Math.sin(L)*H;j[2*$+0]=oe+P*(x?-1:1),j[2*$+1]=de+K*(x?-1:1),ae[$]=W,$++}else{let L=Math.max(1,Math.floor(s/4*Math.abs(pt)/Math.PI));for(let P=0;P<=L;P++){let K=ye+pt*(P/L),he=Math.cos(K)*H,pe=Math.sin(K)*H;j[2*$+0]=oe+he,j[2*$+1]=de+pe,ae[$]=W,$++}}}else j[2*$+0]=oe+ge,j[2*$+1]=de+fe,ae[$]=W,Q[W]=$,$++,j[2*$+0]=oe,j[2*$+1]=de,ae[$]=W,$++,j[2*$+0]=oe+Ee,j[2*$+1]=de+Pe,ae[$]=W,q[W]=$,$++}let te=ua({windingRule:Vt.POSITIVE,elementType:An.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:W=>{let ce=W.Org.idx,oe=ae[ce],de=ae[(ce+1)%ae.length];W.idx=[oe,de],W.Sym.idx=[de,oe]},vertexIdCallback:W=>{let le=W.Lprev.idx;return[le?le[1]:0,W.idx[0]]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!te.vertexCount)break;for(let W=0;W<te.vertexIndices.length;W++){let[le,ce]=te.vertexIndices[W];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(!I.continuous[ge]||!I.continuous[fe]){te.vertexIndices[W]=[le,ge],te.vertexIndices.splice(W+1,0,[fe,ce]),te.vertices.splice((W+1)*2,0,te.vertices[W*2],te.vertices[W*2+1]);break}}}Y.push({bevelI:V,angle:U,size:H,boundary:te,reverseMap:ae,insetPoints:j})}let G=(V,U,H)=>{let j=0,Q=V.boundary.vertexIndices.length;for(;j<Q&&H(V.boundary.vertexIndices[U]);)U=(U+1)%Q,j++;return j},z=y.length;for(let V=1;V<Y.length;V++){let U=Y[V-1],H=Y[V],j=U.boundary.vertexIndices.length,Q=H.boundary.vertexIndices.length;if(!j||!Q)break;let q=I.concave.length,ae=0,$=Jv(ae,C);for(;!U.boundary.vertexIndices.filter($).length||!H.boundary.vertexIndices.filter($).length;)ae++,$=Jv(ae,C);let te=U.boundary.vertexIndices.findIndex($),W=H.boundary.vertexIndices.findIndex($);do te=(te+1)%j;while($(U.boundary.vertexIndices[te]));do W=(W+1)%Q;while($(H.boundary.vertexIndices[W]));ae=(ae+1)%C;let le=ae,ce=this.buildBevelVert(I,U,(te-1+j)%j),oe=this.buildBevelVert(I,H,(W-1+Q)%Q),de=ce,ge=oe,fe,Ee,Pe=!1;do{$=Jv(ae,C);let ye=G(U,te,$),Oe=G(H,W,$),pt=Pe;if(Pe=!1,ye&&!Oe){for(let L=0;L<ye;L++)fe=this.buildBevelVert(I,U,(te+L)%j,L/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe;Pe=!0}else if(!ye&&Oe)for(let L=0;L<Oe;L++)Ee=this.buildBevelVert(I,H,(W+L)%Q,L/(Oe-1)),y.push(ge.topN,de.topP,Ee.topP),y.push(de.bottomP,ge.bottomN,Ee.bottomP),ge=Ee;else if(ye&&Oe)if(fe=this.buildBevelVert(I,U,te,0),Ee=this.buildBevelVert(I,H,W,0),pt?(y.push(de.topN,Ee.topP,ge.topN),y.push(de.topN,fe.topP,Ee.topP),y.push(Ee.bottomP,de.bottomN,ge.bottomN),y.push(Ee.bottomP,fe.bottomP,de.bottomN)):(y.push(ge.topN,de.topN,fe.topP),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Ee.bottomP)),de=fe,ge=Ee,ye===Oe)for(let L=1;L<ye;L++)fe=this.buildBevelVert(I,U,(te+L)%j,L/(ye-1)),Ee=this.buildBevelVert(I,H,(W+L)%Q,L/(Oe-1)),y.push(de.topN,fe.topP,ge.topN),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,de.bottomN,ge.bottomN),y.push(fe.bottomP,ge.bottomN,Ee.bottomP),de=fe,ge=Ee;else if(ye>Oe){let L=ye/Oe,P=0;for(let K=1;K<ye;K++)fe=this.buildBevelVert(I,U,(te+K)%j,K/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe,K>(P+1)*L&&(P++,Ee=this.buildBevelVert(I,H,(W+P)%Q,P/(Oe-1)),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,ge.bottomN,Ee.bottomP),ge=Ee)}else{let L=Oe/ye,P=0;for(let K=1;K<Oe;K++)Ee=this.buildBevelVert(I,H,(W+K)%Q,K/(Oe-1)),y.push(ge.topN,fe.topP,Ee.topP),y.push(fe.bottomP,ge.bottomN,Ee.bottomP),ge=Ee,K>(P+1)*L&&(P++,fe=this.buildBevelVert(I,U,(te+P)%j,P/(ye-1)),y.push(de.topN,fe.topP,ge.topN),y.push(fe.bottomP,de.bottomN,ge.bottomN),de=fe)}te=(te+ye)%j,W=(W+Oe)%Q,ae=(ae+1)%q}while(ae!==le)}{let V=Y[0];for(let U=0,H=V.boundary.vertexCount;U<H;U++){let j=this.buildBevelVert(I,V,U),Q=this.buildBevelVert(I,V,(U+1)%H);y.push(Q.topP,j.topN,j.bottomN),y.push(Q.topP,j.bottomN,Q.bottomP)}}if(x){let V=[];for(let U=y.length-1;U>=z+2;U-=3){let H=y[U-2],j=y[U-1],Q=y[U-0];V.push(Q,j,H)}y.splice(z,y.length-z,...V)}if(x){let V=[];for(let U=Y[Y.length-1].boundary.vertices.length-1;U>=1;U-=2){let H=Y[Y.length-1].boundary.vertices[U-1],j=Y[Y.length-1].boundary.vertices[U-0];V.push(H,j)}v.push(V)}if(!x){let V=Y[Y.length-1],U=ua({windingRule:Y.length>1?Vt.POSITIVE:Vt.ODD,elementType:An.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]});if(!U)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let H=0;H<U.elementCount*3;H+=3){let j=this.buildSurfaceVert(U,U.elements[H+0]),Q=this.buildSurfaceVert(U,U.elements[H+1]),q=this.buildSurfaceVert(U,U.elements[H+2]);y.push(j.top,Q.top,q.top),y.push(q.bottom,Q.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new Ge(Uint32Array.from(y),1),b=new Ge(this._buffer.positions,3),S=new Ge(this._buffer.normals,3),_=new Ge(this._buffer.uvs,2);b.needsUpdate=!0,S.needsUpdate=!0,_.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",S),this.setAttribute("uv",_),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),p=Math.sin(n.angle),m=i*2,g=u*2,y=c*2,v=n.boundary.vertices[m+0],w=n.boundary.vertices[m+1],b=(1-p)*this._bevelSize,S=(v-this._minX)/this._width,_=(w-this._minY)/this._height,M=t.normals[g+0],x=t.normals[g+1],T=t.normals[y+0],E=t.normals[y+1];if(d){let F=T-M,B=E-x;M=M+F*(1-s),x=x+B*(1-s);let X=Math.sqrt(M*M+x*x);M/=X,x/=X}let C=this._buffer.get(h?2:4),D=C*3,I=C*2,R={i,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[D+0]=v,this._buffer.positions[D+1]=w,this._buffer.positions[D+2]=this._depth-b,this._buffer.normals[D+0]=M*f,this._buffer.normals[D+1]=x*f,this._buffer.normals[D+2]=p,this._buffer.uvs[I+0]=S,this._buffer.uvs[I+1]=_,this._buffer.positions[D+3]=v,this._buffer.positions[D+4]=w,this._buffer.positions[D+5]=b,this._buffer.normals[D+3]=M*f,this._buffer.normals[D+4]=x*f,this._buffer.normals[D+5]=-p,this._buffer.uvs[I+2]=_,this._buffer.uvs[I+3]=S,h||(C+=2,D+=6,I+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[D+0]=v,this._buffer.positions[D+1]=w,this._buffer.positions[D+2]=this._depth-b,this._buffer.normals[D+0]=T*f,this._buffer.normals[D+1]=E*f,this._buffer.normals[D+2]=p,this._buffer.uvs[I+0]=S,this._buffer.uvs[I+1]=_,this._buffer.positions[D+3]=v,this._buffer.positions[D+4]=w,this._buffer.positions[D+5]=b,this._buffer.normals[D+3]=T*f,this._buffer.normals[D+4]=E*f,this._buffer.normals[D+5]=-p,this._buffer.uvs[I+2]=_,this._buffer.uvs[I+3]=S),this.vertexCache[o]=R,R}clone(){let t=new mc(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return t.userData=Uu(this.userData),t}};var or=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 bt?(o.width!==n||o.height!==i)&&o.applySize(n,i):o=new bt(n,i).fromJSON(o),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&o.update(!1));let l=o??new bt(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 pc(r.shape,i):o=new mc(r.shape,e,t,i,n),Object.assign(o,{userData:{...r,type:"VectorGeometry"}})}};var E_=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,p;return h||f?p=new yh(u,c,n,i,s,o,a,l*Math.PI/180,h,h,d,f):p=new Go(u,c,n,i,s,o,a,l*Math.PI/180),p.scale(1,1,t/e),Object.assign(p,{userData:{...r,type:"CylinderGeometry"}})}};function uo(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function T_(r){return new N(r.y,-r.x)}var yh=class extends Ie{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 p=[],m=[],g=[],y=[],v=0,w=n/2,b=new A,S=new A;f&&e==0&&(e=u),f&&t==0&&(t=c);let _=new N(e,w),M=new N(t,-w),x=null,T=null,E=null,C=null,D=_.clone().sub(M),I=0,R=0,F=0;d>0&&(I=Math.min(e,t)*(1-d),R=e-I,F=t-I);let B=_.clone();B.x-=I;let X=Math.PI-D.angle(),Y=D.angle(),G=Math.tan(Y/2),z=Math.tan(X/2),V=G+z,U=d?V:z,H=d?V:G;if(u=Math.min(u,(e-R)/U,D.length()/V),c=Math.min(c,(t-F)/H,D.length()/V),u>0){let te=u/G;x=_.clone().sub(new N(te,u)),d&&(E=x.clone(),E.x-=I-V*u),_.sub(D.clone().setLength(te))}if(c>0){let te=c/z;T=M.clone().sub(new N(te,-c)),M.add(D.clone().setLength(te)),d&&(C=T.clone(),C.x-=I-V*c,B.sub(D.clone().setLength(te)))}D=_.clone().sub(M);let j=D.length()<.5,Q=[];for(let te=0;te<=i;te++){let W=[],le=te/i,ce=le*l+a,oe=new N(Math.sin(ce),Math.cos(ce));C&&T?(q(W,le,oe,X,c,C,-1,!0),q(W,le,oe,Y,c,T,-1,!1)):T?(ae(W,oe,T.x,0,-1),q(W,le,oe,Y,c,T,-1,!1)):o||ae(W,oe,t,F,-1);let de=T_(D).normalize();if(uo(de,oe,b),!j)for(let ge=0;ge<=s;ge++){let fe=ge/s,Ee=D.clone().multiplyScalar(fe).add(M);uo(Ee,oe,S),m.push(S.x,S.y,S.z),g.push(b.x,b.y,b.z),y.push(le,.5+S.y/n),W.push(v++)}if(E&&x?(q(W,le,oe,X,u,x,1,!1),q(W,le,oe,Y,u,E,1,!0)):x?(q(W,le,oe,X,u,x,1,!1),ae(W,oe,x.x,0,1)):o||ae(W,oe,e,R,1),d&&!j){let ge=T_(D).multiplyScalar(-1).normalize();uo(ge,oe,b);for(let fe=0;fe<=s;fe++){let Ee=fe/s,Pe=D.clone().multiplyScalar(-Ee).add(B);uo(Pe,oe,S),m.push(S.x,S.y,S.z),g.push(b.x,b.y,b.z),y.push(le,.5+S.y/n),W.push(v++)}}d&&!o&&W.push(W[0]),Q.push(W)}for(let te=0;te<Q.length-1;te++)for(let W=0;W<Q[0].length-1;W++){if(o&&d&&W==s)continue;let le=Q[te][W],ce=Q[te+1][W],oe=Q[te+1][W+1],de=Q[te][W+1],ge=m[oe*3+0],fe=m[oe*3+2];p.push(le,ce,de),(ge!=0||fe!=0)&&p.push(ce,oe,de)}l<Math.PI*2&&($(-1,Q[0],a),$(1,Q[Q.length-1],a+l)),this.setIndex(p),this.setAttribute("position",new we(m,3)),this.setAttribute("normal",new we(g,3)),this.setAttribute("uv",new we(y,2));function q(te,W,le,ce,oe,de,ge,fe){for(let Ee=0;Ee<h+1;Ee++){let Pe=Ee/h,ye=ge<0?Pe:1-Pe;fe&&(ye-=1),ye*=ce;let Oe=new N(Math.sin(ye),Math.cos(ye)*ge),pt=Oe.clone().multiplyScalar(oe).add(de);uo(pt,le,S),m.push(S.x,S.y,S.z),uo(Oe,le,b),g.push(b.x,b.y,b.z),y.push(W,.5+S.y/n),te.push(v++)}}function ae(te,W,le,ce,oe){let de=new A,ge=new N,fe=[le,ce];oe<0&&fe.reverse();for(let Ee of fe)ge.set(Ee,w*oe),uo(ge,W,de),m.push(de.x,de.y,de.z),g.push(0,oe,0),y.push(.5,.5),te.push(v++)}function $(te,W,le){let ce=new N(Math.sin(le),Math.cos(le)),oe=new N(-Math.cos(le),Math.sin(le)),de=new A,ge=te<0?(Pe,ye,Oe)=>p.push(Pe,ye,Oe):(Pe,ye,Oe)=>p.push(Pe,Oe,ye),fe=new N((e+t+R+F)/4,0);uo(fe,ce,de),m.push(de.x,de.y,de.z),g.push(oe.x,0,oe.y),y.push(.5,.5);let Ee=v++;for(let Pe of W){let ye=m.slice(Pe*3,Pe*3+3);m.push(...ye),g.push(oe.x,0,oe.y);let Oe=y.slice(Pe*2,Pe*2+2);y.push(...Oe),v++}for(let Pe=Ee+1;Pe<v-1;Pe++)ge(Ee,Pe,Pe+1);ge(Ee,v-1,Ee+1)}}};var C_=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 yh(0,e/2,n,i,s,o,a,l*Math.PI/180,u,c,h,0,!0):d=new $a(e/2,n,i,s,o),d.scale(1,1,t/e),Object.assign(d,{userData:{...r,type:"ConeGeometry"}})}};var P_=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 ur(e,t,n,i,s,o):u=new e0(e,t,n,i,s,o,a,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},$v=Math.PI/2,e0=class extends Ie{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=[],p=0,m=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),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new we(h,3)),this.setAttribute("normal",new we(d,3)),this.setAttribute("uv",new we(f,2));function g(w,b,S,_,M,x,T,E,C,D,I){let R=(x-2*a)/C,F=(T-2*a)/D,B=x/2-a,X=T/2-a,Y=E/2,G=C+1,z=D+1,V=0,U=0,H=new A;for(let j=0;j<z;j++){let Q=j*F-X;for(let q=0;q<G;q++){let ae=q*R-B;H[w]=ae*_,H[b]=Q*M,H[S]=Y,h.push(H.x,H.y,H.z),H[w]=0,H[b]=0,H[S]=E>0?1:-1,d.push(H.x,H.y,H.z),f.push(q/C),f.push(1-j/D),V+=1}}for(let j=0;j<D;j++)for(let Q=0;Q<C;Q++){let q=p+Q+G*j,ae=p+Q+G*(j+1),$=p+(Q+1)+G*(j+1),te=p+(Q+1)+G*j;c.push(q,ae,te),c.push(ae,$,te),U+=6}u.addGroup(m,U,I),m+=U,p+=V}function y(w,b,S,_,M,x,T,E,C,D,I){let R=(T-2*a)/D,F=T/2-a,B=E/2-a,X=C/2,Y=D+1,G=0,z=0,V=new A,U=new A;for(let H=0;H<l+1;H++){let j=H/l*$v,Q=Math.sin(j)*a,q=(1-Math.cos(j))*a,ae=Math.sin(j),$=Math.cos(j);V[b]=(B+Q)*M,V[S]=(X-q)*x,U[w]=0,U[b]=ae*Math.sign(V[b]),U[S]=$*Math.sign(V[S]);for(let te=0;te<Y;te++){let W=te*R-F;V[w]=W*_,h.push(V.x,V.y,V.z),d.push(U.x,U.y,U.z),f.push(te/D),f.push(0),G+=1}}for(let H=0;H<l;H++)for(let j=0;j<D;j++){let Q=p+j+Y*H,q=p+j+Y*(H+1),ae=p+(j+1)+Y*(H+1),$=p+(j+1)+Y*H;c.push(Q,q,$),c.push(q,ae,$),z+=6}u.addGroup(m,z,I),m+=z,p+=G}function v(w,b,S){let _=new A,M=new A(e/2,t/2,n/2);M.subScalar(a);let x=[],T=w*b*S>0?(C,D,I)=>c.push(C,D,I):(C,D,I)=>c.push(C,I,D);for(let C=0;C<=l;C++){let D=[],I=$v*(1-C/l),R=Math.cos(I),F=Math.sin(I),B=0;for(let X=0;X<=C;X++){let Y=Math.cos(B),G=Math.sin(B);_.x=R*Y,_.y=F,_.z=R*G;let z=M.clone().addScaledVector(_,a);h.push(w*z.x,b*z.y,S*z.z),d.push(w*_.x,b*_.y,S*_.z),f.push(0,0),D.push(p++),B+=$v/C}x.push(D)}let E=x.length-1;for(let C=0;C<E;C++){let D=x[C],I=x[C+1],R=D.length-1;T(D[0],I[1],I[0]);for(let F=1;F<=R;F++)T(D[F-1],D[F],I[F]),T(D[F],I[F+1],I[F])}}}};var ho=class extends Ie{constructor(e=[],t=[],n="",i=1,s=.2,o=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],u=[];c(),h(),this.setAttribute("position",new we(a,3)),this.setAttribute("normal",new we(u,3)),this.setAttribute("uv",new we(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],p=new A,m=p.clone(),g=new In,y=s*i,v=i-y,w=o+1,b=new A,S=(G,z)=>b.subVectors(G,z).normalize(),_=(G,z)=>Array(G).fill(void 0).map(z),M=_(e.length/3,(G,z)=>new A().fromArray(e,z*3).setLength(i)),x=[],T=1e6;for(let G=0;G<M.length;G++){let z=M[G],V=[],U,H,j,Q=1e10,q=-1;for(;(q=t.indexOf(G,q+1))!=-1;){let W=q-q%3;U=t[W+(q+1)%3],H=t[W+(q+2)%3],j=z.distanceToSquared(M[U]),Q=Math.min(Q,j),V.push([U,H,j])}Q+=1e-6;let ae=[],$=0,te=V.length;for(let W=0;W<te;W++){[U,H,j]=V[$];let le=x[U]?.includes(G)==!0;j<=Q&&ae.push(U+ +le*T),$=V.findIndex(ce=>ce[0]==H)}x.push(ae)}let E=[];{let G=0,z=0,V,U,H=f==3;for(let j=0;j<=o;j++){V=j*(j+1)/2,U=(j+1)*(j+2)/2;for(let Q=0;Q<o-j;Q++)[G,z]=[V+Q+j+2,U+Q+j+3],E.push(V,U,...H?[z,V]:[G,U],z,G),[V,U]=[G,z];E.push(V,U,V+o+2)}}let C=p.clone(),D=p.clone(),I=p.clone(),R=p.clone(),F=p.clone(),B=[],X=_(M.length,()=>_(f,()=>p.clone()));for(let G=0;G<M.length;G++){p.copy(M[G]).normalize(),C.copy(p).multiplyScalar(v);let z=x[G];for(let ae=0;ae<z.length;ae++){let $=z[ae],te=z[(ae+1)%f];g.setFromPointsAndIndices(M,G,$%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,X[G][ae])}let V=[],U=[],H=[],j=new A;o==0&&[...X[G]].reduce((ae,$)=>ae.add($),j).multiplyScalar(1/f);for(let ae=0;ae<f;ae++){let $=[],te=(ae-1+f)%f,W=X[G][te],le=X[G][ae];p.copy(W).sub(C),m.copy(le).sub(C);let ce=C.angleTo(p),oe=p.angleTo(m),de=Math.cos(ce)*y;o==0?D.copy(j):D.copy(C).setLength(v+de),U.push(de);let ge=[D,W,le];for(let fe=0;fe<2;fe++){let Ee=ge[fe],Pe=ge[fe+1];R.subVectors(Ee,C),F.subVectors(Pe,C),I.crossVectors(R,F).normalize();for(let ye=0;ye<w;ye++){let Oe=[ce,oe][fe]*ye/w;p.copy(R).applyAxisAngle(I,Oe).add(C),V.push(p.clone()),fe&&(S(p,C),$.push([ye==0?Ee:p.clone(),b.clone()]))}fe&&(S(Pe,C),$.push([Pe,b.clone()]))}H.push($)}B.push(H);let Q=2*w,q=2;for(let ae=0;ae<f;ae++){let $=Q*ae,te=Q*((ae+1)%f),W=[V[$]];for(let ce=1;ce<w;ce++){R=V[$+ce],F=V[te+ce],W.push(R);for(let oe=1,de=ce-q+1;oe<=de;oe++)p.lerpVectors(R,F,oe/(de+1)),p.sub(C).setLength(U[ae]).add(C),W.push(p.clone());W.push(F)}for(let ce=0;ce<w;ce++)W.push(V[ce+w+$]);W.push(V[te+w]);let le=E.map(ce=>W[ce]);a.push(...le.map(ce=>[ce.x,ce.y,ce.z]).flat()),u.push(...le.map(ce=>(S(ce,C),[b.x,b.y,b.z])).flat())}}let Y=[];for(let G=0;G<x.length;G++)for(let z=0;z<f;z++){let V=x[G][z];if(V<T){let U=x[V].findIndex(Q=>Q%T==G),H=B[G][z],j=B[V][U];for(let Q=0;Q<w;Q++){let q=H[Q],ae=j[w-Q],$=H[Q+1],te=j[w-(Q+1)];[q,ae,$,$,ae,te].forEach(W=>{a.push(W[0].x,W[0].y,W[0].z),u.push(W[1].x,W[1].y,W[1].z)})}Y.push(H[0][0],j[w][0],H[w][0],j[0][0])}}for(;Y.length;){let G,z,V,U;[G,z]=Y.splice(0,2);let H=[G];for(;G!=z;)H.push(z),V=Y.indexOf(z),U=V%2,z=Y.splice(V-U,2)[1-U];b.subVectors(H[0],H[1]).cross(p.subVectors(H[0],H[2])).normalize();let j=b.dot(H[0])<0;j&&b.negate();for(let Q=1;Q<=H.length-2;Q++)[H[Q+ +j],H[Q+1-+j],H[0]].forEach(q=>{a.push(q.x,q.y,q.z),u.push(b.x,b.y,b.z)})}}function h(){let d=new A;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 x=S(d)/2/Math.PI+.5,T=_(d)/Math.PI+.5;l.push(x,1-T)}let f=new A,p=new A,m=new A,g=new A,y=new N,v=new N,w=new N,b=(M,x,T,E)=>{E<0&&M.x===1&&(l[x]=M.x-1),T.x===0&&T.z===0&&(l[x]=E/2/Math.PI+.5)};for(let M=0,x=0;M<a.length;M+=9,x+=6){f.set(a[M+0],a[M+1],a[M+2]),p.set(a[M+3],a[M+4],a[M+5]),m.set(a[M+6],a[M+7],a[M+8]),y.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),w.set(l[x+4],l[x+5]),g.copy(f).add(p).add(m).divideScalar(3);let T=S(g);b(y,x+0,f,T),b(v,x+2,p,T),b(w,x+4,m,T)}for(let M=0;M<l.length;M+=6){let x=l[M+0],T=l[M+2],E=l[M+4],C=Math.max(x,T,E),D=Math.min(x,T,E);C>.9&&D<.1&&(x<.2&&(l[M+0]+=1),T<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function _(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(e){return new ho(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}};var D_=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 vh(e*.5,s,o):new tl(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"DodecahedronGeometry"}})}},vh=class extends ho{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 vh(e.radius,e.corner,e.cornerSides)}};var n0=Math.PI*2;function t0({x:r,y:e},t,n,i,s){return{x:r*t+i,y:e*n+s}}function Zz(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 I_(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 Kz(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),p=c*h-c*f-h*d;p<0&&(p=0),p/=c*f+h*d,p=Math.sqrt(p)*(l===u?-1:1);let m=p*i/s*a,g=p*-s/i*o,y=m+(r+t)/2,v=g+(e+n)/2,w=(o-m)/i,b=(a-g)/s,S=(-o-m)/i,_=(-a-g)/s,M=I_(1,0,w,b),x=I_(w,b,S,_);return!u&&x>0&&(x-=n0),u&&x<0&&(x+=n0),{centerx:y,centery:v,ang1:M,ang2:x}}function L_({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=Kz(r,e,t,n,i,s,u,c,o,a),{ang1:f,ang2:p}=d,{centerx:m,centery:g}=d,y=Math.abs(p)/(n0/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);p/=v;for(let w=0;w<v;w++)l.push(Zz(f,p)),f+=p;return l.map(w=>{let{x:b,y:S}=t0(w[0],i,s,m,g),{x:_,y:M}=t0(w[1],i,s,m,g),{x,y:T}=t0(w[2],i,s,m,g);return{x1:b,y1:S,x2:_,y2:M,x,y:T}})}var O_=Math.PI*2,B_=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 bt?r.shape:new bt,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=Jz(u,c,h,i*Math.PI/180,n,s);u.isClosed=!0,u.update();let f=or.create({shape:u,parameters:{subdivisions:d,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(f,{userData:{...r,type:"EllipseGeometry"}})}};function Jz(r,e,t,n,i,s){if(n>=O_)return i>30||i%4===0?(eG(r,e,t,s),Math.round(i/4)):R_(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=L_({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?$z(r,o.x,o.y,u,i,e,t,s):R_(r,n,i,e,t,s)}function $z(r,e,t,n,i,s,o,a){let l=Math.round(i/n.length);r.addPoint(gc(e,t));for(let u=0,c=n.length;u<c;u++){let h=n[u],d=r.points[u],f=gc(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?N_(r,s,o,a):r.addPoint(gc(0,0)),l}function R_(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(gc(u,c))}return e<O_?s>0?N_(r,n,i,s):r.addPoint(gc(0,0)):(r.removePoint(r.points[r.points.length-1]),s>0&&F_(r,n,i,s)),1}function eG(r,e,t,n=0,i=0,s=0){let o=.5522847498,a=e*o,l=t*o;r.addPoint(qp(i-e,s,i-e,s-l,i-e,s+l)),r.addPoint(qp(i,s+t,i-a,s+t,i+a,s+t)),r.addPoint(qp(i+e,s,i+e,s+l,i+e,s-l)),r.addPoint(qp(i,s-t,i+a,s-t,i-a,s-t)),n>0&&F_(r,e,t,n)}function gc(r,e){return new hi(ke.generateUUID(),new N(r,e))}function qp(r,e,t,n,i,s){let o=gc(r,e);return o.controls[0].position.set(t,n),o.controls[1].position.set(i,s),o}function N_(r,e,t,n){U_(r,e,t,n).forEach(s=>r.addPoint(s))}function F_(r,e,t,n){let i=U_(r,e,t,n),s=new bt;i.forEach(o=>s.addPoint(o)),s.isClosed=!0,r.shapeHoles.push(s)}function U_(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=ke.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 z_=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 xh(!1,e,t,n,i,s,o,a,l,u,c,h);return Object.assign(d,{userData:{...r,type:"HelixGeometry"}})}},xh=class extends Ie{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 p=()=>new A,m=new A,g=p(),y=p(),v=p(),w,b,S,_,M,x,T,E,C=p(),D=p(),I=p(),R=p(),F=p(),B=p(),X=p(),Y=p(),G=n-2*l+.001,z=G/o,V=Math.ceil(a*o),U=V+1,H=G/V,j=-G/2,Q=c+1,q=2*Math.PI/c,ae=Math.PI/2/d,$=.01,te=Math.min((1-h/100)*l,l-$),W=l-te,le=0,ce=2,oe=d*ce+ce,de=Q*oe/ce,ge=de+Q*U,fe=Q*(U+oe),[Ee,Pe,ye]=[3,3,2].map(ve=>Array(fe*ve).fill(0)),Oe=[],pt=s-l;function L(ve,k){let xe=Math.PI/2;x=k*H,E=2*Math.PI*(x%z)/z+xe,x+=j,T=Math.sin(E)*pt,M=Math.cos(E)*pt,e?ve.set(M,T,x):ve.set(M,x,T)}L(m,-1e-10),L(g,0),C.copy(m),L(m,1);let P=m.distanceTo(g),K=W+te,he=P*V+2*K,pe=te,Ce=he-K;for(let ve=0;ve<=V;ve++){L(y,ve),Y.subVectors(y,C).normalize(),C.copy(y),B.copy(y).setComponent(+e+1,0).normalize(),X.crossVectors(Y,B).normalize();let k=ve===0,xe=ve===V,Ae=k?3*Math.PI/2:ae,Ye=k?pe:Ce,Re=k?Q:ge,Qe=k?0:fe-Q,be=Y.clone().multiplyScalar(k?-W:W).add(y),Ze=Y.clone().multiplyScalar(k?-1:1).normalize();for(let et=0;et<Q;et++){let mt=et*q;if(D.addVectors(m.copy(B).multiplyScalar(l*Math.cos(mt)),g.copy(X).multiplyScalar(l*Math.sin(mt))),I.copy(D).normalize(),k||xe){f||(le=Qe+et,[0,1,2].forEach(St=>{Ee[le*3+St]=be.getComponent(St),Pe[le*3+St]=Ze.getComponent(St)}),ye[le*2]=+xe,ye[le*2+1]=et/c),g.copy(I).multiplyScalar(te),v.addVectors(y,g);for(let St=0;St<d;St++){let cr=St*ae+Ae;R.addVectors(m.copy(Y).multiplyScalar(W*Math.sin(cr)),g.copy(I).multiplyScalar(W*Math.cos(cr))),F.copy(R).normalize(),g.addVectors(v,R),R.normalize(),le=Re+St*Q+et,[0,1,2].forEach(_a=>{Ee[le*3+_a]=g.getComponent(_a),Pe[le*3+_a]=F.getComponent(_a)});let cd=+k+Math.sin(cr);ye[le*2]=(Ye+W*cd)/he,ye[le*2+1]=et/c}}g.addVectors(y,D),le=de+ve*Q+et,[0,1,2].forEach(St=>{Ee[le*3+St]=g.getComponent(St),Pe[le*3+St]=I.getComponent(St)}),ye[le*2]=(K+ve*P)/he,ye[le*2+1]=et/c}}let Fe=U+2*d+ce,re=1,[Be,Le]=f?[re,re+U-1]:[0,Fe-1];for(let ve=Be;ve<=Le-1;ve++){let k=f&&ve===Le-1;for(let xe=0;xe<Q-1;xe++)w=ve*Q+xe,b=w+1,S=(k?xe:w)+Q,_=(k?xe+1:b)+Q,ve===0?Oe.push(b,_,S):ve===Fe-2?Oe.push(w,b,S):Oe.push(w,b,S,b,_,S)}this.setIndex(Oe),this.setAttribute("position",new we(Ee,3)),this.setAttribute("normal",new we(Pe,3)),this.setAttribute("uv",new we(ye,2))}};var G_=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 bh(e*.5,s,o):new nl(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:{...r,type:"IcosahedronGeometry"}})}},bh=class extends ho{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 bh(e.radius,e.corner,e.cornerSides)}};var k_=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 ri;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 Ja(i.extractPoints(n).shape,t);return s.rotateZ(Math.PI),Object.assign(s,{userData:{...r,type:"LatheGeometry"}})}};var Ui=new _e,r0=new ot,Xp=new A,fo=class extends Bt{constructor(){super(),this.uuid=ke.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 Wt().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 Ui.makeRotationX(e),this.applyMatrix4(Ui),this}rotateY(e){return Ui.makeRotationY(e),this.applyMatrix4(Ui),this}rotateZ(e){return Ui.makeRotationZ(e),this.applyMatrix4(Ui),this}translate(e,t,n){return Ui.makeTranslation(e,t,n),this.applyMatrix4(Ui),this}scale(e,t,n){return Ui.makeScale(e,t,n),this.applyMatrix4(Ui),this}lookAt(e){return r0.lookAt(e),r0.updateMatrix(),this.applyMatrix4(r0.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 A().fromBufferAttribute(s,d)),a!==void 0&&t.colors.push(new Ne().fromBufferAttribute(a,d));function c(d,f,p,m){let g=a===void 0?[]:[t.colors[d].clone(),t.colors[f].clone(),t.colors[p].clone()],y=o===void 0?[]:[new A().fromBufferAttribute(o,d),new A().fromBufferAttribute(o,f),new A().fromBufferAttribute(o,p)],v=new yc(d,f,p,y,g,m);t.faces.push(v),l!==void 0&&t.faceVertexUvs[0].push([new N().fromBufferAttribute(l,d),new N().fromBufferAttribute(l,f),new N().fromBufferAttribute(l,p)]),u!==void 0&&t.faceVertexUvs[1].push([new N().fromBufferAttribute(u,d),new N().fromBufferAttribute(u,f),new N().fromBufferAttribute(u,p)])}let h=e.groups;if(h.length>0)for(let d=0;d<h.length;d++){let f=h[d],p=f.start,m=f.count;for(let g=p,y=p+m;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(Xp).negate(),this.translate(Xp.x,Xp.y,Xp.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,n=t===0?1:1/t,i=new _e;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 A,t=new A;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 A;if(e){let n=new A,i=new A;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 fo;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 A,c={a:new A,b:new A,c:new A};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 Mt),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 Wt().getNormalMatrix(t));for(let d=0,f=a.length;d<f;d++){let m=a[d].clone();t!==void 0&&m.applyMatrix4(t),o.push(m)}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 p=u[d],m,g,y=p.vertexNormals,v=p.vertexColors,w=new yc(p.a+s,p.b+s,p.c+s);w.normal.copy(p.normal),i!==void 0&&w.normal.applyMatrix3(i).normalize();for(let b=0,S=y.length;b<S;b++)m=y[b].clone(),i!==void 0&&m.applyMatrix3(i).normalize(),w.vertexNormals.push(m);w.color.copy(p.color);for(let b=0,S=v.length;b<S;b++)g=v[b],w.vertexColors.push(g.clone());w.materialIndex=p.materialIndex+n,l.push(w)}for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,g=p.length;m<g;m++){let y=p[m],v=[];for(let w=0,b=y.length;w<b;w++)v.push(y[w].clone());this.faceVertexUvs[d].push(v)}}}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 A(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 p=this.parameters;for(let m in p)p[m]!==void 0&&(e[m]=p[m]);return e}let t=[];for(let p=0;p<this.vertices.length;p++){let m=this.vertices[p];t.push(m.x,m.y,m.z)}let n=[],i=[],s={},o=[],a={},l=[],u={};for(let p=0;p<this.faces.length;p++){let m=this.faces[p],g=!0,y=!1,v=this.faceVertexUvs[0][p]!==void 0,w=m.normal.length()>0,b=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.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,v),M=c(M,4,w),M=c(M,5,b),M=c(M,6,S),M=c(M,7,_),n.push(M),n.push(m.a,m.b,m.c),n.push(m.materialIndex),v){let x=this.faceVertexUvs[0][p];n.push(f(x[0]),f(x[1]),f(x[2]))}if(w&&n.push(h(m.normal)),b){let x=m.vertexNormals;n.push(h(x[0]),h(x[1]),h(x[2]))}if(S&&n.push(d(m.color)),_){let x=m.vertexColors;n.push(d(x[0]),d(x[1]),d(x[2]))}}function c(p,m,g){return g?p|1<<m:p&~(1<<m)}function h(p){let m=p.x.toString()+p.y.toString()+p.z.toString();return s[m]!==void 0||(s[m]=i.length/3,i.push(p.x,p.y,p.z)),s[m]}function d(p){let m=p.r.toString()+p.g.toString()+p.b.toString();return a[m]!==void 0||(a[m]=o.length,o.push(p.getHex())),a[m]}function f(p){let m=p.x.toString()+p.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(p.x,p.y)),u[m]}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 fo().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 p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,g=p.length;m<g;m++){let y=p[m],v=[];for(let w=0,b=y.length;w<b;w++){let S=y[w];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let s=e.morphTargets;for(let d=0,f=s.length;d<f;d++){let p={};if(p.name=s[d].name,s[d].vertices!==void 0){p.vertices=[];for(let m=0,g=s[d].vertices.length;m<g;m++)p.vertices.push(s[d].vertices[m].clone())}if(s[d].normals!==void 0){p.normals=[];for(let m=0,g=s[d].normals.length;m<g;m++)p.normals.push(s[d].normals[m].clone())}this.morphTargets.push(p)}let o=e.morphNormals;for(let d=0,f=o.length;d<f;d++){let p={};if(o[d].vertexNormals!==void 0){p.vertexNormals=[];for(let m=0,g=o[d].vertexNormals.length;m<g;m++){let y=o[d].vertexNormals[m],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),p.vertexNormals.push(v)}}if(o[d].faceNormals!==void 0){p.faceNormals=[];for(let m=0,g=o[d].faceNormals.length;m<g;m++)p.faceNormals.push(o[d].faceNormals[m].clone())}this.morphNormals.push(p)}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 i0().fromGeometry(this),t=new Ie,n=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new Ge(n,3).copyVector3sArray(e.vertices)),e.normals.length>0){let i=new Float32Array(e.normals.length*3);t.setAttribute("normal",new Ge(i,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let i=new Float32Array(e.colors.length*3);t.setAttribute("color",new Ge(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let i=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new Ge(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new Ge(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 we(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 we(e.skinIndices.length*4,4);t.setAttribute("skinIndex",i.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let i=new we(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 Ie,n=e.geometry;if(e.isPoints||e.isLine){let i=new we(n.vertices.length*3,3),s=new we(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 we(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}};fo.prototype.isGeometry=!0;var i0=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,p=e.skinWeights,m=f.length===n.length,g=p.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 v=t[y];this.vertices.push(n[v.a],n[v.b],n[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let b=v.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let S=v.color;this.colors.push(S,S,S)}if(s===!0){let S=i[0][y];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new N,new N,new N))}if(o===!0){let S=i[1][y];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new N,new N,new N))}for(let S=0;S<l;S++){let _=a[S].vertices;u[S].data.push(_[v.a],_[v.b],_[v.c])}for(let S=0;S<h;S++){let _=c[S].vertexNormals[y];d[S].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),g&&this.skinWeights.push(p[v.a],p[v.b],p[v.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}},yc=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 A,this.vertexNormals=Array.isArray(i)?i:[],this.color=s&&s.isColor?s:new Ne,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 tG=["a","b","c"];function nG(r,e){switch(e){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function s0(r,e,t){let n=Math.min(r,e),i=Math.max(r,e),s=n+"_"+i;return t.get(s)}function o0(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 rG(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],o0(o.a,o.b,r,n,o,t),o0(o.b,o.c,r,n,o,t),o0(o.c,o.a,r,n,o,t)}function Yp(r,e,t,n,i){r.push(new yc(e,t,n,void 0,void 0,i))}function vc(r,e){return Math.abs(e-r)/2+Math.min(r,e)}function Qp(r,e,t,n){r.push([e.clone(),t.clone(),n.clone()])}var Zp=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof Ie?e=new fo().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 A,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;rG(l,u,d,f);let p=[],m,g,y,v,w,b,S;for(let $ of Array.from(f.keys())){for(g=f.get($),y=new A,w=3/8,b=1/8,S=g.faces.length,S!=2&&(w=.5,b=0,S!=1),y.addVectors(g.a,g.b).multiplyScalar(w),t.set(0,0,0),o=0;o<S;o++){for(v=g.faces[o],a=0;a<3&&(m=l[nG(v,tG[a])],!(m!==g.a&&m!==g.b));a++);m&&t.add(m)}t.multiplyScalar(b),y.add(t),g.newEdge=p.length,p.push(y)}let _,M,x,T,E,C,D,I=[];for(i=0,s=l.length;i<s;i++){for(C=l[i],E=d[i].edges,n=E.length,n==3?_=3/16:n>3&&(_=3/(8*n)),M=1-n*Number(_),x=_,n<=2&&(n==2?(M=3/4,x=1/8):n==1||n==0),D=C.clone().multiplyScalar(M),t.set(0,0,0),o=0;o<n;o++)T=E[o],m=T.a!==C?T.a:T.b,t.add(m);t.multiplyScalar(Number(x)),D.add(t),I.push(D)}let R=I.concat(p),F=I.length,B,X,Y,G=[],z=[],V,U,H,j,Q=new N,q=new N,ae=new N;for(i=0,s=u.length;i<s;i++)v=u[i],B=Number(s0(v.a,v.b,f).newEdge)+F,X=Number(s0(v.b,v.c,f).newEdge)+F,Y=Number(s0(v.c,v.a,f).newEdge)+F,Yp(G,B,X,Y,v.materialIndex),Yp(G,v.a,B,Y,v.materialIndex),Yp(G,v.b,X,B,v.materialIndex),Yp(G,v.c,Y,X,v.materialIndex),h&&(V=c[i],U=V[0],H=V[1],j=V[2],Q.set(vc(U.x,H.x),vc(U.y,H.y)),q.set(vc(H.x,j.x),vc(H.y,j.y)),ae.set(vc(U.x,j.x),vc(U.y,j.y)),Qp(z,Q,q,ae),Qp(z,U,Q,ae),Qp(z,H,q,Q),Qp(z,j,ae,q));e.vertices=R,e.faces=G,h&&(e.faceVertexUvs[0]=z)}};var _n=new A,V_=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){let t=r.geometry??e?.geometry??new Ie().copy(new ur(100,100,100)),n;e===void 0?(t.computeBoundingBox(),t.boundingBox.getSize(_n),n={width:_n.x,height:_n.y,depth:_n.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 Ie().copy(new ur(100,100,100)),o=s.userData.parameters;o===void 0?(s.computeBoundingBox(),s.boundingBox.getSize(_n)):_n.set(o.width,o.height,o.depth),(e!==_n.x||t!==_n.y||n!==_n.z)&&s.scale(_n.x===0?1:e/_n.x,_n.y===0?1:t/_n.y,_n.z===0?1:n/_n.z);let a=s.originalGeometry;return i>0?(a===void 0||o?.subdivisions!==i)&&(a===void 0&&(a=s),s=new Zp(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 al(t).load(r,i=>{let s=this.normalizeInputs({geometry:i});i.boundingBox.getSize(_n);let o=100/_n.x;Object.assign(s.parameters,{width:100,height:_n.y*o,depth:_n.z*o}),e(this.build(s))})}};var H_=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 bt?r.shape:new bt,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 m=0;m<n;m++){let g=f*m,y=h+Math.sin(g)*u,v=d+Math.cos(g)*c;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let m=0,g=l.points.length;m<g;m++)l.points[m].roundness=i;l.roundness=i,l.update();let p=or.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...r,type:"PolygonGeometry"}})}};var W_=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 l0(e*.5,t,i,s,o,a,l);return u.scale(1,1,n/e),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function wh(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function a0(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 iG(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.projectOnVector(i),n.add(e)}var l0=class extends Ie{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,p=Math.PI/n,m=e*Math.cos(Math.PI/n),g=2*Math.PI/n,y=(n-2)*Math.PI/n,v=Math.PI-y,w=new A(0,-f,0),b=new A(0,f,0),S=new N(e,-f),_=new N(m,-f),M=new N(0,b.y).sub(_),x=new N(0,b.y).sub(S),T=new N(M.y,-M.x).normalize(),E=new N(x.y,-x.x).normalize(),D=e*Math.cos(Math.PI/n)*Math.tan((Math.PI-M.angle())/2)-1e-8;o=Math.min(o,D);let I;{let z=new A(T.x,T.y,0),V=new A(Math.cos(g)*z.x,z.y,Math.sin(g)*z.x);I=z.angleTo(V)}let R=o/Math.tan((Math.PI-M.angle())/2),F=o/Math.tan((Math.PI-I)/2),B=new A;if(!s){u.push(w.x,w.y,w.z),c.push(0,-1,0),h.push(0,0);let z=d++,V=[],U=S.clone(),H=R/Math.cos(Math.PI/n);U.x-=H;for(let j=0;j<n;j++){let Q=j/n*Math.PI*2+p,q=new N(Math.sin(Q),Math.cos(Q));wh(U,q,B),u.push(B.x,B.y,B.z),c.push(0,-1,0),h.push(0,0),V.push(d++)}for(let j=0;j<V.length;j++)l.push(V[j],z,V[(j+1)%V.length])}let X=[];{let z=new A,V=new A,U=new A,H=new A,j=new A,Q=new A;for(let q=0;q<n;q++){let ae=q/n*Math.PI*2+p,$=(q+.5)/n*Math.PI*2+p,te=(q+1)/n*Math.PI*2+p,W=new N(Math.sin(ae),Math.cos(ae)),le=new N(Math.sin($),Math.cos($)),ce=new N(Math.sin(te),Math.cos(te));wh(S,W,V),wh(S,ce,U),wh(T,le,z),a0(b,V,U,F,F,H),u.push(H.x,H.y,H.z),a0(V,b,U,F,R,j),u.push(j.x,j.y,j.z),a0(U,V,b,R,F,Q),u.push(Q.x,Q.y,Q.z),c.push(z.x,z.y,z.z),c.push(z.x,z.y,z.z),c.push(z.x,z.y,z.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 Pe=V.clone().add(U).multiplyScalar(.5),ye=b.clone().sub(Pe).normalize(),pt=w.clone().sub(Pe).normalize().add(ye).normalize().multiplyScalar(-1),L=Q.clone().sub(j);Y(Pe,L,pt,M.angle())}let fe,Ee;{let Pe=new A;wh(E,ce,Pe);let ye=Q.clone().add(H).multiplyScalar(.5);ye=iG(ye,U,b);let Oe=Q.clone().sub(H);[fe,Ee]=Y(ye,Oe,Pe,I,H.y)}{let Pe=fe,ye=Pe.clone().setY(0).normalize(),Oe=new A(0,-1,0),pt=ye.clone().cross(Oe);G(Pe,ye,Oe,pt)}X.concat(Ee);{let Pe=M.angle(),ye=Math.PI-Pe,Oe=b.clone();Oe.y-=o/Math.sin(Pe-Math.PI/2);let pt=new A,L=[];for(let K=0;K<a;K++){let he=[],pe=Math.PI/2-ye*K/a,Ce=Math.cos(pe),Fe=Math.sin(pe),re=$;for(let Be=0;Be<=K;Be++){let Le=Math.cos(re),ve=Math.sin(re);z.x=Ce*ve,z.y=Fe,z.z=Ce*Le,pt.copy(Oe).addScaledVector(z,o),u.push(pt.x,pt.y,pt.z),c.push(z.x,z.y,z.z),h.push(0,0),he.push(d++),re+=Math.PI*2/K/n}L.push(he)}Ee.reverse(),L.push(Ee);let P=L.length-1;for(let K=0;K<P;K++){let he=L[K],pe=L[K+1],Ce=he.length-1;l.push(pe[1],he[0],pe[0]);for(let Fe=1;Fe<=Ce;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 we(u,3)),this.setAttribute("normal",new we(c,3)),this.setAttribute("uv",new we(h,2));function Y(z,V,U,H,j){let Q=-H/2,q=(Math.PI-H)/2,ae=V.clone().normalize().cross(U);z.addScaledVector(U,-o/Math.sin(q));let $=new A,te=new A,W=1,le=d,ce=[];for(let oe=0;oe<=a;oe++){let de=Q+oe/a*H;te.set(0,0,0),te.addScaledVector(ae,Math.sin(de)),te.addScaledVector(U,Math.cos(de));for(let ge=0;ge<=W;ge++){let fe=ge/W-.5;if($.copy(z),$.addScaledVector(V,fe),$.addScaledVector(te,o),j!=null){let Ee=Math.max(0,$.y-j);$.addScaledVector(V,-Ee/V.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<W;de++){let ge=le+de+(W+1)*oe,fe=ge+(W+1),Ee=fe+1,Pe=ge+1;l.push(ge,fe,Pe),l.push(fe,Ee,Pe)}return[z.clone().addScaledVector(V,.5),ce]}function G(z,V,U,H){let j=Math.PI/2,Q=x.angle()-j,q=[],ae=new A,$=new A;for(let W=0;W<=a;W++){let le=[],ce=W/a;for(let oe=0;oe<=W;oe++){let ge=((W?oe/W:0)-.5)*v,fe=Math.cos(ge),Ee=Math.sin(ge),Pe=Math.atan(Math.tan(Q)*fe),ye=(j+Pe)*ce,Oe=Math.cos(ye),pt=Math.sin(ye);ae.set(0,0,0),ae.addScaledVector(V,pt*fe),ae.addScaledVector(U,Oe),ae.addScaledVector(H,pt*Ee),$.copy(z).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 W=0;W<te;W++){let le=q[W],ce=q[W+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 j_=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 bt?r.shape:new bt,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,S,_){return S>t&&_>n?Math.min(b*t/S,b*n/_):S>t?b*t/S:_>n?b*n/_: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 p=c.x,m=h.x,g=h.y,y=c.y;e.addPoint(e.createPoint(p,g)),e.addPoint(e.createPoint(m,g)),e.addPoint(e.createPoint(m,y)),e.addPoint(e.createPoint(p,y)),e.isClosed=!0;let v=!0;for(let b=0,S=e.points.length;b<S;b++)e.points[b].roundness=f[b],b>0&&f[b]!==f[b-1]&&(v=!1);v&&(e.roundness=f[0]),e.useCubicForRoundedCorners=s!==1,e.update();let w=or.create({shape:e,parameters:{depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...r,type:"RectangleGeometry"}})}};var q_=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 ko(.5*e,i,s,o,a,l,u);return c.scale(1,t/e,n/e),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};var X_=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 us(e,t,n,i);return s.scale(1,1,1),Object.assign(s,{userData:{...r,type:"PlaneGeometry"}})}};var Y_=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 c0(e,t,n,i,s,o);return Object.assign(a,{userData:{...r,type:"BackdropGeometry"}})}},c0=class extends Ie{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,W=0)=>new A($,te,W),p=f(),m=f(),[g,y,v]=[t/2,e/2,n/2],w=-y,b=+y,[S,_,M]=[f(w,-g,+v),f(w,-g,-v),f(w,+g,-v)],x=($,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-v,C=S.z-c;i<=d?(M.z=Math.min(E,C),M.z==C&&(M.y-=(E-C)/Math.tan(d-i))):_.z=Math.min(_.z-E-v,S.z-c),p.subVectors(S,_),m.subVectors(M,_);let D=Math.min(p.length(),m.length())*s/100,I=D*Math.tan(i/2),R=D/Math.cos(i/2),F=p.clone().normalize().add(m.normalize()).setLength(R).add(_);p.set(0,x(i,!0),T(i,!0)),h.push([M,p.clone()]);let B=(Math.PI-i)/o;for(let $=0;$<=o;$++){let te=d+i+$*B;p.set(0,Math.sin(te)*I,Math.cos(te)*I),p.add(F),m.set(0,x(te),T(te)),h.push([p.clone(),m.clone()])}h.push([S,f(0,1,0)]);let X=Math.sin(B/2)*I*2,Y=h.length-1,G=h[0][0].distanceTo(h[1][0]),z=h[Y-1][0].distanceTo(h[Y][0]),V=G+X*o+z;h[0].push(1);for(let $=0;$<=o;$++)h[$+1].push(1-(G+$*X)/V);h[Y].push(0);let[U,H,j]=h[0],Q,q,ae;for(let $=1;$<h.length;$++)[Q,q,ae]=h[$],a.push(w,U.y,U.z,w,Q.y,Q.z,b,U.y,U.z,b,U.y,U.z,w,Q.y,Q.z,b,Q.y,Q.z),l.push(0,H.y,H.z,0,q.y,q.z,0,H.y,H.z,0,H.y,H.z,0,q.y,q.z,0,q.y,q.z),u.push(0,j,0,ae,1,j,1,j,0,ae,1,ae),[U,H,j]=[Q,q,ae];this.setAttribute("position",new we(a,3)),this.setAttribute("normal",new we(l,3)),this.setAttribute("uv",new we(u,2))}};var Q_=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 bt?r.shape:new bt,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,p=0,m=o*Math.PI/360/i,g=Math.PI/2*3*-1,y=h*n/100,v=d*n/100;if(i===3&&n===50){m=2*Math.PI/i;for(let b=0;b<i;b++){let S=m*b,_=f+Math.sin(S)*h,M=p+Math.cos(S)*d;c.addPoint(c.createPoint(_,M))}}else for(let b=0;b<i;b++){let S=f+Math.cos(g)*h,_=p+Math.sin(g)*d;c.addPoint(c.createPoint(S,_)),g+=m,S=f+Math.cos(g)*y,_=p+Math.sin(g)*v,b<=i,c.addPoint(c.createPoint(S,_)),g+=m}c.isClosed=!0;for(let b=0,S=c.points.length;b<S;b++)c.points[b].roundness=s;c.roundness=s,c.update();let w=or.create({shape:c,parameters:{roundness:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...r,type:"StarGeometry"}})}};var Kp=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 us(e,t);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var Z_=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=sG(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 sG(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 xh(!0,r,e,t,n,i,s,o,a,l,u,c)}var K_=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 il(a,t,n,i,s,o);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var J_=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 bt?r.shape:new bt,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=or.create({shape:l,parameters:{roundness:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o}});return Object.assign(h,{userData:{...r,type:"TriangleGeometry"}})}};var eM,Jp=new Promise(r=>{eM=r}),$_=!1;async function tM(){if($_)return;let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.113/build",[t,n]=await Promise.all([import("./process.js"),fetch(`${e}/process.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:n});eM(s),$_=!0}function $p(r,e){return aG(r)}function aG(r){let e={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=bt.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 al().parse(r));let t;try{t=Sh(e)}catch(n){console.error(n)}if(!t){let n=bt.createFromState(jl.defaultData(),100,100);e.shape=n,t=Sh(e)}return t}var je;Jp.then(r=>{je=r});var nM=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),rM=new Uint32Array([0,1,2,3]),iM=new Uint8Array([4]),Xr=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&&(je.free_bvh(t),je.free_subdivision_surface(t));try{s=Xr.allocate(r,i)}catch(u){console.error(u,r),s=Xr.allocate({positionWASM:nM,indexWASM:rM,verticesPerFaceWASM:iM},i)}je.set_destination_refinement_level(s,0),o=Xr.buildLevel(s,!0,l)}else s=t,r.phongAngle!==void 0&&(o=Xr.buildLevel(s,!0,l));return r.subdivisions!==void 0&&(je.set_destination_refinement_level(s,r.subdivisions),r.subdivisions>0?a=Xr.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:$p(r),n,i,s,o;({positions:n,triIndices:o}=Ah(t.getAttribute("position"),t.getIndex()));let a;if(r.type==="CylinderGeometry"&&r.cornerRadius===0&&r.hollow===0&&r.openEnded===!1){let l=r.radialSegments*r.heightSegments*3*2,u=l+r.radialSegments*3;a=[l,u]}return{indices:i,verticesPerFace:s}=f0(n,o,t,a),{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=nM,n=rM,i=iM);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,p=h*Uint32Array.BYTES_PER_ELEMENT,m=je._malloc(d),g=new Float32Array(je.HEAPF32.buffer,m,c),y=new Uint32Array(je.HEAPU32.buffer,m+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 v;r?.scaleBaked?.some(b=>b!==1)&&(v=new _e().makeScale(...r.scaleBaked)),e&&(v?v.premultiply(e):v=e);let w=v?je.alloc_subdivision_surface2(m,a,m+f,l,m+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u,v.elements):je.alloc_subdivision_surface(m,a,m+f,l,m+f+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return je._free(m),w}static buildLevel(r,e,t,n,i){let s=i?je.get_mesh_data2(r,e?je.Level.CONTROL:je.Level.REFINED,t,i.elements):je.get_mesh_data(r,e?je.Level.CONTROL:je.Level.REFINED,t),o=8,a=je.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),u=0,c=je.HEAPU32[a[u]>>2],h=je.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let d=je.HEAPU32[a[u]>>2],f=je.HEAPF32.subarray(d>>2,(d>>2)+l[u]);u++;let p=je.HEAPU32[a[u]>>2],m=je.HEAPU32.subarray(p>>2,(p>>2)+l[u]);u++;let g=je.HEAPU32[a[u]>>2],y=je.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let v=new Ie;if(v.setIndex(new zs(y,1)),v.setAttribute("position",new we(h,3)),v.setAttribute("normal",new we(f,3)),e){v.setAttribute("faceMap",new zs(m,1));let w=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new Ge(w,4))}return je.free_mesh_data(s),v.userData.type="SubdivGeometry",v}n.getAttribute("position").copyArray(h),n.getAttribute("normal").copyArray(f),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,je.free_mesh_data(s)}static buildControlCageWireframe(r,e,t){let n=je.get_wireframe_data_for_base_level(r),i=4,s=je.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(2,2+2),a=0,l=je.HEAPU32[s[a]>>2],u=je.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let c=je.HEAPU32[s[a]>>2],h=je.HEAPU32.subarray(c>>2,(c>>2)+o[a]);if(e===void 0){let d=new Ie;d.setAttribute("position",new we(u,3));let f=new Float32Array(u.length);for(let p=0,m=u.length;p<m;)f[p++]=t.r,f[p++]=t.g,f[p++]=t.b;return d.setAttribute("color",new Ge(f,3)),d.setIndex(new zs(h,1)),je.free_wireframe_data_for_base_level(n),d}e.getAttribute("position").copyArray(u),e.attributes.position.needsUpdate=!0,je.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,e,t){let n=e===0;n||je.set_destination_refinement_level(r,e);let i=t?je.get_topological_data2(r,n?je.Level.CONTROL:je.Level.REFINED,t.elements):je.get_topological_data(r,n?je.Level.CONTROL:je.Level.REFINED),s=6,o=je.HEAPU32.subarray(i>>2,(i>>2)+s),a=o.subarray(3,3+3),l=0,u=je.HEAPU32[o[l]>>2],c=new Float32Array(je.HEAPF32.subarray(u>>2,(u>>2)+a[l]));l++;let h=je.HEAPU32[o[l]>>2],d=new Uint32Array(je.HEAPU32.subarray(h>>2,(h>>2)+a[l]));l++;let f=je.HEAPU32[o[l]>>2],p=new Uint8Array(je.HEAPU32.subarray(f>>2,(f>>2)+a[l]));return je.free_topological_data(i),{positions:c,indices:d,verticesPerFace:p}}};var sM=["getX","getY","getZ"];function Ah(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[sM[d]](c)*a)},`;if(h in t)s.push(t[h]);else{for(let d=0;d<3;d++)o.push(r[sM[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 em=new A,u0=new A,h0=new A,d0=new A;function f0(r,e,t,n){let i=[],s=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0&&t.userData.shape.shapeHoles.length===0){let o=t.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let u=0;u<o.length;u+=2)a+=(o[u]-o[(u===0?o.length:u)-2])*(o[u+1]+o[(u===0?o.length:u)-1]);r.length=0;let l=0;if(a<0)for(let u=0;u<o.length;u+=2)r.push(o[u],o[u+1],0),i.push(l++);else for(let u=o.length-2;u>=0;u-=2)r.push(o[u],o[u+1],0),i.push(l++);return s.push(l),{indices:i,verticesPerFace:s}}for(let o=0,a=t.capStartIndex??e.length;o<a;)if(e[o+1]===e[o+3]&&e[o+2]===e[o+5]||e[o+0]===e[o+3]&&e[o+2]===e[o+4]){em.set(r[e[o]*3],r[e[o]*3+1],r[e[o]*3+2]),u0.set(r[e[o+1]*3],r[e[o+1]*3+1],r[e[o+1]*3+2]),h0.set(r[e[o+4]*3],r[e[o+4]*3+1],r[e[o+4]*3+2]),d0.set(r[e[o+5]*3],r[e[o+5]*3+1],r[e[o+5]*3+2]),u0.sub(em).normalize(),h0.sub(em).normalize(),d0.sub(em).normalize();let l=u0.cross(h0).dot(d0);Math.abs(l)>.005||n&&n.some((u,c)=>c%2===1?!1:o>=n[c]&&o<n[c+1])?(i.push(e[o],e[o+1],e[o+2]),s.push(3),o+=3):(i.push(e[o],e[o+1],e[o+4],e[o+5]),s.push(4),o+=6)}else i.push(e[o],e[o+1],e[o+2]),s.push(3),o+=3;if(t.capStartIndex!==void 0){let o=[],a=[],l=0,u=new Float32Array([t.userData.parameters.depth])[0];for(let c=0,h=0;c<r.length;c+=3,h++)r[c+2]===0&&(o.push(h),l++),r[c+2]===u&&a.push(h);if(t.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}o.reverse(),i.push(...o,...a),s.push(l,l)}return{indices:i,verticesPerFace:s}}var di={};Mx(di,{calcBoolean:()=>uG,calcBooleanTopological:()=>cG,freeMeshSet:()=>fG,getMeshSet:()=>hG,transformMeshSet:()=>dG});var aM,lM=new Promise(r=>{aM=r}),oM=!1;async function cM(){if(oM)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.113/build",[t,n]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:n});aM(s),oM=!0}var it,xc;lM.then(r=>it=r);function lG(r,e,t){let n,{positions:i,triIndices:s}=Ah(r.getAttribute("position"),r.getIndex()),o;if(e&&t){let{indices:a,verticesPerFace:l}=f0(i,s,r);o=l.length,n=[];for(let u=0,c=0;u<o;u++){n.push(l[u]);for(let h=0;h<l[u];h++)n.push(a[c++])}}else{let a=s.length;n=Array(a+a/3),o=0;for(let l=0,u=0;u<n.length;)n[u++]=3,o++,n[u++]=s[l++],n[u++]=s[l++],n[u++]=s[l++]}return{positions:i,faceIndices:n,nFaces:o}}function uM(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 hM(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 cG(r,e){xc===void 0&&(xc=it.init_csg());let t=uM(r),n=it.csg_calc_topological(xc,t,r.length,hM(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 uG(r,e,t,n){xc===void 0&&(xc=it.init_csg());let i=uM(r),s=it.csg_calc(xc,i,r.length,n,hM(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 p=l[u];t.setAttribute("position",new we(h,3)),t.setAttribute("normal",new we(f,3));let m=it.HEAPF32.subarray((s>>2)+5,(s>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Ln),t.boundingSphere.center.set(m[0],m[1],m[2]),t.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,t.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},it.free_mesh_data(s),p}function hG(r,e,t){if(it===void 0)return-1;let n,i,s;if(e&&r.userData.positions!==void 0){let g=r.userData;s=g.verticesPerFace.length,n=g.positions,i=Array(g.verticesPerFace.reduce((y,v)=>y+v,0)+s);for(let y=0,v=0,w=0;y<g.verticesPerFace.length;y++){i[w++]=g.verticesPerFace[y];for(let b=0;b<g.verticesPerFace[y];b++)i[w++]=g.indices[v++]}}else({positions:n,faceIndices:i,nFaces:s}=lG(r,e,t));let o=n.length,a=i.length,l=n.length,u=i.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,h=l*Float32Array.BYTES_PER_ELEMENT,d=u*Uint32Array.BYTES_PER_ELEMENT,f=it._malloc(c),p=new Float32Array(it.HEAPF32.buffer,f,l),m=new Uint32Array(it.HEAPU32.buffer,f+h,u);return p.set(n,0),m.set(i,0),it.get_csg_mesh(f,o,f+h,a,s)}function dG(r,e){it.transform_csg_mesh(r,e.elements)}function fG(r){it.free_csg_mesh(r)}var p0={ConeGeometry:C_,CubeGeometry:P_,CylinderGeometry:E_,DodecahedronGeometry:D_,EllipseGeometry:B_,HelixGeometry:z_,IcosahedronGeometry:G_,LatheGeometry:k_,NonParametricGeometry:V_,PolygonGeometry:H_,PyramidGeometry:W_,RectangleGeometry:j_,SphereGeometry:q_,PlaneGeometry:X_,BackdropGeometry:Y_,StarGeometry:Q_,TextFrameGeometry:Kp,TorusGeometry:Z_,TorusKnotGeometry:K_,TriangleGeometry:J_,VectorGeometry:or},Sh=r=>p0[r.type].create(r);function fn(r,e){return e.color(r)}var Yr=r=>"isEntity"in r,vt=r=>"isAbstractMesh"in r,Et=r=>r!==null&&r.objectType==="BooleanObject",dM=r=>r.objectType==="CombinedCamera",fM=r=>Yr(r)&&(r.objectType==="LightDirectional"||r.objectType==="LightSpot"||r.objectType==="LightPoint");var m0=r=>r.objectType==="EmptyObject",tm=r=>"objectHelper"in r;function g0(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??Pi.identity)),t&&(r.updateMatrix(),Et(r.parent)&&vt(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 pG(r,e){g0(r,e),e.name!==void 0&&(r.name=e.name),e.visible!==void 0&&(r.visible=e.visible)}function pM(r,e,t){pG(r,e),e.color!==void 0&&(r.color=fn(e.color,t)),e.intensity!==void 0&&(r.intensity=e.intensity),e.shadows!==void 0&&!(r instanceof Wo)&&(r.castShadow=e.shadows),r.shadow&&!(r instanceof Wo)&&e.depth!==void 0&&(r.shadow.camera.far=e.depth,r.shadow.needsUpdate=!0)}function mM(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 nm=r=>class extends r{hasEntityChild(){return this.children.some(t=>Yr(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 _e().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),Yr(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 bc=new Mt,zi=new A,Gi=new A,wc=new _e,yM=[new A(-1,1,1),new A(-1,-1,1),new A(1,-1,1),new A(1,1,1),new A(-1,1,-1),new A(-1,-1,-1),new A(1,-1,-1),new A(1,1,-1)],mG=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],gG=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function yG(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 gM=(r,e,t)=>{if(vt(r)){let n=r.geometry.userData.parameters,i=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?zi.copy(r.originalGeometry.boundingSphere.center):i!==void 0&&(yG(bc,i,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:i.count),bc.getCenter(zi)),r.forceComputeSize?bc.getSize(Gi).multiplyScalar(.5):Gi.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(tm(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");bc.setFromArray(n.array),bc.getCenter(zi),bc.getSize(Gi).multiplyScalar(.5)}else zi.setScalar(0),Gi.setScalar(0);wc.copy(e).multiply(r.matrixWorld),Gi.x===0&&Gi.y===0&&Gi.z===0?t.push(new A(zi.x,zi.y,zi.z).applyMatrix4(wc)):yM.forEach(n=>{t.push(n.clone().multiply(Gi).add(zi).applyMatrix4(wc))})},_h=class extends Mt{constructor(){super(...arguments);this.matrix=new _e;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 _e().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&&gM(o,n,s)}):gM(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(wc.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(Gi).multiplyScalar(.5),this.getCenter(zi),wc.copy(this.matrix).setPosition(zi),this.vertices=yM.map(t=>t.clone().multiply(Gi).applyMatrix4(wc))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=mG.map(([t,n])=>new xn(this.vertices[t],this.vertices[n])),this.centerEdges=this.edges.map(t=>t.getCenter(new A))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=gG.map(([t,n])=>this.vertices[t].clone().add(this.vertices[n]).multiplyScalar(.5))}};var ki=r=>"isEntity"in r,vM=r=>"isAbstractMesh"in r,Qr=r=>class extends nm(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new _e;this._singleBBox=new _h;this._recursiveBBox=new _h;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=>{ki(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)ki(i)&&i.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let i of this.children)ki(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)ki(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let n=new _e,i=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(i);for(let s of this.children)ki(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 Ul(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 Ul(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 Mh=class{constructor(e){e=e??{},this.name=e.name,this.type=e.type,this.node=e.node,this.size=e.size,this.needsUpdate=e.needsUpdate}get value(){return this.node.value}set value(e){this.node.value=e}};var Nn=class{constructor(e){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=ke.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 Nn&&(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 y0=class{constructor(){this.nodes={};this.keywords={}}add(e){this.nodes[e.name]=e}addKeyword(e,t,n){n=n!==void 0?n:!0,this.keywords[e]={callback:t,cache:n}}remove(e){delete this.nodes[e.name]}removeKeyword(e){delete this.keywords[e]}get(e){return this.nodes[e]}getKeyword(e,t){return this.keywords[e].callback(t)}getKeywordData(e){return this.keywords[e]}contains(e){return this.nodes[e]!==void 0}containsKeyword(e){return this.keywords[e]!==void 0}},Mn=new y0;var ze=class extends Nn{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=ke.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 It=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 Fn=class extends It{constructor(t=0,n){super("v2");this.nodeType="Vector2";this.value=t instanceof N?t:new N(t,n)}get x(){return this.value.x}set x(t){this.value.x=t}get y(){return this.value.y}set y(t){this.value.y=t}generateReadonly(t,n,i,s,o,a){return t.format("vec2("+this.value.x+", "+this.value.y+")",s,n)}};var Vn=class extends It{constructor(t=0,n,i){super("v3");this.nodeType="Vector3";this.value=t instanceof A?t:new A(t,n,i)}get x(){return this.value.x}set x(t){this.value.x=t}get y(){return this.value.y}set y(t){this.value.y=t}get z(){return this.value.z}set z(t){this.value.z=t}generateReadonly(t,n,i,s,o,a){return t.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",s,n)}};var Tn=class extends Ne{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 Zr=class extends It{constructor(t){super("v4");this.nodeType="Vector4";this.value=t instanceof Tn?t:new Tn(t.r,t.g,t.b,t.a)}generateReadonly(t,n,i,s,o,a){return t.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",s,n)}};var vG=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,xM=/[a-z_0-9]+/gi,Me=class extends ze{constructor(t,n,i,s,o){super(o);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=o===void 0,this.isInterface=!1,this.parse(t,n,i,s)}getShared(t,n){return!this.isMethod}getType(t){return t.getTypeByFormat(this.type)}getInputByName(t){if(this.inputs){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===t)return this.inputs[n]}}getIncludeByName(t){if(this.includes){let n=this.includes.length;for(;n--;)if(this.includes[n].name===t)return this.includes[n]}}generate(t,n,i,s,o){let a,l=0,u=this.src;if(this.includes)for(let h=0;h<this.includes.length;h++)t.include(this.includes[h],this);for(let h in this.extensions)t.extensions[h]=!0;let c=[];for(;a=xM.exec(this.src);)c.push(a);for(let h=0;h<c.length;h++){let d=c[h],f=d[0],p=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&p&&Mn.containsKeyword(f)){let g=this.keywords[f];if(!g){let y=Mn.getKeywordData(f);y.cache&&(g=t.keywords[f]),g=g||Mn.getKeyword(f,t),y.cache&&(t.keywords[f]=g)}m=g.build(t)}f!==m&&u[d.index+l-1]!=="."&&(u=u.substring(0,d.index+l)+m+u.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Mn.contains(m)&&t.include(Mn.get(m))}return n==="source"?u:this.isMethod?(this.isInterface||t.include(this,void 0,u),this.name):t.format("( "+u+" )",this.getType(t),n)}parse(t,n,i,s){if(this.src=t||"",this.includes=n??[],this.extensions=i??{},this.keywords=s??{},this.isMethod){let o=vG.exec(this.src);if(this.inputs=[],o&&o.length==4){this.type=o[1],this.name=o[2];let a=o[3].match(xM);if(a){let l=0;for(;l<a.length;){let u=a[l++],c;u==="in"||u==="out"||u==="inout"?c=a[l++]:(c=u,u="");let h=a[l++];this.inputs.push({name:h,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var xG=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,v0=class extends ze{constructor(t="",n){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(t||v0.PI,void 0,void 0,void 0,n)}getType(t){return t.getTypeByFormat(this.type)}parse(t,n,i,s,o){this.src=t||"";let a,l,u="",c=xG.exec(t);this.useDefine=o??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],a=c[2],u=c[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=u}build(t,n){if(n==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return t.include(this),t.format(this.name,this.getType(t),n)}generate(t,n,i,s,o){return t.format(this.name,this.getType(t),n)}},ht=v0;ht.PI="PI",ht.PI2="PI2",ht.RECIPROCAL_PI="RECIPROCAL_PI",ht.RECIPROCAL_PI2="RECIPROCAL_PI2",ht.LOG2="LOG2",ht.EPSILON="EPSILON";var bG=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
3138
3138
|
)*?)}`,"gim"),wG=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Sc=class extends ze{constructor(t=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(t)}getType(t){return t.getTypeByFormat(this.name)}getInputByName(t){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===t)return this.inputs[n]}generate(t,n,i,s,o){return n==="source"?this.src+";":t.format("( "+this.src+" )",this.getType(t),n)}parse(t=""){this.src=t,this.inputs=[];let n=bG.exec(t);if(n){let i=n[2],s;for(;s=wG.exec(i);)this.inputs.push({type:s[1],name:s[2]});this.name=n[1]}else this.name="";this.type=this.name}};var Ac=class extends ze{constructor(t){super("v2",{shared:!1});this.nodeType="UV";this.index=t??0}generate(t,n){t.requires.uv[this.index]=!0;let i=this.index>0?this.index+1:"",s=t.isShader("vertex")?"uv"+i:"vUv"+i;return t.format(s,this.getType(t),n)}};Mn.addKeyword("uv",function(){return new Ac});Mn.addKeyword("uv2",function(){return new Ac(1)});var ha=class extends ze{constructor(t,n){super("v4");this.nodeType="ColorSpace";this.input=t,this.method=n??ha.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(t){switch(t){case Er:return["Linear"];case qe:return["sRGB"];default:return[]}}generate(t,n){let i=this.input.build(t,"v4"),s=this.getType(t),o=ha.Nodes[this.method],a=t.include(o);if(a===ha.LINEAR_TO_LINEAR)return t.format(i,s,n);if(o.inputs?.length===2){let l=this.factor.build(t,"f");return t.format(a+"( "+i+", "+l+" )",s,n)}else return t.format(a+"( "+i+" )",s,n)}fromEncoding(t){let n=ha.getEncodingComponents(t);this.method="LinearTo"+n[0],this.factor=n[1]}fromDecoding(t){let n=ha.getEncodingComponents(t);this.method=n[0]+"ToLinear",this.factor=n[1]}},ar=ha;ar.Nodes={LinearToLinear:new Me(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
3139
3139
|
`)),sRGBToLinear:new Me(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
3140
3140
|
`)),LinearTosRGB:new Me(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|