@splinetool/loader 1.11.9 → 1.12.1

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.
@@ -1,6 +1,6 @@
1
- var fw=Object.create;var Yl=Object.defineProperty;var hw=Object.getOwnPropertyDescriptor;var mw=Object.getOwnPropertyNames;var yw=Object.getPrototypeOf,gw=Object.prototype.hasOwnProperty;var xw=(i,t,e)=>t in i?Yl(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var Ds=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),bw=(i,t)=>{for(var e in t)Yl(i,e,{get:t[e],enumerable:!0})},vw=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mw(t))!gw.call(i,o)&&o!==e&&Yl(i,o,{get:()=>t[o],enumerable:!(r=hw(t,o))||r.enumerable});return i};var _s=(i,t,e)=>(e=i!=null?fw(yw(i)):{},vw(t||!i||!i.__esModule?Yl(e,"default",{value:i,enumerable:!0}):e,i));var Ki=(i,t,e)=>(xw(i,typeof t!="symbol"?t+"":t,e),e);var c0=Ds((qp,l0)=>{(function(i,t){typeof qp=="object"?l0.exports=t():typeof define=="function"&&define.amd?define(t):i.Alea=t()})(qp,function(){"use strict";return i.importState=function(e){var r=new i;return r.importState(e),r},i;function i(){return function(e){var r=0,o=0,n=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),n=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),n-=s(e[l]),n<0&&(n+=1);s=null;var c=function(){var u=2091639*r+a*23283064365386963e-26;return r=o,o=n,n=u-(a=u|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[r,o,n,a]},c.importState=function(u){r=+u[0]||0,o=+u[1]||0,n=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=function(o){o=o.toString();for(var n=0;n<o.length;n++){e+=o.charCodeAt(n);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return r.version="Mash 0.9",r}})});var m0=Ds((hu,h0)=>{(function(i,t){typeof hu=="object"&&typeof h0<"u"?t(hu):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(hu,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,f,h,m,y,b,v=t[0].length,w=t.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],T=[],M=e==="f"?w:v,g=m=d=0;g<w;g++)S[g]=new Array(M).fill(0);for(g=0;g<v;g++)T[g]=new Array(v).fill(0);var D,N=new Array(v).fill(0);for(g=0;g<w;g++)for(a=0;a<v;a++)S[g][a]=t[g][a];for(g=0;g<v;g++){for(O[g]=d,h=0,l=g+1,a=g;a<w;a++)h+=Math.pow(S[a][g],2);if(h<n)d=0;else for(f=(p=S[g][g])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g]=p-d,a=l;a<v;a++){for(h=0,s=g;s<w;s++)h+=S[s][g]*S[s][a];for(p=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+p*S[s][g]}for(N[g]=d,h=0,a=l;a<v;a++)h+=Math.pow(S[g][a],2);if(h<n)d=0;else{for(f=(p=S[g][g+1])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g+1]=p-d,a=l;a<v;a++)O[a]=S[g][a]/f;for(a=l;a<w;a++){for(h=0,s=l;s<v;s++)h+=S[a][s]*S[g][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+h*O[s]}}m<(y=Math.abs(N[g])+Math.abs(O[g]))&&(m=y)}if(r)for(g=v-1;0<=g;g--){if(d!==0){for(f=S[g][g+1]*d,a=l;a<v;a++)T[a][g]=S[g][a]/f;for(a=l;a<v;a++){for(h=0,s=l;s<v;s++)h+=S[g][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+h*T[s][g]}}for(a=l;a<v;a++)T[g][a]=0,T[a][g]=0;T[g][g]=1,d=O[g],l=g}if(e){if(e==="f")for(g=v;g<w;g++){for(a=v;a<w;a++)S[g][a]=0;S[g][g]=1}for(g=v-1;0<=g;g--){for(l=g+1,d=N[g],a=l;a<M;a++)S[g][a]=0;if(d!==0){for(f=S[g][g]*d,a=l;a<M;a++){for(h=0,s=l;s<w;s++)h+=S[s][g]*S[s][a];for(p=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+p*S[s][g]}for(a=g;a<w;a++)S[a][g]=S[a][g]/d}else for(a=g;a<w;a++)S[a][g]=0;S[g][g]=S[g][g]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(D=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){D=!0;break}if(Math.abs(N[l-1])<=o)break}if(!D){for(u=0,c=l-(h=1),g=l;g<s+1&&(p=h*O[g],O[g]=u*O[g],!(Math.abs(p)<=o));g++)if(d=N[g],N[g]=Math.sqrt(p*p+d*d),u=d/(f=N[g]),h=-p/f,e)for(a=0;a<w;a++)y=S[a][c],b=S[a][g],S[a][c]=y*u+b*h,S[a][g]=-y*h+b*u}if(b=N[s],l===s){if(b<0&&(N[s]=-b,r))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=N[l],p=(((y=N[s-1])-b)*(y+b)+((d=O[s-1])-(f=O[s]))*(d+f))/(2*f*y),d=Math.sqrt(p*p+1),p=((m-b)*(m+b)+f*(y/(p<0?p-d:p+d)-f))/m,g=l+(h=u=1);g<s+1;g++){if(d=O[g],y=N[g],f=h*d,d*=u,b=Math.sqrt(p*p+f*f),p=m*(u=p/(O[g-1]=b))+d*(h=f/b),d=-m*h+d*u,f=y*h,y*=u,r)for(a=0;a<v;a++)m=T[a][g-1],b=T[a][g],T[a][g-1]=m*u+b*h,T[a][g]=-m*h+b*u;if(b=Math.sqrt(p*p+f*f),p=(u=p/(N[g-1]=b))*d+(h=f/b)*y,m=-h*d+u*y,e)for(a=0;a<w;a++)y=S[a][g-1],b=S[a][g],S[a][g-1]=y*u+b*h,S[a][g]=-y*h+b*u}O[l]=0,O[s]=p,N[s]=m}for(g=0;g<v;g++)N[g]<o&&(N[g]=0);return{u:S,q:N,v:T}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var E1=Ds((Cce,N1)=>{"use strict";function f_(i,t){function e(){this.constructor=i}e.prototype=t.prototype,i.prototype=new e}function Cn(i,t,e,r){this.message=i,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Cn)}f_(Cn,Error);Cn.buildMessage=function(i,t){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",p;for(p=0;p<c.parts.length;p++)u+=c.parts[p]instanceof Array?n(c.parts[p][0])+"-"+n(c.parts[p][1]):n(c.parts[p]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function o(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function n(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),p,d;for(p=0;p<c.length;p++)u[p]=a(c[p]);if(u.sort(),u.length>0){for(p=1,d=1;p<u.length;p++)u[p-1]!==u[p]&&(u[d]=u[p],d++);u.length=d}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+o(c)+'"':"end of input"}return"Expected "+s(i)+" but "+l(t)+" found."};function h_(i,t){t=t!==void 0?t:{};var e={},r={svg_path:Es},o=Es,n=function(x){if(!x)return[];for(var P=[],R=0;R<x.length;R++)P=P.concat.apply(P,x[R]);var A=P[0];return A&&A.code=="m"&&(delete A.relative,A.code="M"),P},a=function(x,P){return pw(x,P)},s=/^[Mm]/,l=Qe(["M","m"],!1,!1),c=function(x,P,R){var A=Dn(x,[P]);return R&&(A=A.concat(Dn(x=="M"?"L":"l",R[1]))),A},u=/^[Zz]/,p=Qe(["Z","z"],!1,!1),d=function(){return Dn("Z")},f=/^[Ll]/,h=Qe(["L","l"],!1,!1),m=function(x,P){return Dn(x,P)},y=/^[Hh]/,b=Qe(["H","h"],!1,!1),v=function(x,P){return Dn(x,P.map(function(R){return{x:R}}))},w=/^[Vv]/,O=Qe(["V","v"],!1,!1),S=function(x,P){return Dn(x,P.map(function(R){return{y:R}}))},T=/^[Cc]/,M=Qe(["C","c"],!1,!1),g=function(x,P,R){return{x1:x.x,y1:x.y,x2:P.x,y2:P.y,x:R.x,y:R.y}},D=/^[Ss]/,N=Qe(["S","s"],!1,!1),I=function(x,P){return{x2:x.x,y2:x.y,x:P.x,y:P.y}},E=/^[Qq]/,_=Qe(["Q","q"],!1,!1),L=function(x,P){return{x1:x.x,y1:x.y,x:P.x,y:P.y}},V=/^[Tt]/,U=Qe(["T","t"],!1,!1),B=/^[Aa]/,q=Qe(["A","a"],!1,!1),j=function(x,P,R,A,z,oe){return{rx:x,ry:P,xAxisRotation:R,largeArc:A,sweep:z,x:oe.x,y:oe.y}},F=function(x,P){return{x,y:P}},H=function(x){return x*1},W=function(x){return x.join("")*1},ee=/^[01]/,te=Qe(["0","1"],!1,!1),Y=function(x){return x=="1"},re=function(){return""},K=",",Z=nt(",",!1),Q=function(x){return x.join("")},$=".",de=nt(".",!1),le=/^[eE]/,ie=Qe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Qe(["+","-"],!1,!1),me=/^[0-9]/,fe=Qe([["0","9"]],!1,!1),he=function(x){return x.join("")},xe=/^[ \t\n\r]/,ye=Qe([" "," ",`
2
- `,"\r"],!1,!1),C=0,ne=0,De=[{line:1,column:1}],ze=0,Le=[],Oe=0,wt;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Ie(){return i.substring(ne,C)}function vt(){return $i(ne,C)}function Pt(x,P){throw P=P!==void 0?P:$i(ne,C),gr([$d(x)],i.substring(ne,C),P)}function qi(x,P){throw P=P!==void 0?P:$i(ne,C),Xd(x,P)}function nt(x,P){return{type:"literal",text:x,ignoreCase:P}}function Qe(x,P,R){return{type:"class",parts:x,inverted:P,ignoreCase:R}}function Dr(){return{type:"any"}}function qd(){return{type:"end"}}function $d(x){return{type:"other",description:x}}function Hl(x){var P=De[x],R;if(P)return P;for(R=x-1;!De[R];)R--;for(P=De[R],P={line:P.line,column:P.column};R<x;)i.charCodeAt(R)===10?(P.line++,P.column=1):P.column++,R++;return De[x]=P,P}function $i(x,P){var R=Hl(x),A=Hl(P);return{start:{offset:x,line:R.line,column:R.column},end:{offset:P,line:A.line,column:A.column}}}function dt(x){C<ze||(C>ze&&(ze=C,Le=[]),Le.push(x))}function Xd(x,P){return new Cn(x,null,null,P)}function gr(x,P,R){return new Cn(Cn.buildMessage(x,P),x,P,R)}function Es(){var x,P,R,A,z;for(x=C,P=[],R=Ge();R!==e;)P.push(R),R=Ge();if(P!==e)if(R=Wt(),R===e&&(R=null),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(ne=x,P=n(R),x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;return x}function Wt(){var x,P,R,A,z,oe;if(x=C,P=Xi(),P!==e){for(R=[],A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();for(z!==e?(oe=Xi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(R.push(A),A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();z!==e?(oe=Xi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Xi(){var x,P,R,A,z,oe;if(x=C,P=Nn(),P!==e){for(R=[],A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();for(z!==e?(oe=Wl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(R.push(A),A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();z!==e?(oe=Wl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Wl(){var x;return x=QS(),x===e&&(x=ZS(),x===e&&(x=JS(),x===e&&(x=ew(),x===e&&(x=tw(),x===e&&(x=ow(),x===e&&(x=nw(),x===e&&(x=sw(),x===e&&(x=cw())))))))),x}function Nn(){var x,P,R,A,z,oe,_n;if(x=C,s.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(l)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=$t(),A!==e?(z=C,oe=rt(),oe===e&&(oe=null),oe!==e?(_n=mm(),_n!==e?(oe=[oe,_n],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ne=x,P=c(P,A,z),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function QS(){var x,P;return x=C,u.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(p)),P!==e&&(ne=x,P=d()),x=P,x}function ZS(){var x,P,R,A;if(x=C,f.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(h)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=mm(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function mm(){var x,P,R,A,z,oe;if(x=C,P=$t(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function JS(){var x,P,R,A;if(x=C,y.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(b)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=ym(),A!==e?(ne=x,P=v(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function ym(){var x,P,R,A,z,oe;if(x=C,P=En(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function ew(){var x,P,R,A;if(x=C,w.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(O)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=ym(),A!==e?(ne=x,P=S(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function tw(){var x,P,R,A;if(x=C,T.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(M)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=rw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function rw(){var x,P,R,A,z,oe;if(x=C,P=Yd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Yd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Yd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Yd(){var x,P,R,A,z,oe;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(ne=x,P=g(P,A,oe),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function ow(){var x,P,R,A;if(x=C,D.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(N)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=iw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function iw(){var x,P,R,A,z,oe;if(x=C,P=Kd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Kd(){var x,P,R,A;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(ne=x,P=I(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function nw(){var x,P,R,A;if(x=C,E.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(_)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=aw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function aw(){var x,P,R,A,z,oe;if(x=C,P=Qd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Qd(){var x,P,R,A;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(ne=x,P=L(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function sw(){var x,P,R,A;if(x=C,V.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(U)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=lw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function lw(){var x,P,R,A,z,oe;if(x=C,P=$t(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function cw(){var x,P,R,A;if(x=C,B.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(q)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=uw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function uw(){var x,P,R,A,z,oe;if(x=C,P=Zd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Zd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Zd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Zd(){var x,P,R,A,z,oe,_n,ep,$l,tp,Xl,rp;return x=C,P=gm(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=gm(),A!==e?(z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(_n=rt(),_n!==e?(ep=xm(),ep!==e?($l=rt(),$l===e&&($l=null),$l!==e?(tp=xm(),tp!==e?(Xl=rt(),Xl===e&&(Xl=null),Xl!==e?(rp=$t(),rp!==e?(ne=x,P=j(P,A,oe,ep,tp,rp),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function $t(){var x,P,R,A;return x=C,P=En(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=En(),A!==e?(ne=x,P=F(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function gm(){var x,P;return x=C,P=vm(),P===e&&(P=Yi()),P!==e&&(ne=x,P=H(P)),x=P,x}function En(){var x,P,R,A;return x=C,P=C,R=Jd(),R===e&&(R=null),R!==e?(A=vm(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Jd(),R===e&&(R=null),R!==e?(A=Yi(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=W(P)),x=P,x}function xm(){var x,P;return x=C,ee.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(te)),P!==e&&(ne=x,P=Y(P)),x=P,x}function rt(){var x,P,R,A,z;if(x=C,P=[],R=Ge(),R!==e)for(;R!==e;)P.push(R),R=Ge();else P=e;if(P!==e)if(R=bm(),R===e&&(R=null),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(P=[P,R,A],x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;if(x===e){if(x=C,P=C,R=bm(),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(R=[R,A],P=R):(C=P,P=e)}else C=P,P=e;P!==e&&(ne=x,P=re()),x=P}return x}function bm(){var x;return i.charCodeAt(C)===44?(x=K,C++):(x=e,Oe===0&&dt(Z)),x}function vm(){var x,P,R,A;return x=C,P=C,R=dw(),R!==e?(A=Sm(),A===e&&(A=null),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Yi(),R!==e?(A=Sm(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function dw(){var x,P,R,A,z;return x=C,P=C,R=Yi(),R===e&&(R=null),R!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Oe===0&&dt(de)),A!==e?(z=Yi(),z!==e?(R=[R,A,z],P=R):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Yi(),R!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Oe===0&&dt(de)),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function Sm(){var x,P,R,A,z;return x=C,P=C,le.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(ie)),R!==e?(A=Jd(),A===e&&(A=null),A!==e?(z=Yi(),z!==e?(R=[R,A,z],P=R):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P!==e&&(ne=x,P=Q(P)),x=P,x}function Jd(){var x;return ce.test(i.charAt(C))?(x=i.charAt(C),C++):(x=e,Oe===0&&dt(ae)),x}function Yi(){var x,P,R;if(x=C,P=[],me.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(fe)),R!==e)for(;R!==e;)P.push(R),me.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(fe));else P=e;return P!==e&&(ne=x,P=he(P)),x=P,x}function Ge(){var x,P;return x=C,xe.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(ye)),P!==e&&(ne=x,P=re()),x=P,x}function pw(x,P){if(!P)return[x];for(var R=[x],A=0,z=P.length;A<z;A++)R[A+1]=P[A][1];return R}var ql={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var wm in ql)ql[wm.toUpperCase()]=ql[wm];function Dn(x,P){P||(P=[{}]);for(var R=P.length;R--;){var A={code:x,command:ql[x]};x==x.toLowerCase()&&(A.relative=!0);for(var z in P[R])A[z]=P[R][z];P[R]=A}return P}if(wt=o(),wt!==e&&C===i.length)return wt;throw wt!==e&&C<i.length&&dt(qd()),gr(Le,ze<i.length?i.charAt(ze):null,ze<i.length?$i(ze,ze+1):$i(ze,ze))}N1.exports={SyntaxError:Cn,parse:h_}});var Uh=Ds((Ace,D1)=>{var Od=E1().parse;Od.parseSVG=Od;Od.makeAbsolute=m_;D1.exports=Od;function m_(i){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return i.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var n in r)n in o&&(o[n]+=o.relative?o[r[n]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=t.x,o.y=t.y),e=o}),i}});var XS=Ds((Xye,$S)=>{$S.exports=function(t,e){for(var r=t.split("."),o=e.split("."),n=0;n<3;n++){var a=Number(r[n]),s=Number(o[n]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as gR,Loader as xR}from"three";function Kl(i){for(let t of Object.keys(i))i[t]===void 0&&delete i[t];return i}function Ot(i,t){return Object.setPrototypeOf(i,t),i}function Ql(i){return Array.isArray(i)?i:[i]}function Zl(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var Sw=typeof global=="object"&&global&&global.Object===Object&&global,Jl=Sw;var ww=typeof self=="object"&&self&&self.Object===Object&&self,Pw=Jl||ww||Function("return this")(),pt=Pw;var Ow=pt.Symbol,Et=Ow;var Pm=Object.prototype,Tw=Pm.hasOwnProperty,Cw=Pm.toString,Ls=Et?Et.toStringTag:void 0;function Aw(i){var t=Tw.call(i,Ls),e=i[Ls];try{i[Ls]=void 0;var r=!0}catch{}var o=Cw.call(i);return r&&(t?i[Ls]=e:delete i[Ls]),o}var Om=Aw;var Mw=Object.prototype,Iw=Mw.toString;function Nw(i){return Iw.call(i)}var Tm=Nw;var Ew="[object Null]",Dw="[object Undefined]",Cm=Et?Et.toStringTag:void 0;function _w(i){return i==null?i===void 0?Dw:Ew:Cm&&Cm in Object(i)?Om(i):Tm(i)}var ur=_w;function Lw(i){return i!=null&&typeof i=="object"}var zt=Lw;var Rw="[object Symbol]";function Bw(i){return typeof i=="symbol"||zt(i)&&ur(i)==Rw}var oi=Bw;function Vw(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var ec=Vw;var zw=Array.isArray,ft=zw;var Gw=1/0,Am=Et?Et.prototype:void 0,Mm=Am?Am.toString:void 0;function Im(i){if(typeof i=="string")return i;if(ft(i))return ec(i,Im)+"";if(oi(i))return Mm?Mm.call(i):"";var t=i+"";return t=="0"&&1/i==-Gw?"-0":t}var Nm=Im;var Fw=/\s/;function jw(i){for(var t=i.length;t--&&Fw.test(i.charAt(t)););return t}var Em=jw;var Uw=/^\s+/;function kw(i){return i&&i.slice(0,Em(i)+1).replace(Uw,"")}var Dm=kw;function Hw(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ht=Hw;var _m=0/0,Ww=/^[-+]0x[0-9a-f]+$/i,qw=/^0b[01]+$/i,$w=/^0o[0-7]+$/i,Xw=parseInt;function Yw(i){if(typeof i=="number")return i;if(oi(i))return _m;if(ht(i)){var t=typeof i.valueOf=="function"?i.valueOf():i;i=ht(t)?t+"":t}if(typeof i!="string")return i===0?i:+i;i=Dm(i);var e=qw.test(i);return e||$w.test(i)?Xw(i.slice(2),e?2:8):Ww.test(i)?_m:+i}var op=Yw;function Kw(i){return i}var Lm=Kw;var Qw="[object AsyncFunction]",Zw="[object Function]",Jw="[object GeneratorFunction]",e2="[object Proxy]";function t2(i){if(!ht(i))return!1;var t=ur(i);return t==Zw||t==Jw||t==Qw||t==e2}var tc=t2;var r2=pt["__core-js_shared__"],rc=r2;var Rm=function(){var i=/[^.]+$/.exec(rc&&rc.keys&&rc.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function o2(i){return!!Rm&&Rm in i}var Bm=o2;var i2=Function.prototype,n2=i2.toString;function a2(i){if(i!=null){try{return n2.call(i)}catch{}try{return i+""}catch{}}return""}var Co=a2;var s2=/[\\^$.*+?()[\]{}|]/g,l2=/^\[object .+?Constructor\]$/,c2=Function.prototype,u2=Object.prototype,d2=c2.toString,p2=u2.hasOwnProperty,f2=RegExp("^"+d2.call(p2).replace(s2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function h2(i){if(!ht(i)||Bm(i))return!1;var t=tc(i)?f2:l2;return t.test(Co(i))}var Vm=h2;function m2(i,t){return i?.[t]}var zm=m2;function y2(i,t){var e=zm(i,t);return Vm(e)?e:void 0}var Jt=y2;var g2=Jt(pt,"WeakMap"),oc=g2;var Gm=Object.create,x2=function(){function i(){}return function(t){if(!ht(t))return{};if(Gm)return Gm(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Fm=x2;function b2(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var jm=b2;function v2(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Um=v2;var S2=800,w2=16,P2=Date.now;function O2(i){var t=0,e=0;return function(){var r=P2(),o=w2-(r-e);if(e=r,o>0){if(++t>=S2)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var km=O2;function T2(i){return function(){return i}}var Hm=T2;var C2=function(){try{var i=Jt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Ln=C2;var A2=Ln?function(i,t){return Ln(i,"toString",{configurable:!0,enumerable:!1,value:Hm(t),writable:!0})}:Lm,Wm=A2;var M2=km(Wm),qm=M2;function I2(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var $m=I2;var N2=9007199254740991,E2=/^(?:0|[1-9]\d*)$/;function D2(i,t){var e=typeof i;return t=t??N2,!!t&&(e=="number"||e!="symbol"&&E2.test(i))&&i>-1&&i%1==0&&i<t}var Rn=D2;function _2(i,t,e){t=="__proto__"&&Ln?Ln(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var ic=_2;function L2(i,t){return i===t||i!==i&&t!==t}var Bn=L2;var R2=Object.prototype,B2=R2.hasOwnProperty;function V2(i,t,e){var r=i[t];(!(B2.call(i,t)&&Bn(r,e))||e===void 0&&!(t in i))&&ic(i,t,e)}var Vn=V2;function z2(i,t,e,r){var o=!e;e||(e={});for(var n=-1,a=t.length;++n<a;){var s=t[n],l=r?r(e[s],i[s],s,e,i):void 0;l===void 0&&(l=i[s]),o?ic(e,s,l):Vn(e,s,l)}return e}var Qr=z2;var Xm=Math.max;function G2(i,t,e){return t=Xm(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Xm(r.length-t,0),a=Array(n);++o<n;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),jm(i,this,s)}}var Ym=G2;var F2=9007199254740991;function j2(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=F2}var zn=j2;function U2(i){return i!=null&&zn(i.length)&&!tc(i)}var nc=U2;var k2=Object.prototype;function H2(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||k2;return i===e}var Gn=H2;function W2(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Km=W2;var q2="[object Arguments]";function $2(i){return zt(i)&&ur(i)==q2}var ip=$2;var Qm=Object.prototype,X2=Qm.hasOwnProperty,Y2=Qm.propertyIsEnumerable,K2=ip(function(){return arguments}())?ip:function(i){return zt(i)&&X2.call(i,"callee")&&!Y2.call(i,"callee")},Fn=K2;function Q2(){return!1}var Zm=Q2;var ty=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jm=ty&&typeof module=="object"&&module&&!module.nodeType&&module,Z2=Jm&&Jm.exports===ty,ey=Z2?pt.Buffer:void 0,J2=ey?ey.isBuffer:void 0,eP=J2||Zm,Qi=eP;var tP="[object Arguments]",rP="[object Array]",oP="[object Boolean]",iP="[object Date]",nP="[object Error]",aP="[object Function]",sP="[object Map]",lP="[object Number]",cP="[object Object]",uP="[object RegExp]",dP="[object Set]",pP="[object String]",fP="[object WeakMap]",hP="[object ArrayBuffer]",mP="[object DataView]",yP="[object Float32Array]",gP="[object Float64Array]",xP="[object Int8Array]",bP="[object Int16Array]",vP="[object Int32Array]",SP="[object Uint8Array]",wP="[object Uint8ClampedArray]",PP="[object Uint16Array]",OP="[object Uint32Array]",ot={};ot[yP]=ot[gP]=ot[xP]=ot[bP]=ot[vP]=ot[SP]=ot[wP]=ot[PP]=ot[OP]=!0;ot[tP]=ot[rP]=ot[hP]=ot[oP]=ot[mP]=ot[iP]=ot[nP]=ot[aP]=ot[sP]=ot[lP]=ot[cP]=ot[uP]=ot[dP]=ot[pP]=ot[fP]=!1;function TP(i){return zt(i)&&zn(i.length)&&!!ot[ur(i)]}var ry=TP;function CP(i){return function(t){return i(t)}}var jn=CP;var oy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Rs=oy&&typeof module=="object"&&module&&!module.nodeType&&module,AP=Rs&&Rs.exports===oy,np=AP&&Jl.process,MP=function(){try{var i=Rs&&Rs.require&&Rs.require("util").types;return i||np&&np.binding&&np.binding("util")}catch{}}(),Ao=MP;var iy=Ao&&Ao.isTypedArray,IP=iy?jn(iy):ry,ac=IP;var NP=Object.prototype,EP=NP.hasOwnProperty;function DP(i,t){var e=ft(i),r=!e&&Fn(i),o=!e&&!r&&Qi(i),n=!e&&!r&&!o&&ac(i),a=e||r||o||n,s=a?Km(i.length,String):[],l=s.length;for(var c in i)(t||EP.call(i,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Rn(c,l)))&&s.push(c);return s}var sc=DP;function _P(i,t){return function(e){return i(t(e))}}var lc=_P;var LP=lc(Object.keys,Object),ny=LP;var RP=Object.prototype,BP=RP.hasOwnProperty;function VP(i){if(!Gn(i))return ny(i);var t=[];for(var e in Object(i))BP.call(i,e)&&e!="constructor"&&t.push(e);return t}var ay=VP;function zP(i){return nc(i)?sc(i):ay(i)}var Un=zP;function GP(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var sy=GP;var FP=Object.prototype,jP=FP.hasOwnProperty;function UP(i){if(!ht(i))return sy(i);var t=Gn(i),e=[];for(var r in i)r=="constructor"&&(t||!jP.call(i,r))||e.push(r);return e}var ly=UP;function kP(i){return nc(i)?sc(i,!0):ly(i)}var kn=kP;var HP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WP=/^\w*$/;function qP(i,t){if(ft(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||oi(i)?!0:WP.test(i)||!HP.test(i)||t!=null&&i in Object(t)}var cy=qP;var $P=Jt(Object,"create"),Mo=$P;function XP(){this.__data__=Mo?Mo(null):{},this.size=0}var uy=XP;function YP(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var dy=YP;var KP="__lodash_hash_undefined__",QP=Object.prototype,ZP=QP.hasOwnProperty;function JP(i){var t=this.__data__;if(Mo){var e=t[i];return e===KP?void 0:e}return ZP.call(t,i)?t[i]:void 0}var py=JP;var eO=Object.prototype,tO=eO.hasOwnProperty;function rO(i){var t=this.__data__;return Mo?t[i]!==void 0:tO.call(t,i)}var fy=rO;var oO="__lodash_hash_undefined__";function iO(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mo&&t===void 0?oO:t,this}var hy=iO;function Hn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Hn.prototype.clear=uy;Hn.prototype.delete=dy;Hn.prototype.get=py;Hn.prototype.has=fy;Hn.prototype.set=hy;var ap=Hn;function nO(){this.__data__=[],this.size=0}var my=nO;function aO(i,t){for(var e=i.length;e--;)if(Bn(i[e][0],t))return e;return-1}var ii=aO;var sO=Array.prototype,lO=sO.splice;function cO(i){var t=this.__data__,e=ii(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():lO.call(t,e,1),--this.size,!0}var yy=cO;function uO(i){var t=this.__data__,e=ii(t,i);return e<0?void 0:t[e][1]}var gy=uO;function dO(i){return ii(this.__data__,i)>-1}var xy=dO;function pO(i,t){var e=this.__data__,r=ii(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var by=pO;function Wn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Wn.prototype.clear=my;Wn.prototype.delete=yy;Wn.prototype.get=gy;Wn.prototype.has=xy;Wn.prototype.set=by;var ni=Wn;var fO=Jt(pt,"Map"),ai=fO;function hO(){this.size=0,this.__data__={hash:new ap,map:new(ai||ni),string:new ap}}var vy=hO;function mO(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var Sy=mO;function yO(i,t){var e=i.__data__;return Sy(t)?e[typeof t=="string"?"string":"hash"]:e.map}var si=yO;function gO(i){var t=si(this,i).delete(i);return this.size-=t?1:0,t}var wy=gO;function xO(i){return si(this,i).get(i)}var Py=xO;function bO(i){return si(this,i).has(i)}var Oy=bO;function vO(i,t){var e=si(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Ty=vO;function qn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}qn.prototype.clear=vy;qn.prototype.delete=wy;qn.prototype.get=Py;qn.prototype.has=Oy;qn.prototype.set=Ty;var Zi=qn;var SO="Expected a function";function sp(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(SO);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var a=i.apply(this,r);return e.cache=n.set(o,a)||n,a};return e.cache=new(sp.Cache||Zi),e}sp.Cache=Zi;var Cy=sp;var wO=500;function PO(i){var t=Cy(i,function(r){return e.size===wO&&e.clear(),r}),e=t.cache;return t}var Ay=PO;var OO=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,TO=/\\(\\)?/g,CO=Ay(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(OO,function(e,r,o,n){t.push(o?n.replace(TO,"$1"):r||e)}),t}),My=CO;function AO(i){return i==null?"":Nm(i)}var Iy=AO;function MO(i,t){return ft(i)?i:cy(i,t)?[i]:My(Iy(i))}var xr=MO;var IO=1/0;function NO(i){if(typeof i=="string"||oi(i))return i;var t=i+"";return t=="0"&&1/i==-IO?"-0":t}var li=NO;function EO(i,t){t=xr(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[li(t[e++])];return e&&e==r?i:void 0}var cc=EO;function DO(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var $n=DO;var Ny=Et?Et.isConcatSpreadable:void 0;function _O(i){return ft(i)||Fn(i)||!!(Ny&&i&&i[Ny])}var Ey=_O;function Dy(i,t,e,r,o){var n=-1,a=i.length;for(e||(e=Ey),o||(o=[]);++n<a;){var s=i[n];t>0&&e(s)?t>1?Dy(s,t-1,e,r,o):$n(o,s):r||(o[o.length]=s)}return o}var _y=Dy;function LO(i){var t=i==null?0:i.length;return t?_y(i,1):[]}var Ly=LO;function RO(i){return qm(Ym(i,void 0,Ly),i+"")}var uc=RO;var BO=lc(Object.getPrototypeOf,Object),Xn=BO;var VO="[object Object]",zO=Function.prototype,GO=Object.prototype,Ry=zO.toString,FO=GO.hasOwnProperty,jO=Ry.call(Object);function UO(i){if(!zt(i)||ur(i)!=VO)return!1;var t=Xn(i);if(t===null)return!0;var e=FO.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ry.call(e)==jO}var By=UO;function kO(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Vy=kO;function HO(){this.__data__=new ni,this.size=0}var zy=HO;function WO(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Gy=WO;function qO(i){return this.__data__.get(i)}var Fy=qO;function $O(i){return this.__data__.has(i)}var jy=$O;var XO=200;function YO(i,t){var e=this.__data__;if(e instanceof ni){var r=e.__data__;if(!ai||r.length<XO-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Zi(r)}return e.set(i,t),this.size=e.size,this}var Uy=YO;function Yn(i){var t=this.__data__=new ni(i);this.size=t.size}Yn.prototype.clear=zy;Yn.prototype.delete=Gy;Yn.prototype.get=Fy;Yn.prototype.has=jy;Yn.prototype.set=Uy;var Kn=Yn;function KO(i,t){return i&&Qr(t,Un(t),i)}var ky=KO;function QO(i,t){return i&&Qr(t,kn(t),i)}var Hy=QO;var Xy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wy=Xy&&typeof module=="object"&&module&&!module.nodeType&&module,ZO=Wy&&Wy.exports===Xy,qy=ZO?pt.Buffer:void 0,$y=qy?qy.allocUnsafe:void 0;function JO(i,t){if(t)return i.slice();var e=i.length,r=$y?$y(e):new i.constructor(e);return i.copy(r),r}var Yy=JO;function eT(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var a=i[e];t(a,e,i)&&(n[o++]=a)}return n}var Ky=eT;function tT(){return[]}var dc=tT;var rT=Object.prototype,oT=rT.propertyIsEnumerable,Qy=Object.getOwnPropertySymbols,iT=Qy?function(i){return i==null?[]:(i=Object(i),Ky(Qy(i),function(t){return oT.call(i,t)}))}:dc,Qn=iT;function nT(i,t){return Qr(i,Qn(i),t)}var Zy=nT;var aT=Object.getOwnPropertySymbols,sT=aT?function(i){for(var t=[];i;)$n(t,Qn(i)),i=Xn(i);return t}:dc,pc=sT;function lT(i,t){return Qr(i,pc(i),t)}var Jy=lT;function cT(i,t,e){var r=t(i);return ft(i)?r:$n(r,e(i))}var fc=cT;function uT(i){return fc(i,Un,Qn)}var Bs=uT;function dT(i){return fc(i,kn,pc)}var hc=dT;var pT=Jt(pt,"DataView"),mc=pT;var fT=Jt(pt,"Promise"),yc=fT;var hT=Jt(pt,"Set"),gc=hT;var eg="[object Map]",mT="[object Object]",tg="[object Promise]",rg="[object Set]",og="[object WeakMap]",ig="[object DataView]",yT=Co(mc),gT=Co(ai),xT=Co(yc),bT=Co(gc),vT=Co(oc),Ji=ur;(mc&&Ji(new mc(new ArrayBuffer(1)))!=ig||ai&&Ji(new ai)!=eg||yc&&Ji(yc.resolve())!=tg||gc&&Ji(new gc)!=rg||oc&&Ji(new oc)!=og)&&(Ji=function(i){var t=ur(i),e=t==mT?i.constructor:void 0,r=e?Co(e):"";if(r)switch(r){case yT:return ig;case gT:return eg;case xT:return tg;case bT:return rg;case vT:return og}return t});var Io=Ji;var ST=Object.prototype,wT=ST.hasOwnProperty;function PT(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&wT.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ng=PT;var OT=pt.Uint8Array,Zn=OT;function TT(i){var t=new i.constructor(i.byteLength);return new Zn(t).set(new Zn(i)),t}var Jn=TT;function CT(i,t){var e=t?Jn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var ag=CT;var AT=/\w*$/;function MT(i){var t=new i.constructor(i.source,AT.exec(i));return t.lastIndex=i.lastIndex,t}var sg=MT;var lg=Et?Et.prototype:void 0,cg=lg?lg.valueOf:void 0;function IT(i){return cg?Object(cg.call(i)):{}}var ug=IT;function NT(i,t){var e=t?Jn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var dg=NT;var ET="[object Boolean]",DT="[object Date]",_T="[object Map]",LT="[object Number]",RT="[object RegExp]",BT="[object Set]",VT="[object String]",zT="[object Symbol]",GT="[object ArrayBuffer]",FT="[object DataView]",jT="[object Float32Array]",UT="[object Float64Array]",kT="[object Int8Array]",HT="[object Int16Array]",WT="[object Int32Array]",qT="[object Uint8Array]",$T="[object Uint8ClampedArray]",XT="[object Uint16Array]",YT="[object Uint32Array]";function KT(i,t,e){var r=i.constructor;switch(t){case GT:return Jn(i);case ET:case DT:return new r(+i);case FT:return ag(i,e);case jT:case UT:case kT:case HT:case WT:case qT:case $T:case XT:case YT:return dg(i,e);case _T:return new r;case LT:case VT:return new r(i);case RT:return sg(i);case BT:return new r;case zT:return ug(i)}}var pg=KT;function QT(i){return typeof i.constructor=="function"&&!Gn(i)?Fm(Xn(i)):{}}var fg=QT;var ZT="[object Map]";function JT(i){return zt(i)&&Io(i)==ZT}var hg=JT;var mg=Ao&&Ao.isMap,eC=mg?jn(mg):hg,yg=eC;var tC="[object Set]";function rC(i){return zt(i)&&Io(i)==tC}var gg=rC;var xg=Ao&&Ao.isSet,oC=xg?jn(xg):gg,bg=oC;var iC=1,nC=2,aC=4,vg="[object Arguments]",sC="[object Array]",lC="[object Boolean]",cC="[object Date]",uC="[object Error]",Sg="[object Function]",dC="[object GeneratorFunction]",pC="[object Map]",fC="[object Number]",wg="[object Object]",hC="[object RegExp]",mC="[object Set]",yC="[object String]",gC="[object Symbol]",xC="[object WeakMap]",bC="[object ArrayBuffer]",vC="[object DataView]",SC="[object Float32Array]",wC="[object Float64Array]",PC="[object Int8Array]",OC="[object Int16Array]",TC="[object Int32Array]",CC="[object Uint8Array]",AC="[object Uint8ClampedArray]",MC="[object Uint16Array]",IC="[object Uint32Array]",et={};et[vg]=et[sC]=et[bC]=et[vC]=et[lC]=et[cC]=et[SC]=et[wC]=et[PC]=et[OC]=et[TC]=et[pC]=et[fC]=et[wg]=et[hC]=et[mC]=et[yC]=et[gC]=et[CC]=et[AC]=et[MC]=et[IC]=!0;et[uC]=et[Sg]=et[xC]=!1;function xc(i,t,e,r,o,n){var a,s=t&iC,l=t&nC,c=t&aC;if(e&&(a=o?e(i,r,o,n):e(i)),a!==void 0)return a;if(!ht(i))return i;var u=ft(i);if(u){if(a=ng(i),!s)return Um(i,a)}else{var p=Io(i),d=p==Sg||p==dC;if(Qi(i))return Yy(i,s);if(p==wg||p==vg||d&&!o){if(a=l||d?{}:fg(i),!s)return l?Jy(i,Hy(a,i)):Zy(i,ky(a,i))}else{if(!et[p])return o?i:{};a=pg(i,p,s)}}n||(n=new Kn);var f=n.get(i);if(f)return f;n.set(i,a),bg(i)?i.forEach(function(y){a.add(xc(y,t,e,y,i,n))}):yg(i)&&i.forEach(function(y,b){a.set(b,xc(y,t,e,b,i,n))});var h=c?l?hc:Bs:l?kn:Un,m=u?void 0:h(i);return $m(m||i,function(y,b){m&&(b=y,y=i[b]),Vn(a,b,xc(y,t,e,b,i,n))}),a}var bc=xc;var NC=1,EC=4;function DC(i){return bc(i,NC|EC)}var No=DC;var _C="__lodash_hash_undefined__";function LC(i){return this.__data__.set(i,_C),this}var Pg=LC;function RC(i){return this.__data__.has(i)}var Og=RC;function vc(i){var t=-1,e=i==null?0:i.length;for(this.__data__=new Zi;++t<e;)this.add(i[t])}vc.prototype.add=vc.prototype.push=Pg;vc.prototype.has=Og;var Tg=vc;function BC(i,t){for(var e=-1,r=i==null?0:i.length;++e<r;)if(t(i[e],e,i))return!0;return!1}var Cg=BC;function VC(i,t){return i.has(t)}var Ag=VC;var zC=1,GC=2;function FC(i,t,e,r,o,n){var a=e&zC,s=i.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var c=n.get(i),u=n.get(t);if(c&&u)return c==t&&u==i;var p=-1,d=!0,f=e&GC?new Tg:void 0;for(n.set(i,t),n.set(t,i);++p<s;){var h=i[p],m=t[p];if(r)var y=a?r(m,h,p,t,i,n):r(h,m,p,i,t,n);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!Cg(t,function(b,v){if(!Ag(f,v)&&(h===b||o(h,b,e,r,n)))return f.push(v)})){d=!1;break}}else if(!(h===m||o(h,m,e,r,n))){d=!1;break}}return n.delete(i),n.delete(t),d}var Sc=FC;function jC(i){var t=-1,e=Array(i.size);return i.forEach(function(r,o){e[++t]=[o,r]}),e}var Mg=jC;function UC(i){var t=-1,e=Array(i.size);return i.forEach(function(r){e[++t]=r}),e}var Ig=UC;var kC=1,HC=2,WC="[object Boolean]",qC="[object Date]",$C="[object Error]",XC="[object Map]",YC="[object Number]",KC="[object RegExp]",QC="[object Set]",ZC="[object String]",JC="[object Symbol]",eA="[object ArrayBuffer]",tA="[object DataView]",Ng=Et?Et.prototype:void 0,lp=Ng?Ng.valueOf:void 0;function rA(i,t,e,r,o,n,a){switch(e){case tA:if(i.byteLength!=t.byteLength||i.byteOffset!=t.byteOffset)return!1;i=i.buffer,t=t.buffer;case eA:return!(i.byteLength!=t.byteLength||!n(new Zn(i),new Zn(t)));case WC:case qC:case YC:return Bn(+i,+t);case $C:return i.name==t.name&&i.message==t.message;case KC:case ZC:return i==t+"";case XC:var s=Mg;case QC:var l=r&kC;if(s||(s=Ig),i.size!=t.size&&!l)return!1;var c=a.get(i);if(c)return c==t;r|=HC,a.set(i,t);var u=Sc(s(i),s(t),r,o,n,a);return a.delete(i),u;case JC:if(lp)return lp.call(i)==lp.call(t)}return!1}var Eg=rA;var oA=1,iA=Object.prototype,nA=iA.hasOwnProperty;function aA(i,t,e,r,o,n){var a=e&oA,s=Bs(i),l=s.length,c=Bs(t),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in t:nA.call(t,d)))return!1}var f=n.get(i),h=n.get(t);if(f&&h)return f==t&&h==i;var m=!0;n.set(i,t),n.set(t,i);for(var y=a;++p<l;){d=s[p];var b=i[d],v=t[d];if(r)var w=a?r(v,b,d,t,i,n):r(b,v,d,i,t,n);if(!(w===void 0?b===v||o(b,v,e,r,n):w)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=i.constructor,S=t.constructor;O!=S&&"constructor"in i&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return n.delete(i),n.delete(t),m}var Dg=aA;var sA=1,_g="[object Arguments]",Lg="[object Array]",wc="[object Object]",lA=Object.prototype,Rg=lA.hasOwnProperty;function cA(i,t,e,r,o,n){var a=ft(i),s=ft(t),l=a?Lg:Io(i),c=s?Lg:Io(t);l=l==_g?wc:l,c=c==_g?wc:c;var u=l==wc,p=c==wc,d=l==c;if(d&&Qi(i)){if(!Qi(t))return!1;a=!0,u=!1}if(d&&!u)return n||(n=new Kn),a||ac(i)?Sc(i,t,e,r,o,n):Eg(i,t,l,e,r,o,n);if(!(e&sA)){var f=u&&Rg.call(i,"__wrapped__"),h=p&&Rg.call(t,"__wrapped__");if(f||h){var m=f?i.value():i,y=h?t.value():t;return n||(n=new Kn),o(m,y,e,r,n)}}return d?(n||(n=new Kn),Dg(i,t,e,r,o,n)):!1}var Bg=cA;function Vg(i,t,e,r,o){return i===t?!0:i==null||t==null||!zt(i)&&!zt(t)?i!==i&&t!==t:Bg(i,t,e,r,Vg,o)}var zg=Vg;function uA(i,t){return i!=null&&t in Object(i)}var Gg=uA;function dA(i,t,e){t=xr(t,i);for(var r=-1,o=t.length,n=!1;++r<o;){var a=li(t[r]);if(!(n=i!=null&&e(i,a)))break;i=i[a]}return n||++r!=o?n:(o=i==null?0:i.length,!!o&&zn(o)&&Rn(a,o)&&(ft(i)||Fn(i)))}var Fg=dA;function pA(i,t){return i!=null&&Fg(i,t,Gg)}var jg=pA;var fA=function(){return pt.Date.now()},Pc=fA;var hA="Expected a function",mA=Math.max,yA=Math.min;function gA(i,t,e){var r,o,n,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof i!="function")throw new TypeError(hA);t=op(t)||0,ht(e)&&(u=!!e.leading,p="maxWait"in e,n=p?mA(op(e.maxWait)||0,t):n,d="trailing"in e?!!e.trailing:d);function f(T){var M=r,g=o;return r=o=void 0,c=T,a=i.apply(g,M),a}function h(T){return c=T,s=setTimeout(b,t),u?f(T):a}function m(T){var M=T-l,g=T-c,D=t-M;return p?yA(D,n-g):D}function y(T){var M=T-l,g=T-c;return l===void 0||M>=t||M<0||p&&g>=n}function b(){var T=Pc();if(y(T))return v(T);s=setTimeout(b,m(T))}function v(T){return s=void 0,d&&r?f(T):(r=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,r=l=o=s=void 0}function O(){return s===void 0?a:v(Pc())}function S(){var T=Pc(),M=y(T);if(r=arguments,o=this,l=T,M){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,t),f(l)}return s===void 0&&(s=setTimeout(b,t)),a}return S.cancel=w,S.flush=O,S}var Oc=gA;function xA(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Ug=xA;function bA(i,t){return t.length<2?i:cc(i,Vy(t,0,-1))}var kg=bA;function vA(i,t){return zg(i,t)}var cp=vA;function SA(i,t){return t=xr(t,i),i=kg(i,t),i==null||delete i[li(Ug(t))]}var Hg=SA;function wA(i){return By(i)?void 0:i}var Wg=wA;var PA=1,OA=2,TA=4,CA=uc(function(i,t){var e={};if(i==null)return e;var r=!1;t=ec(t,function(n){return n=xr(n,i),r||(r=n.length>1),n}),Qr(i,hc(i),e),r&&(e=bc(e,PA|OA|TA,Wg));for(var o=t.length;o--;)Hg(e,t[o]);return e}),ea=CA;function AA(i,t,e,r){if(!ht(i))return i;t=xr(t,i);for(var o=-1,n=t.length,a=n-1,s=i;s!=null&&++o<n;){var l=li(t[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return i;if(o!=a){var u=s[l];c=r?r(u,l,s):void 0,c===void 0&&(c=ht(u)?u:Rn(t[o+1])?[]:{})}Vn(s,l,c),s=s[l]}return i}var qg=AA;function MA(i,t,e){for(var r=-1,o=t.length,n={};++r<o;){var a=t[r],s=cc(i,a);e(s,a)&&qg(n,xr(a,i),s)}return n}var $g=MA;function IA(i,t){return $g(i,t,function(e,r){return jg(i,r)})}var Xg=IA;var NA=uc(function(i,t){return i==null?{}:Xg(i,t)}),_r=NA;var ue=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ue.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:a}=t,s={...e,[n]:a};return Object.setPrototypeOf(s,ue.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ue.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Vs(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&Vs(r)}return Object.freeze(i)}function Yg(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var ta=class extends Error{};function Tc(i){let t={...i};return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}function Zr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let a=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(a)}return r}function ra(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Kg(){return typeof process<"u"}function Qg(i,t){for(let e of i)t(e.id,e.data)!==!0&&Qg(e.children,t)}function Zg(i,t){if(t(i.id,i.data)!==!0)for(let e of i.children)Zg(e,t)}var Ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Zg(o,r)}}traverse(e){Qg(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),a=this.childrenArray(n),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(n,a)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let s=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:s}}Object.setPrototypeOf(n,Ze.prototype);let a=n;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),u={fi:o,id:n,data:a,children:s};return c=[...c,u],c.sort((d,f)=>d.fi-f.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),a=n.findIndex(c=>c.id===r);e.localIndex=a,n=[...n];let s=n.splice(a,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===n)throw new ta("cyclic tree");f=this.parent(f)}}let a=this.parent(n);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===n);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=r,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Yg(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),a=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return Zr(0,o,o);{let a=n[0].fi;return Zr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=n.find(l=>l.fi>a.fi);if(s===void 0){let l=n[n.length-1].fi;return Zr(l,l+o,o)}else return Zr(a.fi,s.fi,o)}}};var oa;(t=>{function i(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,n={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){n[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(oa||(oa={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,a=n.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=n[a];return n=[...n],n[a]={...s,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,be.prototype);let r=e;return Kg()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:n}=e,a=this,s={fi:r,id:o,data:n};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let a=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let a=n.findIndex(u=>u.id===o);if(a===-1)return null;let s=n[a].fi,l={...n[a],fi:r};return n[a]=l,n.sort((u,p)=>u.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Zr(0,r,r);{let n=o[0].fi;return Zr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>n.fi);if(a===void 0){let s=o[o.length-1].fi;return Zr(s,s+r,r)}else return Zr(n.fi,a.fi,r)}}};function ia(i){return i&&typeof i=="object"&&i instanceof We}var We=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,n={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ia(r))return null;o+=1}r=r?Tc(r):new We;for(let[l,c]of Object.entries(t.props)){let u=r[l];n[l]=u,c===void 0?delete r[l]:r[l]=c}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Tc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let c=Tc(l);c[t.path[o-1]]=r,r=c}else{let c=new We;c[t.path[o-1]]=r,r=c}}o-=1}let a=Object.setPrototypeOf(r,We.prototype),s={...t,props:n};return{data:a,actual:t,reverse:s}}},Jr;(r=>{function i(o,n){return zs(o,n)??o}r.apply=i;function t(o,n){return dp(o,n)}r.merge=t;function e(o,n){let a=0,s=n.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Je.zoomOnce(l,s[a]),l===void 0)return n;if(!ia(l))return;a+=1}if(l===void 0)return n;if(!!ia(l))if(n.type===0){let c={...n.props};for(let u of Object.keys(l))delete c[u];return{...n,props:c}}else if(n.type===1||n.type===4||n.type===7){let c=up([n],l);return c?c[0]:n}else return n}r.filterOp=e})(Jr||(Jr={}));function up(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=zs(o.data,t[n]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=up(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:n,data:a,children:s}}else return{...o,id:n,data:a}});if(e)return r}function EA(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=zs(o.data,t[n]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:n,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}function zs(i,t){if(!ia(t))return t;if(i instanceof Ze){let e=up(i,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e}else{if(i instanceof be)return EA(i,t);if(Array.isArray(i)){let e=!1,r=i.map((o,n)=>{let a=zs(o,t[n]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else{if(i instanceof We)return dp(i,t);if(i&&typeof i=="object"){let e={},r=!1;for(let[o,n]of Object.entries(i)){let a=zs(n,t[o]);r=r||a!==void 0,a===void 0&&(a=n),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e):void 0}}}}function dp(i,t){if(i===void 0)return t;if(t===void 0)return i;if(!ia(t))return t;if(!ia(i))return Jr.apply(i,t);let e=new Set;for(let o of Object.keys(i))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new We;for(let o of e){let n=dp(i===void 0?void 0:i[o],t===void 0?void 0:t[o]);r[o]=n}return r}function Jg(i,t){let e={cur:[],result:[],len:0};return i=Gs(i,t,e)??i,[i,e.result]}function Cc(i,t){return i===null?null:(i.cur[i.len]=t,i.len+=1,i)}function Ac(i){i&&(i.len-=1)}function DA(i){if(i===null)return null;i.result.push(i.cur.slice(0,i.len))}function ex(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Gs(n.data,t,Cc(e,a));Ac(e),r=r||l!==void 0,l===void 0&&(l=n.data);let c=ex(n.children,t,e);return c!==void 0?r=!0:c=n.children,{...n,id:a,data:l,children:c}});if(r)return o}function _A(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Gs(n.data,t,Cc(e,a));return Ac(e),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o}function Gs(i,t,e){if(i instanceof Ze){let r=ex(i,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else{if(i instanceof be)return _A(i,t,e);if(Array.isArray(i)){let r=!1,o=i.map((n,a)=>{let s=Gs(n,t,Cc(e,a));return Ac(e),r=r||s!==void 0,s===void 0&&(s=n),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o):void 0}else if(i&&typeof i=="object"&&!ra(i)){let r={},o=!1;for(let[n,a]of Object.entries(i))if(n!=="name"&&n!=="variableId"){let s=t[n];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,n=s}let l=Gs(a,t,Cc(e,n));Ac(e),o=o||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else if(typeof i=="string"){let r=t[i];return r!==void 0&&DA(e),r}else return}}var na;(t=>{function i(e,r){let o=Je.zoom(r,e.path);if(typeof o=="object"){let n={};for(let a of Object.keys(e.props))n[a]=o[a];return{...e,props:n}}else return{...e,props:{}}}t.replaceProps=i})(na||(na={}));var at;(s=>{function i(l,c){return{...l,path:l.path.slice(c)}}s.drop=i;function t(l,c){return e(l,c)?.data??l}s.applySimple=t;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof We&&c.type===0&&(d=l.runOp({...c,path:u.slice(p.length)}),d===null&&(d=void 0)),d===void 0&&p.length===u.length&&(l instanceof Ze||l instanceof be||l instanceof ue?d=l.runOp(c):d=oa.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let b=u[y],v=p[y];if(v instanceof Ze){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof be){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof ue){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof We){let w={...v,[b]:m};m=Object.setPrototypeOf(w,We.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let w=m;m=[...v],m[b]=w}else m={...v,[b]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let f=u[p.length],h;if(l instanceof Ze){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof be){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)p.push(l),l=h;else return null}}s.apply=e;function r(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=r;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function n(l,c){return r(l.path,c.path)}s.commutative=n;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(at||(at={}));var Fs;(l=>{function i(){return[]}l.empty=i;function t(c,u){let p=[];for(let d of c){let[f,...h]=d.path;f===u&&p.push({...d,path:h})}return p}l.removePrefix=t;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function r(c,u){return[...c,...u]}l.concat=r;function o(c,u){return[...c.filter(d=>!u.some(f=>at.subsumed(d,f))),...u]}l.compress=o;function n(c,u){return c.every(p=>u.every(d=>at.commutative(p,d)))}l.commutative=n;function a(c,u){for(let p of u){let d=s(c,p);d!==null&&(c=d.data)}return c}l.applyAll=a;function s(c,u){var p=c;let d=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,b;if(h.type===3?(m=Je.zoom(p,[...h.path,h.id]),b=at.apply(p,{...h,type:2})):(m=Je.zoom(p,[...h.path,h.id,"value"]),b=at.apply(p,h)),b!==null){p=b.data;let[v,w]=Jg(p,{[h.id]:m});p=v;for(let O=0;O<w.length;O++){let S=w[O],T=S.pop();if(typeof T=="number"){let M=[T];for(let D=O+1;D<w.length;D++){let N=w[D],I=N[N.length-1];if(typeof I=="number"&&Je.equal(S,N.slice(0,N.length-1)))M.push(I),w.splice(D,1);else break}let g=Je.zoom(p,S);y=g.map((D,N)=>M.includes(N)?h.id:D),m=g,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let M=m,g=Je.zoom(p,S.slice(0,S.length-2)),D=g.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:M}}:N);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:S,props:{[T]:m}}),f.push({type:0,path:S,props:{[T]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=at.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof ta)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Fs||(Fs={}));var tx=Symbol(),LA=Symbol(),Ic=Symbol(),en=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let n=r;for(;!(o instanceof Mc);){let a=o._path,s=o._current;if(a!==""&&n.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(n,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ic];r&&r(),delete this._children[t]}}}},fp=class extends en{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else if(this._current instanceof We){let r={...this._current,[t]:e};this._current=Object.setPrototypeOf(r,We.prototype)}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,oa.runOp(this._current,t),t.path)}},hp=class extends en{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ue.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},rx={get(i,t){if(t===Ic)return()=>{i._parent=null};if(t===tx)return i._current;if(t===LA)return i;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],a=Nc(i,t,n);return a!==n?(r===void 0&&(r={},i._children=r),r[t]=a,a):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},RA={...rx,set(i,t,e){let r={type:0,props:{[t]:st(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},BA={...rx,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},aa=class extends en{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ic]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Nc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},sa=class extends en{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ic]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,n=this._current[r].fi;t(this.data(this._current[r].id),o,n)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Nc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function pp(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Je.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Mc=class extends en{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){pp(this.ts,e,t),pp(this.actual,r,t),pp(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Nc(i,t,e){return e instanceof Ze?new aa(i,t,e):e instanceof be?new sa(i,t,e):e instanceof ue?new Proxy(new hp(i,t,e),BA):e!==null&&typeof e=="object"?ra(e)?e:new Proxy(new fp(i,t,e),RA):e}function mp(i){let t=new Mc(i);return[Nc(t,"",i),t]}function ci(i,t){let[e,r]=mp(i);return t(e),r.result()}function st(i){return i instanceof aa||i instanceof sa?i._current:i!==null&&typeof i=="object"?i[tx]:i}var Je;(o=>{function i(n,a){if(a.length===n.length)for(var s=0;s<n.length;){if(n[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=i;function t(n,a,s){let l=r(s,n);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=t;function e(n,a){if((n instanceof Ze||n instanceof aa)&&typeof a=="string")return n.data(a);if((n instanceof be||n instanceof sa)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n))return n[a];if(typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}o.zoomOnce=e;function r(n,a,s=0){for(;s<a.length&&n!==void 0;)n=e(n,a[s]),s+=1;return n}o.zoom=r})(Je||(Je={}));function ox(i,t){let e=[];if(t.length===i.length)for(var r=0;r<i.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}function Be(i,t){let e=[];if(t.length<=i.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}var Ec=class{},js=class extends Ec{constructor(e){super();this.id=e}},Us=class extends Ec{constructor(e){super();this.data=e}};var gp;try{gp=new TextDecoder}catch{}var pe,di,G=0;var dx=[],xp=dx,bp=0,er={},He,ui,br=0,eo=0,dr,Eo,Xt=[],$e,ix={useRecords:!1,mapsAsObjects:!0},ks=class{},Sp=new ks;Sp.name="MessagePack 0xC1";var la=!1,to=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(pe)return yx(()=>(_c(),this?this.unpack(t,e):to.prototype.unpack.call(ix,t,e)));di=e>-1?e:t.length,G=0,bp=0,eo=0,ui=null,xp=dx,dr=null,pe=t;try{$e=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw pe=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof to){if(er=this,this.structures)return He=this.structures,Dc();(!He||He.length>0)&&(He=[])}else er=ix,(!He||He.length>0)&&(He=[]);return Dc()}unpackMultiple(t,e){let r,o=0;try{la=!0;let n=t.length,a=this?this.unpack(t,n):Bc.unpack(t,n);if(e){for(e(a);G<n;)if(o=G,e(Dc())===!1)return}else{for(r=[a];G<n;)o=G,r.push(Dc());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{la=!1,_c()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Dc(){try{if(!er.trusted&&!la){let t=He.sharedLength||0;t<He.length&&(He.length=t)}let i=mt();if(G==di)He.restoreStructures&&nx(),He=null,pe=null,Eo&&(Eo=null);else if(G>di){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!la)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw He.restoreStructures&&nx(),_c(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function nx(){for(let i in He.restoreStructures)He[i]=He.restoreStructures[i];He.restoreStructures=null}function mt(){let i=pe[G++];if(i<160)if(i<128){if(i<64)return i;{let t=He[i&63]||er.getStructures&&px()[i&63];return t?(t.read||(t.read=wp(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[hx()]=mt();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(mt(),mt());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=mt();return t}else if(i<192){let t=i-160;if(eo>=G)return ui.slice(G-br,(G+=t)-br);if(eo==0&&di<140){let e=t<16?Pp(t):fx(t);if(e!=null)return e}return vp(t)}else{let t;switch(i){case 192:return null;case 193:return dr?(t=mt(),t>0?dr[1].slice(dr.position1,dr.position1+=t):dr[0].slice(dr.position0,dr.position0-=t)):Sp;case 194:return!1;case 195:return!0;case 196:return yp(pe[G++]);case 197:return t=$e.getUint16(G),G+=2,yp(t);case 198:return t=$e.getUint32(G),G+=4,yp(t);case 199:return tn(pe[G++]);case 200:return t=$e.getUint16(G),G+=2,tn(t);case 201:return t=$e.getUint32(G),G+=4,tn(t);case 202:if(t=$e.getFloat32(G),er.useFloat32>2){let e=Rc[(pe[G]&127)<<1|pe[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=$e.getFloat64(G),G+=8,t;case 204:return pe[G++];case 205:return t=$e.getUint16(G),G+=2,t;case 206:return t=$e.getUint32(G),G+=4,t;case 207:return er.int64AsNumber?(t=$e.getUint32(G)*4294967296,t+=$e.getUint32(G+4)):t=$e.getBigUint64(G),G+=8,t;case 208:return $e.getInt8(G++);case 209:return t=$e.getInt16(G),G+=2,t;case 210:return t=$e.getInt32(G),G+=4,t;case 211:return er.int64AsNumber?(t=$e.getInt32(G)*4294967296,t+=$e.getUint32(G+4)):t=$e.getBigInt64(G),G+=8,t;case 212:if(t=pe[G++],t==114)return ux(pe[G++]&63);{let e=Xt[t];if(e)return e.read?(G++,e.read(mt())):e.noBuffer?(G++,e()):e(pe.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=pe[G],t==114?(G++,ux(pe[G++]&63,pe[G++])):tn(2);case 214:return tn(4);case 215:return tn(8);case 216:return tn(16);case 217:return t=pe[G++],eo>=G?ui.slice(G-br,(G+=t)-br):zA(t);case 218:return t=$e.getUint16(G),G+=2,eo>=G?ui.slice(G-br,(G+=t)-br):GA(t);case 219:return t=$e.getUint32(G),G+=4,eo>=G?ui.slice(G-br,(G+=t)-br):FA(t);case 220:return t=$e.getUint16(G),G+=2,sx(t);case 221:return t=$e.getUint32(G),G+=4,sx(t);case 222:return t=$e.getUint16(G),G+=2,lx(t);case 223:return t=$e.getUint32(G),G+=4,lx(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var VA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wp(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>VA.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(mt);return i.highByte===0&&(i.read=ax(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let a=i[o];r[a]=mt()}return r}return e.count=0,i.highByte===0?ax(t,e):e}var ax=(i,t)=>function(){let e=pe[G++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=He[r]||px()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=wp(o,i)),o.read()};function px(){let i=yx(()=>(pe=null,er.getStructures()));return He=er._mergeStructures(i,He)}var vp=Lc,zA=Lc,GA=Lc,FA=Lc;function Lc(i){let t;if(i<16&&(t=Pp(i)))return t;if(i>64&&gp)return gp.decode(pe.subarray(G,G+=i));let e=G+i,r=[];for(t="";G<e;){let o=pe[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=pe[G++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=pe[G++]&63,a=pe[G++]&63;r.push((o&31)<<12|n<<6|a)}else if((o&248)===240){let n=pe[G++]&63,a=pe[G++]&63,s=pe[G++]&63,l=(o&7)<<18|n<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Dt.apply(String,r),r.length=0)}return r.length>0&&(t+=Dt.apply(String,r)),t}function sx(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=mt();return t}function lx(i){if(er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[hx()]=mt();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(mt(),mt());return t}}var Dt=String.fromCharCode;function fx(i){let t=G,e=new Array(i);for(let r=0;r<i;r++){let o=pe[G++];if((o&128)>0){G=t;return}e[r]=o}return Dt.apply(String,e)}function Pp(i){if(i<4)if(i<2){if(i===0)return"";{let t=pe[G++];if((t&128)>1){G-=1;return}return Dt(t)}}else{let t=pe[G++],e=pe[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(i<3)return Dt(t,e);let r=pe[G++];if((r&128)>0){G-=3;return}return Dt(t,e,r)}else{let t=pe[G++],e=pe[G++],r=pe[G++],o=pe[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(i<6){if(i===4)return Dt(t,e,r,o);{let n=pe[G++];if((n&128)>0){G-=5;return}return Dt(t,e,r,o,n)}}else if(i<8){let n=pe[G++],a=pe[G++];if((n&128)>0||(a&128)>0){G-=6;return}if(i<7)return Dt(t,e,r,o,n,a);let s=pe[G++];if((s&128)>0){G-=7;return}return Dt(t,e,r,o,n,a,s)}else{let n=pe[G++],a=pe[G++],s=pe[G++],l=pe[G++];if((n&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(i<10){if(i===8)return Dt(t,e,r,o,n,a,s,l);{let c=pe[G++];if((c&128)>0){G-=9;return}return Dt(t,e,r,o,n,a,s,l,c)}}else if(i<12){let c=pe[G++],u=pe[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(i<11)return Dt(t,e,r,o,n,a,s,l,c,u);let p=pe[G++];if((p&128)>0){G-=11;return}return Dt(t,e,r,o,n,a,s,l,c,u,p)}else{let c=pe[G++],u=pe[G++],p=pe[G++],d=pe[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(i<14){if(i===12)return Dt(t,e,r,o,n,a,s,l,c,u,p,d);{let f=pe[G++];if((f&128)>0){G-=13;return}return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f)}}else{let f=pe[G++],h=pe[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(i<15)return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f,h);let m=pe[G++];if((m&128)>0){G-=15;return}return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f,h,m)}}}}}function yp(i){return er.copyBuffers?Uint8Array.prototype.slice.call(pe,G,G+=i):pe.subarray(G,G+=i)}function tn(i){let t=pe[G++];if(Xt[t])return Xt[t](pe.subarray(G,G+=i));throw new Error("Unknown extension type "+t)}var cx=new Array(4096);function hx(){let i=pe[G++];if(i>=160&&i<192){if(i=i-160,eo>=G)return ui.slice(G-br,(G+=i)-br);if(!(eo==0&&di<180))return vp(i)}else return G--,mt();let t=(i<<5^(i>1?$e.getUint16(G):i>0?pe[G]:0))&4095,e=cx[t],r=G,o=G+i-3,n,a=0;if(e&&e.bytes==i){for(;r<o;){if(n=$e.getUint32(r),n!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=pe[r++],n!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],cx[t]=e,e.bytes=i;r<o;)n=$e.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=pe[r++],e.push(n);let s=i<16?Pp(i):fx(i);return s!=null?e.string=s:e.string=vp(i)}var ux=(i,t)=>{var e=mt();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=He[i];return o&&o.isShared&&((He.restoreStructures||(He.restoreStructures=[]))[i]=o),He[i]=e,e.read=wp(e,r),e.read()},mx=typeof self=="object"?self:global;Xt[0]=()=>{};Xt[0].noBuffer=!0;Xt[101]=()=>{let i=mt();return(mx[i[0]]||Error)(i[1])};Xt[105]=i=>{let t=$e.getUint32(G-4);Eo||(Eo=new Map);let e=pe[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Eo.set(t,o);let n=mt();return o.used?Object.assign(r,n):(o.target=n,n)};Xt[112]=i=>{let t=$e.getUint32(G-4),e=Eo.get(t);return e.used=!0,e.target};Xt[115]=()=>new Set(mt());var Op=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Xt[116]=i=>{let t=i[0],e=Op[t];if(!e)throw new Error("Could not find typed array for code "+t);return new mx[e](Uint8Array.prototype.slice.call(i,1).buffer)};Xt[120]=()=>{let i=mt();return new RegExp(i[0],i[1])};Xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=G;G+=t-4,dr=[mt(),mt()],dr.position0=0,dr.position1=0;let r=G;G=e;try{return mt()}finally{G=r}};Xt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function yx(i){let t=di,e=G,r=bp,o=br,n=eo,a=ui,s=xp,l=Eo,c=dr,u=new Uint8Array(pe.slice(0,di)),p=He,d=He.slice(0,He.length),f=er,h=la,m=i();return di=t,G=e,bp=r,br=o,eo=n,ui=a,xp=s,Eo=l,dr=c,pe=u,la=h,He=p,He.splice(0,He.length,...d),er=f,$e=new DataView(pe.buffer,pe.byteOffset,pe.byteLength),m}function _c(){pe=null,Eo=null,He=null}function gx(i){i.unpack?Xt[i.type]=i.unpack:Xt[i.type]=i}var Rc=new Array(147);for(let i=0;i<256;i++)Rc[i]=+("1e"+Math.floor(45.15-i*.30103));var Bc=new to({useRecords:!1}),jA=Bc.unpack,UA=Bc.unpackMultiple,kA=Bc.unpack,Vc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},HA=new Float32Array(1),J4=new Uint8Array(HA.buffer,0,4);var zc;try{zc=new TextEncoder}catch{}var Gc,Cp,Fc=typeof Buffer<"u",Tp=Fc?Buffer.allocUnsafeSlow:Uint8Array,Sx=Fc?Buffer:Uint8Array,xx=Fc?4294967296:2144337920,X,yt,k=0,ro,oo=null,WA=/[\u0080-\uFFFF]/,Hs=Symbol("record-id"),rn=class extends to{constructor(t){super(t),this.offset=0;let e,r,o,n,a,s,l=0,c=Sx.prototype.utf8Write?function(g,D,N){return X.utf8Write(g,D,N)}:zc&&zc.encodeInto?function(g,D){return zc.encodeInto(g,X.subarray(D)).written}:!1,u=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,b=f+h+64;if(b>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,O=0;this.pack=this.encode=function(g,D){if(X||(X=new Tp(8192),yt=new DataView(X.buffer,0,8192),k=0),ro=X.length-10,ro-k<2048?(X=new Tp(X.length),yt=new DataView(X.buffer,0,X.length),ro=X.length-10,k=0):k=k+7&2147483640,r=k,s=u.structuredClone?new Map:null,u.bundleStrings?(oo=["",""],X[k++]=214,X[k++]=98,oo.position=k-r,k+=4):oo=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<N;I++){let E=o[I];if(!E)continue;let _,L=o.transitions;for(let V=0,U=E.length;V<U;V++){let B=E[V];_=L[B],_||(_=L[B]=Object.create(null)),L=_}L[Hs]=I+64}l=N}p||(o.nextId=N+64)}n&&(n=!1),a=o||[];try{if(S(g),oo){yt.setUint32(oo.position+r,k-oo.position-r);let N=oo;oo=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>ro&&M(k),u.offset=k;let N=$A(X.subarray(r,k),s.idsToInsert);return s=null,N}return D&Px?(X.start=r,X.end=k,X):X.subarray(r,k)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Hs]=0;v=[]}if(n&&u.saveStructures){let N=o.sharedLength||f;o.length>N&&(o=o.slice(0,N));let I=X.subarray(r,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=N,I)}}D&eM&&(k=r)}};let S=g=>{k>ro&&(X=M(k));var D=typeof g,N;if(D==="string"){let I=g.length;if(oo&&I>=8&&I<4096){let L=WA.test(g);oo[L?0:1]+=g,X[k++]=193,S(L?-I:I);return}let E;I<32?E=1:I<256?E=2:I<65536?E=3:E=5;let _=I*3;if(k+_>ro&&(X=M(k+_)),I<64||!c){let L,V,U,B=k+E;for(L=0;L<I;L++)V=g.charCodeAt(L),V<128?X[B++]=V:V<2048?(X[B++]=V>>6|192,X[B++]=V&63|128):(V&64512)===55296&&((U=g.charCodeAt(L+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),L++,X[B++]=V>>18|240,X[B++]=V>>12&63|128,X[B++]=V>>6&63|128,X[B++]=V&63|128):(X[B++]=V>>12|224,X[B++]=V>>6&63|128,X[B++]=V&63|128);N=B-k-E}else N=c(g,k+E,_);N<32?X[k++]=160|N:N<256?(E<2&&X.copyWithin(k+2,k+1,k+1+N),X[k++]=217,X[k++]=N):N<65536?(E<3&&X.copyWithin(k+3,k+2,k+2+N),X[k++]=218,X[k++]=N>>8,X[k++]=N&255):(E<5&&X.copyWithin(k+5,k+3,k+3+N),X[k++]=219,yt.setUint32(k,N),k+=4),k+=N}else if(D==="number")if(g>>>0===g)g<64?X[k++]=g:g<256?(X[k++]=204,X[k++]=g):g<65536?(X[k++]=205,X[k++]=g>>8,X[k++]=g&255):(X[k++]=206,yt.setUint32(k,g),k+=4);else if(g>>0===g)g>=-32?X[k++]=256+g:g>=-128?(X[k++]=208,X[k++]=g+256):g>=-32768?(X[k++]=209,yt.setInt16(k,g),k+=2):(X[k++]=210,yt.setInt32(k,g),k+=4);else{let I;if((I=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){X[k++]=202,yt.setFloat32(k,g);let E;if(I<4||(E=g*Rc[(X[k]&127)<<1|X[k+1]>>7])>>0===E){k+=4;return}else k--}X[k++]=203,yt.setFloat64(k,g),k+=8}else if(D==="object")if(!g)X[k++]=192;else{if(s){let E=s.get(g);if(E){if(!E.id){let _=s.idsToInsert||(s.idsToInsert=[]);E.id=_.push(E)}X[k++]=214,X[k++]=112,yt.setUint32(k,E.id),k+=4;return}else s.set(g,{offset:k-r})}let I=g.constructor;if(I===Object)T(g,!0);else if(I===Array){N=g.length,N<16?X[k++]=144|N:N<65536?(X[k++]=220,X[k++]=N>>8,X[k++]=N&255):(X[k++]=221,yt.setUint32(k,N),k+=4);for(let E=0;E<N;E++)S(g[E])}else if(I===Map){N=g.size,N<16?X[k++]=128|N:N<65536?(X[k++]=222,X[k++]=N>>8,X[k++]=N&255):(X[k++]=223,yt.setUint32(k,N),k+=4);for(let[E,_]of g)S(E),S(_)}else{for(let E=0,_=Gc.length;E<_;E++){let L=Cp[E];if(g instanceof L){let V=Gc[E];if(V.write){V.type&&(X[k++]=212,X[k++]=V.type,X[k++]=0),S(V.write.call(this,g));return}let U=X,B=yt,q=k;X=null;let j;try{j=V.pack.call(this,g,F=>(X=U,U=null,k+=F,k>ro&&M(k),{target:X,targetView:yt,position:k-F}),S)}finally{U&&(X=U,yt=B,k=q,ro=X.length-10)}j&&(j.length+k>ro&&M(j.length+k),k=qA(j,X,k,V.type));return}}T(g,!g.hasOwnProperty)}}else if(D==="boolean")X[k++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))X[k++]=211,yt.setBigInt64(k,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)X[k++]=207,yt.setBigUint64(k,g);else if(this.largeBigIntToFloat)X[k++]=203,yt.setFloat64(k,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(D==="undefined")this.encodeUndefinedAsNil?X[k++]=192:(X[k++]=212,X[k++]=0,X[k++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},T=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),N=D.length;N<16?X[k++]=128|N:N<65536?(X[k++]=222,X[k++]=N>>8,X[k++]=N&255):(X[k++]=223,yt.setUint32(k,N),k+=4);let I;for(let E=0;E<N;E++)S(I=D[E]),S(g[I])}:(g,D)=>{X[k++]=222;let N=k-r;k+=2;let I=0;for(let E in g)(D||g.hasOwnProperty(E))&&(S(E),S(g[E]),I++);X[N+++r]=I>>8,X[N+r]=I&255}:g=>{let D=Object.keys(g),N,I=a.transitions||(a.transitions=Object.create(null)),E=0;for(let L=0,V=D.length;L<V;L++){let U=D[L];N=I[U],N||(N=I[U]=Object.create(null),E++),I=N}let _=I[Hs];if(_)_>=96&&m?(X[k++]=((_-=96)&31)+96,X[k++]=_>>5):X[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let L=D.highByte=_>=96&&m?_-96>>5:-1;I[Hs]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,n=!0,L>=0?(X[k++]=(_&31)+96,X[k++]=L):X[k++]=_):(L>=0?(X[k++]=213,X[k++]=114,X[k++]=(_&31)+96,X[k++]=L):(X[k++]=212,X[k++]=114,X[k++]=_),E&&(w+=O*E),v.length>=h&&(v.shift()[Hs]=0),v.push(I),S(D))}for(let L=0,V=D.length;L<V;L++)S(g[D[L]])},M=g=>{let D;if(g>16777216){if(g-r>xx)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(xx,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-r<<2,X.length-1)>>12)+1<<12;let N=new Tp(D);return yt=new DataView(N.buffer,0,D),X.copy?X.copy(N,0,r,g):N.set(X.slice(r,g)),k-=r,r=0,ro=N.length-10,X=N}}useBuffer(t){X=t,yt=new DataView(X.buffer,X.byteOffset,X.byteLength),k=0}};Cp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ks];Gc=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:a}=t(6);o[a++]=214,o[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:a}=t(10);o[a++]=215,o[a++]=255,n.setUint32(a,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:n,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,n.setUint32(a,i.getMilliseconds()*1e6),n.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?bx(i,16,t):vx(Fc?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==Sx&&this.structuredClone?bx(i,Op.indexOf(e.name),t):vx(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function bx(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:a}=e(4+o);n[a++]=199,n[a++]=o+1}else if(o+1<65536){var{target:n,position:a}=e(5+o);n[a++]=200,n[a++]=o+1>>8,n[a++]=o+1&255}else{var{target:n,position:a,targetView:s}=e(7+o);n[a++]=201,s.setUint32(a,o+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),a)}function vx(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function qA(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function $A(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);e=t.pop();){let n=e.offset,a=e.id;i.copyWithin(n+r,n,o),r-=6;let s=n+r;i[s++]=214,i[s++]=105,i[s++]=a>>24,i[s++]=a>>16&255,i[s++]=a>>8&255,i[s++]=a&255,o=n}return i}function pi(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");Cp.unshift(i.Class),Gc.unshift(i)}gx(i)}var wx=new rn({useRecords:!1}),XA=wx.pack,YA=wx.pack;var{NEVER:KA,ALWAYS:QA,DECIMAL_ROUND:ZA,DECIMAL_FIT:JA}=Vc,Px=512,eM=1024;var Ox=new rn({structuredClone:!0});pi({Class:ue.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ue.prototype),i}});pi({Class:be.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,be.prototype),i}});pi({Class:Ze.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ze.prototype),i}});pi({Class:js.prototype.constructor,type:4,write(i){return i.id},read(i){return new js(i)}});pi({Class:Us.prototype.constructor,type:5,write(i){return i.data},read(i){return new Us(i)}});pi({Class:We.prototype.constructor,type:6,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,We.prototype),i}});function tM(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function Ap(i){if(ra(i))return i;if(Array.isArray(i))return i.map(Ap);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=Ap(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var jc;(r=>{function i(o){return Ox.pack(o)}r.serialize=i;function t(o){return Ox.unpack(o)}r.deserialize=t;function e(o){return tM(i(Ap(o))).toString()}r.checksum=e})(jc||(jc={}));var mi="personal camera",yi="a218fcc3-276b-49b9-b485-49037fd14f5f",Nx=2960946,gt=5526619;var ca;(f=>{function i(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=i;function t(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=t;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function r(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=r;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function n(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=n;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let b=f.sub(m,h),v=f.sub(y,h),w=f.dot(b,v)/f.dot(b,b),O=f.scalarMultiply(b,w);return f.add(h,O)}f.projectionOnto=u;function p(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=p;function d(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=d})(ca||(ca={}));var fi;(s=>{function i(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=i;function t(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=t;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function r(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=r;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function n(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=n;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(fi||(fi={}));var Tx;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(Tx||(Tx={}));var Cx;(a=>{let i=180/Math.PI,t=Math.PI/180;function e(s){return typeof s=="number"?s*i:s}function r(s){return typeof s=="number"?s*t:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function n(s){return[r(s[0]),r(s[1]),r(s[2])]}a.degToRad=n})(Cx||(Cx={}));var hi;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,a){for(let s=0;s<16;s++)if(n[s]!==a[s])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=n[3]*a[l]+n[7]*a[l+1]+n[11]*a[l+2]+n[15];s[l]=(n[0]*a[l]+n[4]*a[l+1]+n[8]*a[l+2]+n[12])/u,s[l+1]=(n[1]*a[l]+n[5]*a[l+1]+n[9]*a[l+2]+n[13])/u,s[l+2]=(n[2]*a[l]+n[6]*a[l+1]+n[10]*a[l+2]+n[14])/u}return s}o.applyMatrix4=r})(hi||(hi={}));var Tt;(d=>{function i(f){return typeof f=="object"&&typeof f.r=="number"&&typeof f.g=="number"&&typeof f.b=="number"}d.isRGB=i,d.white={r:1,g:1,b:1},d.red={r:1,g:0,b:0},d.black={r:0,g:0,b:0};function o(f){return{r:Math.round(f.r*255),g:Math.round(f.g*255),b:Math.round(f.b*255),a:1}}d.toRgb255a1=o;function n(f){return{r:f.r,g:f.g,b:f.b}}d.clone=n;function a(f){return f=Math.floor(f),{r:(f>>16&255)/255,g:(f>>8&255)/255,b:(f&255)/255}}d.fromHex=a;function s(f){return Math.round(f.r*255)*65536+Math.round(f.g*255)*256+Math.round(f.b*255)}d.toHex=s;function l(f,h){return f.r===h.r&&f.g===h.g&&f.b===h.b}d.equals=l;function c(f,h){return f.r.toFixed(2)===h.r.toFixed(2)&&f.g.toFixed(2)===h.g.toFixed(2)&&f.b.toFixed(2)===h.b.toFixed(2)}d.equalsFixed=c;function u(f,h,m){return{r:f.r+(h.r-f.r)*m,g:f.g+(h.g-f.g)*m,b:f.b+(h.b-f.b)*m}}d.lerp=u;function p(f){return ht(f)?"r"in f&&"g"in f&&"b"in f&&!("a"in f):!1}d.is=p})(Tt||(Tt={}));var Ne;(u=>{u.white={...Tt.white,a:1};function t(p){return ht(p)?"r"in p&&"g"in p&&"b"in p&&"a"in p:!1}u.is=t,u.transparent={...Tt.white,a:0};function r(p){return{r:p[0],g:p[1],b:p[2],a:p[3]}}u.from0to1=r;function o(p,d){return{...Tt.fromHex(p),a:d}}u.fromHexAndA=o;function n(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:p.a}}u.toRgb255a1=n;function a(p,d){return Tt.equals(p,d)&&p.a===d.a}u.equals=a;function s(p,d){return Tt.equalsFixed(p,d)&&p.a.toFixed(2)===d.a.toFixed(2)}u.equalsFixed=s;function l(p,d,f){return{r:p.r+(d.r-p.r)*f,g:p.g+(d.g-p.g)*f,b:p.b+(d.b-p.b)*f,a:p.a+(d.a-p.a)*f}}u.lerp=l;function c({r:p,g:d,b:f,a:h}=u.white){return`rgba(${p*255}, ${d*255}, ${f*255}, ${h})`}u.toStyle=c})(Ne||(Ne={}));var Uc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Uc||(Uc={}));var Ax;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ax||(Ax={}));var Mx;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(Mx||(Mx={}));var Ix;(n=>(n.linear=[0,0,1,1],n.ease=[.25,.1,.25,1],n.easeIn=[.42,0,1,1],n.easeOut=[0,0,.58,1],n.easeInOut=[.42,0,.58,1]))(Ix||(Ix={}));function Mp(i){return typeof i=="string"&&i.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i):!1}var Lr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Lr||(Lr={}));var gi;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective?.zoom??1:n.orthographic?.zoom??1}o.getZoom=r})(gi||(gi={}));var io;(r=>{function i(o,n=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(o[0],o[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[o[0]+o[0]*n,0,0]},grid:{count:[2,2,2],size:o.map(a=>a*(1+n)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}r.defaultData=i;function t(o,n){let a={...o};if(rM.forEach(s=>{Object.assign(a,{[s]:n[s]??o[s]})}),a.radial={...o.radial},n.radial){let s=o.radial,l=n.radial;oM.forEach(c=>{Object.assign(a.radial,{[c]:l[c]??s[c]})})}if(a.linear={...o.linear},n.linear){let s=o.linear,l=n.linear;iM.forEach(c=>{Object.assign(a.linear,{[c]:l[c]??s[c]})})}if(a.grid={...o.grid},n.grid){let s=o.grid,l=n.grid;nM.forEach(c=>{Object.assign(a.grid,{[c]:l[c]??s[c]})})}if(a.toObject={...o.toObject},n.toObject){let s=o.toObject,l=n.toObject;aM.forEach(c=>{Object.assign(a.toObject,{[c]:l[c]??s[c]})})}if(a.randomnessObject={...o.randomnessObject},n.randomnessObject){let s=o.randomnessObject,l=n.randomnessObject;sM.forEach(c=>{Object.assign(a.randomnessObject,{[c]:l[c]??s[c]})})}return a}r.merge=t;function e(o){return!!(o.randomnessObject||o.toObject)}r.isPartial=e})(io||(io={}));var kc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,n){let a=[];o.count!==void 0&&a.push({type:0,path:n,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...n,s],props:l})}return a}r.toOps=e})(kc||(kc={}));var rM=["count"],oM=["radius","start","end","position","scale","rotation"],iM=["position","scale","rotation"],nM=["count","size"],aM=["count","position","scale","rotation"],sM=["strength","scale","rotation","position","movement","seed","freqScale"];var Hc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Hc||(Hc={}));var Wc;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Ne.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ne.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ne.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Wc||(Wc={}));var ua;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...r.defaultCollisionData}))(ua||(ua={}));var xi;(t=>t.defaultData={enabled:"visibility",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]})(xi||(xi={}));var Ip;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ip||(Ip={}));var Np;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Np||(Np={}));var qc;(t=>t.defaultData={...Np.defaultData,...Ip.defaultData})(qc||(qc={}));var Ex;(t=>{function i(e,r){let o=[];if("material"in e){let n=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;n&&o.push(n)}else if("materials"in e)for(let n of e.materials){let a=typeof n=="string"?r.materials[n]??r.lib.materials[n]?.asset:n;a&&o.push(a)}return o}t.getMaterialData=i})(Ex||(Ex={}));var da;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(da||(da={}));var Dx;(t=>{function i(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=i})(Dx||(Dx={}));function Lx(i){return i.type!=="displace"}var _x;(t=>{function i(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=i})(_x||(_x={}));var Rx=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Bx=["wrapping","image","video","name","minFilter","magFilter"],St;(o=>{function i(n,a){let{texture:s,...l}=a;if(Object.assign(n,l),s){let c=n.texture;c&&Object.assign(c,s)}}o.patch=i;function t(n,a){return n==="light"&&a?e(a):r(n)}o.defaultData=t;function e(n){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(n){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(n){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(n){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:da.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:Tt.fromHex(gt)};case"depth":return{...a,type:"depth",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{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",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{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ne.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",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:Ne.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ne.fromHexAndA(0,1),contourColor:Ne.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{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Tt.fromHex(0),a:1},colorB:{...Tt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(St||(St={}));var Ct;(c=>{function i(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=i;function t(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([f,h])=>{p+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>p+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${h}`})}),p}c.getHash=t;function e(){return{layers:new be}}c.defaultEmptyData=e;function r(u="layer1",p="layer2"){return n("phong",u,p)}c.defaultData=r;function o(u,p){return{...u,name:p}}c.withName=o;function n(u,p="layer1",d="layer2"){let f=new be;return f.push({fi:0,data:St.defaultData("light",u),id:p}),f.push({fi:1,data:St.defaultData("color"),id:d}),{layers:f}}c.defaultTwoLayerData=n;function a(u){let p=St.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new be;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...St.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...St.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",f="layer2"){let h=St.defaultData("texture");Object.assign(h.texture,{image:u});let m=new be;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:St.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",f="layer2"){let h=St.defaultData("video");Object.assign(h.texture,{video:u});let m=new be;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:St.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Ct||(Ct={}));var pa;(t=>{function i(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(pa||(pa={}));var fa;(t=>{function i(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=i})(fa||(fa={}));var Ep={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var $c;(t=>{function i(e,r){let o={...e};return lM.forEach(n=>{Object.assign(o,{[n]:r[n]??e[n]})}),o}t.merge=i})($c||($c={}));var Xc={shape:Ep,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},lM=["depth","offset","angle","twist","startScale","endScale"];var Ws;(r=>{function i(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="UIGeometry"}r.is2DParametricMesh=i;function t(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="BooleanGeometry"||o==="TextGeometry"||o==="InputGeometry"}r.isParametricMesh=t;function e(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="TextGeometry"||o==="SubdivGeometry"||o==="NonParametricGeometry"}r.isSwappableGeometry=e})(Ws||(Ws={}));var Yc;(t=>{function i(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,$c.merge(o.extrusion,r.extrusion))),o}t.merge=i})(Yc||(Yc={}));var no;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:fa.defaultData(),extrusion:Xc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:pa.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="ShapeBlendGeometry")return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...t.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=i})(no||(no={}));var Kc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Tt.white,near:.1,far:2e3})(Kc||(Kc={}));var Qc;(e=>{let i={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...i,blendFunction:16,granularity:15},bloom:{...i,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...i,offset:[2,2]},vignette:{...i,darkness:1,offset:0},hueSaturation:{...i,hue:3,saturation:0},brightnessContrast:{...i,brightness:.25,contrast:0},depthOfField:{...i,focusDistance:100,focalLength:20,bokehScale:5},noise:{...i,blendFunction:16}}})(Qc||(Qc={}));var Dp;(t=>t.defaultData={softShadowQuality:"low"})(Dp||(Dp={}));var _p;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(_p||(_p={}));var Lp;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Lp||(Lp={}));var qs;(t=>t.defaultData={usePhysics:!1,gravity:-10})(qs||(qs={}));var Rp;(t=>t.defaultData={playCamera:mi,gameControlObject:null})(Rp||(Rp={}));var Zc;(t=>t.defaultData={backgroundColor:Ne.fromHexAndA(Nx,1),postprocessing:Qc.defaultData,fog:Kc.defaultData,globalPhysics:qs.defaultData,ambient:_p.defaultData,ao:Lp.defaultData,shadow:Dp.defaultData,publish:Rp.defaultData})(Zc||(Zc={}));var Jc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Jc||(Jc={}));var Vx;(e=>{function i(r){return r==="Component"||r==="Instance"}e.isComponentRelated=i;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(Vx||(Vx={}));var ha;(o=>{o.identity={...Uc.identity,hiddenMatrix:hi.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,a){return{position:a?.position||n.position,rotation:a?.rotation||n.rotation,scale:a?.scale||n.scale,hiddenMatrix:a?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,a){return Kl({position:fi.isEqual(n.position,a.position)?void 0:a.position,rotation:fi.isEqual(n.rotation,a.rotation)?void 0:a.rotation,scale:fi.isEqual(n.scale,a.scale)?null:a.scale,hiddenMatrix:hi.isEqual(n.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(ha||(ha={}));var xt;(t=>t.defaultData={states:new be,events:new be,timelineAnimations:new ue,visible:!0,raycastLock:!1,physics:xi.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ha.identity,cloner:null})(xt||(xt={}));var eu;(t=>t.defaultData={type:"Empty",...xt.defaultData})(eu||(eu={}));var zx;(t=>t.defaultData={type:"ParticleCollider",...Jc.defaultData,...xt.defaultData})(zx||(zx={}));var Gx;(t=>t.defaultData={type:"Component",...xt.defaultData})(Gx||(Gx={}));var Fx;(t=>t.defaultData={type:"Particle",...xt.defaultData,...ua.defaultData})(Fx||(Fx={}));var Do;(t=>t.defaultData={type:"Mesh",...xt.defaultData,...qc.defaultData})(Do||(Do={}));var on;(t=>t.defaultData={...xt.defaultData,...ha.identity,position:[0,0,gi.DefaultTargetOffset],...gi.defaultData})(on||(on={}));var tu;(e=>{function i(r){return{...xt.defaultData,...Wc.defaultData(r)}}e.defaultData=i,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(tu||(tu={}));var ma;(e=>{function i(r,o,n=0){for(;n<o.length;){let a=r?r[o[n]]:void 0;if(o.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=i;function t(r,o,n=0){let a=i(r,o,n);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(ma||(ma={}));var ao;(n=>{n.rootOverrideProps=["physics","events"],n.compositeNonOptionalOverrideProps=["geometry"],n.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...xt.defaultData,...s,component:a,overrides:new We,physics:void 0,events:void 0,type:"Instance"}}n.ofComponent=r;function o(a){let s=ha.fromObject(a.data);return r(a.id,s)}n.fromComponentData=o})(ao||(ao={}));var _o;(e=>{e.defaultData={type:"Page",...xt.defaultData,physics:{...xi.defaultData,fusedBody:!1},...Zc.defaultData,camera:on.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(_o||(_o={}));var ru;(s=>(s.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:hi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:xi.defaultData,states:new be,events:new be,timelineAnimations:new ue,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...gi.defaultData},s.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},s.defaultMeshObject={name:"Rectangle",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("RectangleGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultBooleanObject={name:"Boolean",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("BooleanGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultShapeBlendObject={name:"Shape Blend",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("ShapeBlendGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultTextObject={name:"Text",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("TextGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultInputObject={name:"Input",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("InputGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")}))(ru||(ru={}));var nn;(o=>{function i(n,a){let s={name:a};return n.type==="Mesh"?(s.geometry={},"material"in n&&(s.material={layers:new We}),"materials"in n&&(s.materials=n.materials.map(l=>({layers:new We})))):Lr.is(n.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=i;function t(n,a){if(a===void 0)return n;let s={...n};return"material"in s&&"material"in a&&a.material&&(s.material=ci(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&St.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=ci(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let f=l[c]?.layers?.data(p);f&&St.patch(f,d)}}}).data),s}function e(n,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[f,h]of Object.entries(d.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let b={path:[...p,"layers",f,"texture"],props:m,type:0};l.push(b)}if(Object.keys(y).length>0){let b={path:[...p,"layers",f],props:y,type:0};l.push(b)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...kc.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[f,h]of Object.entries(d))u(["materials",f],h);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let f={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(f),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let f={path:[p],props:d,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function r(n,a){if(a===void 0)return n;let s={...n};if(Object.assign(s,ha.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Lr.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(n.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Yc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:io.merge(s.cloner,a.cloner)});else if(n.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:io.merge(s.cloner,a.cloner)});else if(Hc.is(n.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Tt.clone(l.color))}return s}o.patch=r})(nn||(nn={}));var ya;(t=>t.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,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(ya||(ya={}));var Sr;(t=>t.defaultData={orbitControls:ya.defaultData,playPage:yi,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,n=0;return r<5?n=-30:r<10&&(n=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,n],"show"]}),settings:{image:{format:"jpg",ratio:1,colorSpace:"display-p3"},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,format:"mp4",imageFormat:"jpg",activeTimeline:null,colorSpace:"display-p3"},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1})(Sr||(Sr={}));var Bp;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Bp||(Bp={}));var Vp;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Vp||(Vp={}));var Lo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Bp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Vp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Lo||(Lo={}));var jx;(e=>{function i(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=i;function t(r,o,n){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Bo.getComponentData(r,s.component)?.data;l&&n(a,s,l.events)}else n(a,s,s.events)})}e.traverseModuleInstances=t})(jx||(jx={}));var Ro;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:tu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=ru.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),d.push(...p);let h=new Ze;return h.push({fi:1,id:yi,data:{..._o.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Sr.defaultData,styles:Lo.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ze,publish:Sr.defaultData,styles:Lo.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Sr.defaultData,styles:Lo.defaultData()}},c.emptyData=function(){return{objects:new Ze,publish:{...Sr.defaultData},styles:Lo.defaultData()}};function s(u){return{...c.defaultData,objects:Ot(u,Ze.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ro||(Ro={}));var ga;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ga||(ga={}));var ou;(e=>(e.defaultData=r=>({url:r,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=r=>r==="number"?0:r==="boolean"?!1:""))(ou||(ou={}));var Ux;(t=>t.defaultData=(e,r="GET")=>({url:e,method:r,name:"New API",headers:new be,queries:new be,autoStart:!0}))(Ux||(Ux={}));var bi;(n=>{function i(a){return a.textValue!==void 0}n.isTextValue=i;function t(a){return typeof a=="number"}n.isNumber=t;function e(a){return typeof a=="boolean"}n.isBoolean=e;function r(a){return i(a)?"string":e(a)?"boolean":"number"}n.typeOfVariable=r;function o(a){return n.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():n.isBoolean(a)?a?"True":"False":n.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}n.getDisplayedValue=o})(bi||(bi={}));var zp;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(zp||(zp={}));var kx;(t=>t.all=[...zp.all,"components"])(kx||(kx={}));var Hx;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Hx||(Hx={}));var Rr;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Rr||(Rr={}));var wr;(n=>{function i(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Ot(a,ue.prototype)}n.defaultColors=i;function t(){return Ot({},ue.prototype)}n.defaultImages=t;function e(){return{catelogs:new ue,materials:new ue,images:new ue,videos:new ue,colors:new ue,timelineAnimations:new ue,audios:new ue,particles:new ue,fonts:new ue,variables:new be,userAPIs:new ue,userWebhooks:new ue,lib:Rr.defaultData()}}n.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}n.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}n.getFormattedTimerTime=o})(wr||(wr={}));import{MathUtils as au}from"three";var iu;(t=>t.list=["idle","move","jump","run"])(iu||(iu={}));var nu;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ne.fromHexAndA(3728051,1)}}))(nu||(nu={}));function Wx(i){i.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let s=2;s<10;s++)o.push(o[1]),n.push(1);let a={..._r(st(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...st(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Vo(i,t){Object.values(i.shared.materials).forEach(e=>t(e))}function zo(i,t){i.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,n)=>{o===void 0&&(r.materials[n]=Ct.defaultData(),o=r.materials[n]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Ct.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Ct.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==We.prototype&&t(o.material)})})}function cM(i){Object.assign(i.scene.publish,{orbitControls:{...ya.defaultData,...st(i.scene.publish.orbitControls)}})}function uM(i){Object.assign(i.scene.publish.settings,{video:{...Sr.defaultData.settings.video,...st(i.scene.publish.settings.video)}})}function dM(i){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,n]of Object.entries(r))if((Rx.includes(o)||typeof n=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(n))(Bx.includes(a)||typeof s=="boolean")&&delete n[a]}}}i.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let n=o;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function pM(i){i.scene.publish.withBackground=!0}function fM(i){i.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function hM(i){i.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function mM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function yM(i){i.scene.objects.traverse((t,e)=>{let r=i.scene.objects.unproxy().parent(t);if(r){let o=st(i.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=st(e).booleanExclude!==!0)}})}function gM(i){i.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function xM(i){function t(r){Object.setPrototypeOf(r,We.prototype),r.texture&&Object.setPrototypeOf(r.texture,We.prototype)}function e(r){Object.setPrototypeOf(r,We.prototype);for(let o in r)t(r[o])}i.scene.objects.traverse((r,o)=>{o.states.forEach(n=>{let a=n;if(a.material){let s=st(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=st(l).layers;e(c),l.layers=c}})})}function qx(i){i.layers===void 0&&Object.assign(i,Ct.defaultTwoLayerData("lambert"))}function Gp(i){!i.layers||i.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...st(t),colors:e,steps:r};Object.assign(t,o)}})}function bM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function $x(i){i.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Gp(r)}):"material"in e&&typeof e.material!="string"&&Gp(e.material)}),Object.values(i.shared.materials).forEach(t=>Gp(t))}function vM(i){i.scene.environment.ambientLight.softShadows=!1,i.scene.environment.ambientLight.softShadowQuality="low",i.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),i.shared.penumbraSize=new Array(5).fill(.5)}function SM(i){i.shared.audios=Ot({},ue.prototype)}function wM(i){i.shared.videos=Ot({},ue.prototype)}function PM(i){let t=i.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function OM(i){Object.entries(st(i.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.images[r]}),Object.entries(st(i.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.audios[r]})}function TM(i){i.scene.publish.settings.web.preload=!1}function Xx(i){i.layers&&i.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Yx(i){i.layers&&i.layers.forEach(t=>{Lx(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function CM(i){i.shared.fonts=Ot({},ue.prototype)}function AM(i){return i.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function MM(i){let t=[];i.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let n=Ct.defaultTwoLayerData("phong"),a=typeof o.color=="string"?i.shared.colors[o.color]:o.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=o.alpha;let s=AM(o.font);i.shared.fonts[s]===void 0&&(i.shared.fonts[s]={name:s});let l={name:o.name,...xt.defaultData,...Do.defaultData,flatShading:!1,wireframe:!1,geometry:{...no.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:st(o.states),events:st(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=st(i.scene.objects).parent(e);i.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{i.scene.objects.delete(e)})}function IM(i){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};i.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new be,move:new be,jump:new be}});else{let n=new be;Object.assign(o,{actions:n}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&n.push({fi:0,id:au.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,_r(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new be({fi:0,id:au.generateUUID(),data:c},{fi:1,id:au.generateUUID(),data:d})};n.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function NM(i){i.scene.objects.traverse((t,e)=>{function r(o,n){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===n){let p;s.push(c),l.interaction==="play"?p={..._r(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={..._r(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:u,id:c,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:au.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Kx(i){let t=i.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=St.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Qx(i){Vo(i,Kx),zo(i,Kx)}function EM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function DM(i){i.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function _M(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Ct.defaultTwoLayerData("phong"))})}function LM(i){i.scene.publish.orbitControls.autoZoom===void 0&&(i.scene.publish.orbitControls.autoZoom=!1),i.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function RM(i){i.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function BM(i){i.scene.publish.mouseEventTarget===void 0&&(i.scene.publish.mouseEventTarget="canvas"),i.scene.publish.settings.web.hint===void 0&&(i.scene.publish.settings.web.hint=!1)}function VM(i){let{video:t}=i.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function zM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function GM(i){let t=i.scene.environment.usePhysics;i.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function FM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=nu.defaultDataThirdPerson.navmesh)})})}function jM(i){i.scene.styles||(i.scene.styles=Lo.defaultData())}function Zx(i){i.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function UM(i){i.scene.environment.ambientLight.occlusion===void 0&&(i.scene.environment.ambientLight.occlusion=!1),i.scene.environment.ambientLight.aoFullRes===void 0&&(i.scene.environment.ambientLight.aoFullRes=!1),i.scene.environment.ambientLight.radius===void 0&&(i.scene.environment.ambientLight.radius=256),i.scene.environment.ambientLight.bias===void 0&&(i.scene.environment.ambientLight.bias=.5),i.scene.environment.ambientLight.aoColor===void 0&&(i.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),zo(i,Zx),Vo(i,Zx)}function kM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new be})})})}function HM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Jx(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function e0(i,t){if(t<1&&(zo(i,Wx),Vo(i,Wx),i.schema=1),t<2&&(cM(i),i.schema=2),t<3&&(dM(i),i.schema=3),t<4&&(pM(i),i.schema=4),t<5&&(fM(i),i.schema=5),t<6&&(hM(i),i.schema=6),t<7&&(mM(i),i.schema=7),t<8&&(i.schema=8),t<9&&($x(i),i.schema=9),t<10&&(bM(i),i.schema=10),t<11&&(vM(i),i.schema=11),t<12&&($x(i),i.schema=12),t<13&&(SM(i),i.schema=13),t<14&&(PM(i),i.schema=14),t<15&&(OM(i),i.schema=15),t<16&&(TM(i),i.schema=16),t<17&&(zo(i,Xx),Vo(i,Xx),i.schema=17),t<18&&(zo(i,qx),Vo(i,qx),i.schema=18),t<19&&(uM(i),i.schema=19),t<20&&(CM(i),MM(i),i.schema=20),t<21&&(IM(i),NM(i),i.schema=21),t<22&&(Qx(i),i.schema=22),t<23&&(EM(i),i.schema=23),t<24&&(DM(i),i.schema=24),(t<25||i.shared.videos===void 0)&&(wM(i),t<25&&(i.schema=25)),t<26&&(yM(i),i.schema=26),t<27&&(gM(i),i.schema=27),t<28&&(Qx(i),i.schema=28),t<29&&(xM(i),i.schema=29),t<30&&(_M(i),i.schema=30),t<31&&(LM(i),i.schema=31),t<33&&(RM(i),i.schema=33),t<34&&(BM(i),i.schema=34),t<35&&(VM(i),i.schema=35),t<36&&(zM(i),i.schema=36),t<37&&(GM(i),i.schema=37),t<38&&(zo(i,Yx),Vo(i,Yx),i.schema=38),t<39&&(FM(i),i.schema=39),t<40&&(jM(i),i.schema=40),t<41&&(UM(i),i.schema=41),t<42&&(kM(i),i.schema=42),t<43&&(HM(i),i.schema=43),t<99){zo(i,Jx),Vo(i,Jx),i.scene.publish.playCamera===null&&(i.scene.publish.playCamera=mi);let e=st(i.scene.objects),r=i.scene.objects;i.scene.publish.playPage=yi,r.insertBefore(null,null,[{id:yi,data:{..._o.defaultData,backgroundColor:i.scene.backgroundColor,fog:i.scene.fog,postprocessing:i.scene.postprocessing,ao:_r(i.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:i.scene.publish.playCamera,gameControlObject:i.scene.publish.gameControlObject},shadow:_r(i.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...qs.defaultData,..._r(i.scene.environment,"usePhysics","gravity")},camera:st(i.scene.ownerCamera)??_o.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ro.TRASH_CAN_ID&&r.move(yi,a.fi,a.id);let o=0,n=0;i.shared.penumbraSize&&i.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=i.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=i.shared.penumbraSize[3+Math.min(n,1)],n+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,xi.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),i.schema=99}}function t0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function WM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function qM(i){Array.isArray(st(i.events))&&i.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var xa=180/Math.PI;function r0(i){i.rotation=i.rotation.slice(0,3).map(t=>t*xa)}function o0(i){r0(i),i.type==="Page"&&r0(i.camera),i.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*xa))});let t=i.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*xa),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*xa),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=xa,t.extrusion.twist*=xa),i.type==="Mesh"&&i.geometry.type==="TextGeometry"&&(i.geometry.text={textValue:i.geometry.text}),Array.isArray(st(i.events))&&i.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function $M(i){i.shared.variables=Ot({},ue.prototype)}function XM(i){let t=st(i.shared.variables);i.shared.variables=Ot(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),be.prototype)}var so=120;function Fp(i,t){t(i.data);for(let e of i.children)Fp(e,t)}function YM(i){let t=i.schema??104;t!==so&&(t<105&&(Fp(i.asset,o0),i.schema=105),t<118&&(Fp(i.asset,i0),i.schema=118))}function KM(i){i.shared.particles=Ot({},ue.prototype),i.shared.lib&&(i.shared.lib.particles=Rr.defaultData().particles)}function QM(i){i.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function ZM(i){i.scene.objects.traverse((t,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function JM(i){i.scene.objects.traverse((t,e)=>{Array.isArray(st(e.events))!==!1&&e.events?.forEach(r=>{let o=r.runMode;r.type==="MouseDown"||r.type==="MouseUp"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="Collision"||r.type==="Trigger"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode=o??"Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode=o==="Toggle"?"Toggle":"Normal")}):r.type==="MouseHover"||r.type==="MousePress"||r.type==="KeyPress"?r.actions?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}):r.type==="GameControl"?(delete r.actions,Object.keys(r.gameActions).forEach(a=>{r.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):r.type==="DragDrop"?(delete r.actions,r.dragDropActions?.drag?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}),r.dragDropActions?.drop?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")})):r.type==="Resize"?(delete r.actions,r.breakpoints?.forEach(n=>{n.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):r.type==="Start"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Once"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="VariableChange"||r.type==="Scroll"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="Conditional"&&(delete r.actions,r.inActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}),r.outActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}))})})}function eI(i){i.shared.userAPIs=Ot({},ue.prototype),i.shared.userWebhooks=Ot({},ue.prototype),i.shared.lib&&(i.shared.lib.userAPIs=Rr.defaultData().userAPIs,i.shared.lib.userWebhooks=Rr.defaultData().userWebhooks)}function tI(i){i.scene.publish.settings.videoStatic===void 0&&(i.scene.publish.settings.videoStatic=Sr.defaultData.settings.videoStatic)}function i0(i){i.timelineAnimations=Ot({},ue.prototype)}function su(i){let t=i.schema??0;if(t!==so){console.warn("updating from ",t,"to ",so),e0(i,t),t<100&&(i.scene.publish.joystickSizeAndXYOffset===void 0&&(i.scene.publish.joystickSizeAndXYOffset=Sr.defaultData.joystickSizeAndXYOffset),i.schema=100),t<101&&(zo(i,t0),Vo(i,t0),i.schema=101),t<102&&(WM(i),i.schema=102),t<104&&(i.shared.catelogs=new ue,i.shared.lib=Rr.defaultData(),i.schema=104),t<105&&($M(i),i.scene.objects.traverse((e,r)=>{o0(r)}),i.schema=105);for(let e of Object.values(i.shared.lib.components))YM(e);t<106&&(XM(i),i.schema=106),t<107&&(i.shared.lib.variables=Rr.defaultData().variables,i.schema=107),t<109&&(KM(i),i.schema=109),t<110&&(QM(i),i.schema=110),t<111&&(i.scene.objects.traverse((e,r)=>{qM(r)}),i.schema=111),t<112&&(ZM(i),i.schema=112),t<113&&(JM(i),i.schema=113),t<114&&(i.scene.publish.settings.web.imageQuality===void 0&&(i.scene.publish.settings.web.imageQuality=70),i.schema=114),t<115&&(eI(i),i.schema=115),t<116&&(tI(i),i.schema=116),t<117&&(i.scene.publish.settings.web.pixelRatioMobile===void 0&&(i.scene.publish.settings.web.pixelRatioMobile=0),i.scene.publish.settings.web.pixelRatioDesktop===void 0&&(i.scene.publish.settings.web.pixelRatioDesktop=0),i.schema=117),t<118&&(i.shared.timelineAnimations=Ot({},ue.prototype),i.scene.objects.traverse((e,r)=>{i0(r)}),i.schema=118),t<119&&(i.scene.publish.settings.videoStatic.format=Bo.defaultData.scene.publish.settings.videoStatic.format,i.scene.publish.settings.videoStatic.imageFormat=Bo.defaultData.scene.publish.settings.videoStatic.imageFormat,i.schema=119),t<120&&(i.scene.publish.settings.image.colorSpace="display-p3",i.scene.publish.settings.videoStatic.colorSpace="display-p3",i.schema=120)}}var Bo;(c=>{c.defaultData={schema:so,scene:Ro.defaultData,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:{...wr.emptyData(),colors:wr.defaultColors()}},c.emptyDataForImports=function(){let u=Ro.emptyDataWithPage();return{schema:so,scene:u,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:{...wr.emptyData(),colors:wr.defaultColors(),images:wr.defaultImages()}}},c.emptyData=function(){return{schema:so,scene:Ro.emptyDataWithPage(),frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:wr.emptyData()}},c.clipboard2dData=function(){return{schema:so,scene:Ro.emptyData(),frames:new ue,shared:wr.emptyData()}},c.collabHelper={...Fs,updateSchema(u){return(u.schema??0)<so?ci(u,su):(u.schema??0)-so}};function n(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=n;function a(u){return{...u,shared:{...u.shared,lib:Rr.defaultData()}}}c.withoutLib=a;function s(u,p){let d=u.scene.objects.get(p);if(d&&d.data.type==="Component")return d;{let f=u.shared.lib.components[p];if(f)return f.asset}}c.getComponentData=s;function l(u){let p=Object.values(u.shared.userAPIs);for(let d of p){let f=d.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(Bo||(Bo={}));var lu;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(lu||(lu={}));var n0;(t=>{function i(e){return!0}t.is=i})(n0||(n0={}));var cu;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function t(o,n){return{position:n?.position??o.position,rotation:n?.rotation??o.rotation,scale:n?.scale??o.scale,shear:n?.shear??o.shear}}r.merge=t;function e(o,n){return Kl({position:ca.isEqual(o.position,n.position)?void 0:n.position,rotation:o.rotation===n.rotation?void 0:n.rotation,scale:ca.isEqual(o.scale,n.scale)?void 0:n.scale,shear:o.shear&&n.shear&&ca.isEqual(o.shear,n.shear)?void 0:n.shear})}r.diff=e})(cu||(cu={}));var jp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(jp||(jp={}));var a0;(t=>t.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(a0||(a0={}));var uu;(t=>t.defaultData={opacity:1,fill:{color:Ne.fromHexAndA(gt,1),enabled:!0},stroke:{color:Ne.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ne.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ne.from0to1([0,0,0,1]),enabled:!1,spread:0}})(uu||(uu={}));var an;(n=>{function i(a,s){return{name:s}}n.newEmpty=i;function t(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,cu.merge(l,s)),l=t(l,s),l=e(l,s),l}n.patch=r;function o(a,s){let l,c=[];for(let[u,p]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p);return c}n.toOps=o})(an||(an={}));var $s;(t=>t.defaultData={...cu.defaultData,...jp.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})($s||($s={}));var ba;(t=>t.defaultData={...$s.defaultData,...uu.defaultData})(ba||(ba={}));var du;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(du||(du={}));var Up;(t=>t.defaultData={...ba.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Up||(Up={}));var va;(t=>t.defaultData={...ba.defaultData,...du.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(va||(va={}));var kp;(t=>t.defaultData={...ba.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(kp||(kp={}));var Hp;(t=>t.defaultData={...ba.defaultData,type:"path2d",path:"",name:"Path"})(Hp||(Hp={}));var s0;(t=>{function i(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=i})(s0||(s0={}));var Xs;(t=>t.defaultData={...$s.defaultData,name:"Group",type:"group2d"})(Xs||(Xs={}));var Wp;(t=>t.defaultData=()=>({...$s.defaultData,...du.defaultData,...uu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ne.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ne.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Wp||(Wp={}));var Go;(n=>{function i(a){switch(a){case"rectangle2d":return{...va.defaultData};case"ellipse2d":return{...Up.defaultData};case"text2d":return{...kp.defaultData};case"vector2d":return{...va.defaultData};case"path2d":return{...Hp.defaultData};case"frame2d":return{...Wp.defaultData()};case"group2d":return{...Xs.defaultData}}}n.defaultData=i;function t(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}n.getPivot=t;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}n.isResizeable=e;function r(a){return a.type==="frame2d"&&a.autoLayout!==void 0}n.isAutoLayoutable=r;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}n.hasCorners=o})(Go||(Go={}));var pu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ze},e.emptyData=function(){return{type:"scene2d",objects:new Ze}}))(pu||(pu={}));import{Color as rI}from"three";var At=class extends rI{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var dd=_s(c0());import{Object3D as bD,Vector3 as mr,Euler as Ah,MathUtils as $v,Matrix4 as Tn}from"three";var oI=.5*(Math.sqrt(3)-1),Ys=(3-Math.sqrt(3))/6,iI=1/3,lo=1/6,X6=(Math.sqrt(5)-1)/4,Y6=(5-Math.sqrt(5))/20,Ks=i=>Math.floor(i)|0,u0=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),$p=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function d0(i=Math.random){let t=f0(i),e=new Float64Array(t).map(o=>u0[o%12*2]),r=new Float64Array(t).map(o=>u0[o%12*2+1]);return function(n,a){let s=0,l=0,c=0,u=(n+a)*oI,p=Ks(n+u),d=Ks(a+u),f=(p+d)*Ys,h=p-f,m=d-f,y=n-h,b=a-m,v,w;y>b?(v=1,w=0):(v=0,w=1);let O=y-v+Ys,S=b-w+Ys,T=y-1+2*Ys,M=b-1+2*Ys,g=p&255,D=d&255,N=.5-y*y-b*b;if(N>=0){let _=g+t[D],L=e[_],V=r[_];N*=N,s=N*N*(L*y+V*b)}let I=.5-O*O-S*S;if(I>=0){let _=g+v+t[D+w],L=e[_],V=r[_];I*=I,l=I*I*(L*O+V*S)}let E=.5-T*T-M*M;if(E>=0){let _=g+1+t[D+1],L=e[_],V=r[_];E*=E,c=E*E*(L*T+V*M)}return 70*(s+l+c)}}function p0(i=Math.random){let t=f0(i),e=new Float64Array(t).map(n=>$p[n%12*3]),r=new Float64Array(t).map(n=>$p[n%12*3+1]),o=new Float64Array(t).map(n=>$p[n%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*iI,h=Ks(a+f),m=Ks(s+f),y=Ks(l+f),b=(h+m+y)*lo,v=h-b,w=m-b,O=y-b,S=a-v,T=s-w,M=l-O,g,D,N,I,E,_;S>=T?T>=M?(g=1,D=0,N=0,I=1,E=1,_=0):S>=M?(g=1,D=0,N=0,I=1,E=0,_=1):(g=0,D=0,N=1,I=1,E=0,_=1):T<M?(g=0,D=0,N=1,I=0,E=1,_=1):S<M?(g=0,D=1,N=0,I=0,E=1,_=1):(g=0,D=1,N=0,I=1,E=1,_=0);let L=S-g+lo,V=T-D+lo,U=M-N+lo,B=S-I+2*lo,q=T-E+2*lo,j=M-_+2*lo,F=S-1+3*lo,H=T-1+3*lo,W=M-1+3*lo,ee=h&255,te=m&255,Y=y&255,re=.6-S*S-T*T-M*M;if(re<0)c=0;else{let $=ee+t[te+t[Y]];re*=re,c=re*re*(e[$]*S+r[$]*T+o[$]*M)}let K=.6-L*L-V*V-U*U;if(K<0)u=0;else{let $=ee+g+t[te+D+t[Y+N]];K*=K,u=K*K*(e[$]*L+r[$]*V+o[$]*U)}let Z=.6-B*B-q*q-j*j;if(Z<0)p=0;else{let $=ee+I+t[te+E+t[Y+_]];Z*=Z,p=Z*Z*(e[$]*B+r[$]*q+o[$]*j)}let Q=.6-F*F-H*H-W*W;if(Q<0)d=0;else{let $=ee+1+t[te+1+t[Y+1]];Q*=Q,d=Q*Q*(e[$]*F+r[$]*H+o[$]*W)}return 32*(c+u+p+d)}}function f0(i){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(i()*(256-r)),n=e[r];e[r]=e[o],e[o]=n}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as nI}from"three";var Br=new nI,fu=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let n=1;Br.a.fromBufferAttribute(t,o),Br.b.fromBufferAttribute(t,o+1),Br.c.fromBufferAttribute(t,o+2),n*=Br.getArea(),e[o/3]=n}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,n=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){n=a;break}else t<e[a]?o=a-1:r=a+1}return n}sampleFace(t,e,r){let o=this.randomFunction(),n=this.randomFunction();return o+n>1&&(o=1-o,n=1-n),Br.a.fromBufferAttribute(this.positionAttribute,t*3),Br.b.fromBufferAttribute(this.positionAttribute,t*3+1),Br.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Br.a,o).addScaledVector(Br.b,n).addScaledVector(Br.c,1-(o+n)),Br.getNormal(r),this}};import{Object3D as uI}from"three";var y0=_s(m0());import{Object3D as aI,Matrix4 as co}from"three";var sI=new co,lI=new co,cI=new co,Fo;(t=>{function i(e){return e&&e.__isSPEObject}t.is=i})(Fo||(Fo={}));var Sa=i=>class extends i{constructor(){super(...arguments);this.previousModelViewMatrix=new co;this.copyPreviousMatrix=!0;this.hiddenMatrix=new co;this.matrixWorldRigid=new co;this.shearScale=new co;this.shearScaleInv=new co}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof aI&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(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,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let n=this.parent;if(r&&n!==null&&n.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)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let n of this.children)Fo.is(n)&&n.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fo.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:n,v:a,q:s}=(0,y0.SVD)(o),l=sI.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=lI.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=cI.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(p=>Math.abs(s[0]-p)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let n=new co().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),n.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof co?r.hiddenMatrix.premultiply(n):r.applyMatrix4(n),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,n,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Xp=class extends Sa(uI){},dI=i=>i.type==="Mesh",Vr=class extends Xp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Vr(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return dI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}};import{Box3 as _N,BufferGeometry as LN,MeshBasicMaterial as RN}from"three";import{Matrix4 as EN,Mesh as DN}from"three";import{Matrix4 as yu,Vector3 as b0,Euler as gI,MathUtils as Zs}from"three";import{Box3 as pI,Line3 as fI,Matrix4 as Yp,Vector3 as pr}from"three";var sn=new pr,ln=new pr,wa=new Yp,x0=[new pr(-1,1,1),new pr(-1,-1,1),new pr(1,-1,1),new pr(1,1,1),new pr(-1,1,-1),new pr(-1,-1,-1),new pr(1,-1,-1),new pr(1,1,-1)],hI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],g0=(i,t,e)=>{i.updateEntityBoxSize(sn,ln),wa.copy(t).multiply(i.matrixWorld),ln.x===0&&ln.y===0&&ln.z===0?e.push(new pr(sn.x,sn.y,sn.z).applyMatrix4(wa)):x0.forEach(r=>{e.push(r.clone().multiply(ln).add(sn).applyMatrix4(wa))})},Qs=class extends pI{constructor(){super(...arguments);this.matrix=new Yp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Yp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){n.push(new pr);return}g0(a,r,n)}}):g0(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(wa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(ln).multiplyScalar(.5),this.getCenter(sn),wa.copy(this.matrix).setPosition(sn),this.vertices=x0.map(e=>e.clone().multiply(ln).applyMatrix4(wa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hI.map(([e,r])=>new fI(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new pr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mI.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var zr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as yI,CubicBezierCurve3 as Kp,Vector3 as Gr}from"three";var Zp=class extends yI{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],p=Math.ceil(t*u/a),d=c.getPoints(p);for(let f=0;f<d.length;f++){let h=d[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Jp=.001;function ef(i,t,e){return t.clone().sub(i).cross(t.clone().sub(e)).length()<=Jp}function Qp(i,t){let e=new Gr(...i.position),r=new Gr(...i.controlNext.position),o=new Gr(...t.controlPrevious.position),n=new Gr(...t.position);return ef(e,r,n)&&ef(e,o,n)}function mu(i){let t=i.points.map(u=>new Gr(...u.data.position)),e=[i.points[0]],r=new Gr(...e[0].data.position);for(let u=0;u<i.points.length-1;u++)ef(r,t[u],t[u+1])||(e.push(i.points[u]),r=t[u]);e.push(i.points[i.points.length-1]);let o=i.isClosed,n=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new Gr(...p.position),f=new Gr(...p.controlPrevious.position),h=new Gr(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};if(p.roundness===0||!i.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,b=o&&u==a-1?0:u+1,v=e[y].data,w=e[b].data,O=new Gr(...v.position),S=new Gr(...w.position),T=O.clone().sub(d).normalize(),M=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:M});let g=Qp(v,p),D=Qp(p,w);if(!g||!D)s[u]={...m,removedLength:0};else{let N=T.clone().add(M).normalize(),I=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!Qp(e[p].data,e[d].data))f.position.distanceTo(h.position)>Jp&&(m=new Kp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),b=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&b.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(b)>Jp&&(m=new Kp(y,y.clone().lerp(b,.3),b.clone().lerp(y,.3),b))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,f=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),h=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),b=f.clone().lerp(h,.5),v=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(b),O=y.clone().multiplyScalar(-m).add(w),S=d.distanceTo(O)/d.distanceTo(b),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(f)).add(d),M=T.clone().lerp(O,2),g=f.clone().lerp(T,4/3),D=h.clone().lerp(M,4/3);l[2*u]=new Kp(f,g,D,h)}let c=new Zp;return l.forEach(u=>{u&&c.add(u)}),c}var _e;(t=>{function i(e){return e&&e.__isEntity}t.is=i})(_e||(_e={}));var Pa=i=>_e.is(i),xI={type:"completeState",isfromEntity:!0},bI=["x","y","z"],tf=new b0,vI=new b0().set(0,1,0),Oa=i=>class extends Sa(i){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.currentAnimationAction=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Qs;this._recursiveBBox=new Qs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(_e.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(_e.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(_e.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,n=!1){if(!(this.data.states.length===0&&!n)){for(let a of this.data.states)nn.toOps(this.data,a.data).forEach(l=>{let c=na.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=nn.patch(this.data,a),nn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}n&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}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}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{Pa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(n=>{n.uuid===r&&(o=n)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,n=o.indexOf(this)+1;if(_e.is(o[n]))return o[n];if(_e.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&_e.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,n=this;for(;n!==r;){if(n===null)return-1;n=n.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)Pa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{_e.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Pa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Pa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Pa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>Pa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(n=>{n.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Zs.RAD2DEG,this.rotation.y*Zs.RAD2DEG,this.rotation.z*Zs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ea(o,r)}getTransformValues(r,o,n){return o[r].map((a,s)=>n?.shared.getVariable(a,[this.uuid,r,bI[s]])??a)}updateTransformState(r,o){let n=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),n=!0),r.rotation&&(tf.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Zs.DEG2RAD),this.rotation.setFromVector3(tf),n=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),n=!0),r.hiddenMatrix!==void 0&&(n=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??hi.identity)),n&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),n}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)}),this.requestRender()}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)_e.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{_e.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return ea(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,n,a){let s=this.data;this.data=o;let l=r,c=Be(r.path,["states","*"]);if(c!==null){if(r.type===0){let[u]=c;if(this?.stateSelection===u){let p={...r.props};if(delete p.name,Object.values(r.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let f=Je.zoom(d,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(p[h]=f[h])}}l={...r,props:p,path:r.path.slice(2)}}}}else if(r.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(r.props.name!==void 0&&u.name){let{name:d,...f}=u;u=f}if(r.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=Je.removeOverridden(r.path,r.props,u);l={...r,props:p}}}if(this.updateByPatchedOpBase(l,nn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),n),Be(r.path,["overrides"])){let u=[],p=[...r.path];for(u.push(p[1]),p.splice(0,2);p.length>0&&p[0]==="descendants";)u.push(p[1]),p.splice(0,2);if(u[u.length-1]===void 0){if(r.type===0)for(let d of Object.keys(r.props)){u[u.length-1]=d;let f=n.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=r.props[d],f.updateState(Jr.apply(f.component.data,f.overrideData),n))}}else{let d=n.scene.findInstance([this.uuid,...u]);if(d){let f=Je.zoom(d.component.data,p);if(r={...r,path:p},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}d.overrideData=ma.resolve(o.overrides,u),d.updateByOp(r,at.applySimple(d.data,r),n,!1)}}}else if(this.instances.length>0){let u;if(r.path.length===0&&r.type===0){let p;for(let d of ao.rootOverrideProps)d in r.props&&(p===void 0&&(p={}),p[d]=r.props[d]);p&&(u={...r,props:p})}else for(let p of ao.rootOverrideProps)if(Be(r.path,[p])){u=r;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=Jr.filterOp(p.overrideData,u);d&&p.updateByOp(d,at.applySimple(p.data,d),n,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=Jr.filterOp(p.overrideData,r);if(d){let f;s===p.data&&r===d?f=o:f=at.applySimple(p.data,d),p.updateByOp(d,f,n,!0)}}})}}updateByPatchedOpBase(r,o,n){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Lr.is(r.props.type)&&zr.changeEntityProptotype(this,o,n);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){zr.changeEntityProptotype(this,o,n);for(let a of this.children)_e.is(a)&&a.updateVisible(n.scene)}this.updateByPatchedOp(r,o,n)}updateByPatchedOp(r,o,n){if(r.path.length===0&&r.type===0?this.updateState(r.props,n):r.type===0&&("resolutionLevel"in r.props||"useChildrenColors"in r.props)&&this.updateState(o,n),r.path[0]==="morphTargetInfluences"&&r.type===0){let s=o.morphTargetInfluences.get(r.path[1])?.data.name;s&&this.updateMorphInfluences(s,n.shared.getVariable(r.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Be(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Be(r.path,["cloner"])!==null){let a=at.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,n):this.cloner?this.cloner.updateState(o.cloner,n.scene):(this.setFromClonerState(o.cloner,n),this.expandCloner(n.scene)),this.updateVisible(n.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,n=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=mu(c.geometry.path),p=(n+a)%1;n+a===1&&p===0&&(p=1);let d=null;try{d=u.curves.length?u.getPointAt(p):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(d===null)return;let f=this.parent?this.parent?.matrixWorld:new yu;l.updateMatrixWorld();let h=new yu().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new yu().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),v=new yu().lookAt(d,b,vI),w=tf.setFromEuler(new gI().setFromRotationMatrix(v)).multiplyScalar(Zs.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(xI)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(n=>{if(n.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof zr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new zr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as PI,ConeGeometry as OI,Float32BufferAttribute as TI,MathUtils as CI}from"three";import{BufferGeometry as S0,CylinderGeometry as SI,Float32BufferAttribute as xu,MathUtils as wI,Vector2 as Fr,Vector3 as gu}from"three";var w0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.parameters?.radiusTop,r=i.parameters?.radiusBottom,o=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},i.parameters);o.thetaLength=wI.clamp(o.thetaLength,0,360);let n=o.width/2,a=o.radiusTop??n,s=o.radiusBottom??n;if(a===s?(a=n,s=n):a>s?(a=n,s=s*n/a):(a=a*n/s,s=n),o.shapeBlendNode){a=e??n,s=r??n;let l=Math.max(a,s)*2;o.width=l,o.depth=l}return{parameters:Object.assign(o,{width:Math.abs(o.width),height:Math.abs(o.height??o.width),depth:Math.abs(o.depth??o.width),radiusTop:a,radiusBottom:s})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:f}=i.parameters,h;return l===0?(h=new S0,h.setAttribute("position",new xu([],3))):p||f?h=new Js(c,u,r,o,n,a,s,l*Math.PI/180,p,p,d,f):h=new SI(c,u,r,o,n,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...i,type:"CylinderGeometry"}})}};function vi(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function v0(i){return new Fr(i.y,-i.x)}var Js=class extends S0{constructor(t,e,r,o,n,a,s,l,c,u,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],b=[],v=0,w=r/2,O=new gu,S=new gu;f&&t==0&&(t=c),f&&e==0&&(e=u);let T=new Fr(t,w),M=new Fr(e,-w),g=null,D=null,N=null,I=null,E=T.clone().sub(M),_=0,L=0,V=0;d>0&&(_=Math.min(t,e)*(1-d),L=t-_,V=e-_);let U=T.clone();U.x-=_;let B=Math.PI-E.angle(),q=E.angle(),j=Math.tan(q/2),F=Math.tan(B/2),H=j+F,W=d?H:F,ee=d?H:j;if(c=Math.min(c,(t-L)/W,E.length()/H),u=Math.min(u,(e-V)/ee,E.length()/H),c>0){let Q=c/j;g=T.clone().sub(new Fr(Q,c)),d&&(N=g.clone(),N.x-=_-H*c),T.sub(E.clone().setLength(Q))}if(u>0){let Q=u/F;D=M.clone().sub(new Fr(Q,-u)),M.add(E.clone().setLength(Q)),d&&(I=D.clone(),I.x-=_-H*u,U.sub(E.clone().setLength(Q)))}E=T.clone().sub(M);let te=E.length()<.5,Y=[];for(let Q=0;Q<=o;Q++){let $=[],de=Q/o,le=de*l+s,ie=new Fr(Math.sin(le),Math.cos(le));I&&D?(re($,de,ie,B,u,I,-1,!0),re($,de,ie,q,u,D,-1,!1)):D?(K($,ie,D.x,0,-1),re($,de,ie,q,u,D,-1,!1)):a||K($,ie,e,V,-1);let ce=v0(E).normalize();if(vi(ce,ie,O),!te)for(let ae=0;ae<=n;ae++){let me=ae/n,fe=E.clone().multiplyScalar(me).add(M);vi(fe,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}if(N&&g?(re($,de,ie,B,c,g,1,!1),re($,de,ie,q,c,N,1,!0)):g?(re($,de,ie,B,c,g,1,!1),K($,ie,g.x,0,1)):a||K($,ie,t,L,1),d&&!te){let ae=v0(E).multiplyScalar(-1).normalize();vi(ae,ie,O);for(let me=0;me<=n;me++){let fe=me/n,he=E.clone().multiplyScalar(-fe).add(U);vi(he,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}}d&&!a&&$.push($[0]),Y.push($)}for(let Q=0;Q<Y.length-1;Q++)for(let $=0;$<Y[0].length-1;$++){if(a&&d&&$==n)continue;let de=Y[Q][$],le=Y[Q+1][$],ie=Y[Q+1][$+1],ce=Y[Q][$+1],ae=m[ie*3+0],me=m[ie*3+2];h.push(de,le,ce),(ae!=0||me!=0)&&h.push(le,ie,ce)}l<Math.PI*2&&(Z(-1,Y[0],s),Z(1,Y[Y.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new xu(m,3)),this.setAttribute("normal",new xu(y,3)),this.setAttribute("uv",new xu(b,2));function re(Q,$,de,le,ie,ce,ae,me){for(let fe=0;fe<p+1;fe++){let he=fe/p,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new Fr(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ie).add(ce);vi(C,de,S),m.push(S.x,S.y,S.z),vi(ye,de,O),y.push(O.x,O.y,O.z),b.push($,.5+S.y/r),Q.push(v++)}}function K(Q,$,de,le,ie){let ce=new gu,ae=new Fr,me=[de,le];ie<0&&me.reverse();for(let fe of me)ae.set(fe,w*ie),vi(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ie,0),b.push(.5,.5),Q.push(v++)}function Z(Q,$,de){let le=new Fr(Math.sin(de),Math.cos(de)),ie=new Fr(-Math.cos(de),Math.sin(de)),ce=new gu,ae=Q<0?(he,xe,ye)=>h.push(he,xe,ye):(he,xe,ye)=>h.push(he,ye,xe),me=new Fr((t+e+L+V)/4,0);vi(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ie.x,0,ie.y),b.push(.5,.5);let fe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ie.x,0,ie.y);let ye=b.slice(he*2,he*2+2);b.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var P0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},i.parameters);return e.thetaLength=CI.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=i.parameters,d;return l===0?(d=new PI,d.setAttribute("position",new TI([],3))):c>0||u>0||l<360?d=new Js(0,t/2,r,o,n,a,s,l*Math.PI/180,c,u,p,0,!0):d=new OI(t/2,r,o,n,a),d.scale(1,1,e/t),Object.assign(d,{userData:{...i,type:"ConeGeometry"}})}};import{BoxGeometry as AI,BufferGeometry as MI,Float32BufferAttribute as rf,Vector3 as el}from"three";var O0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:a,cornerRadius:s,cornerSegments:l}=i.parameters,c;return s===0?c=new AI(t,e,r,o,n,a):c=new nf(t,e,r,o,n,a,s,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},of=Math.PI/2,nf=class extends MI{constructor(t=1,e=1,r=1,o=1,n=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),n=Math.floor(n),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],p=[],d=[],f=0;h("z","y","x",-1,-1,r,e,t,a,n),h("z","y","x",1,-1,r,e,-t,a,n),h("x","z","y",1,1,t,r,e,o,a),h("x","z","y",1,-1,t,r,-e,o,a),h("x","y","z",1,-1,t,e,r,o,n),h("x","y","z",-1,-1,t,e,-r,o,n),s>0&&(m("z","y","x",-1,-1,1,r,e,t,a),m("z","y","x",1,-1,-1,r,e,t,a),m("z","y","x",-1,1,-1,r,e,t,a),m("z","y","x",1,1,1,r,e,t,a),m("x","y","z",-1,-1,-1,t,e,r,o),m("x","y","z",1,-1,1,t,e,r,o),m("x","y","z",-1,1,1,t,e,r,o),m("x","y","z",1,1,-1,t,e,r,o),m("y","x","z",-1,-1,1,e,t,r,n),m("y","x","z",1,-1,-1,e,t,r,n),m("y","x","z",1,1,1,e,t,r,n),m("y","x","z",-1,1,-1,e,t,r,n),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new rf(u,3)),this.setAttribute("normal",new rf(p,3)),this.setAttribute("uv",new rf(d,2));function h(b,v,w,O,S,T,M,g,D,N){let I=(T-2*s)/D,E=(M-2*s)/N,_=T/2-s,L=M/2-s,V=g/2,U=D+1,B=N+1,q=0,j=new el;for(let F=0;F<B;F++){let H=F*E-L;for(let W=0;W<U;W++){let ee=W*I-_;j[b]=ee*O,j[v]=H*S,j[w]=V,u.push(j.x,j.y,j.z),j[b]=0,j[v]=0,j[w]=g>0?1:-1,p.push(j.x,j.y,j.z),d.push(W/D),d.push(1-F/N),q+=1}}for(let F=0;F<N;F++)for(let H=0;H<D;H++){let W=f+H+U*F,ee=f+H+U*(F+1),te=f+(H+1)+U*(F+1),Y=f+(H+1)+U*F;c.push(W,ee,Y),c.push(ee,te,Y)}f+=q}function m(b,v,w,O,S,T,M,g,D,N){let I=(M-2*s)/N,E=M/2-s,_=g/2-s,L=D/2,V=N+1,U=0,B=new el,q=new el;for(let j=0;j<l+1;j++){let F=j/l*of,H=Math.sin(F)*s,W=(1-Math.cos(F))*s,ee=Math.sin(F),te=Math.cos(F);B[v]=(_+H)*S,B[w]=(L-W)*T,q[b]=0,q[v]=ee*Math.sign(B[v]),q[w]=te*Math.sign(B[w]);for(let Y=0;Y<V;Y++){let re=Y*I-E;B[b]=re*O,u.push(B.x,B.y,B.z),p.push(q.x,q.y,q.z),d.push(Y/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=f+F+V*j,W=f+F+V*(j+1),ee=f+(F+1)+V*(j+1),te=f+(F+1)+V*j;c.push(H,W,te),c.push(W,ee,te)}f+=U}function y(b,v,w){let O=new el,S=new el(t/2,e/2,r/2);S.subScalar(s);let T=[],M=b*v*w>0?(D,N,I)=>c.push(D,N,I):(D,N,I)=>c.push(D,I,N);for(let D=0;D<=l;D++){let N=[],I=of*(1-D/l),E=Math.cos(I),_=Math.sin(I),L=0;for(let V=0;V<=D;V++){let U=Math.cos(L),B=Math.sin(L);O.x=E*U,O.y=_,O.z=E*B;let q=S.clone().addScaledVector(O,s);u.push(b*q.x,v*q.y,w*q.z),p.push(b*O.x,v*O.y,w*O.z),d.push(0,0),N.push(f++),L+=of/D}T.push(N)}let g=T.length-1;for(let D=0;D<g;D++){let N=T[D],I=T[D+1],E=N.length-1;M(N[0],I[1],I[0]);for(let _=1;_<=E;_++)M(N[_-1],N[_],I[_]),M(N[_],I[_+1],I[_])}}}};import{BufferGeometry as II,Float32BufferAttribute as af,Triangle as NI,Vector3 as jo,Vector2 as sf}from"three";var Si=class extends II{constructor(t=[],e=[],r="",o=1,n=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new af(s,3)),this.setAttribute("normal",new af(c,3)),this.setAttribute("uv",new af(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new jo,m=h.clone(),y=new NI,b=n*o,v=o-b,w=a+1,O=new jo,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),M=T(t.length/3,(j,F)=>new jo().fromArray(t,F*3).setLength(o)),g=[],D=1e6;for(let j=0;j<M.length;j++){let F=M[j],H=[],W,ee,te,Y=1e10,re=-1;for(;(re=e.indexOf(j,re+1))!=-1;){let $=re-re%3;W=e[$+(re+1)%3],ee=e[$+(re+2)%3],te=F.distanceToSquared(M[W]),Y=Math.min(Y,te),H.push([W,ee,te])}Y+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[W,ee,te]=H[Z];let de=g[W]?.includes(j)==!0;te<=Y&&K.push(W+ +de*D),Z=H.findIndex(le=>le[0]==ee)}g.push(K)}let N=[];{let j=0,F=0,H,W,ee=f==3;for(let te=0;te<=a;te++){H=te*(te+1)/2,W=(te+1)*(te+2)/2;for(let Y=0;Y<a-te;Y++)[j,F]=[H+Y+te+2,W+Y+te+3],N.push(H,W,...ee?[F,H]:[j,W],F,j),[H,W]=[j,F];N.push(H,W,H+a+2)}}let I=h.clone(),E=h.clone(),_=h.clone(),L=h.clone(),V=h.clone(),U=[],B=T(M.length,()=>T(f,()=>h.clone()));for(let j=0;j<M.length;j++){h.copy(M[j]).normalize(),I.copy(h).multiplyScalar(v);let F=g[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%f];y.setFromPointsAndIndices(M,j,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,B[j][K])}let H=[],W=[],ee=[],te=new jo;a==0&&[...B[j]].reduce((K,Z)=>K.add(Z),te).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=B[j][Q],de=B[j][K];h.copy($).sub(I),m.copy(de).sub(I);let le=I.angleTo(h),ie=h.angleTo(m),ce=Math.cos(le)*b;a==0?E.copy(te):E.copy(I).setLength(v+ce),W.push(ce);let ae=[E,$,de];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];L.subVectors(fe,I),V.subVectors(he,I),_.crossVectors(L,V).normalize();for(let xe=0;xe<w;xe++){let ye=[le,ie][me]*xe/w;h.copy(L).applyAxisAngle(_,ye).add(I),H.push(h.clone()),me&&(S(h,I),Z.push([xe==0?fe:h.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}ee.push(Z)}U.push(ee);let Y=2*w,re=2;for(let K=0;K<f;K++){let Z=Y*K,Q=Y*((K+1)%f),$=[H[Z]];for(let le=1;le<w;le++){L=H[Z+le],V=H[Q+le],$.push(L);for(let ie=1,ce=le-re+1;ie<=ce;ie++)h.lerpVectors(L,V,ie/(ce+1)),h.sub(I).setLength(W[K]).add(I),$.push(h.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let de=N.map(le=>$[le]);s.push(...de.map(le=>[le.x,le.y,le.z]).flat()),c.push(...de.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let q=[];for(let j=0;j<g.length;j++)for(let F=0;F<f;F++){let H=g[j][F];if(H<D){let W=g[H].findIndex(Y=>Y%D==j),ee=U[j][F],te=U[H][W];for(let Y=0;Y<w;Y++){let re=ee[Y],K=te[w-Y],Z=ee[Y+1],Q=te[w-(Y+1)];[re,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}q.push(ee[0][0],te[w][0],ee[w][0],te[0][0])}}for(;q.length;){let j,F,H,W;[j,F]=q.splice(0,2);let ee=[j];for(;j!=F;)ee.push(F),H=q.indexOf(F),W=H%2,F=q.splice(H-W,2)[1-W];O.subVectors(ee[0],ee[1]).cross(h.subVectors(ee[0],ee[2])).normalize();let te=O.dot(ee[0])<0;te&&O.negate();for(let Y=1;Y<=ee.length-2;Y++)[ee[Y+ +te],ee[Y+1-+te],ee[0]].forEach(re=>{s.push(re.x,re.y,re.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new jo;for(let M=0;M<s.length;M+=3){d.x=s[M+0],d.y=s[M+1],d.z=s[M+2];let g=S(d)/2/Math.PI+.5,D=T(d)/Math.PI+.5;l.push(g,1-D)}let f=new jo,h=new jo,m=new jo,y=new jo,b=new sf,v=new sf,w=new sf,O=(M,g,D,N)=>{N<0&&M.x===1&&(l[g]=M.x-1),D.x===0&&D.z===0&&(l[g]=N/2/Math.PI+.5)};for(let M=0,g=0;M<s.length;M+=9,g+=6){f.set(s[M+0],s[M+1],s[M+2]),h.set(s[M+3],s[M+4],s[M+5]),m.set(s[M+6],s[M+7],s[M+8]),b.set(l[g+0],l[g+1]),v.set(l[g+2],l[g+3]),w.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);O(b,g+0,f,D),O(v,g+2,h,D),O(w,g+4,m,D)}for(let M=0;M<l.length;M+=6){let g=l[M+0],D=l[M+2],N=l[M+4],I=Math.max(g,D,N),E=Math.min(g,D,N);I>.9&&E<.1&&(g<.2&&(l[M+0]+=1),D<.2&&(l[M+2]+=1),N<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function T(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(t){return new Si(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as EI}from"three";var T0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new tl(t*.5,n,a):new EI(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"DodecahedronGeometry"}})}},tl=class extends Si{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,a=[-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,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],s=[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(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new tl(t.radius,t.corner,t.cornerSides)}};import{Plane as UI,Shape as F0,Vector2 as Uo,Vector3 as kI,MathUtils as hf,LineCurve as mf,QuadraticBezierCurve as j0,CubicBezierCurve as wu}from"three";import{CubicBezierCurve as bu,EllipseCurve as DI,LineCurve as vu,LineCurve3 as _I,MathUtils as LI,QuadraticBezierCurve as cf,SplineCurve as RI,Vector2 as qt,Vector3 as M0}from"three";var rl=1e-12,Ta=class{constructor(t){this.position=new qt;this.startPosition=new qt;this.uuid=LI.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Ta(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ca=class extends Ta{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ca(this.parent).copy(this)}},jr=class extends Ta{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ca(this),new Ca(this))}static create(e,r){let o=new jr(e,new qt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new jr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new qt,r=new qt){let[o,n]=this.computeTangents();return o&&n&&(C0(o,e),C0(n,r)),[e,r]}computeTangent(e=new qt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new qt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function C0(i,t=new qt){let e=i.length();return t.set(-i.y/e,i.x/e)}var uf=i=>i,Aa=new qt,Su=new qt,BI=new qt,VI=new qt,zI=new qt,GI=new qt,I0=new M0,N0=new M0;function E0(i){let t=new qt;t.addVectors(i.v0,Aa.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new qt;return e.addVectors(i.v2,Su.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new bu(i.v0,t,e,i.v2)}function ol(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function FI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function jI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function df(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function D0(i,t,e){return A0(i,t)&&A0(t,e)&&lf(i.position,t.position,e.position)}function lf(i,t,e){return Aa.copy(t).sub(i).cross(Su.copy(e).sub(i))===0}function _0(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),a=(i.y+t.y)/2,s=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(s+l,a+c),o.set(s-l,a-c),[r,o]}function L0(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function R0(i,t,e,r,o,n){let a=t.x-i.x,s=t.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return df(t,i,e)>Math.PI&&(u*=-1),ol(c,s)?p=(s+c)*(r/u-.5)*8/3/(a-l):p=(a+l)*(r/u-.5)*8/3/(c-s),o.set(t.x-p*s,t.y+p*a),n.set(e.x+p*c,e.y-p*l),[o,n]}function pf(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function A0(i,t){return lf(i.position,i.controls[1].position,t.position)&&lf(i.position,t.controls[0].position,t.position)}function B0(i,t,e,r,o=.5){let n=Aa.subVectors(t,i).multiplyScalar(o).add(i),a=Su.subVectors(e,t).multiplyScalar(o).add(t),s=BI.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=VI.subVectors(a,n).multiplyScalar(o).add(n),u=zI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=GI.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,r.x,r.y]}function V0(i,t,e=12,r=!0){let o=N0.set(0,0,0),n,a=0,s=[];for(let l=0;l<t.length;l++){let c=uf(t[l]),u=Aa,p=wi(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof bu||c instanceof cf||c instanceof vu){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),n!==void 0&&jI(n,o))continue;n===void 0&&(n=I0),n.copy(o),i.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),i}function z0(i,t,e,r=12,o=!0){let n=N0.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=uf(t[l]),p=Aa,d=wi(u,r);s.push(d);for(let f=0;f<=d;f++)if(u instanceof bu||u instanceof cf||u instanceof vu){if(u.getPoint(f/d,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=I0:(i.setXYZ(a,c.x,c.y,c.z),a++,i.setXYZ(a,n.x,n.y,n.z),a++),c.copy(n)}}return o&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),s}function ff(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let a=i[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=wi(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=wi(a.curveAfter,t)),r.push(s)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=wi(i[0].roundedCurveCorner,t)*.5),r}function wi(i,t=12){return i&&i instanceof DI?t*2:i&&(i instanceof vu||i instanceof _I)?1:i&&i instanceof RI?t*i.points.length:t}function G0(i,t,e=12,r=!0){let o,n=0;for(let a=0;a<t.length;a++){let s=uf(t[a]),l=wi(s,e),c=Aa;for(let u=0;u<=l;u++)if(s instanceof bu||s instanceof cf||s instanceof vu){if(s.getPoint(u/l,c),o!==void 0&&FI(o,c,rl))continue;o===void 0&&(o=Su),o.copy(c),i.push(c.x,c.y),n++}}return ol(i[0],i[i.length-2],rl)&&ol(i[1],i[i.length-1],rl)&&(i.pop(),i.pop()),r&&n>1&&!(ol(i[n-1],i[1],rl)&&ol(i[n-2],i[0],rl))&&(i.push(i[0],i[1]),n++),i}var yf=new Uo,HI=new Uo,WI=new Uo,qI=new Uo,$I=new Uo,XI=new Uo,Ue=class extends F0{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new UI(new kI(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=hf.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ue;return n.isClosed=e.isClosed,n.points=e.points.map(a=>jr.create(a.id,a.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(a=>Ue.createFromState(a)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=yf.set(e,r);for(let n=0,a=this.points.length;n<a;n++){let s=this.points[n];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let n=0,a=this.shapeHoles.length;n<a;n++)this.shapeHoles[n].applyScale(e,r);this._update()}createPoint(e,r=0,o=hf.generateUUID()){let n;e instanceof Uo?n=e:n=new Uo(e,r);let a=new jr(o,n);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return V0(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ff(this.points,e,!1),this.roundedCurveDivisions=ff(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return z0(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),G0(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=wi(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,r,o){let n=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(pf(n,a)){let p=n.position.distanceTo(a.position);return n.position.distanceTo(yf.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(r-c)/l}dispose(){}_applyCurveForPoint(e,r){pf(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(r===0)this.moveTo(n.position.x,n.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(n,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,n=this.points.length;o<n;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&D0(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),b=Math.min(c,m*.499),v=Math.min(c,y*.499),w=Math.min(b,v),O=1-w/m,S=w/y,T=p.getPointAt(O,yf),M=d.getPointAt(S,HI);this._subSplitCurve(p,f,O,T,void 0),this._subSplitCurve(d,h,S,void 0,M);let g;if(this.useCubicForRoundedCorners){let D=df(T,a.position,M)/2,N=Math.tan(D)*T.distanceTo(a.position),[I,E]=_0(T,M,N,WI,qI),_=L0(I,E,a.position),[L,V]=R0(_,T,M,N,$I,XI);g=new wu(T.clone(),L.clone(),V.clone(),M.clone())}else g=new j0(T.clone(),a.position.clone(),M.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+r,0,g),r++}}}}_subSplitCurve(e,r,o,n,a){if(e instanceof mf)n!==void 0&&r.v2.copy(n),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,c=s.getUtoTmapping(o,0),u=B0(s.v0,s.v1,s.v2,s.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new Ue(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,a=e.points[n+0],s=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],p=e.points[n+5],d=e.points[n+6],f=new jr(hf.generateUUID(),new Uo(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,p),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ue;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof wu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},n=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof j0&&(a[l]=E0(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],f=l>0?a[l-1]:null,h;d instanceof wu?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof mf&&(h=this.createPoint(d.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],p=!1;return u instanceof wu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof mf&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=n(e.curves),e instanceof F0&&(this.shapeHoles=e.holes.map(a=>{let s=new Ue;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let n=this.getPointByUuid(e)?.controls[0];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let n=this.getPointByUuid(e)?.controls[1];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}};var xf=Math.PI*2;function gf({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function YI(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),a=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+a*e,y:a-n*e},{x:n,y:a}]}function U0(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function KI(i,t,e,r,o,n,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(n,2),d=Math.pow(a,2),f=Math.pow(s,2),h=u*p-u*f-p*d;h<0&&(h=0),h/=u*f+p*d,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/n*s,y=h*-n/o*a,b=m+(i+e)/2,v=y+(t+r)/2,w=(a-m)/o,O=(s-y)/n,S=(-a-m)/o,T=(-s-y)/n,M=U0(1,0,w,O),g=U0(w,O,S,T);return!c&&g>0&&(g-=xf),c&&g<0&&(g+=xf),{centerx:b,centery:v,ang1:M,ang2:g}}function k0({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let d=KI(i,t,e,r,o,n,c,u,a,s),{ang1:f,ang2:h}=d,{centerx:m,centery:y}=d,b=Math.abs(h)/(xf/4);Math.abs(1-b)<1e-7&&(b=1);let v=Math.max(Math.ceil(b),1);h/=v;for(let w=0;w<v;w++)l.push(YI(f,h)),f+=h;return l.map(w=>{let{x:O,y:S}=gf(w[0],o,n,m,y),{x:T,y:M}=gf(w[1],o,n,m,y),{x:g,y:D}=gf(w[2],o,n,m,y);return{x1:O,y1:S,x2:T,y2:M,x:g,y:D}})}import{BufferAttribute as Au,BufferGeometry as s3}from"three";var je;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(je||(je={}));var lt;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(lt||(lt={}));function Pe(i,t){if(!i)throw t||"Assertion Failed!"}var ve=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){Pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){Pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){Pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){Pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var a,s,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(a=i.edgeEval(t,r,e),s=i.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,e.s)):(a=i.edgeSign(t,r,e),s=-i.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(a=i.transEval(t,r,e),s=i.transEval(r,e,o),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,e.t)):(a=i.transSign(t,r,e),s=-i.transSign(t,o,e),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,o.t)):n.t=(r.t+e.t)/2},i}(),il=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),Pu=function(){function i(t){this.side=t,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(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),Ma=function(){function i(){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 i}(),H0=function(){function i(){var t=new Ma,e=new il,r=new Pu(0),o=new Pu(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new Pu(0),r=new Pu(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;Pe(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;Pe(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.makeEdge=function(){var t=new Ma,e=new Ma,r=new il,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new Ma;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var a=new il;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new il;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Ma;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var a=new il;this.makeFace_(a,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ve.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,a,s,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){Pe(o.prev===n),l=o.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(Pe(o.prev===n&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){Pe(a.prev===s),l=a.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(Pe(a.prev===s&&a.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),W0=function(){function i(){this.handle=null}return i}(),q0=function(){function i(){this.key=null,this.node=0}return i}(),QI=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new W0,this.handles[r]=new q0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,Pe(a<=this.max),n=e[a].handle,a>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t>>1,n=e[a].handle,a===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new W0;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new q0}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;Pe(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),bf=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),$0=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),ZI=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new $0,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new $0;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),JI=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,a=r.eUp;if(n.Dst===o)return a.Dst===o?ve.vertLeq(n.Org,a.Org)?ve.edgeSign(a.Dst,n.Org,a.Org)<=0:ve.edgeSign(n.Dst,a.Org,n.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(n.Dst,o,n.Org)>=0;var s=ve.edgeEval(n.Dst,o,n.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){Pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new bf;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case je.ODD:return(e&1)!==0;case je.NONZERO:return e!==0;case je.POSITIVE:return e>0;case je.NEGATIVE:return e<0;case je.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,n=i.regionBelow(a),o=n.eUp,o.Org!=s.Org){if(!n.fixUpperEdge){i.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),i.finishRegion(t,a),s=n.eUp,a=n}return s},i.addRightEdges=function(t,e,r,o,n,a){var s,l,c,u,p=!0;c=r;do Pe(ve.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,u=n;s=i.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=i.isWindingInside(t,s.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),n=ve.vertL1dist(r,t),a=.5*n/(o+n),s=.5*o/(o+n);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,a)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ve.vertLeq(o.Org,n.Org)){if(ve.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ve.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ve.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a;if(Pe(!ve.vertEq(o.Dst,n.Dst)),ve.vertLeq(o.Dst,n.Dst)){if(ve.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),a.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a=o.Org,s=n.Org,l=o.Dst,c=n.Dst,u,p,d=new Ma,f,h;if(Pe(!ve.vertEq(c,l)),Pe(ve.edgeSign(l,t.event,a)<=0),Pe(ve.edgeSign(c,t.event,s)>=0),Pe(a!==t.event&&s!==t.event),Pe(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return i.debugEvent(t),ve.intersect(l,a,c,s,d),Pe(Math.min(a.t,l.t)<=d.t),Pe(d.t<=Math.max(s.t,c.t)),Pe(Math.min(c.s,l.s)<=d.s),Pe(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(i.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,d)>=0||!ve.vertEq(c,t.event)&&ve.edgeSign(c,t.event,d)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),h=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,d)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ve.edgeSign(c,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,a,l,s,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,a=i.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&i.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(n.Oprev,s),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),a),c=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,a,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){Pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}Pe(!1),e=i.topRightRegion(e),l=i.regionBelow(e),a=l.eUp.Sym,n=s=a.Onext,l.fixUpperEdge&&(Pe(n!==a),i.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,a.Onext,s,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,a,s,l,c=new bf;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);Pe(o!==null);var n=i.regionBelow(o),a=n.eUp,s=i.finishLeftRegions(t,n,null);s.Onext===a?i.connectRightVertex(t,o,s):i.addRightEdges(t,o,s.Onext,a,a,!0)},i.addSentinel=function(t,e,r,o){var n=new bf,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,n.eUp=a,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new ZI(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;i.addSentinel(t,o,n,a),i.addSentinel(t,o,n,s)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++r===1)),Pe(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new QI(n,ve.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,Pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ve.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),e3=function(){function i(){this.mesh=new H0,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=je.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 i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)n=e.coords[y],c[y]=n,h[y]=e,l[y]=n,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)n=e.coords[b],n<c[b]&&(c[b]=n,h[b]=e),n>l[b]&&(l[b]=n,f[b]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[v],o=f[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,t[0]=d[0],t[1]=d[1],t[2]=d[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ve.edgeGoesRight(r.Lprev)||ve.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=s,s++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===lt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[d++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1;if(e===lt.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var h=l;h<r;++h)this.elements[d++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[u++]=n,this.elements[u++]=a,n+=a}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new H0),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,a){if(t===void 0&&(t=je.ODD),e===void 0&&(e=lt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),JI.computeInterior(this,a);var s=this.mesh;return e===lt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===lt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},i}();function Ur(i){var t=i.windingRule,e=t===void 0?je.ODD:t,r=i.elementType,o=r===void 0?lt.POLYGONS:r,n=i.polySize,a=n===void 0?3:n,s=i.vertexSize,l=s===void 0?2:s,c=i.normal,u=c===void 0?[0,0,1]:c,p=i.contours,d=p===void 0?[]:p,f=i.strict,h=f===void 0?!0:f,m=i.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new e3;i.edgeCreateCallback&&(b.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(b.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<d.length;v++)b.addContour(l||2,d[v]);return b.tesselate(e,o,a,l,u,h),{vertices:b.vertices,vertexIndices:b.vertexIndices,vertexCount:b.vertexCount,elements:b.elements,elementCount:b.elementCount,mesh:y?b.mesh:void 0}}}var Tq=je.ODD,Cq=je.NONZERO,Aq=je.POSITIVE,Mq=je.NEGATIVE,Iq=je.ABS_GEQ_TWO,Nq=lt.POLYGONS,Eq=lt.CONNECTED_POLYGONS,Dq=lt.BOUNDARY_CONTOURS;import{Box2 as i3,BufferAttribute as Cu,BufferGeometry as n3,Vector2 as a3}from"three";var Ou=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Ou.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Ou.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*n,3*t);a+=3*t;let l=new Float32Array(o,a*n,3*t);a+=3*t;let c=new Float32Array(o,a*n,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},nl=Ou;nl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var al=class{constructor(t=[],e=(r,o)=>r<o?-1:r>o?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(this.length===0)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,o=e[t];for(;t>0;){let n=t-1>>1,a=e[n];if(r(o,a)>=0)break;e[t]=a,t=n}e[t]=o}_down(t){let{data:e,compare:r}=this,o=this.length>>1,n=e[t];for(;t<o;){let a=(t<<1)+1,s=a+1;if(s<this.length&&r(e[s],e[a])<0&&(a=s),r(e[a],n)>=0)break;e[t]=e[a],t=a}e[t]=n}};function vf(i,t,e=1,r=!1){let o=1/0,n=1/0,a=-1/0,s=-1/0;for(let[v,w]of i[0])v<o&&(o=v),w<n&&(n=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-n,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,n];return v.distance=0,v.distance}let p=new al([],(v,w)=>w.max-v.max),d=r3(i),f=new Tu(o+l/2,n+c/2,0,i);f.d>d.d&&(d=f);let h=2;function m(v,w,O){let S=new Tu(v,w,O,i);if(h++,S.max>d.d+e&&p.push(S),S.d>d.d&&(d=S,r&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${h} probes`),d.d>t))return t}let y=u/2;for(let v=o;v<a;v+=u)for(let w=n;w<s;w+=u)m(v+y,w+y,y);for(;p.length;){let{max:v,x:w,y:O,h:S}=p.pop();if(v-d.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}r&&console.log(`num probes: ${h}
3
- best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function Tu(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=t3(i,t,r),this.max=this.d+this.h*Math.SQRT2}function t3(i,t,e){let r=!1,o=1/0;for(let n of e)for(let a=0,s=n.length,l=s-1;a<s;l=a++){let c=n[a],u=n[l];c[1]>t!=u[1]>t&&i<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,o3(i,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function r3(i){let t=0,e=0,r=0,o=i[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],p=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*p,r+=(c[1]+u[1])*p,t+=p*3}let n=new Tu(e/t,r/t,0,i);return t===0||n.d<0?new Tu(o[0][0],o[0][1],0,i):n}function o3(i,t,e,r){let o=e[0],n=e[1],a=r[0]-o,s=r[1]-n;if(a!==0||s!==0){let l=((i-o)*a+(t-n)*s)/(a*a+s*s);l>1?(o=r[0],n=r[1]):l>0&&(o+=a*l,n+=s*l)}return a=i-o,s=t-n,a*a+s*s}var sl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},wf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Pf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Sf=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),Pi=class extends n3{constructor(e,r,o=0,n=12,a=3,s=je.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=n,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],n),u=this._shape.shapeHoles.map(I=>{let E=I.extractShapePointsToFlatArray([],n),_=[];for(let L=E.length-1;L>=1;L-=2){let V=E[L-1],U=E[L-0];_.push(V,U)}return _}),p=[],d=[];for(let I=0;I<c.length;I+=2)d.push([c[I],c[I+1]]);p.push(d);for(let I=0;I<u.length;I++){let E=u[I],_=[];for(let L=0;L<E.length;L+=2)_.push([E[L],E[L+1]]);p.push(_)}let f;e.isText?f=new i3().setFromPoints(e.points.map(E=>E.position)).getSize(new a3).length()*.1:p[0].length===0?f=o:o>0?f=vf(p,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Ur({windingRule:s,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=sl}let m;try{m=Ur({windingRule:je.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=wf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let E=m.elements[I],_=I%2===0?h.vertexCount:0;h.elements.push(E+_)}for(let I=0;I<m.vertexIndices.length;I++){let E=m.vertexIndices[I],_=h.vertexCount;h.vertexIndices.push(E+_)}for(let I=0;I<m.vertices.length;I++){let E=m.vertices[I];h.vertices.push(E)}}let b=1/0,v=-1/0,w=1/0,O=-1/0;for(let I=0,E=h.vertexCount;I<E;I++){let _=I*2,L=h.vertices[_+0],V=h.vertices[_+1];L<b&&(b=L),L>v&&(v=L),V<w&&(w=V),V>O&&(O=V)}this._minX=b,this._minY=w,this._width=v-b,this._height=O-w,this._buffer=new nl(this._computeBufferEstimatedSize(h));let S=[],T=[];for(let I=h.elementCount-1;I>=0;I--){let E=I>=y,_=I*2,L=h.elements[_+0],V=h.elements[_+1],U=L+V,B={start:L,count:V,normals:[],continuous:[],concave:[]},q=L,j=U-1,F=L+1,H=this._shape.roundedCurves.length;do{let re=q-L,K=h.vertices[j*2+0],Z=h.vertices[j*2+1],Q=h.vertices[q*2+0],$=h.vertices[q*2+1],de=h.vertices[F*2+0],le=h.vertices[F*2+1],ie=Q-K,ce=$-Z,ae=Math.sqrt(ie*ie+ce*ce);ie/=ae,ce/=ae;let me=Q-de,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,B.normals[re*2+0]=-fe,B.normals[re*2+1]=me,B.concave[re]=ie*fe-ce*me>0;let xe=h.vertexIndices[q];if(Array.isArray(xe))B.continuous[re]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)B.continuous[re]=!0;else{let ne=C===1?ye+1:ye-1;ne=(ne+H)%H;let De=C===1?0:1,ze=this._shape.roundedCurves[ye].getTangent(C),Le=this._shape.roundedCurves[ne].getTangent(De);B.continuous[re]=ze.dot(Le)>.95}}E&&(B.normals[re*2+0]*=-1,B.normals[re*2+1]*=-1),[j,q,F]=[q,F,F+1],F>=U&&(F-=V)}while(F!==L+1);let W=[];W.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(L*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((re,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(L*2,U*2)});let ee=0;for(let re=1;re<=this._bevelSegments;re++){let K=re/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],de=[],le=[],ie=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=h.vertices[B.start*2+me+0],xe=h.vertices[B.start*2+me+1],ye=-B.normals[fe+0]*Z,C=-B.normals[fe+1]*Z,ne=-B.normals[me+0]*Z,De=-B.normals[me+1]*Z;if(B.concave[ae]||!B.concave[ae]&&E){let ze=Math.atan2(C,ye),Le=Math.atan2(De,ne);Le>ze&&(Le-=Math.PI*2);let Oe=Le-ze;if(B.continuous[ae]||E){let wt=ze+Oe/2,Ie=Math.cos(wt)*Z,vt=Math.sin(wt)*Z;Q[2*ie+0]=he+Ie*(E?-1:1),Q[2*ie+1]=xe+vt*(E?-1:1),le[ie]=ae,ie++}else{let wt=Math.max(1,Math.floor(n/4*Math.abs(Oe)/Math.PI));for(let Ie=0;Ie<=wt;Ie++){let vt=ze+Oe*(Ie/wt),Pt=Math.cos(vt)*Z,qi=Math.sin(vt)*Z;Q[2*ie+0]=he+Pt,Q[2*ie+1]=xe+qi,le[ie]=ae,ie++}}}else Q[2*ie+0]=he+ye,Q[2*ie+1]=xe+C,le[ie]=ae,$[ae]=ie,ie++,Q[2*ie+0]=he,Q[2*ie+1]=xe,le[ie]=ae,ie++,Q[2*ie+0]=he+ne,Q[2*ie+1]=xe+De,le[ie]=ae,de[ae]=ie,ie++}let ce=Ur({windingRule:je.POSITIVE,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,he=le[fe],xe=le[(fe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${re}'th loop`);if(!ce.vertexCount){let ae=(re-1)/this._bevelSegments*Math.PI/2;ee=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,fe]=ce.vertexIndices[ae];if(me===fe)continue;let he=fe;fe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,C=(xe+1)%V;if(!B.continuous[ye]||!B.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}W.push({bevelI:re,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let te=(re,K,Z)=>{let Q=0,$=re.boundary.vertexIndices.length;for(;Q<$&&Z(re.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},Y=S.length;for(let re=1;re<W.length;re++){let K=W[re-1],Z=W[re],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let de=B.concave.length,le=0,ie=Sf(le,V);for(;!K.boundary.vertexIndices.filter(ie).length||!Z.boundary.vertexIndices.filter(ie).length;)le++,ie=Sf(le,V);let ce=K.boundary.vertexIndices.findIndex(ie),ae=Z.boundary.vertexIndices.findIndex(ie);do ce=(ce+1)%Q;while(ie(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ie(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(B,K,(ce-1+Q)%Q,void 0,fe),xe=this._buildBevelVert(B,Z,(ae-1+$)%$,void 0,fe),ye=he,C=xe,ne,De,ze=!1;do{fe=(le||de)/de,ie=Sf(le,V);let Le=te(K,ce,ie),Oe=te(Z,ae,ie),wt=ze;if(ze=!1,Le&&!Oe){for(let Ie=0;Ie<Le;Ie++)ne=this._buildBevelVert(B,K,(ce+Ie)%Q,Ie/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne;ze=!0}else if(!Le&&Oe)for(let Ie=0;Ie<Oe;Ie++)De=this._buildBevelVert(B,Z,(ae+Ie)%$,Ie/(Oe-1),fe),S.push(C.topN,ye.topP,De.topP),l===!1&&S.push(ye.bottomP,C.bottomN,De.bottomP),C=De;else if(Le&&Oe)if(ne=this._buildBevelVert(B,K,ce,0,fe),De=this._buildBevelVert(B,Z,ae,0,fe),wt?(S.push(ye.topN,De.topP,C.topN),S.push(ye.topN,ne.topP,De.topP),l===!1&&(S.push(De.bottomP,ye.bottomN,C.bottomN),S.push(De.bottomP,ne.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ne.topP),S.push(C.topN,ne.topP,De.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,De.bottomP))),ye=ne,C=De,Le===Oe)for(let Ie=1;Ie<Le;Ie++)ne=this._buildBevelVert(B,K,(ce+Ie)%Q,Ie/(Le-1),fe),De=this._buildBevelVert(B,Z,(ae+Ie)%$,Ie/(Oe-1),fe),S.push(ye.topN,ne.topP,C.topN),S.push(C.topN,ne.topP,De.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,De.bottomP)),ye=ne,C=De;else if(Le>Oe){let Ie=Le/Oe,vt=0;for(let Pt=1;Pt<Le;Pt++)ne=this._buildBevelVert(B,K,(ce+Pt)%Q,Pt/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne,Pt>(vt+1)*Ie&&(vt++,De=this._buildBevelVert(B,Z,(ae+vt)%$,vt/(Oe-1),fe),S.push(C.topN,ne.topP,De.topP),l===!1&&S.push(ne.bottomP,C.bottomN,De.bottomP),C=De)}else{let Ie=Oe/Le,vt=0;for(let Pt=1;Pt<Oe;Pt++)De=this._buildBevelVert(B,Z,(ae+Pt)%$,Pt/(Oe-1),fe),S.push(C.topN,ne.topP,De.topP),l===!1&&S.push(ne.bottomP,C.bottomN,De.bottomP),C=De,Pt>(vt+1)*Ie&&(vt++,ne=this._buildBevelVert(B,K,(ce+vt)%Q,vt/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne)}ce=(ce+Le)%Q,ae=(ae+Oe)%$,le=(le+1)%de}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(W,B,S),E){let re=[];for(let K=S.length-1;K>=Y+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];re.push($,Q,Z)}S.splice(Y,S.length-Y,...re)}if(E){let re=[];for(let K=W[W.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=W[W.length-1].boundary.vertices[K-1],Q=W[W.length-1].boundary.vertices[K-0];re.push(Z,Q)}T.push(re)}if(!E){let re=W[W.length-1],K;try{K=Ur({windingRule:W.length>1?je.POSITIVE:je.ODD,elementType:lt.POLYGONS,vertexSize:2,strict:!0,contours:[re.insetPoints,...T]})}catch{K=Pf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],ee),$=this._buildSurfaceVert(K,K.elements[Z+1],ee),de=this._buildSurfaceVert(K,K.elements[Z+2],ee);S.push(Q.top,$.top,de.top),l===!1&&S.push(de.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let M=new Cu(Uint32Array.from(S),1),g=new Cu(this._buffer.positions,3),D=new Cu(this._buffer.normals,3),N=new Cu(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,N.needsUpdate=!0,M.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",N),this.setIndex(M)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,r,o){let n=r.toString();if(n in this.vertexCache)return this.vertexCache[n];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),p=u*3,d=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[n]=f,f}_buildBevelVert(e,r,o,n=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],u,p,d,f;l!==c?(p=l,u=c,f=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,f=e.concave[u]&&r.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,b=u*2,v=p*2,w=r.boundary.vertices[y+0],O=r.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(w-this._minX)/this._width,M=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),M=1);let g=e.normals[b+0],D=e.normals[b+1],N=e.normals[v+0],I=e.normals[v+1];if(f){let U=N-g,B=I-D;g=g+U*(1-n),D=D+B*(1-n);let q=Math.sqrt(g*g+D*D);g/=q,D/=q}let E=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=E*3,L=E*2,V={i:o,fi:u,topP:E+0,topN:E+0,bottomP:E+1,bottomN:E+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=T,this._buffer.uvs[L+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=M,this._buffer.uvs[L+3]=T),d||(this.forPathBevel?(E+=1,_+=3,L+=2):(E+=2,_+=6,L+=4),V.topP=E+0,V.bottomP=E+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*h,this._buffer.normals[_+1]=I*h,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=T,this._buffer.uvs[L+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*h,this._buffer.normals[_+4]=I*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=M,this._buffer.uvs[L+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new Pi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=No(this.userData),e}};var Ia=class extends s3{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=je.ODD;this.elementType=lt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:je.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=n.length/2;h<m;h++){let y=h*2,b=n[y+0],v=n[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=b,p=v,!l&&!c)break}if(!l&&!c)try{s=Ur({contours:[n,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=sl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Au(new Float32Array(d*3),3),this._normalAttribute=new Au(new Float32Array(d*3),3),this._uvAttribute=new Au(new Float32Array(d*2),2),this._indexAttribute=new Au(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1];M<h&&(h=M),M>m&&(m=M),g<y&&(y=g),g>b&&(b=g)}let v=m-h,w=b-y;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1],D=(M-h)/v,N=(g-y)/w;this._positionAttribute.setXYZ(O,M,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,N)}for(let O=0,S=f;O<S;O++){let T=O*3,M=s.elements[T+0],g=s.elements[T+1],D=s.elements[T+2];this._indexAttribute.setX(T+0,M),this._indexAttribute.setX(T+1,g),this._indexAttribute.setX(T+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Ia(this._shape,this._curveSegments);return e.userData=No(this.userData),e}};var Na=class extends Pi{constructor(e,r,o=0,n=12,a=3,s=je.ODD){super(e,r,o,n,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Na(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=No(this.userData),e}};var tr=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:je.ODD},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=i.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ue?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Ue(r,o).fromJSON(a),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&a.update());let l=a??new Ue(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:s}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n,windingRule:a}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Ia(i.shape,o,{windingRule:a}):s=new Na(i.shape,t,e,o,r,a),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{BufferGeometry as l3,Float32BufferAttribute as c3,MathUtils as Of,Vector2 as Y0}from"three";var K0=Math.PI*2,Da=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return e.angle=Of.clamp(e.angle,0,360),{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,p=e*.5,d=u3(c,u,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let f;return o===0?(f=new l3,f.setAttribute("position",new c3([],3))):f=tr.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...i,type:"EllipseGeometry"}})}};function u3(i,t,e,r,o,n){if(r>=K0)return o>30||o%4===0?(p3(i,t,e,n),Math.round(o/4)):X0(i,r,o,t,e,n);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},c=k0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?d3(i,a.x,a.y,c,o,t,e,n):X0(i,r,o,t,e,n)}function d3(i,t,e,r,o,n,a,s){let l=Math.round(o/r.length);i.addPoint(Ea(t,e));for(let c=0,u=r.length;c<u;c++){let p=r[c],d=i.points[c],f=Ea(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),i.addPoint(f)}return s>0?Q0(i,n,a,s):i.addPoint(Ea(0,0)),l}function X0(i,t,e,r,o,n){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*r,u=Math.cos(l)*o;i.addPoint(Ea(c,u))}return t<K0?n>0?Q0(i,r,o,n):i.addPoint(Ea(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Z0(i,r,o,n)),1}function p3(i,t,e,r=0,o=0,n=0){let a=.5522847498,s=t*a,l=e*a;i.addPoint(Mu(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Mu(o,n+e,o-s,n+e,o+s,n+e)),i.addPoint(Mu(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Mu(o,n-e,o+s,n-e,o-s,n-e)),r>0&&Z0(i,t,e,r)}function Ea(i,t){return new jr(Of.generateUUID(),new Y0(i,t))}function Mu(i,t,e,r,o,n){let a=Ea(i,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,n),a}function Q0(i,t,e,r){J0(i,t,e,r).forEach(n=>i.addPoint(n))}function Z0(i,t,e,r){let o=J0(i,t,e,r),n=new Ue;o.forEach(a=>n.addPoint(a)),n.isClosed=!0,i.shapeHoles.push(n)}function J0(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),a=new Y0(o/t,n/e),s=i.points.map(l=>{let c=l.clone();return c.uuid=Of.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as f3,Float32BufferAttribute as Tf,Uint32BufferAttribute as h3,Vector3 as eb}from"three";var tb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=i.parameters,d=new ll(!1,t,e,r,o,n,a,s,l,c,u,p);return Object.assign(d,{userData:{...i,type:"HelixGeometry"}})}},Cf=new h3([0,0,0],1),ll=class extends f3{constructor(t=!0,e=1,r=1,o=1,n=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let f=t&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new eb,m=new eb,y=h(),b=h(),v=h(),w,O,S,T,M,g,D,N,I=h(),E=h(),_=h(),L=h(),V=h(),U=h(),B=h(),q=h(),j=r-2*l+.001,F=j/a,H=Math.ceil(s*a),W=H+1,ee=j/H,te=-j/2,Y=u+1,re=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,de=0,le=2,ie=d*le+le,ce=Y*ie/le,ae=ce+Y*W,me=Math.max(0,Y*(W+ie)),[fe,he,xe]=[3,3,2].map(nt=>Array(me*nt).fill(0)),ye=[],C=n-l;function ne(nt,Qe){let Dr=Math.PI/2;g=Qe*ee,N=2*Math.PI*(g%F)/F+Dr,g+=te,D=Math.sin(N)*C,M=Math.cos(N)*C,t?nt.set(M,D,g):nt.set(M,g,D)}ne(m,-1e-10),ne(y,0),I.copy(m),ne(m,1);let De=m.distanceTo(y),ze=f?0:$+Q,Le=De*H+2*ze,Oe=Q,wt=Le-ze;for(let nt=0;nt<=H;nt++){ne(b,nt),q.subVectors(b,I).normalize(),I.copy(b),U.copy(b).setComponent(+t+1,0).normalize(),B.crossVectors(q,U).normalize();let Qe=nt===0,Dr=nt===H,qd=Qe?3*Math.PI/2:K,$d=Qe?Oe:wt,Hl=Qe?Y:ae,$i=Qe?0:me-Y,dt=q.clone().multiplyScalar(Qe?-$:$).add(b),Xd=q.clone().multiplyScalar(Qe?-1:1).normalize();for(let gr=0;gr<Y;gr++){let Es=gr*re;if(E.addVectors(m.copy(U).multiplyScalar(l*Math.cos(Es)),y.copy(B).multiplyScalar(l*Math.sin(Es))),_.copy(E).normalize(),Qe||Dr){f||(de=$i+gr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=dt.getComponent(Wt),he[de*3+Wt]=Xd.getComponent(Wt)}),xe[de*2]=+Dr,xe[de*2+1]=gr/u),y.copy(_).multiplyScalar(Q),v.addVectors(b,y);for(let Wt=0;Wt<d;Wt++){let Xi=Wt*K+qd;L.addVectors(m.copy(q).multiplyScalar($*Math.sin(Xi)),y.copy(_).multiplyScalar($*Math.cos(Xi))),V.copy(L).normalize(),y.addVectors(v,L),L.normalize(),de=Hl+Wt*Y+gr,[0,1,2].forEach(Nn=>{fe[de*3+Nn]=y.getComponent(Nn),he[de*3+Nn]=V.getComponent(Nn)});let Wl=+Qe+Math.sin(Xi);xe[de*2]=($d+$*Wl)/Le,xe[de*2+1]=gr/u}}y.addVectors(b,E),de=ce+nt*Y+gr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=y.getComponent(Wt),he[de*3+Wt]=_.getComponent(Wt)}),xe[de*2]=(ze+nt*De)/Le,xe[de*2+1]=gr/u}}let Ie=W+2*d+le,vt=1,[Pt,qi]=[+f,Ie-1];for(let nt=Pt;nt<=qi-1;nt++){let Qe=f&&nt===qi-1;for(let Dr=0;Dr<Y-1;Dr++)w=nt*Y+Dr,O=w+1,S=(Qe?Dr:w)+Y,T=(Qe?Dr+1:O)+Y,nt===0?ye.push(O,T,S):nt===Ie-2?ye.push(w,O,S):ye.push(w,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new Tf(fe,3)),this.setAttribute("normal",new Tf(he,3)),this.setAttribute("uv",new Tf(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),n,a,s,l,c=6*(e-1)*t.radialSegments,u=e,p=u===e;for(let d=0;d<t.radialSegments;d++)n=u*r+d,a=n+1,s=(p?d:n)+r,l=(p?d+1:a)+r,o[c++]=n,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Cf.array=o,Cf.count=o.length,Cf}};import{IcosahedronGeometry as m3}from"three";var rb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new cl(t*.5,n,a):new m3(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"IcosahedronGeometry"}})}},cl=class extends Si{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[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],s="IcosahedronGeometry";super(n,a,s,t,e,r),this.type=s}static fromJSON(t){return new cl(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as y3,Shape as g3}from"three";var ob=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.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}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new g3;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new y3(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as db,BufferGeometryLoader as I3,Vector3 as N3,BoxGeometry as pb}from"three";import{BufferGeometry as T3,Vector2 as Nf,Vector3 as ub}from"three";import{Box3 as x3,BufferAttribute as ul,BufferGeometry as ib,Color as If,EventDispatcher as b3,Float32BufferAttribute as _a,Matrix3 as nb,Matrix4 as cb,MathUtils as v3,Object3D as S3,Sphere as w3,Vector2 as fr,Vector3 as Gt,Vector4 as P3}from"three";var uo=new cb,Af=new S3,Iu=new Gt,Oi=class extends b3{constructor(){super(),this.uuid=v3.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(t){let e=new nb().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let a=0,s=n.vertexNormals.length;a<s;a++)n.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return uo.makeRotationX(t),this.applyMatrix4(uo),this}rotateY(t){return uo.makeRotationY(t),this.applyMatrix4(uo),this}rotateZ(t){return uo.makeRotationZ(t),this.applyMatrix4(uo),this}translate(t,e,r){return uo.makeTranslation(t,e,r),this.applyMatrix4(uo),this}scale(t,e,r){return uo.makeScale(t,e,r),this.applyMatrix4(uo),this}lookAt(t){return Af.lookAt(t),Af.updateMatrix(),this.applyMatrix4(Af.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<n.count;d++)e.vertices.push(new Gt().fromBufferAttribute(n,d)),s!==void 0&&e.colors.push(new If().fromBufferAttribute(s,d));function u(d,f,h,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[h].clone()],b=a===void 0?[]:[new Gt().fromBufferAttribute(a,d),new Gt().fromBufferAttribute(a,f),new Gt().fromBufferAttribute(a,h)],v=new La(d,f,h,b,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new fr().fromBufferAttribute(l,d),new fr().fromBufferAttribute(l,f),new fr().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new fr().fromBufferAttribute(c,d),new fr().fromBufferAttribute(c,f),new fr().fromBufferAttribute(c,h)])}let p=t.groups;if(p.length>0)for(let d=0;d<p.length;d++){let f=p[d],h=f.start,m=f.count;for(let y=h,b=h+m;y<b;y+=3)r!==void 0?u(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)u(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<n.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Iu).negate(),this.translate(Iu.x,Iu.y,Iu.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new cb;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Gt,e=new Gt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=this.vertices[n.a],s=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Gt;if(t){let r=new Gt,o=new Gt;for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];r.subVectors(u,c),o.subVectors(l,c),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=n.vertexNormals;a.length===3?(a[0].copy(e[n.a]),a[1].copy(e[n.b]),a[2].copy(e[n.c])):(a[0]=e[n.a].clone(),a[1]=e[n.b].clone(),a[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,a=o.vertexNormals.length;n<a;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Oi;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Gt,u={a:new Gt,b:new Gt,c:new Gt};n.push(c),a.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new x3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new w3),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,c=t.faces,u=this.colors,p=t.colors;e!==void 0&&(o=new nb().getNormalMatrix(e));for(let d=0,f=s.length;d<f;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,f=p.length;d<f;d++)u.push(p[d].clone());for(let d=0,f=c.length;d<f;d++){let h=c[d],m,y,b=h.vertexNormals,v=h.vertexColors,w=new La(h.a+n,h.b+n,h.c+n);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=b.length;O<S;O++)m=b[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++)v.push(b[w].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let p=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,p=this.faceVertexUvs.length;u<p;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Gt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),n&&n.length===e&&(s=[]);for(let l=0;l<e;l++){let c=t[l]._id;a&&a.push(o[c]),s&&s.push(n[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],n={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,v=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,M=0;if(M=u(M,0,0),M=u(M,1,y),M=u(M,2,b),M=u(M,3,v),M=u(M,4,w),M=u(M,5,O),M=u(M,6,S),M=u(M,7,T),r.push(M),r.push(m.a,m.b,m.c),r.push(m.materialIndex),v){let g=this.faceVertexUvs[0][h];r.push(f(g[0]),f(g[1]),f(g[2]))}if(w&&r.push(p(m.normal)),O){let g=m.vertexNormals;r.push(p(g[0]),p(g[1]),p(g[2]))}if(S&&r.push(d(m.color)),T){let g=m.vertexColors;r.push(d(g[0]),d(g[1]),d(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return n[m]!==void 0||(n[m]=o.length/3,o.push(h.x,h.y,h.z)),n[m]}function d(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Oi().copy(this)}copy(t){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=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++){let S=b[w];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let n=t.morphTargets;for(let d=0,f=n.length;d<f;d++){let h={};if(h.name=n[d].name,n[d].vertices!==void 0){h.vertices=[];for(let m=0,y=n[d].vertices.length;m<y;m++)h.vertices.push(n[d].vertices[m].clone())}if(n[d].normals!==void 0){h.normals=[];for(let m=0,y=n[d].normals.length;m<y;m++)h.normals.push(n[d].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let d=0,f=a.length;d<f;d++){let h={};if(a[d].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let b=a[d].vertexNormals[m],v={};v.a=b.a.clone(),v.b=b.b.clone(),v.c=b.c.clone(),h.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)h.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=t.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=t.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Mf().fromGeometry(this),e=new ib,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Nu.call(new ul(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Nu.call(new ul(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",ab.call(new ul(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",sb.call(new ul(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",sb.call(new ul(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new _a(c.data.length*3,3);u.name=c.name,n.push(Nu.call(u,c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new _a(t.skinIndices.length*4,4);e.setAttribute("skinIndex",lb.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new _a(t.skinWeights.length*4,4);e.setAttribute("skinWeight",lb.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new ib,r=t.geometry;if(t.isPoints||t.isLine){let o=new _a(r.vertices.length*3,3),n=new _a(r.colors.length*3,3);if(e.setAttribute("position",Nu.call(o,r.vertices)),e.setAttribute("color",ab.call(n,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new _a(r.lineDistances.length,1);e.setAttribute("lineDistance",O3.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Oi.prototype.isGeometry=!0;var Mf=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(t){let e=[],r,o,n,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==n&&(n=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,c;if(l>0){c=[];for(let b=0;b<l;b++)c[b]={name:s[b].name,data:[]};this.morphTargets.position=c}let u=t.morphNormals,p=u.length,d;if(p>0){d=[];for(let b=0;b<p;b++)d[b]={name:u[b].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let v=e[b];this.vertices.push(r[v.a],r[v.b],r[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 O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(n===!0){let S=o[0][b];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new fr,new fr,new fr))}if(a===!0){let S=o[1][b];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new fr,new fr,new fr))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[b];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(h[v.a],h[v.b],h[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},La=class{constructor(t,e,r,o,n,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Gt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new If,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function O3(i){return this.array.set(i),this}function ab(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),n=new If),t[e++]=n.r,t[e++]=n.g,t[e++]=n.b}return this}function sb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),n=new fr),t[e++]=n.x,t[e++]=n.y}return this}function Nu(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),n=new Gt),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z}return this}function lb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),n=new P3),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z,t[e++]=n.w}return this}var C3=["a","b","c"];function A3(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Ef(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Df(i,t,e,r,o,n){let a=Math.min(i,t),s=Math.max(i,t),l=a+"_"+s,c;if(r.has(l))c=r.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function M3(i,t,e,r){let o,n,a;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)a=t[o],Df(a.a,a.b,i,r,a,e),Df(a.b,a.c,i,r,a,e),Df(a.c,a.a,i,r,a,e)}function Eu(i,t,e,r,o){i.push(new La(t,e,r,void 0,void 0,o))}function Ra(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Du(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var _u=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof T3?t=new Oi().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new ub,r,o,n,a,s,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;M3(l,c,d,f);let h=[],m,y,b,v,w,O,S;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new ub,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),b.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[A3(v,C3[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),b.add(e),y.newEdge=h.length,h.push(b)}let T,M,g,D,N,I,E,_=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],N=d[o].edges,r=N.length,r==3?T=3/16:r>3&&(T=3/(8*r)),M=1-r*Number(T),g=T,r<=2&&(r==2?(M=3/4,g=1/8):r==1||r==0),E=I.clone().multiplyScalar(M),e.set(0,0,0),a=0;a<r;a++)D=N[a],m=D.a!==I?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),E.add(e),_.push(E)}let L=_.concat(h),V=_.length,U,B,q,j=[],F=[],H,W,ee,te,Y=new Nf,re=new Nf,K=new Nf;for(o=0,n=c.length;o<n;o++)v=c[o],U=Number(Ef(v.a,v.b,f).newEdge)+V,B=Number(Ef(v.b,v.c,f).newEdge)+V,q=Number(Ef(v.c,v.a,f).newEdge)+V,Eu(j,U,B,q,v.materialIndex),Eu(j,v.a,U,q,v.materialIndex),Eu(j,v.b,B,U,v.materialIndex),Eu(j,v.c,q,B,v.materialIndex),p&&(H=u[o],W=H[0],ee=H[1],te=H[2],Y.set(Ra(W.x,ee.x),Ra(W.y,ee.y)),re.set(Ra(ee.x,te.x),Ra(ee.y,te.y)),K.set(Ra(W.x,te.x),Ra(W.y,te.y)),Du(F,Y,re,K),Du(F,W,Y,K),Du(F,ee,re,Y),Du(F,te,K,re));t.vertices=L,t.faces=j,p&&(t.faceVertexUvs[0]=F)}};var Mt=new N3,fb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new db().copy(new pb(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Mt),r={width:Mt.x,height:Mt.y,depth:Mt.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new db().copy(new pb(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Mt)):Mt.set(a.width,a.height,a.depth),(t!==Mt.x||e!==Mt.y||r!==Mt.z)&&n.scale(Mt.x===0?1:t/Mt.x,Mt.y===0?1:e/Mt.y,Mt.z===0?1:r/Mt.z);let s=n.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=n),n=new _u(o).modify(s).toBufferGeometry()):(s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals())}catch{s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()}return s!==void 0&&Object.assign(n,{originalGeometry:s}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new I3(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Mt);let a=100/Mt.x;Object.assign(n.parameters,{width:100,height:Mt.y*a,depth:Mt.z*a}),t(this.build(n))})}};var Lu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5,p=0,d=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,b=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=tr.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as E3,Float32BufferAttribute as _f,Vector2 as po,Vector3 as _t}from"three";var hb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=new Rf(t*.5,e,o,n,a,s,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function dl(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Lf(i,t,e,r,o,n){let a=t.clone().sub(i),s=e.clone().sub(i),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let c=a.add(s).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=a.angleTo(s);n.copy(i),n.addScaledVector(a,o/Math.sin(c)),n.addScaledVector(s,r/Math.sin(c))}}function D3(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Rf=class extends E3{constructor(t=.5,e=1,r=4,o=1,n=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,b=(r-2)*Math.PI/r,v=Math.PI-b,w=new _t(0,-f,0),O=new _t(0,f,0),S=new po(t,-f),T=new po(m,-f),M=new po(0,O.y).sub(T),g=new po(0,O.y).sub(S),D=new po(M.y,-M.x).normalize(),N=new po(g.y,-g.x).normalize(),E=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-M.angle())/2)-1e-8;a=Math.min(a,E);let _;{let F=new _t(D.x,D.y,0),H=new _t(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let L=a/Math.tan((Math.PI-M.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new _t;if(!n){c.push(w.x,w.y,w.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],W=S.clone(),ee=L/Math.cos(Math.PI/r);W.x-=ee;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,re=new po(Math.sin(Y),Math.cos(Y));dl(W,re,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let te=0;te<H.length;te++)l.push(H[te],F,H[(te+1)%H.length])}let B=[];{let F=new _t,H=new _t,W=new _t,ee=new _t,te=new _t,Y=new _t;for(let re=0;re<r;re++){let K=re/r*Math.PI*2+h,Z=(re+.5)/r*Math.PI*2+h,Q=(re+1)/r*Math.PI*2+h,$=new po(Math.sin(K),Math.cos(K)),de=new po(Math.sin(Z),Math.cos(Z)),le=new po(Math.sin(Q),Math.cos(Q));dl(S,$,H),dl(S,le,W),dl(D,de,F),Lf(O,H,W,V,V,ee),c.push(ee.x,ee.y,ee.z),Lf(H,O,W,V,L,te),c.push(te.x,te.y,te.z),Lf(W,H,O,L,V,Y),c.push(Y.x,Y.y,Y.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let ie=d++,ce=d++,ae=d++;if(l.push(ie,ce,ae),a>0){{let he=H.clone().add(W).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),C=w.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ne=Y.clone().sub(te);q(he,ne,C,M.angle())}let me,fe;{let he=new _t;dl(N,le,he);let xe=Y.clone().add(ee).multiplyScalar(.5);xe=D3(xe,W,O);let ye=Y.clone().sub(ee);[me,fe]=q(xe,ye,he,_,ee.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new _t(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}B.concat(fe);{let he=M.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new _t,ne=[];for(let ze=0;ze<s;ze++){let Le=[],Oe=Math.PI/2-xe*ze/s,wt=Math.cos(Oe),Ie=Math.sin(Oe),vt=Z;for(let Pt=0;Pt<=ze;Pt++){let qi=Math.cos(vt),nt=Math.sin(vt);F.x=wt*nt,F.y=Ie,F.z=wt*qi,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),Le.push(d++),vt+=Math.PI*2/ze/r}ne.push(Le)}fe.reverse(),ne.push(fe);let De=ne.length-1;for(let ze=0;ze<De;ze++){let Le=ne[ze],Oe=ne[ze+1],wt=Le.length-1;l.push(Oe[1],Le[0],Oe[0]);for(let Ie=1;Ie<=wt;Ie++)l.push(Le[Ie],Le[Ie-1],Oe[Ie]),l.push(Oe[Ie+1],Le[Ie],Oe[Ie])}}}}}this.setIndex(l),this.setAttribute("position",new _f(c,3)),this.setAttribute("normal",new _f(u,3)),this.setAttribute("uv",new _f(p,2));function q(F,H,W,ee,te){let Y=-ee/2,re=(Math.PI-ee)/2,K=H.clone().normalize().cross(W);F.addScaledVector(W,-a/Math.sin(re));let Z=new _t,Q=new _t,$=1,de=d,le=[];for(let ie=0;ie<=s;ie++){let ce=Y+ie/s*ee;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(W,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),te!=null){let fe=Math.max(0,Z.y-te);Z.addScaledVector(H,-fe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ie=0;ie<s;ie++)for(let ce=0;ce<$;ce++){let ae=de+ce+($+1)*ie,me=ae+($+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,W,ee){let te=Math.PI/2,Y=g.angle()-te,re=[],K=new _t,Z=new _t;for(let $=0;$<=s;$++){let de=[],le=$/s;for(let ie=0;ie<=$;ie++){let ae=(($?ie/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(Y)*me),xe=(te+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(W,ye),K.addScaledVector(ee,C*fe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),de.push(d++)}re.push(de)}let Q=re.length-1;for(let $=0;$<Q;$++){let de=re[$],le=re[$+1],ie=de.length-1;l.push(de[0],le[1],le[0]);for(let ce=1;ce<=ie;ce++)l.push(de[ce-1],de[ce],le[ce]),l.push(de[ce],le[ce+1],le[ce])}}}};var Ba=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,S,T){return S>e&&T>r?Math.min(O*e/S,O*r/T):S>e?O*e/S:T>r?O*r/T:O}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=p.x,y=p.y,b=u.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,b)),t.addPoint(t.createPoint(h,b)),t.isClosed=!0;let v=!0;for(let O=0,S=t.points.length;O<S;O++)t.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=n!==1,t.update();let w=tr.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...i,type:"RectangleGeometry"}})}};import{BufferGeometry as _3,Float32BufferAttribute as L3,MathUtils as mb,SphereGeometry as R3}from"three";var yb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},i.parameters);return e.thetaLength=mb.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=i.parameters,u;return c===0?(u=new _3,u.setAttribute("position",new L3([],3))):u=new R3(.5*t,o,n,a,s,l,c*mb.DEG2RAD),u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneGeometry as B3}from"three";var gb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new B3(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as V3,Float32BufferAttribute as Bf,Vector3 as z3}from"three";var xb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:a}=i.parameters,s=new Vf(t,e,r,o,n,a);return Object.assign(s,{userData:{...i,type:"BackdropGeometry"}})}},Vf=class extends V3{constructor(t=1,e=1,r=1,o=90,n=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;n==0&&(a=1),a=Math.max(1,Math.floor(a)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,f=(Z=0,Q=0,$=0)=>new z3(Z,Q,$),h=f(),m=f(),[y,b,v]=[e/2,t/2,r/2],w=-b,O=+b,[S,T,M]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));M.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(M.z=Math.min(N,I),M.z==I&&(M.y-=(N-I)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),h.subVectors(S,T),m.subVectors(M,T);let E=Math.min(h.length(),m.length())*n/100,_=E*Math.tan(o/2),L=E/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(L).add(T);h.set(0,g(o,!0),D(o,!0)),p.push([M,h.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),p.push([h.clone(),m.clone()])}p.push([S,f(0,1,0)]);let B=Math.sin(U/2)*_*2,q=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[q-1][0].distanceTo(p[q][0]),H=j+B*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*B)/H);p[q].push(0);let[W,ee,te]=p[0],Y,re,K;for(let Z=1;Z<p.length;Z++)[Y,re,K]=p[Z],s.push(w,W.y,W.z,w,Y.y,Y.z,O,W.y,W.z,O,W.y,W.z,w,Y.y,Y.z,O,Y.y,Y.z),l.push(0,ee.y,ee.z,0,re.y,re.z,0,ee.y,ee.z,0,ee.y,ee.z,0,re.y,re.z,0,re.y,re.z),c.push(0,te,0,K,1,te,1,te,0,K,1,K),[W,ee,te]=[Y,re,K];this.setAttribute("position",new Bf(s,3)),this.setAttribute("normal",new Bf(l,3)),this.setAttribute("uv",new Bf(c,2))}};var Ru=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,p=t*.5,d=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*r/100,v=d*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=f+Math.sin(S)*p,M=h+Math.cos(S)*d;u.addPoint(u.createPoint(T,M))}}else for(let O=0;O<o;O++){let S=f+Math.cos(y)*p,T=h+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=f+Math.cos(y)*b,T=h+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=n;u.roundness=n,u.update();let w=tr.create({shape:u,parameters:{roundness:n,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...i,type:"StarGeometry"}})}};import{PlaneGeometry as G3}from"three";var bb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new G3(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};import{BufferGeometry as F3,Float32BufferAttribute as j3,MathUtils as U3}from"three";var vb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width);e.shapeBlendNode&&(o=r);let n=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=k3(t,e,r,t*.5,a,n,0,0,o,s,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function k3(i,t,e,r,o,n,a,s,l,c,u){[t,e]=[e,t],a=t/2;let p=U3.clamp(o/360,0,1);if(p===0){let d=new F3;return d.setAttribute("position",new j3([],3)),d}return p===1&&(c=0),new ll(!0,i,t,e,r,p,n,a,s,l,c,u)}import{TorusKnotGeometry as H3}from"three";var Sb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:a}=i.parameters,s=t*.5;s!==e&&(s-=e);let l=new H3(s,e,r,o,n,a);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var wb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let d=0,f=l.points.length;d<f;d++)l.points[d].roundness=r;l.roundness=r,l.update();let p=tr.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};import{Vector2 as Cb,Vector3 as Lt,Matrix3 as oN,Matrix4 as cn,BufferGeometry as Ab,BufferAttribute as Va,MathUtils as Vu}from"three";function Pb(i,t){let e=2*Math.PI;return(i%e+e)%e===(t%e+e)%e}function W3(i){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(i.toLowerCase())}function q3(i,t,e){let r,o,n,a=Math.floor(i*6),s=i*6-a,l=e*(1-t),c=e*(1-s*t),u=e*(1-(1-s)*t);switch(a%6){case 0:r=e,o=u,n=l;break;case 1:r=c,o=e,n=l;break;case 2:r=l,o=e,n=u;break;case 3:r=l,o=c,n=e;break;case 4:r=u,o=l,n=e;break;case 5:default:r=e,o=l,n=c;break}return{r:r*255,g:o*255,b:n*255}}function $3(i,t,e){i/=255,t/=255,e/=255;let r=Math.max(i,t,e),o=Math.min(i,t,e),n=r,a=r-o,s=r==0?0:a/r,l;if(r==o)l=0;else{switch(r){case i:l=(t-e)/a+(t<e?6:0);break;case t:l=(e-i)/a+2;break;case e:default:l=(i-t)/a+4;break}l/=6}return{h:l,s,v:n}}function X3(i){return i=Math.floor(i),{r:i>>16&255,g:i>>8&255,b:i&255}}function Y3(i,t,e){return(i<<16)+(t<<8)+e}function K3(i,t,e){return i=Math.round(i),t=Math.round(t),e=Math.round(e),"#"+[i,t,e].map(r=>r.toString(16).padStart(2,"0")).join("").toUpperCase()}function Q3(i){let t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;i=i.replace(t,(r,o,n,a)=>String(o+o+n+n+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var Ob={parseRgba:W3,hsvToRgb:q3,rgbToHsv:$3,hexToRgb:X3,rgbToHex:Y3,rgbToHexString:K3,hexStringToRgb:Q3};function ko(i){return{all:i=i||new Map,on:function(t,e){var r=i.get(t);r?r.push(e):i.set(t,[e])},off:function(t,e){var r=i.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):i.set(t,[]))},emit:function(t,e){var r=i.get(t);r&&r.slice().map(function(o){o(e)}),(r=i.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Bu=class{constructor(t,e,r){this.id=t;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(t=>t());this.emitter=ko();this._innerCallUserAPI=async t=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await rN(this.userAPI,t),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let r=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=r,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(r)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=Oc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?Oc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(t){await this.callUserAPI(t)}async callUserAPI(t){await this._debouncedCallUserAPI(t)}update(t,e,r=!0){this.userAPI=t,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&r&&this._debouncedPrefetch(e)}retrieveValue(t){if(this.result)try{return Je.zoom(this.result,t)}catch(e){console.error(e)}}retrieveZoomedKeyValues(t){if(this.result){let e=t&&t.length?Je.zoom(this.result,t):this.result;if(tN(e))return Object.entries(e);if(eN(e))return e.map((r,o)=>[o.toString(),r]);throw J3(e)?new Error("This path points to a value, use retrieveValue() instead. "+t?.join(".")):new Error("Path error"+t?.join("."))}}dispose(){}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}get autostart(){return this.userAPI.autoStart}};function Z3(i){let t=new Headers;return i.headers.forEach(e=>{e.data.key!==""&&t.append(e.data.key,e.data.value)}),t}function J3(i){return typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i===null}function eN(i){return Array.isArray(i)}function tN(i){return typeof i=="object"&&i!==null}async function rN(i,t,e=new AbortController){let r,o=i.url,n=i.proxy?.enabled??!1,a;if(i.integration?.type==="OpenAI"){let l=pl(i.integration.prompt===""?[]:JSON.parse(i.integration.prompt),t),c=i.integration.behavior===""?[]:pl(JSON.parse(i.integration.behavior),t);a=`{
1
+ var fw=Object.create;var Yl=Object.defineProperty;var hw=Object.getOwnPropertyDescriptor;var mw=Object.getOwnPropertyNames;var yw=Object.getPrototypeOf,gw=Object.prototype.hasOwnProperty;var xw=(i,t,e)=>t in i?Yl(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var Ds=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),bw=(i,t)=>{for(var e in t)Yl(i,e,{get:t[e],enumerable:!0})},vw=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mw(t))!gw.call(i,o)&&o!==e&&Yl(i,o,{get:()=>t[o],enumerable:!(r=hw(t,o))||r.enumerable});return i};var _s=(i,t,e)=>(e=i!=null?fw(yw(i)):{},vw(t||!i||!i.__esModule?Yl(e,"default",{value:i,enumerable:!0}):e,i));var Ki=(i,t,e)=>(xw(i,typeof t!="symbol"?t+"":t,e),e);var c0=Ds((qp,l0)=>{(function(i,t){typeof qp=="object"?l0.exports=t():typeof define=="function"&&define.amd?define(t):i.Alea=t()})(qp,function(){"use strict";return i.importState=function(e){var r=new i;return r.importState(e),r},i;function i(){return function(e){var r=0,o=0,n=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),n=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),n-=s(e[l]),n<0&&(n+=1);s=null;var c=function(){var u=2091639*r+a*23283064365386963e-26;return r=o,o=n,n=u-(a=u|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[r,o,n,a]},c.importState=function(u){r=+u[0]||0,o=+u[1]||0,n=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=function(o){o=o.toString();for(var n=0;n<o.length;n++){e+=o.charCodeAt(n);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return r.version="Mash 0.9",r}})});var m0=Ds((hu,h0)=>{(function(i,t){typeof hu=="object"&&typeof h0<"u"?t(hu):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(hu,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,f,h,m,y,b,v=t[0].length,w=t.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],T=[],M=e==="f"?w:v,g=m=d=0;g<w;g++)S[g]=new Array(M).fill(0);for(g=0;g<v;g++)T[g]=new Array(v).fill(0);var D,N=new Array(v).fill(0);for(g=0;g<w;g++)for(a=0;a<v;a++)S[g][a]=t[g][a];for(g=0;g<v;g++){for(O[g]=d,h=0,l=g+1,a=g;a<w;a++)h+=Math.pow(S[a][g],2);if(h<n)d=0;else for(f=(p=S[g][g])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g]=p-d,a=l;a<v;a++){for(h=0,s=g;s<w;s++)h+=S[s][g]*S[s][a];for(p=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+p*S[s][g]}for(N[g]=d,h=0,a=l;a<v;a++)h+=Math.pow(S[g][a],2);if(h<n)d=0;else{for(f=(p=S[g][g+1])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g+1]=p-d,a=l;a<v;a++)O[a]=S[g][a]/f;for(a=l;a<w;a++){for(h=0,s=l;s<v;s++)h+=S[a][s]*S[g][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+h*O[s]}}m<(y=Math.abs(N[g])+Math.abs(O[g]))&&(m=y)}if(r)for(g=v-1;0<=g;g--){if(d!==0){for(f=S[g][g+1]*d,a=l;a<v;a++)T[a][g]=S[g][a]/f;for(a=l;a<v;a++){for(h=0,s=l;s<v;s++)h+=S[g][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+h*T[s][g]}}for(a=l;a<v;a++)T[g][a]=0,T[a][g]=0;T[g][g]=1,d=O[g],l=g}if(e){if(e==="f")for(g=v;g<w;g++){for(a=v;a<w;a++)S[g][a]=0;S[g][g]=1}for(g=v-1;0<=g;g--){for(l=g+1,d=N[g],a=l;a<M;a++)S[g][a]=0;if(d!==0){for(f=S[g][g]*d,a=l;a<M;a++){for(h=0,s=l;s<w;s++)h+=S[s][g]*S[s][a];for(p=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+p*S[s][g]}for(a=g;a<w;a++)S[a][g]=S[a][g]/d}else for(a=g;a<w;a++)S[a][g]=0;S[g][g]=S[g][g]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(D=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){D=!0;break}if(Math.abs(N[l-1])<=o)break}if(!D){for(u=0,c=l-(h=1),g=l;g<s+1&&(p=h*O[g],O[g]=u*O[g],!(Math.abs(p)<=o));g++)if(d=N[g],N[g]=Math.sqrt(p*p+d*d),u=d/(f=N[g]),h=-p/f,e)for(a=0;a<w;a++)y=S[a][c],b=S[a][g],S[a][c]=y*u+b*h,S[a][g]=-y*h+b*u}if(b=N[s],l===s){if(b<0&&(N[s]=-b,r))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=N[l],p=(((y=N[s-1])-b)*(y+b)+((d=O[s-1])-(f=O[s]))*(d+f))/(2*f*y),d=Math.sqrt(p*p+1),p=((m-b)*(m+b)+f*(y/(p<0?p-d:p+d)-f))/m,g=l+(h=u=1);g<s+1;g++){if(d=O[g],y=N[g],f=h*d,d*=u,b=Math.sqrt(p*p+f*f),p=m*(u=p/(O[g-1]=b))+d*(h=f/b),d=-m*h+d*u,f=y*h,y*=u,r)for(a=0;a<v;a++)m=T[a][g-1],b=T[a][g],T[a][g-1]=m*u+b*h,T[a][g]=-m*h+b*u;if(b=Math.sqrt(p*p+f*f),p=(u=p/(N[g-1]=b))*d+(h=f/b)*y,m=-h*d+u*y,e)for(a=0;a<w;a++)y=S[a][g-1],b=S[a][g],S[a][g-1]=y*u+b*h,S[a][g]=-y*h+b*u}O[l]=0,O[s]=p,N[s]=m}for(g=0;g<v;g++)N[g]<o&&(N[g]=0);return{u:S,q:N,v:T}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var E1=Ds((Cce,N1)=>{"use strict";function f_(i,t){function e(){this.constructor=i}e.prototype=t.prototype,i.prototype=new e}function Cn(i,t,e,r){this.message=i,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Cn)}f_(Cn,Error);Cn.buildMessage=function(i,t){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",p;for(p=0;p<c.parts.length;p++)u+=c.parts[p]instanceof Array?n(c.parts[p][0])+"-"+n(c.parts[p][1]):n(c.parts[p]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function o(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function n(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),p,d;for(p=0;p<c.length;p++)u[p]=a(c[p]);if(u.sort(),u.length>0){for(p=1,d=1;p<u.length;p++)u[p-1]!==u[p]&&(u[d]=u[p],d++);u.length=d}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+o(c)+'"':"end of input"}return"Expected "+s(i)+" but "+l(t)+" found."};function h_(i,t){t=t!==void 0?t:{};var e={},r={svg_path:Es},o=Es,n=function(x){if(!x)return[];for(var P=[],R=0;R<x.length;R++)P=P.concat.apply(P,x[R]);var A=P[0];return A&&A.code=="m"&&(delete A.relative,A.code="M"),P},a=function(x,P){return pw(x,P)},s=/^[Mm]/,l=Qe(["M","m"],!1,!1),c=function(x,P,R){var A=Dn(x,[P]);return R&&(A=A.concat(Dn(x=="M"?"L":"l",R[1]))),A},u=/^[Zz]/,p=Qe(["Z","z"],!1,!1),d=function(){return Dn("Z")},f=/^[Ll]/,h=Qe(["L","l"],!1,!1),m=function(x,P){return Dn(x,P)},y=/^[Hh]/,b=Qe(["H","h"],!1,!1),v=function(x,P){return Dn(x,P.map(function(R){return{x:R}}))},w=/^[Vv]/,O=Qe(["V","v"],!1,!1),S=function(x,P){return Dn(x,P.map(function(R){return{y:R}}))},T=/^[Cc]/,M=Qe(["C","c"],!1,!1),g=function(x,P,R){return{x1:x.x,y1:x.y,x2:P.x,y2:P.y,x:R.x,y:R.y}},D=/^[Ss]/,N=Qe(["S","s"],!1,!1),I=function(x,P){return{x2:x.x,y2:x.y,x:P.x,y:P.y}},E=/^[Qq]/,_=Qe(["Q","q"],!1,!1),L=function(x,P){return{x1:x.x,y1:x.y,x:P.x,y:P.y}},V=/^[Tt]/,U=Qe(["T","t"],!1,!1),B=/^[Aa]/,q=Qe(["A","a"],!1,!1),j=function(x,P,R,A,z,oe){return{rx:x,ry:P,xAxisRotation:R,largeArc:A,sweep:z,x:oe.x,y:oe.y}},F=function(x,P){return{x,y:P}},H=function(x){return x*1},W=function(x){return x.join("")*1},ee=/^[01]/,te=Qe(["0","1"],!1,!1),Y=function(x){return x=="1"},re=function(){return""},K=",",Z=nt(",",!1),Q=function(x){return x.join("")},$=".",de=nt(".",!1),le=/^[eE]/,ie=Qe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Qe(["+","-"],!1,!1),me=/^[0-9]/,fe=Qe([["0","9"]],!1,!1),he=function(x){return x.join("")},be=/^[ \t\n\r]/,ye=Qe([" "," ",`
2
+ `,"\r"],!1,!1),C=0,ne=0,De=[{line:1,column:1}],ze=0,Le=[],Oe=0,Pt;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Ie(){return i.substring(ne,C)}function St(){return $i(ne,C)}function Ot(x,P){throw P=P!==void 0?P:$i(ne,C),gr([$d(x)],i.substring(ne,C),P)}function qi(x,P){throw P=P!==void 0?P:$i(ne,C),Xd(x,P)}function nt(x,P){return{type:"literal",text:x,ignoreCase:P}}function Qe(x,P,R){return{type:"class",parts:x,inverted:P,ignoreCase:R}}function Dr(){return{type:"any"}}function qd(){return{type:"end"}}function $d(x){return{type:"other",description:x}}function Hl(x){var P=De[x],R;if(P)return P;for(R=x-1;!De[R];)R--;for(P=De[R],P={line:P.line,column:P.column};R<x;)i.charCodeAt(R)===10?(P.line++,P.column=1):P.column++,R++;return De[x]=P,P}function $i(x,P){var R=Hl(x),A=Hl(P);return{start:{offset:x,line:R.line,column:R.column},end:{offset:P,line:A.line,column:A.column}}}function dt(x){C<ze||(C>ze&&(ze=C,Le=[]),Le.push(x))}function Xd(x,P){return new Cn(x,null,null,P)}function gr(x,P,R){return new Cn(Cn.buildMessage(x,P),x,P,R)}function Es(){var x,P,R,A,z;for(x=C,P=[],R=Ge();R!==e;)P.push(R),R=Ge();if(P!==e)if(R=Wt(),R===e&&(R=null),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(ne=x,P=n(R),x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;return x}function Wt(){var x,P,R,A,z,oe;if(x=C,P=Xi(),P!==e){for(R=[],A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();for(z!==e?(oe=Xi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(R.push(A),A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();z!==e?(oe=Xi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Xi(){var x,P,R,A,z,oe;if(x=C,P=Nn(),P!==e){for(R=[],A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();for(z!==e?(oe=Wl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(R.push(A),A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();z!==e?(oe=Wl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Wl(){var x;return x=QS(),x===e&&(x=ZS(),x===e&&(x=JS(),x===e&&(x=ew(),x===e&&(x=tw(),x===e&&(x=ow(),x===e&&(x=nw(),x===e&&(x=sw(),x===e&&(x=cw())))))))),x}function Nn(){var x,P,R,A,z,oe,_n;if(x=C,s.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(l)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=$t(),A!==e?(z=C,oe=rt(),oe===e&&(oe=null),oe!==e?(_n=mm(),_n!==e?(oe=[oe,_n],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ne=x,P=c(P,A,z),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function QS(){var x,P;return x=C,u.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(p)),P!==e&&(ne=x,P=d()),x=P,x}function ZS(){var x,P,R,A;if(x=C,f.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(h)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=mm(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function mm(){var x,P,R,A,z,oe;if(x=C,P=$t(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function JS(){var x,P,R,A;if(x=C,y.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(b)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=ym(),A!==e?(ne=x,P=v(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function ym(){var x,P,R,A,z,oe;if(x=C,P=En(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function ew(){var x,P,R,A;if(x=C,w.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(O)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=ym(),A!==e?(ne=x,P=S(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function tw(){var x,P,R,A;if(x=C,T.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(M)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=rw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function rw(){var x,P,R,A,z,oe;if(x=C,P=Yd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Yd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Yd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Yd(){var x,P,R,A,z,oe;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(ne=x,P=g(P,A,oe),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function ow(){var x,P,R,A;if(x=C,D.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(N)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=iw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function iw(){var x,P,R,A,z,oe;if(x=C,P=Kd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Kd(){var x,P,R,A;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(ne=x,P=I(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function nw(){var x,P,R,A;if(x=C,E.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(_)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=aw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function aw(){var x,P,R,A,z,oe;if(x=C,P=Qd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Qd(){var x,P,R,A;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(ne=x,P=L(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function sw(){var x,P,R,A;if(x=C,V.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(U)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=lw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function lw(){var x,P,R,A,z,oe;if(x=C,P=$t(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function cw(){var x,P,R,A;if(x=C,B.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(q)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=uw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function uw(){var x,P,R,A,z,oe;if(x=C,P=Zd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Zd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Zd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Zd(){var x,P,R,A,z,oe,_n,ep,$l,tp,Xl,rp;return x=C,P=gm(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=gm(),A!==e?(z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(_n=rt(),_n!==e?(ep=xm(),ep!==e?($l=rt(),$l===e&&($l=null),$l!==e?(tp=xm(),tp!==e?(Xl=rt(),Xl===e&&(Xl=null),Xl!==e?(rp=$t(),rp!==e?(ne=x,P=j(P,A,oe,ep,tp,rp),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function $t(){var x,P,R,A;return x=C,P=En(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=En(),A!==e?(ne=x,P=F(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function gm(){var x,P;return x=C,P=vm(),P===e&&(P=Yi()),P!==e&&(ne=x,P=H(P)),x=P,x}function En(){var x,P,R,A;return x=C,P=C,R=Jd(),R===e&&(R=null),R!==e?(A=vm(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Jd(),R===e&&(R=null),R!==e?(A=Yi(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=W(P)),x=P,x}function xm(){var x,P;return x=C,ee.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(te)),P!==e&&(ne=x,P=Y(P)),x=P,x}function rt(){var x,P,R,A,z;if(x=C,P=[],R=Ge(),R!==e)for(;R!==e;)P.push(R),R=Ge();else P=e;if(P!==e)if(R=bm(),R===e&&(R=null),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(P=[P,R,A],x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;if(x===e){if(x=C,P=C,R=bm(),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(R=[R,A],P=R):(C=P,P=e)}else C=P,P=e;P!==e&&(ne=x,P=re()),x=P}return x}function bm(){var x;return i.charCodeAt(C)===44?(x=K,C++):(x=e,Oe===0&&dt(Z)),x}function vm(){var x,P,R,A;return x=C,P=C,R=dw(),R!==e?(A=Sm(),A===e&&(A=null),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Yi(),R!==e?(A=Sm(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function dw(){var x,P,R,A,z;return x=C,P=C,R=Yi(),R===e&&(R=null),R!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Oe===0&&dt(de)),A!==e?(z=Yi(),z!==e?(R=[R,A,z],P=R):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Yi(),R!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Oe===0&&dt(de)),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function Sm(){var x,P,R,A,z;return x=C,P=C,le.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(ie)),R!==e?(A=Jd(),A===e&&(A=null),A!==e?(z=Yi(),z!==e?(R=[R,A,z],P=R):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P!==e&&(ne=x,P=Q(P)),x=P,x}function Jd(){var x;return ce.test(i.charAt(C))?(x=i.charAt(C),C++):(x=e,Oe===0&&dt(ae)),x}function Yi(){var x,P,R;if(x=C,P=[],me.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(fe)),R!==e)for(;R!==e;)P.push(R),me.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(fe));else P=e;return P!==e&&(ne=x,P=he(P)),x=P,x}function Ge(){var x,P;return x=C,be.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(ye)),P!==e&&(ne=x,P=re()),x=P,x}function pw(x,P){if(!P)return[x];for(var R=[x],A=0,z=P.length;A<z;A++)R[A+1]=P[A][1];return R}var ql={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var wm in ql)ql[wm.toUpperCase()]=ql[wm];function Dn(x,P){P||(P=[{}]);for(var R=P.length;R--;){var A={code:x,command:ql[x]};x==x.toLowerCase()&&(A.relative=!0);for(var z in P[R])A[z]=P[R][z];P[R]=A}return P}if(Pt=o(),Pt!==e&&C===i.length)return Pt;throw Pt!==e&&C<i.length&&dt(qd()),gr(Le,ze<i.length?i.charAt(ze):null,ze<i.length?$i(ze,ze+1):$i(ze,ze))}N1.exports={SyntaxError:Cn,parse:h_}});var Uh=Ds((Ace,D1)=>{var Od=E1().parse;Od.parseSVG=Od;Od.makeAbsolute=m_;D1.exports=Od;function m_(i){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return i.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var n in r)n in o&&(o[n]+=o.relative?o[r[n]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=t.x,o.y=t.y),e=o}),i}});var XS=Ds((Xye,$S)=>{$S.exports=function(t,e){for(var r=t.split("."),o=e.split("."),n=0;n<3;n++){var a=Number(r[n]),s=Number(o[n]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as gR,Loader as xR}from"three";function Kl(i){for(let t of Object.keys(i))i[t]===void 0&&delete i[t];return i}function Tt(i,t){return Object.setPrototypeOf(i,t),i}function Ql(i){return Array.isArray(i)?i:[i]}function Zl(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var Sw=typeof global=="object"&&global&&global.Object===Object&&global,Jl=Sw;var ww=typeof self=="object"&&self&&self.Object===Object&&self,Pw=Jl||ww||Function("return this")(),pt=Pw;var Ow=pt.Symbol,Et=Ow;var Pm=Object.prototype,Tw=Pm.hasOwnProperty,Cw=Pm.toString,Ls=Et?Et.toStringTag:void 0;function Aw(i){var t=Tw.call(i,Ls),e=i[Ls];try{i[Ls]=void 0;var r=!0}catch{}var o=Cw.call(i);return r&&(t?i[Ls]=e:delete i[Ls]),o}var Om=Aw;var Mw=Object.prototype,Iw=Mw.toString;function Nw(i){return Iw.call(i)}var Tm=Nw;var Ew="[object Null]",Dw="[object Undefined]",Cm=Et?Et.toStringTag:void 0;function _w(i){return i==null?i===void 0?Dw:Ew:Cm&&Cm in Object(i)?Om(i):Tm(i)}var ur=_w;function Lw(i){return i!=null&&typeof i=="object"}var zt=Lw;var Rw="[object Symbol]";function Bw(i){return typeof i=="symbol"||zt(i)&&ur(i)==Rw}var oi=Bw;function Vw(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var ec=Vw;var zw=Array.isArray,ft=zw;var Gw=1/0,Am=Et?Et.prototype:void 0,Mm=Am?Am.toString:void 0;function Im(i){if(typeof i=="string")return i;if(ft(i))return ec(i,Im)+"";if(oi(i))return Mm?Mm.call(i):"";var t=i+"";return t=="0"&&1/i==-Gw?"-0":t}var Nm=Im;var Fw=/\s/;function jw(i){for(var t=i.length;t--&&Fw.test(i.charAt(t)););return t}var Em=jw;var Uw=/^\s+/;function kw(i){return i&&i.slice(0,Em(i)+1).replace(Uw,"")}var Dm=kw;function Hw(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ht=Hw;var _m=0/0,Ww=/^[-+]0x[0-9a-f]+$/i,qw=/^0b[01]+$/i,$w=/^0o[0-7]+$/i,Xw=parseInt;function Yw(i){if(typeof i=="number")return i;if(oi(i))return _m;if(ht(i)){var t=typeof i.valueOf=="function"?i.valueOf():i;i=ht(t)?t+"":t}if(typeof i!="string")return i===0?i:+i;i=Dm(i);var e=qw.test(i);return e||$w.test(i)?Xw(i.slice(2),e?2:8):Ww.test(i)?_m:+i}var op=Yw;function Kw(i){return i}var Lm=Kw;var Qw="[object AsyncFunction]",Zw="[object Function]",Jw="[object GeneratorFunction]",e2="[object Proxy]";function t2(i){if(!ht(i))return!1;var t=ur(i);return t==Zw||t==Jw||t==Qw||t==e2}var tc=t2;var r2=pt["__core-js_shared__"],rc=r2;var Rm=function(){var i=/[^.]+$/.exec(rc&&rc.keys&&rc.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function o2(i){return!!Rm&&Rm in i}var Bm=o2;var i2=Function.prototype,n2=i2.toString;function a2(i){if(i!=null){try{return n2.call(i)}catch{}try{return i+""}catch{}}return""}var Co=a2;var s2=/[\\^$.*+?()[\]{}|]/g,l2=/^\[object .+?Constructor\]$/,c2=Function.prototype,u2=Object.prototype,d2=c2.toString,p2=u2.hasOwnProperty,f2=RegExp("^"+d2.call(p2).replace(s2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function h2(i){if(!ht(i)||Bm(i))return!1;var t=tc(i)?f2:l2;return t.test(Co(i))}var Vm=h2;function m2(i,t){return i?.[t]}var zm=m2;function y2(i,t){var e=zm(i,t);return Vm(e)?e:void 0}var Jt=y2;var g2=Jt(pt,"WeakMap"),oc=g2;var Gm=Object.create,x2=function(){function i(){}return function(t){if(!ht(t))return{};if(Gm)return Gm(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Fm=x2;function b2(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var jm=b2;function v2(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Um=v2;var S2=800,w2=16,P2=Date.now;function O2(i){var t=0,e=0;return function(){var r=P2(),o=w2-(r-e);if(e=r,o>0){if(++t>=S2)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var km=O2;function T2(i){return function(){return i}}var Hm=T2;var C2=function(){try{var i=Jt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Ln=C2;var A2=Ln?function(i,t){return Ln(i,"toString",{configurable:!0,enumerable:!1,value:Hm(t),writable:!0})}:Lm,Wm=A2;var M2=km(Wm),qm=M2;function I2(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var $m=I2;var N2=9007199254740991,E2=/^(?:0|[1-9]\d*)$/;function D2(i,t){var e=typeof i;return t=t??N2,!!t&&(e=="number"||e!="symbol"&&E2.test(i))&&i>-1&&i%1==0&&i<t}var Rn=D2;function _2(i,t,e){t=="__proto__"&&Ln?Ln(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var ic=_2;function L2(i,t){return i===t||i!==i&&t!==t}var Bn=L2;var R2=Object.prototype,B2=R2.hasOwnProperty;function V2(i,t,e){var r=i[t];(!(B2.call(i,t)&&Bn(r,e))||e===void 0&&!(t in i))&&ic(i,t,e)}var Vn=V2;function z2(i,t,e,r){var o=!e;e||(e={});for(var n=-1,a=t.length;++n<a;){var s=t[n],l=r?r(e[s],i[s],s,e,i):void 0;l===void 0&&(l=i[s]),o?ic(e,s,l):Vn(e,s,l)}return e}var Qr=z2;var Xm=Math.max;function G2(i,t,e){return t=Xm(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Xm(r.length-t,0),a=Array(n);++o<n;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),jm(i,this,s)}}var Ym=G2;var F2=9007199254740991;function j2(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=F2}var zn=j2;function U2(i){return i!=null&&zn(i.length)&&!tc(i)}var nc=U2;var k2=Object.prototype;function H2(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||k2;return i===e}var Gn=H2;function W2(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Km=W2;var q2="[object Arguments]";function $2(i){return zt(i)&&ur(i)==q2}var ip=$2;var Qm=Object.prototype,X2=Qm.hasOwnProperty,Y2=Qm.propertyIsEnumerable,K2=ip(function(){return arguments}())?ip:function(i){return zt(i)&&X2.call(i,"callee")&&!Y2.call(i,"callee")},Fn=K2;function Q2(){return!1}var Zm=Q2;var ty=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jm=ty&&typeof module=="object"&&module&&!module.nodeType&&module,Z2=Jm&&Jm.exports===ty,ey=Z2?pt.Buffer:void 0,J2=ey?ey.isBuffer:void 0,eP=J2||Zm,Qi=eP;var tP="[object Arguments]",rP="[object Array]",oP="[object Boolean]",iP="[object Date]",nP="[object Error]",aP="[object Function]",sP="[object Map]",lP="[object Number]",cP="[object Object]",uP="[object RegExp]",dP="[object Set]",pP="[object String]",fP="[object WeakMap]",hP="[object ArrayBuffer]",mP="[object DataView]",yP="[object Float32Array]",gP="[object Float64Array]",xP="[object Int8Array]",bP="[object Int16Array]",vP="[object Int32Array]",SP="[object Uint8Array]",wP="[object Uint8ClampedArray]",PP="[object Uint16Array]",OP="[object Uint32Array]",ot={};ot[yP]=ot[gP]=ot[xP]=ot[bP]=ot[vP]=ot[SP]=ot[wP]=ot[PP]=ot[OP]=!0;ot[tP]=ot[rP]=ot[hP]=ot[oP]=ot[mP]=ot[iP]=ot[nP]=ot[aP]=ot[sP]=ot[lP]=ot[cP]=ot[uP]=ot[dP]=ot[pP]=ot[fP]=!1;function TP(i){return zt(i)&&zn(i.length)&&!!ot[ur(i)]}var ry=TP;function CP(i){return function(t){return i(t)}}var jn=CP;var oy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Rs=oy&&typeof module=="object"&&module&&!module.nodeType&&module,AP=Rs&&Rs.exports===oy,np=AP&&Jl.process,MP=function(){try{var i=Rs&&Rs.require&&Rs.require("util").types;return i||np&&np.binding&&np.binding("util")}catch{}}(),Ao=MP;var iy=Ao&&Ao.isTypedArray,IP=iy?jn(iy):ry,ac=IP;var NP=Object.prototype,EP=NP.hasOwnProperty;function DP(i,t){var e=ft(i),r=!e&&Fn(i),o=!e&&!r&&Qi(i),n=!e&&!r&&!o&&ac(i),a=e||r||o||n,s=a?Km(i.length,String):[],l=s.length;for(var c in i)(t||EP.call(i,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Rn(c,l)))&&s.push(c);return s}var sc=DP;function _P(i,t){return function(e){return i(t(e))}}var lc=_P;var LP=lc(Object.keys,Object),ny=LP;var RP=Object.prototype,BP=RP.hasOwnProperty;function VP(i){if(!Gn(i))return ny(i);var t=[];for(var e in Object(i))BP.call(i,e)&&e!="constructor"&&t.push(e);return t}var ay=VP;function zP(i){return nc(i)?sc(i):ay(i)}var Un=zP;function GP(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var sy=GP;var FP=Object.prototype,jP=FP.hasOwnProperty;function UP(i){if(!ht(i))return sy(i);var t=Gn(i),e=[];for(var r in i)r=="constructor"&&(t||!jP.call(i,r))||e.push(r);return e}var ly=UP;function kP(i){return nc(i)?sc(i,!0):ly(i)}var kn=kP;var HP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WP=/^\w*$/;function qP(i,t){if(ft(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||oi(i)?!0:WP.test(i)||!HP.test(i)||t!=null&&i in Object(t)}var cy=qP;var $P=Jt(Object,"create"),Mo=$P;function XP(){this.__data__=Mo?Mo(null):{},this.size=0}var uy=XP;function YP(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var dy=YP;var KP="__lodash_hash_undefined__",QP=Object.prototype,ZP=QP.hasOwnProperty;function JP(i){var t=this.__data__;if(Mo){var e=t[i];return e===KP?void 0:e}return ZP.call(t,i)?t[i]:void 0}var py=JP;var eO=Object.prototype,tO=eO.hasOwnProperty;function rO(i){var t=this.__data__;return Mo?t[i]!==void 0:tO.call(t,i)}var fy=rO;var oO="__lodash_hash_undefined__";function iO(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mo&&t===void 0?oO:t,this}var hy=iO;function Hn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Hn.prototype.clear=uy;Hn.prototype.delete=dy;Hn.prototype.get=py;Hn.prototype.has=fy;Hn.prototype.set=hy;var ap=Hn;function nO(){this.__data__=[],this.size=0}var my=nO;function aO(i,t){for(var e=i.length;e--;)if(Bn(i[e][0],t))return e;return-1}var ii=aO;var sO=Array.prototype,lO=sO.splice;function cO(i){var t=this.__data__,e=ii(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():lO.call(t,e,1),--this.size,!0}var yy=cO;function uO(i){var t=this.__data__,e=ii(t,i);return e<0?void 0:t[e][1]}var gy=uO;function dO(i){return ii(this.__data__,i)>-1}var xy=dO;function pO(i,t){var e=this.__data__,r=ii(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var by=pO;function Wn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Wn.prototype.clear=my;Wn.prototype.delete=yy;Wn.prototype.get=gy;Wn.prototype.has=xy;Wn.prototype.set=by;var ni=Wn;var fO=Jt(pt,"Map"),ai=fO;function hO(){this.size=0,this.__data__={hash:new ap,map:new(ai||ni),string:new ap}}var vy=hO;function mO(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var Sy=mO;function yO(i,t){var e=i.__data__;return Sy(t)?e[typeof t=="string"?"string":"hash"]:e.map}var si=yO;function gO(i){var t=si(this,i).delete(i);return this.size-=t?1:0,t}var wy=gO;function xO(i){return si(this,i).get(i)}var Py=xO;function bO(i){return si(this,i).has(i)}var Oy=bO;function vO(i,t){var e=si(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Ty=vO;function qn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}qn.prototype.clear=vy;qn.prototype.delete=wy;qn.prototype.get=Py;qn.prototype.has=Oy;qn.prototype.set=Ty;var Zi=qn;var SO="Expected a function";function sp(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(SO);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var a=i.apply(this,r);return e.cache=n.set(o,a)||n,a};return e.cache=new(sp.Cache||Zi),e}sp.Cache=Zi;var Cy=sp;var wO=500;function PO(i){var t=Cy(i,function(r){return e.size===wO&&e.clear(),r}),e=t.cache;return t}var Ay=PO;var OO=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,TO=/\\(\\)?/g,CO=Ay(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(OO,function(e,r,o,n){t.push(o?n.replace(TO,"$1"):r||e)}),t}),My=CO;function AO(i){return i==null?"":Nm(i)}var Iy=AO;function MO(i,t){return ft(i)?i:cy(i,t)?[i]:My(Iy(i))}var xr=MO;var IO=1/0;function NO(i){if(typeof i=="string"||oi(i))return i;var t=i+"";return t=="0"&&1/i==-IO?"-0":t}var li=NO;function EO(i,t){t=xr(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[li(t[e++])];return e&&e==r?i:void 0}var cc=EO;function DO(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var $n=DO;var Ny=Et?Et.isConcatSpreadable:void 0;function _O(i){return ft(i)||Fn(i)||!!(Ny&&i&&i[Ny])}var Ey=_O;function Dy(i,t,e,r,o){var n=-1,a=i.length;for(e||(e=Ey),o||(o=[]);++n<a;){var s=i[n];t>0&&e(s)?t>1?Dy(s,t-1,e,r,o):$n(o,s):r||(o[o.length]=s)}return o}var _y=Dy;function LO(i){var t=i==null?0:i.length;return t?_y(i,1):[]}var Ly=LO;function RO(i){return qm(Ym(i,void 0,Ly),i+"")}var uc=RO;var BO=lc(Object.getPrototypeOf,Object),Xn=BO;var VO="[object Object]",zO=Function.prototype,GO=Object.prototype,Ry=zO.toString,FO=GO.hasOwnProperty,jO=Ry.call(Object);function UO(i){if(!zt(i)||ur(i)!=VO)return!1;var t=Xn(i);if(t===null)return!0;var e=FO.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ry.call(e)==jO}var By=UO;function kO(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Vy=kO;function HO(){this.__data__=new ni,this.size=0}var zy=HO;function WO(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Gy=WO;function qO(i){return this.__data__.get(i)}var Fy=qO;function $O(i){return this.__data__.has(i)}var jy=$O;var XO=200;function YO(i,t){var e=this.__data__;if(e instanceof ni){var r=e.__data__;if(!ai||r.length<XO-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Zi(r)}return e.set(i,t),this.size=e.size,this}var Uy=YO;function Yn(i){var t=this.__data__=new ni(i);this.size=t.size}Yn.prototype.clear=zy;Yn.prototype.delete=Gy;Yn.prototype.get=Fy;Yn.prototype.has=jy;Yn.prototype.set=Uy;var Kn=Yn;function KO(i,t){return i&&Qr(t,Un(t),i)}var ky=KO;function QO(i,t){return i&&Qr(t,kn(t),i)}var Hy=QO;var Xy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wy=Xy&&typeof module=="object"&&module&&!module.nodeType&&module,ZO=Wy&&Wy.exports===Xy,qy=ZO?pt.Buffer:void 0,$y=qy?qy.allocUnsafe:void 0;function JO(i,t){if(t)return i.slice();var e=i.length,r=$y?$y(e):new i.constructor(e);return i.copy(r),r}var Yy=JO;function eT(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var a=i[e];t(a,e,i)&&(n[o++]=a)}return n}var Ky=eT;function tT(){return[]}var dc=tT;var rT=Object.prototype,oT=rT.propertyIsEnumerable,Qy=Object.getOwnPropertySymbols,iT=Qy?function(i){return i==null?[]:(i=Object(i),Ky(Qy(i),function(t){return oT.call(i,t)}))}:dc,Qn=iT;function nT(i,t){return Qr(i,Qn(i),t)}var Zy=nT;var aT=Object.getOwnPropertySymbols,sT=aT?function(i){for(var t=[];i;)$n(t,Qn(i)),i=Xn(i);return t}:dc,pc=sT;function lT(i,t){return Qr(i,pc(i),t)}var Jy=lT;function cT(i,t,e){var r=t(i);return ft(i)?r:$n(r,e(i))}var fc=cT;function uT(i){return fc(i,Un,Qn)}var Bs=uT;function dT(i){return fc(i,kn,pc)}var hc=dT;var pT=Jt(pt,"DataView"),mc=pT;var fT=Jt(pt,"Promise"),yc=fT;var hT=Jt(pt,"Set"),gc=hT;var eg="[object Map]",mT="[object Object]",tg="[object Promise]",rg="[object Set]",og="[object WeakMap]",ig="[object DataView]",yT=Co(mc),gT=Co(ai),xT=Co(yc),bT=Co(gc),vT=Co(oc),Ji=ur;(mc&&Ji(new mc(new ArrayBuffer(1)))!=ig||ai&&Ji(new ai)!=eg||yc&&Ji(yc.resolve())!=tg||gc&&Ji(new gc)!=rg||oc&&Ji(new oc)!=og)&&(Ji=function(i){var t=ur(i),e=t==mT?i.constructor:void 0,r=e?Co(e):"";if(r)switch(r){case yT:return ig;case gT:return eg;case xT:return tg;case bT:return rg;case vT:return og}return t});var Io=Ji;var ST=Object.prototype,wT=ST.hasOwnProperty;function PT(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&wT.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ng=PT;var OT=pt.Uint8Array,Zn=OT;function TT(i){var t=new i.constructor(i.byteLength);return new Zn(t).set(new Zn(i)),t}var Jn=TT;function CT(i,t){var e=t?Jn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var ag=CT;var AT=/\w*$/;function MT(i){var t=new i.constructor(i.source,AT.exec(i));return t.lastIndex=i.lastIndex,t}var sg=MT;var lg=Et?Et.prototype:void 0,cg=lg?lg.valueOf:void 0;function IT(i){return cg?Object(cg.call(i)):{}}var ug=IT;function NT(i,t){var e=t?Jn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var dg=NT;var ET="[object Boolean]",DT="[object Date]",_T="[object Map]",LT="[object Number]",RT="[object RegExp]",BT="[object Set]",VT="[object String]",zT="[object Symbol]",GT="[object ArrayBuffer]",FT="[object DataView]",jT="[object Float32Array]",UT="[object Float64Array]",kT="[object Int8Array]",HT="[object Int16Array]",WT="[object Int32Array]",qT="[object Uint8Array]",$T="[object Uint8ClampedArray]",XT="[object Uint16Array]",YT="[object Uint32Array]";function KT(i,t,e){var r=i.constructor;switch(t){case GT:return Jn(i);case ET:case DT:return new r(+i);case FT:return ag(i,e);case jT:case UT:case kT:case HT:case WT:case qT:case $T:case XT:case YT:return dg(i,e);case _T:return new r;case LT:case VT:return new r(i);case RT:return sg(i);case BT:return new r;case zT:return ug(i)}}var pg=KT;function QT(i){return typeof i.constructor=="function"&&!Gn(i)?Fm(Xn(i)):{}}var fg=QT;var ZT="[object Map]";function JT(i){return zt(i)&&Io(i)==ZT}var hg=JT;var mg=Ao&&Ao.isMap,eC=mg?jn(mg):hg,yg=eC;var tC="[object Set]";function rC(i){return zt(i)&&Io(i)==tC}var gg=rC;var xg=Ao&&Ao.isSet,oC=xg?jn(xg):gg,bg=oC;var iC=1,nC=2,aC=4,vg="[object Arguments]",sC="[object Array]",lC="[object Boolean]",cC="[object Date]",uC="[object Error]",Sg="[object Function]",dC="[object GeneratorFunction]",pC="[object Map]",fC="[object Number]",wg="[object Object]",hC="[object RegExp]",mC="[object Set]",yC="[object String]",gC="[object Symbol]",xC="[object WeakMap]",bC="[object ArrayBuffer]",vC="[object DataView]",SC="[object Float32Array]",wC="[object Float64Array]",PC="[object Int8Array]",OC="[object Int16Array]",TC="[object Int32Array]",CC="[object Uint8Array]",AC="[object Uint8ClampedArray]",MC="[object Uint16Array]",IC="[object Uint32Array]",et={};et[vg]=et[sC]=et[bC]=et[vC]=et[lC]=et[cC]=et[SC]=et[wC]=et[PC]=et[OC]=et[TC]=et[pC]=et[fC]=et[wg]=et[hC]=et[mC]=et[yC]=et[gC]=et[CC]=et[AC]=et[MC]=et[IC]=!0;et[uC]=et[Sg]=et[xC]=!1;function xc(i,t,e,r,o,n){var a,s=t&iC,l=t&nC,c=t&aC;if(e&&(a=o?e(i,r,o,n):e(i)),a!==void 0)return a;if(!ht(i))return i;var u=ft(i);if(u){if(a=ng(i),!s)return Um(i,a)}else{var p=Io(i),d=p==Sg||p==dC;if(Qi(i))return Yy(i,s);if(p==wg||p==vg||d&&!o){if(a=l||d?{}:fg(i),!s)return l?Jy(i,Hy(a,i)):Zy(i,ky(a,i))}else{if(!et[p])return o?i:{};a=pg(i,p,s)}}n||(n=new Kn);var f=n.get(i);if(f)return f;n.set(i,a),bg(i)?i.forEach(function(y){a.add(xc(y,t,e,y,i,n))}):yg(i)&&i.forEach(function(y,b){a.set(b,xc(y,t,e,b,i,n))});var h=c?l?hc:Bs:l?kn:Un,m=u?void 0:h(i);return $m(m||i,function(y,b){m&&(b=y,y=i[b]),Vn(a,b,xc(y,t,e,b,i,n))}),a}var bc=xc;var NC=1,EC=4;function DC(i){return bc(i,NC|EC)}var No=DC;var _C="__lodash_hash_undefined__";function LC(i){return this.__data__.set(i,_C),this}var Pg=LC;function RC(i){return this.__data__.has(i)}var Og=RC;function vc(i){var t=-1,e=i==null?0:i.length;for(this.__data__=new Zi;++t<e;)this.add(i[t])}vc.prototype.add=vc.prototype.push=Pg;vc.prototype.has=Og;var Tg=vc;function BC(i,t){for(var e=-1,r=i==null?0:i.length;++e<r;)if(t(i[e],e,i))return!0;return!1}var Cg=BC;function VC(i,t){return i.has(t)}var Ag=VC;var zC=1,GC=2;function FC(i,t,e,r,o,n){var a=e&zC,s=i.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var c=n.get(i),u=n.get(t);if(c&&u)return c==t&&u==i;var p=-1,d=!0,f=e&GC?new Tg:void 0;for(n.set(i,t),n.set(t,i);++p<s;){var h=i[p],m=t[p];if(r)var y=a?r(m,h,p,t,i,n):r(h,m,p,i,t,n);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!Cg(t,function(b,v){if(!Ag(f,v)&&(h===b||o(h,b,e,r,n)))return f.push(v)})){d=!1;break}}else if(!(h===m||o(h,m,e,r,n))){d=!1;break}}return n.delete(i),n.delete(t),d}var Sc=FC;function jC(i){var t=-1,e=Array(i.size);return i.forEach(function(r,o){e[++t]=[o,r]}),e}var Mg=jC;function UC(i){var t=-1,e=Array(i.size);return i.forEach(function(r){e[++t]=r}),e}var Ig=UC;var kC=1,HC=2,WC="[object Boolean]",qC="[object Date]",$C="[object Error]",XC="[object Map]",YC="[object Number]",KC="[object RegExp]",QC="[object Set]",ZC="[object String]",JC="[object Symbol]",eA="[object ArrayBuffer]",tA="[object DataView]",Ng=Et?Et.prototype:void 0,lp=Ng?Ng.valueOf:void 0;function rA(i,t,e,r,o,n,a){switch(e){case tA:if(i.byteLength!=t.byteLength||i.byteOffset!=t.byteOffset)return!1;i=i.buffer,t=t.buffer;case eA:return!(i.byteLength!=t.byteLength||!n(new Zn(i),new Zn(t)));case WC:case qC:case YC:return Bn(+i,+t);case $C:return i.name==t.name&&i.message==t.message;case KC:case ZC:return i==t+"";case XC:var s=Mg;case QC:var l=r&kC;if(s||(s=Ig),i.size!=t.size&&!l)return!1;var c=a.get(i);if(c)return c==t;r|=HC,a.set(i,t);var u=Sc(s(i),s(t),r,o,n,a);return a.delete(i),u;case JC:if(lp)return lp.call(i)==lp.call(t)}return!1}var Eg=rA;var oA=1,iA=Object.prototype,nA=iA.hasOwnProperty;function aA(i,t,e,r,o,n){var a=e&oA,s=Bs(i),l=s.length,c=Bs(t),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in t:nA.call(t,d)))return!1}var f=n.get(i),h=n.get(t);if(f&&h)return f==t&&h==i;var m=!0;n.set(i,t),n.set(t,i);for(var y=a;++p<l;){d=s[p];var b=i[d],v=t[d];if(r)var w=a?r(v,b,d,t,i,n):r(b,v,d,i,t,n);if(!(w===void 0?b===v||o(b,v,e,r,n):w)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=i.constructor,S=t.constructor;O!=S&&"constructor"in i&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return n.delete(i),n.delete(t),m}var Dg=aA;var sA=1,_g="[object Arguments]",Lg="[object Array]",wc="[object Object]",lA=Object.prototype,Rg=lA.hasOwnProperty;function cA(i,t,e,r,o,n){var a=ft(i),s=ft(t),l=a?Lg:Io(i),c=s?Lg:Io(t);l=l==_g?wc:l,c=c==_g?wc:c;var u=l==wc,p=c==wc,d=l==c;if(d&&Qi(i)){if(!Qi(t))return!1;a=!0,u=!1}if(d&&!u)return n||(n=new Kn),a||ac(i)?Sc(i,t,e,r,o,n):Eg(i,t,l,e,r,o,n);if(!(e&sA)){var f=u&&Rg.call(i,"__wrapped__"),h=p&&Rg.call(t,"__wrapped__");if(f||h){var m=f?i.value():i,y=h?t.value():t;return n||(n=new Kn),o(m,y,e,r,n)}}return d?(n||(n=new Kn),Dg(i,t,e,r,o,n)):!1}var Bg=cA;function Vg(i,t,e,r,o){return i===t?!0:i==null||t==null||!zt(i)&&!zt(t)?i!==i&&t!==t:Bg(i,t,e,r,Vg,o)}var zg=Vg;function uA(i,t){return i!=null&&t in Object(i)}var Gg=uA;function dA(i,t,e){t=xr(t,i);for(var r=-1,o=t.length,n=!1;++r<o;){var a=li(t[r]);if(!(n=i!=null&&e(i,a)))break;i=i[a]}return n||++r!=o?n:(o=i==null?0:i.length,!!o&&zn(o)&&Rn(a,o)&&(ft(i)||Fn(i)))}var Fg=dA;function pA(i,t){return i!=null&&Fg(i,t,Gg)}var jg=pA;var fA=function(){return pt.Date.now()},Pc=fA;var hA="Expected a function",mA=Math.max,yA=Math.min;function gA(i,t,e){var r,o,n,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof i!="function")throw new TypeError(hA);t=op(t)||0,ht(e)&&(u=!!e.leading,p="maxWait"in e,n=p?mA(op(e.maxWait)||0,t):n,d="trailing"in e?!!e.trailing:d);function f(T){var M=r,g=o;return r=o=void 0,c=T,a=i.apply(g,M),a}function h(T){return c=T,s=setTimeout(b,t),u?f(T):a}function m(T){var M=T-l,g=T-c,D=t-M;return p?yA(D,n-g):D}function y(T){var M=T-l,g=T-c;return l===void 0||M>=t||M<0||p&&g>=n}function b(){var T=Pc();if(y(T))return v(T);s=setTimeout(b,m(T))}function v(T){return s=void 0,d&&r?f(T):(r=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,r=l=o=s=void 0}function O(){return s===void 0?a:v(Pc())}function S(){var T=Pc(),M=y(T);if(r=arguments,o=this,l=T,M){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,t),f(l)}return s===void 0&&(s=setTimeout(b,t)),a}return S.cancel=w,S.flush=O,S}var Oc=gA;function xA(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Ug=xA;function bA(i,t){return t.length<2?i:cc(i,Vy(t,0,-1))}var kg=bA;function vA(i,t){return zg(i,t)}var cp=vA;function SA(i,t){return t=xr(t,i),i=kg(i,t),i==null||delete i[li(Ug(t))]}var Hg=SA;function wA(i){return By(i)?void 0:i}var Wg=wA;var PA=1,OA=2,TA=4,CA=uc(function(i,t){var e={};if(i==null)return e;var r=!1;t=ec(t,function(n){return n=xr(n,i),r||(r=n.length>1),n}),Qr(i,hc(i),e),r&&(e=bc(e,PA|OA|TA,Wg));for(var o=t.length;o--;)Hg(e,t[o]);return e}),ea=CA;function AA(i,t,e,r){if(!ht(i))return i;t=xr(t,i);for(var o=-1,n=t.length,a=n-1,s=i;s!=null&&++o<n;){var l=li(t[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return i;if(o!=a){var u=s[l];c=r?r(u,l,s):void 0,c===void 0&&(c=ht(u)?u:Rn(t[o+1])?[]:{})}Vn(s,l,c),s=s[l]}return i}var qg=AA;function MA(i,t,e){for(var r=-1,o=t.length,n={};++r<o;){var a=t[r],s=cc(i,a);e(s,a)&&qg(n,xr(a,i),s)}return n}var $g=MA;function IA(i,t){return $g(i,t,function(e,r){return jg(i,r)})}var Xg=IA;var NA=uc(function(i,t){return i==null?{}:Xg(i,t)}),_r=NA;var ue=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ue.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:a}=t,s={...e,[n]:a};return Object.setPrototypeOf(s,ue.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ue.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Vs(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&Vs(r)}return Object.freeze(i)}function Yg(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var ta=class extends Error{};function Tc(i){let t={...i};return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}function Zr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let a=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(a)}return r}function ra(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Kg(){return typeof process<"u"}function Qg(i,t){for(let e of i)t(e.id,e.data)!==!0&&Qg(e.children,t)}function Zg(i,t){if(t(i.id,i.data)!==!0)for(let e of i.children)Zg(e,t)}var Ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Zg(o,r)}}traverse(e){Qg(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),a=this.childrenArray(n),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(n,a)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let s=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:s}}Object.setPrototypeOf(n,Ze.prototype);let a=n;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),u={fi:o,id:n,data:a,children:s};return c=[...c,u],c.sort((d,f)=>d.fi-f.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),a=n.findIndex(c=>c.id===r);e.localIndex=a,n=[...n];let s=n.splice(a,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===n)throw new ta("cyclic tree");f=this.parent(f)}}let a=this.parent(n);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===n);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=r,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Yg(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),a=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return Zr(0,o,o);{let a=n[0].fi;return Zr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=n.find(l=>l.fi>a.fi);if(s===void 0){let l=n[n.length-1].fi;return Zr(l,l+o,o)}else return Zr(a.fi,s.fi,o)}}};var oa;(t=>{function i(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,n={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){n[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(oa||(oa={}));var xe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,xe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,a=n.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=n[a];return n=[...n],n[a]={...s,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,xe.prototype);let r=e;return Kg()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:n}=e,a=this,s={fi:r,id:o,data:n};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let a=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let a=n.findIndex(u=>u.id===o);if(a===-1)return null;let s=n[a].fi,l={...n[a],fi:r};return n[a]=l,n.sort((u,p)=>u.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Zr(0,r,r);{let n=o[0].fi;return Zr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>n.fi);if(a===void 0){let s=o[o.length-1].fi;return Zr(s,s+r,r)}else return Zr(n.fi,a.fi,r)}}};function ia(i){return i&&typeof i=="object"&&i instanceof We}var We=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,n={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ia(r))return null;o+=1}r=r?Tc(r):new We;for(let[l,c]of Object.entries(t.props)){let u=r[l];n[l]=u,c===void 0?delete r[l]:r[l]=c}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Tc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let c=Tc(l);c[t.path[o-1]]=r,r=c}else{let c=new We;c[t.path[o-1]]=r,r=c}}o-=1}let a=Object.setPrototypeOf(r,We.prototype),s={...t,props:n};return{data:a,actual:t,reverse:s}}},Jr;(r=>{function i(o,n){return zs(o,n)??o}r.apply=i;function t(o,n){return dp(o,n)}r.merge=t;function e(o,n){let a=0,s=n.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Je.zoomOnce(l,s[a]),l===void 0)return n;if(!ia(l))return;a+=1}if(l===void 0)return n;if(!!ia(l))if(n.type===0){let c={...n.props};for(let u of Object.keys(l))delete c[u];return{...n,props:c}}else if(n.type===1||n.type===4||n.type===7){let c=up([n],l);return c?c[0]:n}else return n}r.filterOp=e})(Jr||(Jr={}));function up(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=zs(o.data,t[n]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=up(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:n,data:a,children:s}}else return{...o,id:n,data:a}});if(e)return r}function EA(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=zs(o.data,t[n]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:n,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}function zs(i,t){if(!ia(t))return t;if(i instanceof Ze){let e=up(i,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e}else{if(i instanceof xe)return EA(i,t);if(Array.isArray(i)){let e=!1,r=i.map((o,n)=>{let a=zs(o,t[n]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else{if(i instanceof We)return dp(i,t);if(i&&typeof i=="object"){let e={},r=!1;for(let[o,n]of Object.entries(i)){let a=zs(n,t[o]);r=r||a!==void 0,a===void 0&&(a=n),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e):void 0}}}}function dp(i,t){if(i===void 0)return t;if(t===void 0)return i;if(!ia(t))return t;if(!ia(i))return Jr.apply(i,t);let e=new Set;for(let o of Object.keys(i))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new We;for(let o of e){let n=dp(i===void 0?void 0:i[o],t===void 0?void 0:t[o]);r[o]=n}return r}function Jg(i,t){let e={cur:[],result:[],len:0};return i=Gs(i,t,e)??i,[i,e.result]}function Cc(i,t){return i===null?null:(i.cur[i.len]=t,i.len+=1,i)}function Ac(i){i&&(i.len-=1)}function DA(i){if(i===null)return null;i.result.push(i.cur.slice(0,i.len))}function ex(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Gs(n.data,t,Cc(e,a));Ac(e),r=r||l!==void 0,l===void 0&&(l=n.data);let c=ex(n.children,t,e);return c!==void 0?r=!0:c=n.children,{...n,id:a,data:l,children:c}});if(r)return o}function _A(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Gs(n.data,t,Cc(e,a));return Ac(e),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o}function Gs(i,t,e){if(i instanceof Ze){let r=ex(i,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else{if(i instanceof xe)return _A(i,t,e);if(Array.isArray(i)){let r=!1,o=i.map((n,a)=>{let s=Gs(n,t,Cc(e,a));return Ac(e),r=r||s!==void 0,s===void 0&&(s=n),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o):void 0}else if(i&&typeof i=="object"&&!ra(i)){let r={},o=!1;for(let[n,a]of Object.entries(i))if(n!=="name"&&n!=="variableId"){let s=t[n];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,n=s}let l=Gs(a,t,Cc(e,n));Ac(e),o=o||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else if(typeof i=="string"){let r=t[i];return r!==void 0&&DA(e),r}else return}}var na;(t=>{function i(e,r){let o=Je.zoom(r,e.path);if(typeof o=="object"){let n={};for(let a of Object.keys(e.props))n[a]=o[a];return{...e,props:n}}else return{...e,props:{}}}t.replaceProps=i})(na||(na={}));var at;(s=>{function i(l,c){return{...l,path:l.path.slice(c)}}s.drop=i;function t(l,c){return e(l,c)?.data??l}s.applySimple=t;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof We&&c.type===0&&(d=l.runOp({...c,path:u.slice(p.length)}),d===null&&(d=void 0)),d===void 0&&p.length===u.length&&(l instanceof Ze||l instanceof xe||l instanceof ue?d=l.runOp(c):d=oa.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let b=u[y],v=p[y];if(v instanceof Ze){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof xe){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof ue){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof We){let w={...v,[b]:m};m=Object.setPrototypeOf(w,We.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let w=m;m=[...v],m[b]=w}else m={...v,[b]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let f=u[p.length],h;if(l instanceof Ze){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof xe){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)p.push(l),l=h;else return null}}s.apply=e;function r(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=r;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function n(l,c){return r(l.path,c.path)}s.commutative=n;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(at||(at={}));var Fs;(l=>{function i(){return[]}l.empty=i;function t(c,u){let p=[];for(let d of c){let[f,...h]=d.path;f===u&&p.push({...d,path:h})}return p}l.removePrefix=t;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function r(c,u){return[...c,...u]}l.concat=r;function o(c,u){return[...c.filter(d=>!u.some(f=>at.subsumed(d,f))),...u]}l.compress=o;function n(c,u){return c.every(p=>u.every(d=>at.commutative(p,d)))}l.commutative=n;function a(c,u){for(let p of u){let d=s(c,p);d!==null&&(c=d.data)}return c}l.applyAll=a;function s(c,u){var p=c;let d=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,b;if(h.type===3?(m=Je.zoom(p,[...h.path,h.id]),b=at.apply(p,{...h,type:2})):(m=Je.zoom(p,[...h.path,h.id,"value"]),b=at.apply(p,h)),b!==null){p=b.data;let[v,w]=Jg(p,{[h.id]:m});p=v;for(let O=0;O<w.length;O++){let S=w[O],T=S.pop();if(typeof T=="number"){let M=[T];for(let D=O+1;D<w.length;D++){let N=w[D],I=N[N.length-1];if(typeof I=="number"&&Je.equal(S,N.slice(0,N.length-1)))M.push(I),w.splice(D,1);else break}let g=Je.zoom(p,S);y=g.map((D,N)=>M.includes(N)?h.id:D),m=g,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let M=m,g=Je.zoom(p,S.slice(0,S.length-2)),D=g.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:M}}:N);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:S,props:{[T]:m}}),f.push({type:0,path:S,props:{[T]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=at.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof ta)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Fs||(Fs={}));var tx=Symbol(),LA=Symbol(),Ic=Symbol(),en=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let n=r;for(;!(o instanceof Mc);){let a=o._path,s=o._current;if(a!==""&&n.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(n,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ic];r&&r(),delete this._children[t]}}}},fp=class extends en{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else if(this._current instanceof We){let r={...this._current,[t]:e};this._current=Object.setPrototypeOf(r,We.prototype)}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,oa.runOp(this._current,t),t.path)}},hp=class extends en{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ue.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},rx={get(i,t){if(t===Ic)return()=>{i._parent=null};if(t===tx)return i._current;if(t===LA)return i;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],a=Nc(i,t,n);return a!==n?(r===void 0&&(r={},i._children=r),r[t]=a,a):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},RA={...rx,set(i,t,e){let r={type:0,props:{[t]:st(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},BA={...rx,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},aa=class extends en{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ic]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Nc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},sa=class extends en{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ic]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,n=this._current[r].fi;t(this.data(this._current[r].id),o,n)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Nc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function pp(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Je.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Mc=class extends en{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){pp(this.ts,e,t),pp(this.actual,r,t),pp(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Nc(i,t,e){return e instanceof Ze?new aa(i,t,e):e instanceof xe?new sa(i,t,e):e instanceof ue?new Proxy(new hp(i,t,e),BA):e!==null&&typeof e=="object"?ra(e)?e:new Proxy(new fp(i,t,e),RA):e}function mp(i){let t=new Mc(i);return[Nc(t,"",i),t]}function ci(i,t){let[e,r]=mp(i);return t(e),r.result()}function st(i){return i instanceof aa||i instanceof sa?i._current:i!==null&&typeof i=="object"?i[tx]:i}var Je;(o=>{function i(n,a){if(a.length===n.length)for(var s=0;s<n.length;){if(n[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=i;function t(n,a,s){let l=r(s,n);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=t;function e(n,a){if((n instanceof Ze||n instanceof aa)&&typeof a=="string")return n.data(a);if((n instanceof xe||n instanceof sa)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n))return n[a];if(typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}o.zoomOnce=e;function r(n,a,s=0){for(;s<a.length&&n!==void 0;)n=e(n,a[s]),s+=1;return n}o.zoom=r})(Je||(Je={}));function ox(i,t){let e=[];if(t.length===i.length)for(var r=0;r<i.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}function Be(i,t){let e=[];if(t.length<=i.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}var Ec=class{},js=class extends Ec{constructor(e){super();this.id=e}},Us=class extends Ec{constructor(e){super();this.data=e}};var gp;try{gp=new TextDecoder}catch{}var pe,di,G=0;var dx=[],xp=dx,bp=0,er={},He,ui,br=0,eo=0,dr,Eo,Xt=[],$e,ix={useRecords:!1,mapsAsObjects:!0},ks=class{},Sp=new ks;Sp.name="MessagePack 0xC1";var la=!1,to=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(pe)return yx(()=>(_c(),this?this.unpack(t,e):to.prototype.unpack.call(ix,t,e)));di=e>-1?e:t.length,G=0,bp=0,eo=0,ui=null,xp=dx,dr=null,pe=t;try{$e=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw pe=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof to){if(er=this,this.structures)return He=this.structures,Dc();(!He||He.length>0)&&(He=[])}else er=ix,(!He||He.length>0)&&(He=[]);return Dc()}unpackMultiple(t,e){let r,o=0;try{la=!0;let n=t.length,a=this?this.unpack(t,n):Bc.unpack(t,n);if(e){for(e(a);G<n;)if(o=G,e(Dc())===!1)return}else{for(r=[a];G<n;)o=G,r.push(Dc());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{la=!1,_c()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Dc(){try{if(!er.trusted&&!la){let t=He.sharedLength||0;t<He.length&&(He.length=t)}let i=mt();if(G==di)He.restoreStructures&&nx(),He=null,pe=null,Eo&&(Eo=null);else if(G>di){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!la)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw He.restoreStructures&&nx(),_c(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function nx(){for(let i in He.restoreStructures)He[i]=He.restoreStructures[i];He.restoreStructures=null}function mt(){let i=pe[G++];if(i<160)if(i<128){if(i<64)return i;{let t=He[i&63]||er.getStructures&&px()[i&63];return t?(t.read||(t.read=wp(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[hx()]=mt();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(mt(),mt());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=mt();return t}else if(i<192){let t=i-160;if(eo>=G)return ui.slice(G-br,(G+=t)-br);if(eo==0&&di<140){let e=t<16?Pp(t):fx(t);if(e!=null)return e}return vp(t)}else{let t;switch(i){case 192:return null;case 193:return dr?(t=mt(),t>0?dr[1].slice(dr.position1,dr.position1+=t):dr[0].slice(dr.position0,dr.position0-=t)):Sp;case 194:return!1;case 195:return!0;case 196:return yp(pe[G++]);case 197:return t=$e.getUint16(G),G+=2,yp(t);case 198:return t=$e.getUint32(G),G+=4,yp(t);case 199:return tn(pe[G++]);case 200:return t=$e.getUint16(G),G+=2,tn(t);case 201:return t=$e.getUint32(G),G+=4,tn(t);case 202:if(t=$e.getFloat32(G),er.useFloat32>2){let e=Rc[(pe[G]&127)<<1|pe[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=$e.getFloat64(G),G+=8,t;case 204:return pe[G++];case 205:return t=$e.getUint16(G),G+=2,t;case 206:return t=$e.getUint32(G),G+=4,t;case 207:return er.int64AsNumber?(t=$e.getUint32(G)*4294967296,t+=$e.getUint32(G+4)):t=$e.getBigUint64(G),G+=8,t;case 208:return $e.getInt8(G++);case 209:return t=$e.getInt16(G),G+=2,t;case 210:return t=$e.getInt32(G),G+=4,t;case 211:return er.int64AsNumber?(t=$e.getInt32(G)*4294967296,t+=$e.getUint32(G+4)):t=$e.getBigInt64(G),G+=8,t;case 212:if(t=pe[G++],t==114)return ux(pe[G++]&63);{let e=Xt[t];if(e)return e.read?(G++,e.read(mt())):e.noBuffer?(G++,e()):e(pe.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=pe[G],t==114?(G++,ux(pe[G++]&63,pe[G++])):tn(2);case 214:return tn(4);case 215:return tn(8);case 216:return tn(16);case 217:return t=pe[G++],eo>=G?ui.slice(G-br,(G+=t)-br):zA(t);case 218:return t=$e.getUint16(G),G+=2,eo>=G?ui.slice(G-br,(G+=t)-br):GA(t);case 219:return t=$e.getUint32(G),G+=4,eo>=G?ui.slice(G-br,(G+=t)-br):FA(t);case 220:return t=$e.getUint16(G),G+=2,sx(t);case 221:return t=$e.getUint32(G),G+=4,sx(t);case 222:return t=$e.getUint16(G),G+=2,lx(t);case 223:return t=$e.getUint32(G),G+=4,lx(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var VA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wp(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>VA.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(mt);return i.highByte===0&&(i.read=ax(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let a=i[o];r[a]=mt()}return r}return e.count=0,i.highByte===0?ax(t,e):e}var ax=(i,t)=>function(){let e=pe[G++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=He[r]||px()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=wp(o,i)),o.read()};function px(){let i=yx(()=>(pe=null,er.getStructures()));return He=er._mergeStructures(i,He)}var vp=Lc,zA=Lc,GA=Lc,FA=Lc;function Lc(i){let t;if(i<16&&(t=Pp(i)))return t;if(i>64&&gp)return gp.decode(pe.subarray(G,G+=i));let e=G+i,r=[];for(t="";G<e;){let o=pe[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=pe[G++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=pe[G++]&63,a=pe[G++]&63;r.push((o&31)<<12|n<<6|a)}else if((o&248)===240){let n=pe[G++]&63,a=pe[G++]&63,s=pe[G++]&63,l=(o&7)<<18|n<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Dt.apply(String,r),r.length=0)}return r.length>0&&(t+=Dt.apply(String,r)),t}function sx(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=mt();return t}function lx(i){if(er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[hx()]=mt();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(mt(),mt());return t}}var Dt=String.fromCharCode;function fx(i){let t=G,e=new Array(i);for(let r=0;r<i;r++){let o=pe[G++];if((o&128)>0){G=t;return}e[r]=o}return Dt.apply(String,e)}function Pp(i){if(i<4)if(i<2){if(i===0)return"";{let t=pe[G++];if((t&128)>1){G-=1;return}return Dt(t)}}else{let t=pe[G++],e=pe[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(i<3)return Dt(t,e);let r=pe[G++];if((r&128)>0){G-=3;return}return Dt(t,e,r)}else{let t=pe[G++],e=pe[G++],r=pe[G++],o=pe[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(i<6){if(i===4)return Dt(t,e,r,o);{let n=pe[G++];if((n&128)>0){G-=5;return}return Dt(t,e,r,o,n)}}else if(i<8){let n=pe[G++],a=pe[G++];if((n&128)>0||(a&128)>0){G-=6;return}if(i<7)return Dt(t,e,r,o,n,a);let s=pe[G++];if((s&128)>0){G-=7;return}return Dt(t,e,r,o,n,a,s)}else{let n=pe[G++],a=pe[G++],s=pe[G++],l=pe[G++];if((n&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(i<10){if(i===8)return Dt(t,e,r,o,n,a,s,l);{let c=pe[G++];if((c&128)>0){G-=9;return}return Dt(t,e,r,o,n,a,s,l,c)}}else if(i<12){let c=pe[G++],u=pe[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(i<11)return Dt(t,e,r,o,n,a,s,l,c,u);let p=pe[G++];if((p&128)>0){G-=11;return}return Dt(t,e,r,o,n,a,s,l,c,u,p)}else{let c=pe[G++],u=pe[G++],p=pe[G++],d=pe[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(i<14){if(i===12)return Dt(t,e,r,o,n,a,s,l,c,u,p,d);{let f=pe[G++];if((f&128)>0){G-=13;return}return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f)}}else{let f=pe[G++],h=pe[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(i<15)return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f,h);let m=pe[G++];if((m&128)>0){G-=15;return}return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f,h,m)}}}}}function yp(i){return er.copyBuffers?Uint8Array.prototype.slice.call(pe,G,G+=i):pe.subarray(G,G+=i)}function tn(i){let t=pe[G++];if(Xt[t])return Xt[t](pe.subarray(G,G+=i));throw new Error("Unknown extension type "+t)}var cx=new Array(4096);function hx(){let i=pe[G++];if(i>=160&&i<192){if(i=i-160,eo>=G)return ui.slice(G-br,(G+=i)-br);if(!(eo==0&&di<180))return vp(i)}else return G--,mt();let t=(i<<5^(i>1?$e.getUint16(G):i>0?pe[G]:0))&4095,e=cx[t],r=G,o=G+i-3,n,a=0;if(e&&e.bytes==i){for(;r<o;){if(n=$e.getUint32(r),n!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=pe[r++],n!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],cx[t]=e,e.bytes=i;r<o;)n=$e.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=pe[r++],e.push(n);let s=i<16?Pp(i):fx(i);return s!=null?e.string=s:e.string=vp(i)}var ux=(i,t)=>{var e=mt();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=He[i];return o&&o.isShared&&((He.restoreStructures||(He.restoreStructures=[]))[i]=o),He[i]=e,e.read=wp(e,r),e.read()},mx=typeof self=="object"?self:global;Xt[0]=()=>{};Xt[0].noBuffer=!0;Xt[101]=()=>{let i=mt();return(mx[i[0]]||Error)(i[1])};Xt[105]=i=>{let t=$e.getUint32(G-4);Eo||(Eo=new Map);let e=pe[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Eo.set(t,o);let n=mt();return o.used?Object.assign(r,n):(o.target=n,n)};Xt[112]=i=>{let t=$e.getUint32(G-4),e=Eo.get(t);return e.used=!0,e.target};Xt[115]=()=>new Set(mt());var Op=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Xt[116]=i=>{let t=i[0],e=Op[t];if(!e)throw new Error("Could not find typed array for code "+t);return new mx[e](Uint8Array.prototype.slice.call(i,1).buffer)};Xt[120]=()=>{let i=mt();return new RegExp(i[0],i[1])};Xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=G;G+=t-4,dr=[mt(),mt()],dr.position0=0,dr.position1=0;let r=G;G=e;try{return mt()}finally{G=r}};Xt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function yx(i){let t=di,e=G,r=bp,o=br,n=eo,a=ui,s=xp,l=Eo,c=dr,u=new Uint8Array(pe.slice(0,di)),p=He,d=He.slice(0,He.length),f=er,h=la,m=i();return di=t,G=e,bp=r,br=o,eo=n,ui=a,xp=s,Eo=l,dr=c,pe=u,la=h,He=p,He.splice(0,He.length,...d),er=f,$e=new DataView(pe.buffer,pe.byteOffset,pe.byteLength),m}function _c(){pe=null,Eo=null,He=null}function gx(i){i.unpack?Xt[i.type]=i.unpack:Xt[i.type]=i}var Rc=new Array(147);for(let i=0;i<256;i++)Rc[i]=+("1e"+Math.floor(45.15-i*.30103));var Bc=new to({useRecords:!1}),jA=Bc.unpack,UA=Bc.unpackMultiple,kA=Bc.unpack,Vc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},HA=new Float32Array(1),J4=new Uint8Array(HA.buffer,0,4);var zc;try{zc=new TextEncoder}catch{}var Gc,Cp,Fc=typeof Buffer<"u",Tp=Fc?Buffer.allocUnsafeSlow:Uint8Array,Sx=Fc?Buffer:Uint8Array,xx=Fc?4294967296:2144337920,X,gt,k=0,ro,oo=null,WA=/[\u0080-\uFFFF]/,Hs=Symbol("record-id"),rn=class extends to{constructor(t){super(t),this.offset=0;let e,r,o,n,a,s,l=0,c=Sx.prototype.utf8Write?function(g,D,N){return X.utf8Write(g,D,N)}:zc&&zc.encodeInto?function(g,D){return zc.encodeInto(g,X.subarray(D)).written}:!1,u=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,b=f+h+64;if(b>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,O=0;this.pack=this.encode=function(g,D){if(X||(X=new Tp(8192),gt=new DataView(X.buffer,0,8192),k=0),ro=X.length-10,ro-k<2048?(X=new Tp(X.length),gt=new DataView(X.buffer,0,X.length),ro=X.length-10,k=0):k=k+7&2147483640,r=k,s=u.structuredClone?new Map:null,u.bundleStrings?(oo=["",""],X[k++]=214,X[k++]=98,oo.position=k-r,k+=4):oo=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<N;I++){let E=o[I];if(!E)continue;let _,L=o.transitions;for(let V=0,U=E.length;V<U;V++){let B=E[V];_=L[B],_||(_=L[B]=Object.create(null)),L=_}L[Hs]=I+64}l=N}p||(o.nextId=N+64)}n&&(n=!1),a=o||[];try{if(S(g),oo){gt.setUint32(oo.position+r,k-oo.position-r);let N=oo;oo=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>ro&&M(k),u.offset=k;let N=$A(X.subarray(r,k),s.idsToInsert);return s=null,N}return D&Px?(X.start=r,X.end=k,X):X.subarray(r,k)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Hs]=0;v=[]}if(n&&u.saveStructures){let N=o.sharedLength||f;o.length>N&&(o=o.slice(0,N));let I=X.subarray(r,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=N,I)}}D&eM&&(k=r)}};let S=g=>{k>ro&&(X=M(k));var D=typeof g,N;if(D==="string"){let I=g.length;if(oo&&I>=8&&I<4096){let L=WA.test(g);oo[L?0:1]+=g,X[k++]=193,S(L?-I:I);return}let E;I<32?E=1:I<256?E=2:I<65536?E=3:E=5;let _=I*3;if(k+_>ro&&(X=M(k+_)),I<64||!c){let L,V,U,B=k+E;for(L=0;L<I;L++)V=g.charCodeAt(L),V<128?X[B++]=V:V<2048?(X[B++]=V>>6|192,X[B++]=V&63|128):(V&64512)===55296&&((U=g.charCodeAt(L+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),L++,X[B++]=V>>18|240,X[B++]=V>>12&63|128,X[B++]=V>>6&63|128,X[B++]=V&63|128):(X[B++]=V>>12|224,X[B++]=V>>6&63|128,X[B++]=V&63|128);N=B-k-E}else N=c(g,k+E,_);N<32?X[k++]=160|N:N<256?(E<2&&X.copyWithin(k+2,k+1,k+1+N),X[k++]=217,X[k++]=N):N<65536?(E<3&&X.copyWithin(k+3,k+2,k+2+N),X[k++]=218,X[k++]=N>>8,X[k++]=N&255):(E<5&&X.copyWithin(k+5,k+3,k+3+N),X[k++]=219,gt.setUint32(k,N),k+=4),k+=N}else if(D==="number")if(g>>>0===g)g<64?X[k++]=g:g<256?(X[k++]=204,X[k++]=g):g<65536?(X[k++]=205,X[k++]=g>>8,X[k++]=g&255):(X[k++]=206,gt.setUint32(k,g),k+=4);else if(g>>0===g)g>=-32?X[k++]=256+g:g>=-128?(X[k++]=208,X[k++]=g+256):g>=-32768?(X[k++]=209,gt.setInt16(k,g),k+=2):(X[k++]=210,gt.setInt32(k,g),k+=4);else{let I;if((I=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){X[k++]=202,gt.setFloat32(k,g);let E;if(I<4||(E=g*Rc[(X[k]&127)<<1|X[k+1]>>7])>>0===E){k+=4;return}else k--}X[k++]=203,gt.setFloat64(k,g),k+=8}else if(D==="object")if(!g)X[k++]=192;else{if(s){let E=s.get(g);if(E){if(!E.id){let _=s.idsToInsert||(s.idsToInsert=[]);E.id=_.push(E)}X[k++]=214,X[k++]=112,gt.setUint32(k,E.id),k+=4;return}else s.set(g,{offset:k-r})}let I=g.constructor;if(I===Object)T(g,!0);else if(I===Array){N=g.length,N<16?X[k++]=144|N:N<65536?(X[k++]=220,X[k++]=N>>8,X[k++]=N&255):(X[k++]=221,gt.setUint32(k,N),k+=4);for(let E=0;E<N;E++)S(g[E])}else if(I===Map){N=g.size,N<16?X[k++]=128|N:N<65536?(X[k++]=222,X[k++]=N>>8,X[k++]=N&255):(X[k++]=223,gt.setUint32(k,N),k+=4);for(let[E,_]of g)S(E),S(_)}else{for(let E=0,_=Gc.length;E<_;E++){let L=Cp[E];if(g instanceof L){let V=Gc[E];if(V.write){V.type&&(X[k++]=212,X[k++]=V.type,X[k++]=0),S(V.write.call(this,g));return}let U=X,B=gt,q=k;X=null;let j;try{j=V.pack.call(this,g,F=>(X=U,U=null,k+=F,k>ro&&M(k),{target:X,targetView:gt,position:k-F}),S)}finally{U&&(X=U,gt=B,k=q,ro=X.length-10)}j&&(j.length+k>ro&&M(j.length+k),k=qA(j,X,k,V.type));return}}T(g,!g.hasOwnProperty)}}else if(D==="boolean")X[k++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))X[k++]=211,gt.setBigInt64(k,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)X[k++]=207,gt.setBigUint64(k,g);else if(this.largeBigIntToFloat)X[k++]=203,gt.setFloat64(k,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(D==="undefined")this.encodeUndefinedAsNil?X[k++]=192:(X[k++]=212,X[k++]=0,X[k++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},T=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),N=D.length;N<16?X[k++]=128|N:N<65536?(X[k++]=222,X[k++]=N>>8,X[k++]=N&255):(X[k++]=223,gt.setUint32(k,N),k+=4);let I;for(let E=0;E<N;E++)S(I=D[E]),S(g[I])}:(g,D)=>{X[k++]=222;let N=k-r;k+=2;let I=0;for(let E in g)(D||g.hasOwnProperty(E))&&(S(E),S(g[E]),I++);X[N+++r]=I>>8,X[N+r]=I&255}:g=>{let D=Object.keys(g),N,I=a.transitions||(a.transitions=Object.create(null)),E=0;for(let L=0,V=D.length;L<V;L++){let U=D[L];N=I[U],N||(N=I[U]=Object.create(null),E++),I=N}let _=I[Hs];if(_)_>=96&&m?(X[k++]=((_-=96)&31)+96,X[k++]=_>>5):X[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let L=D.highByte=_>=96&&m?_-96>>5:-1;I[Hs]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,n=!0,L>=0?(X[k++]=(_&31)+96,X[k++]=L):X[k++]=_):(L>=0?(X[k++]=213,X[k++]=114,X[k++]=(_&31)+96,X[k++]=L):(X[k++]=212,X[k++]=114,X[k++]=_),E&&(w+=O*E),v.length>=h&&(v.shift()[Hs]=0),v.push(I),S(D))}for(let L=0,V=D.length;L<V;L++)S(g[D[L]])},M=g=>{let D;if(g>16777216){if(g-r>xx)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(xx,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-r<<2,X.length-1)>>12)+1<<12;let N=new Tp(D);return gt=new DataView(N.buffer,0,D),X.copy?X.copy(N,0,r,g):N.set(X.slice(r,g)),k-=r,r=0,ro=N.length-10,X=N}}useBuffer(t){X=t,gt=new DataView(X.buffer,X.byteOffset,X.byteLength),k=0}};Cp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ks];Gc=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:a}=t(6);o[a++]=214,o[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:a}=t(10);o[a++]=215,o[a++]=255,n.setUint32(a,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:n,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,n.setUint32(a,i.getMilliseconds()*1e6),n.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?bx(i,16,t):vx(Fc?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==Sx&&this.structuredClone?bx(i,Op.indexOf(e.name),t):vx(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function bx(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:a}=e(4+o);n[a++]=199,n[a++]=o+1}else if(o+1<65536){var{target:n,position:a}=e(5+o);n[a++]=200,n[a++]=o+1>>8,n[a++]=o+1&255}else{var{target:n,position:a,targetView:s}=e(7+o);n[a++]=201,s.setUint32(a,o+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),a)}function vx(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function qA(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function $A(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);e=t.pop();){let n=e.offset,a=e.id;i.copyWithin(n+r,n,o),r-=6;let s=n+r;i[s++]=214,i[s++]=105,i[s++]=a>>24,i[s++]=a>>16&255,i[s++]=a>>8&255,i[s++]=a&255,o=n}return i}function pi(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");Cp.unshift(i.Class),Gc.unshift(i)}gx(i)}var wx=new rn({useRecords:!1}),XA=wx.pack,YA=wx.pack;var{NEVER:KA,ALWAYS:QA,DECIMAL_ROUND:ZA,DECIMAL_FIT:JA}=Vc,Px=512,eM=1024;var Ox=new rn({structuredClone:!0});pi({Class:ue.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ue.prototype),i}});pi({Class:xe.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,xe.prototype),i}});pi({Class:Ze.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ze.prototype),i}});pi({Class:js.prototype.constructor,type:4,write(i){return i.id},read(i){return new js(i)}});pi({Class:Us.prototype.constructor,type:5,write(i){return i.data},read(i){return new Us(i)}});pi({Class:We.prototype.constructor,type:6,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,We.prototype),i}});function tM(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function Ap(i){if(ra(i))return i;if(Array.isArray(i))return i.map(Ap);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=Ap(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var jc;(r=>{function i(o){return Ox.pack(o)}r.serialize=i;function t(o){return Ox.unpack(o)}r.deserialize=t;function e(o){return tM(i(Ap(o))).toString()}r.checksum=e})(jc||(jc={}));var mi="personal camera",yi="a218fcc3-276b-49b9-b485-49037fd14f5f",Nx=2960946,xt=5526619;var ca;(f=>{function i(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=i;function t(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=t;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function r(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=r;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function n(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=n;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let b=f.sub(m,h),v=f.sub(y,h),w=f.dot(b,v)/f.dot(b,b),O=f.scalarMultiply(b,w);return f.add(h,O)}f.projectionOnto=u;function p(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=p;function d(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=d})(ca||(ca={}));var fi;(s=>{function i(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=i;function t(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=t;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function r(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=r;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function n(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=n;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(fi||(fi={}));var Tx;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(Tx||(Tx={}));var Cx;(a=>{let i=180/Math.PI,t=Math.PI/180;function e(s){return typeof s=="number"?s*i:s}function r(s){return typeof s=="number"?s*t:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function n(s){return[r(s[0]),r(s[1]),r(s[2])]}a.degToRad=n})(Cx||(Cx={}));var hi;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,a){for(let s=0;s<16;s++)if(n[s]!==a[s])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=n[3]*a[l]+n[7]*a[l+1]+n[11]*a[l+2]+n[15];s[l]=(n[0]*a[l]+n[4]*a[l+1]+n[8]*a[l+2]+n[12])/u,s[l+1]=(n[1]*a[l]+n[5]*a[l+1]+n[9]*a[l+2]+n[13])/u,s[l+2]=(n[2]*a[l]+n[6]*a[l+1]+n[10]*a[l+2]+n[14])/u}return s}o.applyMatrix4=r})(hi||(hi={}));var wt;(d=>{function i(f){return typeof f=="object"&&typeof f.r=="number"&&typeof f.g=="number"&&typeof f.b=="number"}d.isRGB=i,d.white={r:1,g:1,b:1},d.red={r:1,g:0,b:0},d.black={r:0,g:0,b:0};function o(f){return{r:Math.round(f.r*255),g:Math.round(f.g*255),b:Math.round(f.b*255),a:1}}d.toRgb255a1=o;function n(f){return{r:f.r,g:f.g,b:f.b}}d.clone=n;function a(f){return f=Math.floor(f),{r:(f>>16&255)/255,g:(f>>8&255)/255,b:(f&255)/255}}d.fromHex=a;function s(f){return Math.round(f.r*255)*65536+Math.round(f.g*255)*256+Math.round(f.b*255)}d.toHex=s;function l(f,h){return f.r===h.r&&f.g===h.g&&f.b===h.b}d.equals=l;function c(f,h){return f.r.toFixed(2)===h.r.toFixed(2)&&f.g.toFixed(2)===h.g.toFixed(2)&&f.b.toFixed(2)===h.b.toFixed(2)}d.equalsFixed=c;function u(f,h,m){return{r:f.r+(h.r-f.r)*m,g:f.g+(h.g-f.g)*m,b:f.b+(h.b-f.b)*m}}d.lerp=u;function p(f){return ht(f)?"r"in f&&"g"in f&&"b"in f&&!("a"in f):!1}d.is=p})(wt||(wt={}));var Ne;(u=>{u.white={...wt.white,a:1};function t(p){return ht(p)?"r"in p&&"g"in p&&"b"in p&&"a"in p:!1}u.is=t,u.transparent={...wt.white,a:0};function r(p){return{r:p[0],g:p[1],b:p[2],a:p[3]}}u.from0to1=r;function o(p,d){return{...wt.fromHex(p),a:d}}u.fromHexAndA=o;function n(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:p.a}}u.toRgb255a1=n;function a(p,d){return wt.equals(p,d)&&p.a===d.a}u.equals=a;function s(p,d){return wt.equalsFixed(p,d)&&p.a.toFixed(2)===d.a.toFixed(2)}u.equalsFixed=s;function l(p,d,f){return{r:p.r+(d.r-p.r)*f,g:p.g+(d.g-p.g)*f,b:p.b+(d.b-p.b)*f,a:p.a+(d.a-p.a)*f}}u.lerp=l;function c({r:p,g:d,b:f,a:h}=u.white){return`rgba(${p*255}, ${d*255}, ${f*255}, ${h})`}u.toStyle=c})(Ne||(Ne={}));var Uc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Uc||(Uc={}));var Ax;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ax||(Ax={}));var Mx;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(Mx||(Mx={}));var Ix;(n=>(n.linear=[0,0,1,1],n.ease=[.25,.1,.25,1],n.easeIn=[.42,0,1,1],n.easeOut=[0,0,.58,1],n.easeInOut=[.42,0,.58,1]))(Ix||(Ix={}));function Mp(i){return typeof i=="string"&&i.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i):!1}var Lr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Lr||(Lr={}));var gi;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective?.zoom??1:n.orthographic?.zoom??1}o.getZoom=r})(gi||(gi={}));var io;(r=>{function i(o,n=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(o[0],o[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[o[0]+o[0]*n,0,0]},grid:{count:[2,2,2],size:o.map(a=>a*(1+n)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}r.defaultData=i;function t(o,n){let a={...o};if(rM.forEach(s=>{Object.assign(a,{[s]:n[s]??o[s]})}),a.radial={...o.radial},n.radial){let s=o.radial,l=n.radial;oM.forEach(c=>{Object.assign(a.radial,{[c]:l[c]??s[c]})})}if(a.linear={...o.linear},n.linear){let s=o.linear,l=n.linear;iM.forEach(c=>{Object.assign(a.linear,{[c]:l[c]??s[c]})})}if(a.grid={...o.grid},n.grid){let s=o.grid,l=n.grid;nM.forEach(c=>{Object.assign(a.grid,{[c]:l[c]??s[c]})})}if(a.toObject={...o.toObject},n.toObject){let s=o.toObject,l=n.toObject;aM.forEach(c=>{Object.assign(a.toObject,{[c]:l[c]??s[c]})})}if(a.randomnessObject={...o.randomnessObject},n.randomnessObject){let s=o.randomnessObject,l=n.randomnessObject;sM.forEach(c=>{Object.assign(a.randomnessObject,{[c]:l[c]??s[c]})})}return a}r.merge=t;function e(o){return!!(o.randomnessObject||o.toObject)}r.isPartial=e})(io||(io={}));var kc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,n){let a=[];o.count!==void 0&&a.push({type:0,path:n,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...n,s],props:l})}return a}r.toOps=e})(kc||(kc={}));var rM=["count"],oM=["radius","start","end","position","scale","rotation"],iM=["position","scale","rotation"],nM=["count","size"],aM=["count","position","scale","rotation"],sM=["strength","scale","rotation","position","movement","seed","freqScale"];var Hc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Hc||(Hc={}));var Wc;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Ne.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ne.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ne.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Wc||(Wc={}));var ua;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...r.defaultCollisionData}))(ua||(ua={}));var xi;(t=>t.defaultData={enabled:"visibility",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]})(xi||(xi={}));var Ip;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ip||(Ip={}));var Np;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Np||(Np={}));var qc;(t=>t.defaultData={...Np.defaultData,...Ip.defaultData})(qc||(qc={}));var Ex;(t=>{function i(e,r){let o=[];if("material"in e){let n=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;n&&o.push(n)}else if("materials"in e)for(let n of e.materials){let a=typeof n=="string"?r.materials[n]??r.lib.materials[n]?.asset:n;a&&o.push(a)}return o}t.getMaterialData=i})(Ex||(Ex={}));var da;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(da||(da={}));var Dx;(t=>{function i(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=i})(Dx||(Dx={}));function Lx(i){return i.type!=="displace"}var _x;(t=>{function i(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=i})(_x||(_x={}));var Rx=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Bx=["wrapping","image","video","name","minFilter","magFilter"],yt;(n=>{function i(a,s){let{texture:l,...c}=s;if(Object.assign(a,c),l){let u=a.texture;u&&Object.assign(u,l)}}n.patch=i;function t(a){return{...n.defaultData("color"),color:a}}n.defaultColorLayer=t;function e(a,s){return a==="light"&&s?r(s):o(a)}n.defaultData=e;function r(a){let s={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(a){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function o(a){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(a){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:da.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...s,type:"color",color:wt.fromHex(xt)};case"depth":return{...s,type:"depth",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{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...wt.fromHex(6710886),a:1},colorB:{...wt.fromHex(6710886),a:1},colorC:{...wt.fromHex(16777215),a:1},colorD:{...wt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:Ne.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",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:Ne.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Ne.fromHexAndA(0,1),contourColor:Ne.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{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...wt.fromHex(0),a:1},colorB:{...wt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(yt||(yt={}));var Ct;(u=>{function i(p){return!p.layers.some(f=>f.data.type==="texture"&&f.data.projection!==0||f.data.type==="depth"&&!f.data.isWorldSpace||f.data.type==="noise"||f.data.type==="displace")}u.isMergable=i;function t(p){let d="";return p.layers.forEach(f=>{Object.entries(f.data).forEach(([h,m])=>{d+=`${h}${m}`,Array.isArray(m)?m.forEach(y=>d+=`${y}`):typeof m=="object"?Object.values(m).forEach(y=>{typeof y=="number"?d+=`${y.toFixed(4)}`:d+=`${y}`}):d+=`${m}`})}),d}u.getHash=t;function e(){return{layers:new xe}}u.defaultEmptyData=e;function r(p="layer1",d="layer2"){return n("phong",p,d)}u.defaultData=r;function o(p,d){return{...p,name:d}}u.withName=o;function n(p,d="layer1",f="layer2",h=wt.fromHex(16777215)){let m=new xe;return m.push({fi:0,data:yt.defaultData("light",p),id:d}),m.push({fi:1,data:yt.defaultData("color"),id:f}),{layers:m}}u.defaultTwoLayerData=n;function a(p,d,f="layer1",h="layer2"){let m=new xe;return m.push({fi:0,data:yt.defaultData("light",d),id:f}),m.push({fi:1,data:yt.defaultColorLayer(p),id:h}),{layers:m}}u.defaultColorMaterial=a;function s(p){let d=yt.defaultData("texture");p&&Object.assign(d.texture,{image:p});let f=new xe;return f.push({fi:0,data:d,id:"layer1"}),f.push({fi:1,data:{...yt.defaultData("transmission"),alpha:1},id:"layer2"}),f.push({fi:2,data:{...yt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:f}}u.defaultUIObjectMaterial=s;function l(p,d="phong",f="layer1",h="layer2"){let m=yt.defaultData("texture");Object.assign(m.texture,{image:p});let y=new xe;return y.push({fi:0,data:m,id:f}),y.push({fi:1,data:yt.defaultData("light",d),id:h}),{layers:y}}u.defaultTwoLayerTextureData=l;function c(p,d="phong",f="layer1",h="layer2"){let m=yt.defaultData("video");Object.assign(m.texture,{video:p});let y=new xe;return y.push({fi:0,data:m,id:f}),y.push({fi:1,data:yt.defaultData("light",d),id:h}),{layers:y}}u.defaultTwoLayerVideoTextureData=c})(Ct||(Ct={}));var pa;(t=>{function i(){return{points:new xe,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(pa||(pa={}));var fa;(t=>{function i(){return{points:new xe,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=i})(fa||(fa={}));var Ep={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var $c;(t=>{function i(e,r){let o={...e};return lM.forEach(n=>{Object.assign(o,{[n]:r[n]??e[n]})}),o}t.merge=i})($c||($c={}));var Xc={shape:Ep,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},lM=["depth","offset","angle","twist","startScale","endScale"];var Ws;(r=>{function i(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="UIGeometry"}r.is2DParametricMesh=i;function t(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="BooleanGeometry"||o==="TextGeometry"||o==="InputGeometry"}r.isParametricMesh=t;function e(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="TextGeometry"||o==="SubdivGeometry"||o==="NonParametricGeometry"}r.isSwappableGeometry=e})(Ws||(Ws={}));var Yc;(t=>{function i(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,$c.merge(o.extrusion,r.extrusion))),o}t.merge=i})(Yc||(Yc={}));var no;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:fa.defaultData(),extrusion:Xc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:pa.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="ShapeBlendGeometry")return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...t.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=i})(no||(no={}));var Kc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:wt.white,near:.1,far:2e3})(Kc||(Kc={}));var Qc;(e=>{let i={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...i,blendFunction:16,granularity:15},bloom:{...i,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...i,offset:[2,2]},vignette:{...i,darkness:1,offset:0},hueSaturation:{...i,hue:3,saturation:0},brightnessContrast:{...i,brightness:.25,contrast:0},depthOfField:{...i,focusDistance:100,focalLength:20,bokehScale:5},noise:{...i,blendFunction:16}}})(Qc||(Qc={}));var Dp;(t=>t.defaultData={softShadowQuality:"low"})(Dp||(Dp={}));var _p;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(_p||(_p={}));var Lp;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Lp||(Lp={}));var qs;(t=>t.defaultData={usePhysics:!1,gravity:-10})(qs||(qs={}));var Rp;(t=>t.defaultData={playCamera:mi,gameControlObject:null})(Rp||(Rp={}));var Zc;(t=>t.defaultData={backgroundColor:Ne.fromHexAndA(Nx,1),postprocessing:Qc.defaultData,fog:Kc.defaultData,globalPhysics:qs.defaultData,ambient:_p.defaultData,ao:Lp.defaultData,shadow:Dp.defaultData,publish:Rp.defaultData})(Zc||(Zc={}));var Jc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Jc||(Jc={}));var Vx;(e=>{function i(r){return r==="Component"||r==="Instance"}e.isComponentRelated=i;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(Vx||(Vx={}));var ha;(o=>{o.identity={...Uc.identity,hiddenMatrix:hi.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,a){return{position:a?.position||n.position,rotation:a?.rotation||n.rotation,scale:a?.scale||n.scale,hiddenMatrix:a?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,a){return Kl({position:fi.isEqual(n.position,a.position)?void 0:a.position,rotation:fi.isEqual(n.rotation,a.rotation)?void 0:a.rotation,scale:fi.isEqual(n.scale,a.scale)?null:a.scale,hiddenMatrix:hi.isEqual(n.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(ha||(ha={}));var bt;(t=>t.defaultData={states:new xe,events:new xe,timelineAnimations:new ue,visible:!0,raycastLock:!1,physics:xi.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ha.identity,cloner:null})(bt||(bt={}));var eu;(t=>t.defaultData={type:"Empty",...bt.defaultData})(eu||(eu={}));var zx;(t=>t.defaultData={type:"ParticleCollider",...Jc.defaultData,...bt.defaultData})(zx||(zx={}));var Gx;(t=>t.defaultData={type:"Component",...bt.defaultData})(Gx||(Gx={}));var Fx;(t=>t.defaultData={type:"Particle",...bt.defaultData,...ua.defaultData})(Fx||(Fx={}));var Do;(t=>t.defaultData={type:"Mesh",...bt.defaultData,...qc.defaultData})(Do||(Do={}));var on;(t=>t.defaultData={...bt.defaultData,...ha.identity,position:[0,0,gi.DefaultTargetOffset],...gi.defaultData})(on||(on={}));var tu;(e=>{function i(r){return{...bt.defaultData,...Wc.defaultData(r)}}e.defaultData=i,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(tu||(tu={}));var ma;(e=>{function i(r,o,n=0){for(;n<o.length;){let a=r?r[o[n]]:void 0;if(o.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=i;function t(r,o,n=0){let a=i(r,o,n);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(ma||(ma={}));var ao;(n=>{n.rootOverrideProps=["physics","events"],n.compositeNonOptionalOverrideProps=["geometry"],n.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...bt.defaultData,...s,component:a,overrides:new We,physics:void 0,events:void 0,type:"Instance"}}n.ofComponent=r;function o(a){let s=ha.fromObject(a.data);return r(a.id,s)}n.fromComponentData=o})(ao||(ao={}));var _o;(e=>{e.defaultData={type:"Page",...bt.defaultData,physics:{...xi.defaultData,fusedBody:!1},...Zc.defaultData,camera:on.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(_o||(_o={}));var ru;(s=>(s.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:hi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:xi.defaultData,states:new xe,events:new xe,timelineAnimations:new ue,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...gi.defaultData},s.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},s.defaultMeshObject={name:"Rectangle",...bt.defaultData,...Do.defaultData,geometry:no.defaultData("RectangleGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultBooleanObject={name:"Boolean",...bt.defaultData,...Do.defaultData,geometry:no.defaultData("BooleanGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultShapeBlendObject={name:"Shape Blend",...bt.defaultData,...Do.defaultData,geometry:no.defaultData("ShapeBlendGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultTextObject={name:"Text",...bt.defaultData,...Do.defaultData,geometry:no.defaultData("TextGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultInputObject={name:"Input",...bt.defaultData,...Do.defaultData,geometry:no.defaultData("InputGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")}))(ru||(ru={}));var nn;(o=>{function i(n,a){let s={name:a};return n.type==="Mesh"?(s.geometry={},"material"in n&&(s.material={layers:new We}),"materials"in n&&(s.materials=n.materials.map(l=>({layers:new We})))):Lr.is(n.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=i;function t(n,a){if(a===void 0)return n;let s={...n};return"material"in s&&"material"in a&&a.material&&(s.material=ci(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&yt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=ci(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let f=l[c]?.layers?.data(p);f&&yt.patch(f,d)}}}).data),s}function e(n,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[f,h]of Object.entries(d.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let b={path:[...p,"layers",f,"texture"],props:m,type:0};l.push(b)}if(Object.keys(y).length>0){let b={path:[...p,"layers",f],props:y,type:0};l.push(b)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...kc.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[f,h]of Object.entries(d))u(["materials",f],h);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let f={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(f),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let f={path:[p],props:d,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function r(n,a){if(a===void 0)return n;let s={...n};if(Object.assign(s,ha.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Lr.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(n.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Yc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:io.merge(s.cloner,a.cloner)});else if(n.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:io.merge(s.cloner,a.cloner)});else if(Hc.is(n.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=wt.clone(l.color))}return s}o.patch=r})(nn||(nn={}));var ya;(t=>t.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,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(ya||(ya={}));var Sr;(t=>t.defaultData={orbitControls:ya.defaultData,playPage:yi,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,n=0;return r<5?n=-30:r<10&&(n=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,n],"show"]}),settings:{image:{format:"jpg",ratio:1,colorSpace:"display-p3"},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,format:"mp4",imageFormat:"jpg",activeTimeline:null,colorSpace:"display-p3"},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1})(Sr||(Sr={}));var Bp;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Bp||(Bp={}));var Vp;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Vp||(Vp={}));var Lo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Bp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Vp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Lo||(Lo={}));var jx;(e=>{function i(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=i;function t(r,o,n){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Bo.getComponentData(r,s.component)?.data;l&&n(a,s,l.events)}else n(a,s,s.events)})}e.traverseModuleInstances=t})(jx||(jx={}));var Ro;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:tu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=ru.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),d.push(...p);let h=new Ze;return h.push({fi:1,id:yi,data:{..._o.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Sr.defaultData,styles:Lo.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ze,publish:Sr.defaultData,styles:Lo.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Sr.defaultData,styles:Lo.defaultData()}},c.emptyData=function(){return{objects:new Ze,publish:{...Sr.defaultData},styles:Lo.defaultData()}};function s(u){return{...c.defaultData,objects:Tt(u,Ze.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ro||(Ro={}));var ga;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ga||(ga={}));var ou;(e=>(e.defaultData=r=>({url:r,name:"New Webhook",parametersSchemas:new xe}),e.defaultParameterValueByType=r=>r==="number"?0:r==="boolean"?!1:""))(ou||(ou={}));var Ux;(t=>t.defaultData=(e,r="GET")=>({url:e,method:r,name:"New API",headers:new xe,queries:new xe,autoStart:!0}))(Ux||(Ux={}));var bi;(n=>{function i(a){return a.textValue!==void 0}n.isTextValue=i;function t(a){return typeof a=="number"}n.isNumber=t;function e(a){return typeof a=="boolean"}n.isBoolean=e;function r(a){return i(a)?"string":e(a)?"boolean":"number"}n.typeOfVariable=r;function o(a){return n.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():n.isBoolean(a)?a?"True":"False":n.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}n.getDisplayedValue=o})(bi||(bi={}));var zp;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(zp||(zp={}));var kx;(t=>t.all=[...zp.all,"components"])(kx||(kx={}));var Hx;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Hx||(Hx={}));var Rr;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Rr||(Rr={}));var wr;(n=>{function i(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Tt(a,ue.prototype)}n.defaultColors=i;function t(){return Tt({},ue.prototype)}n.defaultImages=t;function e(){return{catelogs:new ue,materials:new ue,images:new ue,videos:new ue,colors:new ue,timelineAnimations:new ue,audios:new ue,particles:new ue,fonts:new ue,variables:new xe,userAPIs:new ue,userWebhooks:new ue,lib:Rr.defaultData()}}n.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}n.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}n.getFormattedTimerTime=o})(wr||(wr={}));import{MathUtils as au}from"three";var iu;(t=>t.list=["idle","move","jump","run"])(iu||(iu={}));var nu;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new xe,move:new xe,jump:new xe,run:new xe},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ne.fromHexAndA(3728051,1)}}))(nu||(nu={}));function Wx(i){i.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let s=2;s<10;s++)o.push(o[1]),n.push(1);let a={..._r(st(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...st(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Vo(i,t){Object.values(i.shared.materials).forEach(e=>t(e))}function zo(i,t){i.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,n)=>{o===void 0&&(r.materials[n]=Ct.defaultData(),o=r.materials[n]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Ct.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Ct.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==We.prototype&&t(o.material)})})}function cM(i){Object.assign(i.scene.publish,{orbitControls:{...ya.defaultData,...st(i.scene.publish.orbitControls)}})}function uM(i){Object.assign(i.scene.publish.settings,{video:{...Sr.defaultData.settings.video,...st(i.scene.publish.settings.video)}})}function dM(i){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,n]of Object.entries(r))if((Rx.includes(o)||typeof n=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(n))(Bx.includes(a)||typeof s=="boolean")&&delete n[a]}}}i.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let n=o;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function pM(i){i.scene.publish.withBackground=!0}function fM(i){i.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function hM(i){i.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function mM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function yM(i){i.scene.objects.traverse((t,e)=>{let r=i.scene.objects.unproxy().parent(t);if(r){let o=st(i.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=st(e).booleanExclude!==!0)}})}function gM(i){i.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function xM(i){function t(r){Object.setPrototypeOf(r,We.prototype),r.texture&&Object.setPrototypeOf(r.texture,We.prototype)}function e(r){Object.setPrototypeOf(r,We.prototype);for(let o in r)t(r[o])}i.scene.objects.traverse((r,o)=>{o.states.forEach(n=>{let a=n;if(a.material){let s=st(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=st(l).layers;e(c),l.layers=c}})})}function qx(i){i.layers===void 0&&Object.assign(i,Ct.defaultTwoLayerData("lambert"))}function Gp(i){!i.layers||i.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...st(t),colors:e,steps:r};Object.assign(t,o)}})}function bM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function $x(i){i.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Gp(r)}):"material"in e&&typeof e.material!="string"&&Gp(e.material)}),Object.values(i.shared.materials).forEach(t=>Gp(t))}function vM(i){i.scene.environment.ambientLight.softShadows=!1,i.scene.environment.ambientLight.softShadowQuality="low",i.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),i.shared.penumbraSize=new Array(5).fill(.5)}function SM(i){i.shared.audios=Tt({},ue.prototype)}function wM(i){i.shared.videos=Tt({},ue.prototype)}function PM(i){let t=i.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function OM(i){Object.entries(st(i.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.images[r]}),Object.entries(st(i.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.audios[r]})}function TM(i){i.scene.publish.settings.web.preload=!1}function Xx(i){i.layers&&i.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Yx(i){i.layers&&i.layers.forEach(t=>{Lx(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function CM(i){i.shared.fonts=Tt({},ue.prototype)}function AM(i){return i.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function MM(i){let t=[];i.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let n=Ct.defaultTwoLayerData("phong"),a=typeof o.color=="string"?i.shared.colors[o.color]:o.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=o.alpha;let s=AM(o.font);i.shared.fonts[s]===void 0&&(i.shared.fonts[s]={name:s});let l={name:o.name,...bt.defaultData,...Do.defaultData,flatShading:!1,wireframe:!1,geometry:{...no.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:st(o.states),events:st(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=st(i.scene.objects).parent(e);i.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{i.scene.objects.delete(e)})}function IM(i){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};i.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new xe,move:new xe,jump:new xe}});else{let n=new xe;Object.assign(o,{actions:n}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&n.push({fi:0,id:au.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,_r(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new xe({fi:0,id:au.generateUUID(),data:c},{fi:1,id:au.generateUUID(),data:d})};n.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function NM(i){i.scene.objects.traverse((t,e)=>{function r(o,n){let a=new xe,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===n){let p;s.push(c),l.interaction==="play"?p={..._r(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={..._r(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:u,id:c,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:au.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Kx(i){let t=i.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=yt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Qx(i){Vo(i,Kx),zo(i,Kx)}function EM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function DM(i){i.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function _M(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Ct.defaultTwoLayerData("phong"))})}function LM(i){i.scene.publish.orbitControls.autoZoom===void 0&&(i.scene.publish.orbitControls.autoZoom=!1),i.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function RM(i){i.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function BM(i){i.scene.publish.mouseEventTarget===void 0&&(i.scene.publish.mouseEventTarget="canvas"),i.scene.publish.settings.web.hint===void 0&&(i.scene.publish.settings.web.hint=!1)}function VM(i){let{video:t}=i.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function zM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function GM(i){let t=i.scene.environment.usePhysics;i.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function FM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=nu.defaultDataThirdPerson.navmesh)})})}function jM(i){i.scene.styles||(i.scene.styles=Lo.defaultData())}function Zx(i){i.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function UM(i){i.scene.environment.ambientLight.occlusion===void 0&&(i.scene.environment.ambientLight.occlusion=!1),i.scene.environment.ambientLight.aoFullRes===void 0&&(i.scene.environment.ambientLight.aoFullRes=!1),i.scene.environment.ambientLight.radius===void 0&&(i.scene.environment.ambientLight.radius=256),i.scene.environment.ambientLight.bias===void 0&&(i.scene.environment.ambientLight.bias=.5),i.scene.environment.ambientLight.aoColor===void 0&&(i.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),zo(i,Zx),Vo(i,Zx)}function kM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new xe})})})}function HM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Jx(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function e0(i,t){if(t<1&&(zo(i,Wx),Vo(i,Wx),i.schema=1),t<2&&(cM(i),i.schema=2),t<3&&(dM(i),i.schema=3),t<4&&(pM(i),i.schema=4),t<5&&(fM(i),i.schema=5),t<6&&(hM(i),i.schema=6),t<7&&(mM(i),i.schema=7),t<8&&(i.schema=8),t<9&&($x(i),i.schema=9),t<10&&(bM(i),i.schema=10),t<11&&(vM(i),i.schema=11),t<12&&($x(i),i.schema=12),t<13&&(SM(i),i.schema=13),t<14&&(PM(i),i.schema=14),t<15&&(OM(i),i.schema=15),t<16&&(TM(i),i.schema=16),t<17&&(zo(i,Xx),Vo(i,Xx),i.schema=17),t<18&&(zo(i,qx),Vo(i,qx),i.schema=18),t<19&&(uM(i),i.schema=19),t<20&&(CM(i),MM(i),i.schema=20),t<21&&(IM(i),NM(i),i.schema=21),t<22&&(Qx(i),i.schema=22),t<23&&(EM(i),i.schema=23),t<24&&(DM(i),i.schema=24),(t<25||i.shared.videos===void 0)&&(wM(i),t<25&&(i.schema=25)),t<26&&(yM(i),i.schema=26),t<27&&(gM(i),i.schema=27),t<28&&(Qx(i),i.schema=28),t<29&&(xM(i),i.schema=29),t<30&&(_M(i),i.schema=30),t<31&&(LM(i),i.schema=31),t<33&&(RM(i),i.schema=33),t<34&&(BM(i),i.schema=34),t<35&&(VM(i),i.schema=35),t<36&&(zM(i),i.schema=36),t<37&&(GM(i),i.schema=37),t<38&&(zo(i,Yx),Vo(i,Yx),i.schema=38),t<39&&(FM(i),i.schema=39),t<40&&(jM(i),i.schema=40),t<41&&(UM(i),i.schema=41),t<42&&(kM(i),i.schema=42),t<43&&(HM(i),i.schema=43),t<99){zo(i,Jx),Vo(i,Jx),i.scene.publish.playCamera===null&&(i.scene.publish.playCamera=mi);let e=st(i.scene.objects),r=i.scene.objects;i.scene.publish.playPage=yi,r.insertBefore(null,null,[{id:yi,data:{..._o.defaultData,backgroundColor:i.scene.backgroundColor,fog:i.scene.fog,postprocessing:i.scene.postprocessing,ao:_r(i.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:i.scene.publish.playCamera,gameControlObject:i.scene.publish.gameControlObject},shadow:_r(i.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...qs.defaultData,..._r(i.scene.environment,"usePhysics","gravity")},camera:st(i.scene.ownerCamera)??_o.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ro.TRASH_CAN_ID&&r.move(yi,a.fi,a.id);let o=0,n=0;i.shared.penumbraSize&&i.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=i.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=i.shared.penumbraSize[3+Math.min(n,1)],n+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,xi.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),i.schema=99}}function t0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function WM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function qM(i){Array.isArray(st(i.events))&&i.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var xa=180/Math.PI;function r0(i){i.rotation=i.rotation.slice(0,3).map(t=>t*xa)}function o0(i){r0(i),i.type==="Page"&&r0(i.camera),i.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*xa))});let t=i.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*xa),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*xa),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=xa,t.extrusion.twist*=xa),i.type==="Mesh"&&i.geometry.type==="TextGeometry"&&(i.geometry.text={textValue:i.geometry.text}),Array.isArray(st(i.events))&&i.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function $M(i){i.shared.variables=Tt({},ue.prototype)}function XM(i){let t=st(i.shared.variables);i.shared.variables=Tt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),xe.prototype)}var so=120;function Fp(i,t){t(i.data);for(let e of i.children)Fp(e,t)}function YM(i){let t=i.schema??104;t!==so&&(t<105&&(Fp(i.asset,o0),i.schema=105),t<118&&(Fp(i.asset,i0),i.schema=118))}function KM(i){i.shared.particles=Tt({},ue.prototype),i.shared.lib&&(i.shared.lib.particles=Rr.defaultData().particles)}function QM(i){i.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function ZM(i){i.scene.objects.traverse((t,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function JM(i){i.scene.objects.traverse((t,e)=>{Array.isArray(st(e.events))!==!1&&e.events?.forEach(r=>{let o=r.runMode;r.type==="MouseDown"||r.type==="MouseUp"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="Collision"||r.type==="Trigger"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode=o??"Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode=o==="Toggle"?"Toggle":"Normal")}):r.type==="MouseHover"||r.type==="MousePress"||r.type==="KeyPress"?r.actions?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}):r.type==="GameControl"?(delete r.actions,Object.keys(r.gameActions).forEach(a=>{r.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):r.type==="DragDrop"?(delete r.actions,r.dragDropActions?.drag?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}),r.dragDropActions?.drop?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")})):r.type==="Resize"?(delete r.actions,r.breakpoints?.forEach(n=>{n.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):r.type==="Start"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Once"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="VariableChange"||r.type==="Scroll"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="Conditional"&&(delete r.actions,r.inActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}),r.outActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}))})})}function eI(i){i.shared.userAPIs=Tt({},ue.prototype),i.shared.userWebhooks=Tt({},ue.prototype),i.shared.lib&&(i.shared.lib.userAPIs=Rr.defaultData().userAPIs,i.shared.lib.userWebhooks=Rr.defaultData().userWebhooks)}function tI(i){i.scene.publish.settings.videoStatic===void 0&&(i.scene.publish.settings.videoStatic=Sr.defaultData.settings.videoStatic)}function i0(i){i.timelineAnimations=Tt({},ue.prototype)}function su(i){let t=i.schema??0;if(t!==so){console.warn("updating from ",t,"to ",so),e0(i,t),t<100&&(i.scene.publish.joystickSizeAndXYOffset===void 0&&(i.scene.publish.joystickSizeAndXYOffset=Sr.defaultData.joystickSizeAndXYOffset),i.schema=100),t<101&&(zo(i,t0),Vo(i,t0),i.schema=101),t<102&&(WM(i),i.schema=102),t<104&&(i.shared.catelogs=new ue,i.shared.lib=Rr.defaultData(),i.schema=104),t<105&&($M(i),i.scene.objects.traverse((e,r)=>{o0(r)}),i.schema=105);for(let e of Object.values(i.shared.lib.components))YM(e);t<106&&(XM(i),i.schema=106),t<107&&(i.shared.lib.variables=Rr.defaultData().variables,i.schema=107),t<109&&(KM(i),i.schema=109),t<110&&(QM(i),i.schema=110),t<111&&(i.scene.objects.traverse((e,r)=>{qM(r)}),i.schema=111),t<112&&(ZM(i),i.schema=112),t<113&&(JM(i),i.schema=113),t<114&&(i.scene.publish.settings.web.imageQuality===void 0&&(i.scene.publish.settings.web.imageQuality=70),i.schema=114),t<115&&(eI(i),i.schema=115),t<116&&(tI(i),i.schema=116),t<117&&(i.scene.publish.settings.web.pixelRatioMobile===void 0&&(i.scene.publish.settings.web.pixelRatioMobile=0),i.scene.publish.settings.web.pixelRatioDesktop===void 0&&(i.scene.publish.settings.web.pixelRatioDesktop=0),i.schema=117),t<118&&(i.shared.timelineAnimations=Tt({},ue.prototype),i.scene.objects.traverse((e,r)=>{i0(r)}),i.schema=118),t<119&&(i.scene.publish.settings.videoStatic.format=Bo.defaultData.scene.publish.settings.videoStatic.format,i.scene.publish.settings.videoStatic.imageFormat=Bo.defaultData.scene.publish.settings.videoStatic.imageFormat,i.schema=119),t<120&&(i.scene.publish.settings.image.colorSpace="display-p3",i.scene.publish.settings.videoStatic.colorSpace="display-p3",i.schema=120)}}var Bo;(c=>{c.defaultData={schema:so,scene:Ro.defaultData,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:{...wr.emptyData(),colors:wr.defaultColors()}},c.emptyDataForImports=function(){let u=Ro.emptyDataWithPage();return{schema:so,scene:u,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:{...wr.emptyData(),colors:wr.defaultColors(),images:wr.defaultImages()}}},c.emptyData=function(){return{schema:so,scene:Ro.emptyDataWithPage(),frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:wr.emptyData()}},c.clipboard2dData=function(){return{schema:so,scene:Ro.emptyData(),frames:new ue,shared:wr.emptyData()}},c.collabHelper={...Fs,updateSchema(u){return(u.schema??0)<so?ci(u,su):(u.schema??0)-so}};function n(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=n;function a(u){return{...u,shared:{...u.shared,lib:Rr.defaultData()}}}c.withoutLib=a;function s(u,p){let d=u.scene.objects.get(p);if(d&&d.data.type==="Component")return d;{let f=u.shared.lib.components[p];if(f)return f.asset}}c.getComponentData=s;function l(u){let p=Object.values(u.shared.userAPIs);for(let d of p){let f=d.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(Bo||(Bo={}));var lu;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(lu||(lu={}));var n0;(t=>{function i(e){return!0}t.is=i})(n0||(n0={}));var cu;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function t(o,n){return{position:n?.position??o.position,rotation:n?.rotation??o.rotation,scale:n?.scale??o.scale,shear:n?.shear??o.shear}}r.merge=t;function e(o,n){return Kl({position:ca.isEqual(o.position,n.position)?void 0:n.position,rotation:o.rotation===n.rotation?void 0:n.rotation,scale:ca.isEqual(o.scale,n.scale)?void 0:n.scale,shear:o.shear&&n.shear&&ca.isEqual(o.shear,n.shear)?void 0:n.shear})}r.diff=e})(cu||(cu={}));var jp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(jp||(jp={}));var a0;(t=>t.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(a0||(a0={}));var uu;(t=>t.defaultData={opacity:1,fill:{color:Ne.fromHexAndA(xt,1),enabled:!0},stroke:{color:Ne.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ne.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ne.from0to1([0,0,0,1]),enabled:!1,spread:0}})(uu||(uu={}));var an;(n=>{function i(a,s){return{name:s}}n.newEmpty=i;function t(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,cu.merge(l,s)),l=t(l,s),l=e(l,s),l}n.patch=r;function o(a,s){let l,c=[];for(let[u,p]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p);return c}n.toOps=o})(an||(an={}));var $s;(t=>t.defaultData={...cu.defaultData,...jp.defaultData,states:new xe,events:new xe,visible:!0,raycastLock:!1})($s||($s={}));var ba;(t=>t.defaultData={...$s.defaultData,...uu.defaultData})(ba||(ba={}));var du;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(du||(du={}));var Up;(t=>t.defaultData={...ba.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Up||(Up={}));var va;(t=>t.defaultData={...ba.defaultData,...du.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(va||(va={}));var kp;(t=>t.defaultData={...ba.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(kp||(kp={}));var Hp;(t=>t.defaultData={...ba.defaultData,type:"path2d",path:"",name:"Path"})(Hp||(Hp={}));var s0;(t=>{function i(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=i})(s0||(s0={}));var Xs;(t=>t.defaultData={...$s.defaultData,name:"Group",type:"group2d"})(Xs||(Xs={}));var Wp;(t=>t.defaultData=()=>({...$s.defaultData,...du.defaultData,...uu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ne.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ne.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Wp||(Wp={}));var Go;(n=>{function i(a){switch(a){case"rectangle2d":return{...va.defaultData};case"ellipse2d":return{...Up.defaultData};case"text2d":return{...kp.defaultData};case"vector2d":return{...va.defaultData};case"path2d":return{...Hp.defaultData};case"frame2d":return{...Wp.defaultData()};case"group2d":return{...Xs.defaultData}}}n.defaultData=i;function t(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}n.getPivot=t;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}n.isResizeable=e;function r(a){return a.type==="frame2d"&&a.autoLayout!==void 0}n.isAutoLayoutable=r;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}n.hasCorners=o})(Go||(Go={}));var pu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ze},e.emptyData=function(){return{type:"scene2d",objects:new Ze}}))(pu||(pu={}));import{Color as rI}from"three";var At=class extends rI{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var dd=_s(c0());import{Object3D as bD,Vector3 as mr,Euler as Ah,MathUtils as $v,Matrix4 as Tn}from"three";var oI=.5*(Math.sqrt(3)-1),Ys=(3-Math.sqrt(3))/6,iI=1/3,lo=1/6,X6=(Math.sqrt(5)-1)/4,Y6=(5-Math.sqrt(5))/20,Ks=i=>Math.floor(i)|0,u0=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),$p=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function d0(i=Math.random){let t=f0(i),e=new Float64Array(t).map(o=>u0[o%12*2]),r=new Float64Array(t).map(o=>u0[o%12*2+1]);return function(n,a){let s=0,l=0,c=0,u=(n+a)*oI,p=Ks(n+u),d=Ks(a+u),f=(p+d)*Ys,h=p-f,m=d-f,y=n-h,b=a-m,v,w;y>b?(v=1,w=0):(v=0,w=1);let O=y-v+Ys,S=b-w+Ys,T=y-1+2*Ys,M=b-1+2*Ys,g=p&255,D=d&255,N=.5-y*y-b*b;if(N>=0){let _=g+t[D],L=e[_],V=r[_];N*=N,s=N*N*(L*y+V*b)}let I=.5-O*O-S*S;if(I>=0){let _=g+v+t[D+w],L=e[_],V=r[_];I*=I,l=I*I*(L*O+V*S)}let E=.5-T*T-M*M;if(E>=0){let _=g+1+t[D+1],L=e[_],V=r[_];E*=E,c=E*E*(L*T+V*M)}return 70*(s+l+c)}}function p0(i=Math.random){let t=f0(i),e=new Float64Array(t).map(n=>$p[n%12*3]),r=new Float64Array(t).map(n=>$p[n%12*3+1]),o=new Float64Array(t).map(n=>$p[n%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*iI,h=Ks(a+f),m=Ks(s+f),y=Ks(l+f),b=(h+m+y)*lo,v=h-b,w=m-b,O=y-b,S=a-v,T=s-w,M=l-O,g,D,N,I,E,_;S>=T?T>=M?(g=1,D=0,N=0,I=1,E=1,_=0):S>=M?(g=1,D=0,N=0,I=1,E=0,_=1):(g=0,D=0,N=1,I=1,E=0,_=1):T<M?(g=0,D=0,N=1,I=0,E=1,_=1):S<M?(g=0,D=1,N=0,I=0,E=1,_=1):(g=0,D=1,N=0,I=1,E=1,_=0);let L=S-g+lo,V=T-D+lo,U=M-N+lo,B=S-I+2*lo,q=T-E+2*lo,j=M-_+2*lo,F=S-1+3*lo,H=T-1+3*lo,W=M-1+3*lo,ee=h&255,te=m&255,Y=y&255,re=.6-S*S-T*T-M*M;if(re<0)c=0;else{let $=ee+t[te+t[Y]];re*=re,c=re*re*(e[$]*S+r[$]*T+o[$]*M)}let K=.6-L*L-V*V-U*U;if(K<0)u=0;else{let $=ee+g+t[te+D+t[Y+N]];K*=K,u=K*K*(e[$]*L+r[$]*V+o[$]*U)}let Z=.6-B*B-q*q-j*j;if(Z<0)p=0;else{let $=ee+I+t[te+E+t[Y+_]];Z*=Z,p=Z*Z*(e[$]*B+r[$]*q+o[$]*j)}let Q=.6-F*F-H*H-W*W;if(Q<0)d=0;else{let $=ee+1+t[te+1+t[Y+1]];Q*=Q,d=Q*Q*(e[$]*F+r[$]*H+o[$]*W)}return 32*(c+u+p+d)}}function f0(i){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(i()*(256-r)),n=e[r];e[r]=e[o],e[o]=n}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as nI}from"three";var Br=new nI,fu=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let n=1;Br.a.fromBufferAttribute(t,o),Br.b.fromBufferAttribute(t,o+1),Br.c.fromBufferAttribute(t,o+2),n*=Br.getArea(),e[o/3]=n}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,n=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){n=a;break}else t<e[a]?o=a-1:r=a+1}return n}sampleFace(t,e,r){let o=this.randomFunction(),n=this.randomFunction();return o+n>1&&(o=1-o,n=1-n),Br.a.fromBufferAttribute(this.positionAttribute,t*3),Br.b.fromBufferAttribute(this.positionAttribute,t*3+1),Br.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Br.a,o).addScaledVector(Br.b,n).addScaledVector(Br.c,1-(o+n)),Br.getNormal(r),this}};import{Object3D as uI}from"three";var y0=_s(m0());import{Object3D as aI,Matrix4 as co}from"three";var sI=new co,lI=new co,cI=new co,Fo;(t=>{function i(e){return e&&e.__isSPEObject}t.is=i})(Fo||(Fo={}));var Sa=i=>class extends i{constructor(){super(...arguments);this.previousModelViewMatrix=new co;this.copyPreviousMatrix=!0;this.hiddenMatrix=new co;this.matrixWorldRigid=new co;this.shearScale=new co;this.shearScaleInv=new co}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof aI&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(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,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let n=this.parent;if(r&&n!==null&&n.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)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let n of this.children)Fo.is(n)&&n.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fo.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:n,v:a,q:s}=(0,y0.SVD)(o),l=sI.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=lI.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=cI.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(p=>Math.abs(s[0]-p)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let n=new co().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),n.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof co?r.hiddenMatrix.premultiply(n):r.applyMatrix4(n),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,n,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Xp=class extends Sa(uI){},dI=i=>i.type==="Mesh",Vr=class extends Xp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Vr(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return dI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}};import{Box3 as _N,BufferGeometry as LN,MeshBasicMaterial as RN}from"three";import{Matrix4 as EN,Mesh as DN}from"three";import{Matrix4 as yu,Vector3 as b0,Euler as gI,MathUtils as Zs}from"three";import{Box3 as pI,Line3 as fI,Matrix4 as Yp,Vector3 as pr}from"three";var sn=new pr,ln=new pr,wa=new Yp,x0=[new pr(-1,1,1),new pr(-1,-1,1),new pr(1,-1,1),new pr(1,1,1),new pr(-1,1,-1),new pr(-1,-1,-1),new pr(1,-1,-1),new pr(1,1,-1)],hI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],g0=(i,t,e)=>{i.updateEntityBoxSize(sn,ln),wa.copy(t).multiply(i.matrixWorld),ln.x===0&&ln.y===0&&ln.z===0?e.push(new pr(sn.x,sn.y,sn.z).applyMatrix4(wa)):x0.forEach(r=>{e.push(r.clone().multiply(ln).add(sn).applyMatrix4(wa))})},Qs=class extends pI{constructor(){super(...arguments);this.matrix=new Yp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Yp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){n.push(new pr);return}g0(a,r,n)}}):g0(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(wa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(ln).multiplyScalar(.5),this.getCenter(sn),wa.copy(this.matrix).setPosition(sn),this.vertices=x0.map(e=>e.clone().multiply(ln).applyMatrix4(wa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hI.map(([e,r])=>new fI(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new pr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mI.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var zr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as yI,CubicBezierCurve3 as Kp,Vector3 as Gr}from"three";var Zp=class extends yI{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],p=Math.ceil(t*u/a),d=c.getPoints(p);for(let f=0;f<d.length;f++){let h=d[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Jp=.001;function ef(i,t,e){return t.clone().sub(i).cross(t.clone().sub(e)).length()<=Jp}function Qp(i,t){let e=new Gr(...i.position),r=new Gr(...i.controlNext.position),o=new Gr(...t.controlPrevious.position),n=new Gr(...t.position);return ef(e,r,n)&&ef(e,o,n)}function mu(i){let t=i.points.map(u=>new Gr(...u.data.position)),e=[i.points[0]],r=new Gr(...e[0].data.position);for(let u=0;u<i.points.length-1;u++)ef(r,t[u],t[u+1])||(e.push(i.points[u]),r=t[u]);e.push(i.points[i.points.length-1]);let o=i.isClosed,n=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new Gr(...p.position),f=new Gr(...p.controlPrevious.position),h=new Gr(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};if(p.roundness===0||!i.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,b=o&&u==a-1?0:u+1,v=e[y].data,w=e[b].data,O=new Gr(...v.position),S=new Gr(...w.position),T=O.clone().sub(d).normalize(),M=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:M});let g=Qp(v,p),D=Qp(p,w);if(!g||!D)s[u]={...m,removedLength:0};else{let N=T.clone().add(M).normalize(),I=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!Qp(e[p].data,e[d].data))f.position.distanceTo(h.position)>Jp&&(m=new Kp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),b=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&b.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(b)>Jp&&(m=new Kp(y,y.clone().lerp(b,.3),b.clone().lerp(y,.3),b))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,f=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),h=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),b=f.clone().lerp(h,.5),v=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(b),O=y.clone().multiplyScalar(-m).add(w),S=d.distanceTo(O)/d.distanceTo(b),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(f)).add(d),M=T.clone().lerp(O,2),g=f.clone().lerp(T,4/3),D=h.clone().lerp(M,4/3);l[2*u]=new Kp(f,g,D,h)}let c=new Zp;return l.forEach(u=>{u&&c.add(u)}),c}var _e;(t=>{function i(e){return e&&e.__isEntity}t.is=i})(_e||(_e={}));var Pa=i=>_e.is(i),xI={type:"completeState",isfromEntity:!0},bI=["x","y","z"],tf=new b0,vI=new b0().set(0,1,0),Oa=i=>class extends Sa(i){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.currentAnimationAction=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Qs;this._recursiveBBox=new Qs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(_e.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(_e.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(_e.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,n=!1){if(!(this.data.states.length===0&&!n)){for(let a of this.data.states)nn.toOps(this.data,a.data).forEach(l=>{let c=na.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=nn.patch(this.data,a),nn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}n&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}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}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{Pa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(n=>{n.uuid===r&&(o=n)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,n=o.indexOf(this)+1;if(_e.is(o[n]))return o[n];if(_e.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&_e.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,n=this;for(;n!==r;){if(n===null)return-1;n=n.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)Pa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{_e.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Pa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Pa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Pa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>Pa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(n=>{n.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Zs.RAD2DEG,this.rotation.y*Zs.RAD2DEG,this.rotation.z*Zs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ea(o,r)}getTransformValues(r,o,n){return o[r].map((a,s)=>n?.shared.getVariable(a,[this.uuid,r,bI[s]])??a)}updateTransformState(r,o){let n=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),n=!0),r.rotation&&(tf.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Zs.DEG2RAD),this.rotation.setFromVector3(tf),n=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),n=!0),r.hiddenMatrix!==void 0&&(n=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??hi.identity)),n&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),n}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)}),this.requestRender()}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)_e.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{_e.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return ea(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,n,a){let s=this.data;this.data=o;let l=r,c=Be(r.path,["states","*"]);if(c!==null){if(r.type===0){let[u]=c;if(this?.stateSelection===u){let p={...r.props};if(delete p.name,Object.values(r.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let f=Je.zoom(d,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(p[h]=f[h])}}l={...r,props:p,path:r.path.slice(2)}}}}else if(r.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(r.props.name!==void 0&&u.name){let{name:d,...f}=u;u=f}if(r.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=Je.removeOverridden(r.path,r.props,u);l={...r,props:p}}}if(this.updateByPatchedOpBase(l,nn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),n),Be(r.path,["overrides"])){let u=[],p=[...r.path];for(u.push(p[1]),p.splice(0,2);p.length>0&&p[0]==="descendants";)u.push(p[1]),p.splice(0,2);if(u[u.length-1]===void 0){if(r.type===0)for(let d of Object.keys(r.props)){u[u.length-1]=d;let f=n.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=r.props[d],f.updateState(Jr.apply(f.component.data,f.overrideData),n))}}else{let d=n.scene.findInstance([this.uuid,...u]);if(d){let f=Je.zoom(d.component.data,p);if(r={...r,path:p},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}d.overrideData=ma.resolve(o.overrides,u),d.updateByOp(r,at.applySimple(d.data,r),n,!1)}}}else if(this.instances.length>0){let u;if(r.path.length===0&&r.type===0){let p;for(let d of ao.rootOverrideProps)d in r.props&&(p===void 0&&(p={}),p[d]=r.props[d]);p&&(u={...r,props:p})}else for(let p of ao.rootOverrideProps)if(Be(r.path,[p])){u=r;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=Jr.filterOp(p.overrideData,u);d&&p.updateByOp(d,at.applySimple(p.data,d),n,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=Jr.filterOp(p.overrideData,r);if(d){let f;s===p.data&&r===d?f=o:f=at.applySimple(p.data,d),p.updateByOp(d,f,n,!0)}}})}}updateByPatchedOpBase(r,o,n){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Lr.is(r.props.type)&&zr.changeEntityProptotype(this,o,n);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){zr.changeEntityProptotype(this,o,n);for(let a of this.children)_e.is(a)&&a.updateVisible(n.scene)}this.updateByPatchedOp(r,o,n)}updateByPatchedOp(r,o,n){if(r.path.length===0&&r.type===0?this.updateState(r.props,n):r.type===0&&("resolutionLevel"in r.props||"useChildrenColors"in r.props)&&this.updateState(o,n),r.path[0]==="morphTargetInfluences"&&r.type===0){let s=o.morphTargetInfluences.get(r.path[1])?.data.name;s&&this.updateMorphInfluences(s,n.shared.getVariable(r.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Be(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Be(r.path,["cloner"])!==null){let a=at.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,n):this.cloner?this.cloner.updateState(o.cloner,n.scene):(this.setFromClonerState(o.cloner,n),this.expandCloner(n.scene)),this.updateVisible(n.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,n=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=mu(c.geometry.path),p=(n+a)%1;n+a===1&&p===0&&(p=1);let d=null;try{d=u.curves.length?u.getPointAt(p):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(d===null)return;let f=this.parent?this.parent?.matrixWorld:new yu;l.updateMatrixWorld();let h=new yu().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new yu().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),v=new yu().lookAt(d,b,vI),w=tf.setFromEuler(new gI().setFromRotationMatrix(v)).multiplyScalar(Zs.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(xI)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(n=>{if(n.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof zr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new zr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as PI,ConeGeometry as OI,Float32BufferAttribute as TI,MathUtils as CI}from"three";import{BufferGeometry as S0,CylinderGeometry as SI,Float32BufferAttribute as xu,MathUtils as wI,Vector2 as Fr,Vector3 as gu}from"three";var w0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.parameters?.radiusTop,r=i.parameters?.radiusBottom,o=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},i.parameters);o.thetaLength=wI.clamp(o.thetaLength,0,360);let n=o.width/2,a=o.radiusTop??n,s=o.radiusBottom??n;if(a===s?(a=n,s=n):a>s?(a=n,s=s*n/a):(a=a*n/s,s=n),o.shapeBlendNode){a=e??n,s=r??n;let l=Math.max(a,s)*2;o.width=l,o.depth=l}return{parameters:Object.assign(o,{width:Math.abs(o.width),height:Math.abs(o.height??o.width),depth:Math.abs(o.depth??o.width),radiusTop:a,radiusBottom:s})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:f}=i.parameters,h;return l===0?(h=new S0,h.setAttribute("position",new xu([],3))):p||f?h=new Js(c,u,r,o,n,a,s,l*Math.PI/180,p,p,d,f):h=new SI(c,u,r,o,n,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...i,type:"CylinderGeometry"}})}};function vi(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function v0(i){return new Fr(i.y,-i.x)}var Js=class extends S0{constructor(t,e,r,o,n,a,s,l,c,u,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],b=[],v=0,w=r/2,O=new gu,S=new gu;f&&t==0&&(t=c),f&&e==0&&(e=u);let T=new Fr(t,w),M=new Fr(e,-w),g=null,D=null,N=null,I=null,E=T.clone().sub(M),_=0,L=0,V=0;d>0&&(_=Math.min(t,e)*(1-d),L=t-_,V=e-_);let U=T.clone();U.x-=_;let B=Math.PI-E.angle(),q=E.angle(),j=Math.tan(q/2),F=Math.tan(B/2),H=j+F,W=d?H:F,ee=d?H:j;if(c=Math.min(c,(t-L)/W,E.length()/H),u=Math.min(u,(e-V)/ee,E.length()/H),c>0){let Q=c/j;g=T.clone().sub(new Fr(Q,c)),d&&(N=g.clone(),N.x-=_-H*c),T.sub(E.clone().setLength(Q))}if(u>0){let Q=u/F;D=M.clone().sub(new Fr(Q,-u)),M.add(E.clone().setLength(Q)),d&&(I=D.clone(),I.x-=_-H*u,U.sub(E.clone().setLength(Q)))}E=T.clone().sub(M);let te=E.length()<.5,Y=[];for(let Q=0;Q<=o;Q++){let $=[],de=Q/o,le=de*l+s,ie=new Fr(Math.sin(le),Math.cos(le));I&&D?(re($,de,ie,B,u,I,-1,!0),re($,de,ie,q,u,D,-1,!1)):D?(K($,ie,D.x,0,-1),re($,de,ie,q,u,D,-1,!1)):a||K($,ie,e,V,-1);let ce=v0(E).normalize();if(vi(ce,ie,O),!te)for(let ae=0;ae<=n;ae++){let me=ae/n,fe=E.clone().multiplyScalar(me).add(M);vi(fe,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}if(N&&g?(re($,de,ie,B,c,g,1,!1),re($,de,ie,q,c,N,1,!0)):g?(re($,de,ie,B,c,g,1,!1),K($,ie,g.x,0,1)):a||K($,ie,t,L,1),d&&!te){let ae=v0(E).multiplyScalar(-1).normalize();vi(ae,ie,O);for(let me=0;me<=n;me++){let fe=me/n,he=E.clone().multiplyScalar(-fe).add(U);vi(he,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}}d&&!a&&$.push($[0]),Y.push($)}for(let Q=0;Q<Y.length-1;Q++)for(let $=0;$<Y[0].length-1;$++){if(a&&d&&$==n)continue;let de=Y[Q][$],le=Y[Q+1][$],ie=Y[Q+1][$+1],ce=Y[Q][$+1],ae=m[ie*3+0],me=m[ie*3+2];h.push(de,le,ce),(ae!=0||me!=0)&&h.push(le,ie,ce)}l<Math.PI*2&&(Z(-1,Y[0],s),Z(1,Y[Y.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new xu(m,3)),this.setAttribute("normal",new xu(y,3)),this.setAttribute("uv",new xu(b,2));function re(Q,$,de,le,ie,ce,ae,me){for(let fe=0;fe<p+1;fe++){let he=fe/p,be=ae<0?he:1-he;me&&(be-=1),be*=le;let ye=new Fr(Math.sin(be),Math.cos(be)*ae),C=ye.clone().multiplyScalar(ie).add(ce);vi(C,de,S),m.push(S.x,S.y,S.z),vi(ye,de,O),y.push(O.x,O.y,O.z),b.push($,.5+S.y/r),Q.push(v++)}}function K(Q,$,de,le,ie){let ce=new gu,ae=new Fr,me=[de,le];ie<0&&me.reverse();for(let fe of me)ae.set(fe,w*ie),vi(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ie,0),b.push(.5,.5),Q.push(v++)}function Z(Q,$,de){let le=new Fr(Math.sin(de),Math.cos(de)),ie=new Fr(-Math.cos(de),Math.sin(de)),ce=new gu,ae=Q<0?(he,be,ye)=>h.push(he,be,ye):(he,be,ye)=>h.push(he,ye,be),me=new Fr((t+e+L+V)/4,0);vi(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ie.x,0,ie.y),b.push(.5,.5);let fe=v++;for(let he of $){let be=m.slice(he*3,he*3+3);m.push(...be),y.push(ie.x,0,ie.y);let ye=b.slice(he*2,he*2+2);b.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var P0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},i.parameters);return e.thetaLength=CI.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=i.parameters,d;return l===0?(d=new PI,d.setAttribute("position",new TI([],3))):c>0||u>0||l<360?d=new Js(0,t/2,r,o,n,a,s,l*Math.PI/180,c,u,p,0,!0):d=new OI(t/2,r,o,n,a),d.scale(1,1,e/t),Object.assign(d,{userData:{...i,type:"ConeGeometry"}})}};import{BoxGeometry as AI,BufferGeometry as MI,Float32BufferAttribute as rf,Vector3 as el}from"three";var O0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:a,cornerRadius:s,cornerSegments:l}=i.parameters,c;return s===0?c=new AI(t,e,r,o,n,a):c=new nf(t,e,r,o,n,a,s,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},of=Math.PI/2,nf=class extends MI{constructor(t=1,e=1,r=1,o=1,n=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),n=Math.floor(n),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],p=[],d=[],f=0;h("z","y","x",-1,-1,r,e,t,a,n),h("z","y","x",1,-1,r,e,-t,a,n),h("x","z","y",1,1,t,r,e,o,a),h("x","z","y",1,-1,t,r,-e,o,a),h("x","y","z",1,-1,t,e,r,o,n),h("x","y","z",-1,-1,t,e,-r,o,n),s>0&&(m("z","y","x",-1,-1,1,r,e,t,a),m("z","y","x",1,-1,-1,r,e,t,a),m("z","y","x",-1,1,-1,r,e,t,a),m("z","y","x",1,1,1,r,e,t,a),m("x","y","z",-1,-1,-1,t,e,r,o),m("x","y","z",1,-1,1,t,e,r,o),m("x","y","z",-1,1,1,t,e,r,o),m("x","y","z",1,1,-1,t,e,r,o),m("y","x","z",-1,-1,1,e,t,r,n),m("y","x","z",1,-1,-1,e,t,r,n),m("y","x","z",1,1,1,e,t,r,n),m("y","x","z",-1,1,-1,e,t,r,n),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new rf(u,3)),this.setAttribute("normal",new rf(p,3)),this.setAttribute("uv",new rf(d,2));function h(b,v,w,O,S,T,M,g,D,N){let I=(T-2*s)/D,E=(M-2*s)/N,_=T/2-s,L=M/2-s,V=g/2,U=D+1,B=N+1,q=0,j=new el;for(let F=0;F<B;F++){let H=F*E-L;for(let W=0;W<U;W++){let ee=W*I-_;j[b]=ee*O,j[v]=H*S,j[w]=V,u.push(j.x,j.y,j.z),j[b]=0,j[v]=0,j[w]=g>0?1:-1,p.push(j.x,j.y,j.z),d.push(W/D),d.push(1-F/N),q+=1}}for(let F=0;F<N;F++)for(let H=0;H<D;H++){let W=f+H+U*F,ee=f+H+U*(F+1),te=f+(H+1)+U*(F+1),Y=f+(H+1)+U*F;c.push(W,ee,Y),c.push(ee,te,Y)}f+=q}function m(b,v,w,O,S,T,M,g,D,N){let I=(M-2*s)/N,E=M/2-s,_=g/2-s,L=D/2,V=N+1,U=0,B=new el,q=new el;for(let j=0;j<l+1;j++){let F=j/l*of,H=Math.sin(F)*s,W=(1-Math.cos(F))*s,ee=Math.sin(F),te=Math.cos(F);B[v]=(_+H)*S,B[w]=(L-W)*T,q[b]=0,q[v]=ee*Math.sign(B[v]),q[w]=te*Math.sign(B[w]);for(let Y=0;Y<V;Y++){let re=Y*I-E;B[b]=re*O,u.push(B.x,B.y,B.z),p.push(q.x,q.y,q.z),d.push(Y/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=f+F+V*j,W=f+F+V*(j+1),ee=f+(F+1)+V*(j+1),te=f+(F+1)+V*j;c.push(H,W,te),c.push(W,ee,te)}f+=U}function y(b,v,w){let O=new el,S=new el(t/2,e/2,r/2);S.subScalar(s);let T=[],M=b*v*w>0?(D,N,I)=>c.push(D,N,I):(D,N,I)=>c.push(D,I,N);for(let D=0;D<=l;D++){let N=[],I=of*(1-D/l),E=Math.cos(I),_=Math.sin(I),L=0;for(let V=0;V<=D;V++){let U=Math.cos(L),B=Math.sin(L);O.x=E*U,O.y=_,O.z=E*B;let q=S.clone().addScaledVector(O,s);u.push(b*q.x,v*q.y,w*q.z),p.push(b*O.x,v*O.y,w*O.z),d.push(0,0),N.push(f++),L+=of/D}T.push(N)}let g=T.length-1;for(let D=0;D<g;D++){let N=T[D],I=T[D+1],E=N.length-1;M(N[0],I[1],I[0]);for(let _=1;_<=E;_++)M(N[_-1],N[_],I[_]),M(N[_],I[_+1],I[_])}}}};import{BufferGeometry as II,Float32BufferAttribute as af,Triangle as NI,Vector3 as jo,Vector2 as sf}from"three";var Si=class extends II{constructor(t=[],e=[],r="",o=1,n=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new af(s,3)),this.setAttribute("normal",new af(c,3)),this.setAttribute("uv",new af(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new jo,m=h.clone(),y=new NI,b=n*o,v=o-b,w=a+1,O=new jo,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),M=T(t.length/3,(j,F)=>new jo().fromArray(t,F*3).setLength(o)),g=[],D=1e6;for(let j=0;j<M.length;j++){let F=M[j],H=[],W,ee,te,Y=1e10,re=-1;for(;(re=e.indexOf(j,re+1))!=-1;){let $=re-re%3;W=e[$+(re+1)%3],ee=e[$+(re+2)%3],te=F.distanceToSquared(M[W]),Y=Math.min(Y,te),H.push([W,ee,te])}Y+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[W,ee,te]=H[Z];let de=g[W]?.includes(j)==!0;te<=Y&&K.push(W+ +de*D),Z=H.findIndex(le=>le[0]==ee)}g.push(K)}let N=[];{let j=0,F=0,H,W,ee=f==3;for(let te=0;te<=a;te++){H=te*(te+1)/2,W=(te+1)*(te+2)/2;for(let Y=0;Y<a-te;Y++)[j,F]=[H+Y+te+2,W+Y+te+3],N.push(H,W,...ee?[F,H]:[j,W],F,j),[H,W]=[j,F];N.push(H,W,H+a+2)}}let I=h.clone(),E=h.clone(),_=h.clone(),L=h.clone(),V=h.clone(),U=[],B=T(M.length,()=>T(f,()=>h.clone()));for(let j=0;j<M.length;j++){h.copy(M[j]).normalize(),I.copy(h).multiplyScalar(v);let F=g[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%f];y.setFromPointsAndIndices(M,j,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,B[j][K])}let H=[],W=[],ee=[],te=new jo;a==0&&[...B[j]].reduce((K,Z)=>K.add(Z),te).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=B[j][Q],de=B[j][K];h.copy($).sub(I),m.copy(de).sub(I);let le=I.angleTo(h),ie=h.angleTo(m),ce=Math.cos(le)*b;a==0?E.copy(te):E.copy(I).setLength(v+ce),W.push(ce);let ae=[E,$,de];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];L.subVectors(fe,I),V.subVectors(he,I),_.crossVectors(L,V).normalize();for(let be=0;be<w;be++){let ye=[le,ie][me]*be/w;h.copy(L).applyAxisAngle(_,ye).add(I),H.push(h.clone()),me&&(S(h,I),Z.push([be==0?fe:h.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}ee.push(Z)}U.push(ee);let Y=2*w,re=2;for(let K=0;K<f;K++){let Z=Y*K,Q=Y*((K+1)%f),$=[H[Z]];for(let le=1;le<w;le++){L=H[Z+le],V=H[Q+le],$.push(L);for(let ie=1,ce=le-re+1;ie<=ce;ie++)h.lerpVectors(L,V,ie/(ce+1)),h.sub(I).setLength(W[K]).add(I),$.push(h.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let de=N.map(le=>$[le]);s.push(...de.map(le=>[le.x,le.y,le.z]).flat()),c.push(...de.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let q=[];for(let j=0;j<g.length;j++)for(let F=0;F<f;F++){let H=g[j][F];if(H<D){let W=g[H].findIndex(Y=>Y%D==j),ee=U[j][F],te=U[H][W];for(let Y=0;Y<w;Y++){let re=ee[Y],K=te[w-Y],Z=ee[Y+1],Q=te[w-(Y+1)];[re,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}q.push(ee[0][0],te[w][0],ee[w][0],te[0][0])}}for(;q.length;){let j,F,H,W;[j,F]=q.splice(0,2);let ee=[j];for(;j!=F;)ee.push(F),H=q.indexOf(F),W=H%2,F=q.splice(H-W,2)[1-W];O.subVectors(ee[0],ee[1]).cross(h.subVectors(ee[0],ee[2])).normalize();let te=O.dot(ee[0])<0;te&&O.negate();for(let Y=1;Y<=ee.length-2;Y++)[ee[Y+ +te],ee[Y+1-+te],ee[0]].forEach(re=>{s.push(re.x,re.y,re.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new jo;for(let M=0;M<s.length;M+=3){d.x=s[M+0],d.y=s[M+1],d.z=s[M+2];let g=S(d)/2/Math.PI+.5,D=T(d)/Math.PI+.5;l.push(g,1-D)}let f=new jo,h=new jo,m=new jo,y=new jo,b=new sf,v=new sf,w=new sf,O=(M,g,D,N)=>{N<0&&M.x===1&&(l[g]=M.x-1),D.x===0&&D.z===0&&(l[g]=N/2/Math.PI+.5)};for(let M=0,g=0;M<s.length;M+=9,g+=6){f.set(s[M+0],s[M+1],s[M+2]),h.set(s[M+3],s[M+4],s[M+5]),m.set(s[M+6],s[M+7],s[M+8]),b.set(l[g+0],l[g+1]),v.set(l[g+2],l[g+3]),w.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);O(b,g+0,f,D),O(v,g+2,h,D),O(w,g+4,m,D)}for(let M=0;M<l.length;M+=6){let g=l[M+0],D=l[M+2],N=l[M+4],I=Math.max(g,D,N),E=Math.min(g,D,N);I>.9&&E<.1&&(g<.2&&(l[M+0]+=1),D<.2&&(l[M+2]+=1),N<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function T(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(t){return new Si(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as EI}from"three";var T0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new tl(t*.5,n,a):new EI(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"DodecahedronGeometry"}})}},tl=class extends Si{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,a=[-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,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],s=[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(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new tl(t.radius,t.corner,t.cornerSides)}};import{Plane as UI,Shape as F0,Vector2 as Uo,Vector3 as kI,MathUtils as hf,LineCurve as mf,QuadraticBezierCurve as j0,CubicBezierCurve as wu}from"three";import{CubicBezierCurve as bu,EllipseCurve as DI,LineCurve as vu,LineCurve3 as _I,MathUtils as LI,QuadraticBezierCurve as cf,SplineCurve as RI,Vector2 as qt,Vector3 as M0}from"three";var rl=1e-12,Ta=class{constructor(t){this.position=new qt;this.startPosition=new qt;this.uuid=LI.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Ta(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ca=class extends Ta{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ca(this.parent).copy(this)}},jr=class extends Ta{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ca(this),new Ca(this))}static create(e,r){let o=new jr(e,new qt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new jr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new qt,r=new qt){let[o,n]=this.computeTangents();return o&&n&&(C0(o,e),C0(n,r)),[e,r]}computeTangent(e=new qt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new qt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function C0(i,t=new qt){let e=i.length();return t.set(-i.y/e,i.x/e)}var uf=i=>i,Aa=new qt,Su=new qt,BI=new qt,VI=new qt,zI=new qt,GI=new qt,I0=new M0,N0=new M0;function E0(i){let t=new qt;t.addVectors(i.v0,Aa.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new qt;return e.addVectors(i.v2,Su.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new bu(i.v0,t,e,i.v2)}function ol(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function FI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function jI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function df(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function D0(i,t,e){return A0(i,t)&&A0(t,e)&&lf(i.position,t.position,e.position)}function lf(i,t,e){return Aa.copy(t).sub(i).cross(Su.copy(e).sub(i))===0}function _0(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),a=(i.y+t.y)/2,s=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(s+l,a+c),o.set(s-l,a-c),[r,o]}function L0(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function R0(i,t,e,r,o,n){let a=t.x-i.x,s=t.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return df(t,i,e)>Math.PI&&(u*=-1),ol(c,s)?p=(s+c)*(r/u-.5)*8/3/(a-l):p=(a+l)*(r/u-.5)*8/3/(c-s),o.set(t.x-p*s,t.y+p*a),n.set(e.x+p*c,e.y-p*l),[o,n]}function pf(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function A0(i,t){return lf(i.position,i.controls[1].position,t.position)&&lf(i.position,t.controls[0].position,t.position)}function B0(i,t,e,r,o=.5){let n=Aa.subVectors(t,i).multiplyScalar(o).add(i),a=Su.subVectors(e,t).multiplyScalar(o).add(t),s=BI.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=VI.subVectors(a,n).multiplyScalar(o).add(n),u=zI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=GI.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,r.x,r.y]}function V0(i,t,e=12,r=!0){let o=N0.set(0,0,0),n,a=0,s=[];for(let l=0;l<t.length;l++){let c=uf(t[l]),u=Aa,p=wi(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof bu||c instanceof cf||c instanceof vu){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),n!==void 0&&jI(n,o))continue;n===void 0&&(n=I0),n.copy(o),i.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),i}function z0(i,t,e,r=12,o=!0){let n=N0.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=uf(t[l]),p=Aa,d=wi(u,r);s.push(d);for(let f=0;f<=d;f++)if(u instanceof bu||u instanceof cf||u instanceof vu){if(u.getPoint(f/d,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=I0:(i.setXYZ(a,c.x,c.y,c.z),a++,i.setXYZ(a,n.x,n.y,n.z),a++),c.copy(n)}}return o&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),s}function ff(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let a=i[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=wi(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=wi(a.curveAfter,t)),r.push(s)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=wi(i[0].roundedCurveCorner,t)*.5),r}function wi(i,t=12){return i&&i instanceof DI?t*2:i&&(i instanceof vu||i instanceof _I)?1:i&&i instanceof RI?t*i.points.length:t}function G0(i,t,e=12,r=!0){let o,n=0;for(let a=0;a<t.length;a++){let s=uf(t[a]),l=wi(s,e),c=Aa;for(let u=0;u<=l;u++)if(s instanceof bu||s instanceof cf||s instanceof vu){if(s.getPoint(u/l,c),o!==void 0&&FI(o,c,rl))continue;o===void 0&&(o=Su),o.copy(c),i.push(c.x,c.y),n++}}return ol(i[0],i[i.length-2],rl)&&ol(i[1],i[i.length-1],rl)&&(i.pop(),i.pop()),r&&n>1&&!(ol(i[n-1],i[1],rl)&&ol(i[n-2],i[0],rl))&&(i.push(i[0],i[1]),n++),i}var yf=new Uo,HI=new Uo,WI=new Uo,qI=new Uo,$I=new Uo,XI=new Uo,Ue=class extends F0{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new UI(new kI(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=hf.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ue;return n.isClosed=e.isClosed,n.points=e.points.map(a=>jr.create(a.id,a.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(a=>Ue.createFromState(a)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=yf.set(e,r);for(let n=0,a=this.points.length;n<a;n++){let s=this.points[n];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let n=0,a=this.shapeHoles.length;n<a;n++)this.shapeHoles[n].applyScale(e,r);this._update()}createPoint(e,r=0,o=hf.generateUUID()){let n;e instanceof Uo?n=e:n=new Uo(e,r);let a=new jr(o,n);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return V0(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ff(this.points,e,!1),this.roundedCurveDivisions=ff(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return z0(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),G0(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=wi(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,r,o){let n=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(pf(n,a)){let p=n.position.distanceTo(a.position);return n.position.distanceTo(yf.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(r-c)/l}dispose(){}_applyCurveForPoint(e,r){pf(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(r===0)this.moveTo(n.position.x,n.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(n,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,n=this.points.length;o<n;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&D0(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),b=Math.min(c,m*.499),v=Math.min(c,y*.499),w=Math.min(b,v),O=1-w/m,S=w/y,T=p.getPointAt(O,yf),M=d.getPointAt(S,HI);this._subSplitCurve(p,f,O,T,void 0),this._subSplitCurve(d,h,S,void 0,M);let g;if(this.useCubicForRoundedCorners){let D=df(T,a.position,M)/2,N=Math.tan(D)*T.distanceTo(a.position),[I,E]=_0(T,M,N,WI,qI),_=L0(I,E,a.position),[L,V]=R0(_,T,M,N,$I,XI);g=new wu(T.clone(),L.clone(),V.clone(),M.clone())}else g=new j0(T.clone(),a.position.clone(),M.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+r,0,g),r++}}}}_subSplitCurve(e,r,o,n,a){if(e instanceof mf)n!==void 0&&r.v2.copy(n),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,c=s.getUtoTmapping(o,0),u=B0(s.v0,s.v1,s.v2,s.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new Ue(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,a=e.points[n+0],s=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],p=e.points[n+5],d=e.points[n+6],f=new jr(hf.generateUUID(),new Uo(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,p),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ue;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof wu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},n=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof j0&&(a[l]=E0(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],f=l>0?a[l-1]:null,h;d instanceof wu?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof mf&&(h=this.createPoint(d.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],p=!1;return u instanceof wu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof mf&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=n(e.curves),e instanceof F0&&(this.shapeHoles=e.holes.map(a=>{let s=new Ue;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let n=this.getPointByUuid(e)?.controls[0];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let n=this.getPointByUuid(e)?.controls[1];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}};var xf=Math.PI*2;function gf({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function YI(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),a=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+a*e,y:a-n*e},{x:n,y:a}]}function U0(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function KI(i,t,e,r,o,n,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(n,2),d=Math.pow(a,2),f=Math.pow(s,2),h=u*p-u*f-p*d;h<0&&(h=0),h/=u*f+p*d,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/n*s,y=h*-n/o*a,b=m+(i+e)/2,v=y+(t+r)/2,w=(a-m)/o,O=(s-y)/n,S=(-a-m)/o,T=(-s-y)/n,M=U0(1,0,w,O),g=U0(w,O,S,T);return!c&&g>0&&(g-=xf),c&&g<0&&(g+=xf),{centerx:b,centery:v,ang1:M,ang2:g}}function k0({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let d=KI(i,t,e,r,o,n,c,u,a,s),{ang1:f,ang2:h}=d,{centerx:m,centery:y}=d,b=Math.abs(h)/(xf/4);Math.abs(1-b)<1e-7&&(b=1);let v=Math.max(Math.ceil(b),1);h/=v;for(let w=0;w<v;w++)l.push(YI(f,h)),f+=h;return l.map(w=>{let{x:O,y:S}=gf(w[0],o,n,m,y),{x:T,y:M}=gf(w[1],o,n,m,y),{x:g,y:D}=gf(w[2],o,n,m,y);return{x1:O,y1:S,x2:T,y2:M,x:g,y:D}})}import{BufferAttribute as Au,BufferGeometry as s3}from"three";var je;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(je||(je={}));var lt;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(lt||(lt={}));function Pe(i,t){if(!i)throw t||"Assertion Failed!"}var ve=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){Pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){Pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){Pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){Pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var a,s,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(a=i.edgeEval(t,r,e),s=i.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,e.s)):(a=i.edgeSign(t,r,e),s=-i.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(a=i.transEval(t,r,e),s=i.transEval(r,e,o),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,e.t)):(a=i.transSign(t,r,e),s=-i.transSign(t,o,e),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,o.t)):n.t=(r.t+e.t)/2},i}(),il=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),Pu=function(){function i(t){this.side=t,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(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),Ma=function(){function i(){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 i}(),H0=function(){function i(){var t=new Ma,e=new il,r=new Pu(0),o=new Pu(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new Pu(0),r=new Pu(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;Pe(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;Pe(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.makeEdge=function(){var t=new Ma,e=new Ma,r=new il,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new Ma;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var a=new il;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new il;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Ma;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var a=new il;this.makeFace_(a,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ve.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,a,s,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){Pe(o.prev===n),l=o.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(Pe(o.prev===n&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){Pe(a.prev===s),l=a.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(Pe(a.prev===s&&a.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),W0=function(){function i(){this.handle=null}return i}(),q0=function(){function i(){this.key=null,this.node=0}return i}(),QI=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new W0,this.handles[r]=new q0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,Pe(a<=this.max),n=e[a].handle,a>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t>>1,n=e[a].handle,a===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new W0;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new q0}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;Pe(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),bf=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),$0=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),ZI=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new $0,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new $0;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),JI=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,a=r.eUp;if(n.Dst===o)return a.Dst===o?ve.vertLeq(n.Org,a.Org)?ve.edgeSign(a.Dst,n.Org,a.Org)<=0:ve.edgeSign(n.Dst,a.Org,n.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(n.Dst,o,n.Org)>=0;var s=ve.edgeEval(n.Dst,o,n.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){Pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new bf;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case je.ODD:return(e&1)!==0;case je.NONZERO:return e!==0;case je.POSITIVE:return e>0;case je.NEGATIVE:return e<0;case je.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,n=i.regionBelow(a),o=n.eUp,o.Org!=s.Org){if(!n.fixUpperEdge){i.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),i.finishRegion(t,a),s=n.eUp,a=n}return s},i.addRightEdges=function(t,e,r,o,n,a){var s,l,c,u,p=!0;c=r;do Pe(ve.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,u=n;s=i.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=i.isWindingInside(t,s.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),n=ve.vertL1dist(r,t),a=.5*n/(o+n),s=.5*o/(o+n);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,a)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ve.vertLeq(o.Org,n.Org)){if(ve.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ve.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ve.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a;if(Pe(!ve.vertEq(o.Dst,n.Dst)),ve.vertLeq(o.Dst,n.Dst)){if(ve.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),a.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a=o.Org,s=n.Org,l=o.Dst,c=n.Dst,u,p,d=new Ma,f,h;if(Pe(!ve.vertEq(c,l)),Pe(ve.edgeSign(l,t.event,a)<=0),Pe(ve.edgeSign(c,t.event,s)>=0),Pe(a!==t.event&&s!==t.event),Pe(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return i.debugEvent(t),ve.intersect(l,a,c,s,d),Pe(Math.min(a.t,l.t)<=d.t),Pe(d.t<=Math.max(s.t,c.t)),Pe(Math.min(c.s,l.s)<=d.s),Pe(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(i.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,d)>=0||!ve.vertEq(c,t.event)&&ve.edgeSign(c,t.event,d)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),h=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,d)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ve.edgeSign(c,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,a,l,s,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,a=i.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&i.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(n.Oprev,s),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),a),c=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,a,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){Pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}Pe(!1),e=i.topRightRegion(e),l=i.regionBelow(e),a=l.eUp.Sym,n=s=a.Onext,l.fixUpperEdge&&(Pe(n!==a),i.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,a.Onext,s,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,a,s,l,c=new bf;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);Pe(o!==null);var n=i.regionBelow(o),a=n.eUp,s=i.finishLeftRegions(t,n,null);s.Onext===a?i.connectRightVertex(t,o,s):i.addRightEdges(t,o,s.Onext,a,a,!0)},i.addSentinel=function(t,e,r,o){var n=new bf,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,n.eUp=a,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new ZI(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;i.addSentinel(t,o,n,a),i.addSentinel(t,o,n,s)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++r===1)),Pe(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new QI(n,ve.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,Pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ve.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),e3=function(){function i(){this.mesh=new H0,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=je.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 i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)n=e.coords[y],c[y]=n,h[y]=e,l[y]=n,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)n=e.coords[b],n<c[b]&&(c[b]=n,h[b]=e),n>l[b]&&(l[b]=n,f[b]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[v],o=f[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,t[0]=d[0],t[1]=d[1],t[2]=d[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ve.edgeGoesRight(r.Lprev)||ve.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=s,s++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===lt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[d++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1;if(e===lt.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var h=l;h<r;++h)this.elements[d++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[u++]=n,this.elements[u++]=a,n+=a}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new H0),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,a){if(t===void 0&&(t=je.ODD),e===void 0&&(e=lt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),JI.computeInterior(this,a);var s=this.mesh;return e===lt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===lt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},i}();function Ur(i){var t=i.windingRule,e=t===void 0?je.ODD:t,r=i.elementType,o=r===void 0?lt.POLYGONS:r,n=i.polySize,a=n===void 0?3:n,s=i.vertexSize,l=s===void 0?2:s,c=i.normal,u=c===void 0?[0,0,1]:c,p=i.contours,d=p===void 0?[]:p,f=i.strict,h=f===void 0?!0:f,m=i.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new e3;i.edgeCreateCallback&&(b.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(b.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<d.length;v++)b.addContour(l||2,d[v]);return b.tesselate(e,o,a,l,u,h),{vertices:b.vertices,vertexIndices:b.vertexIndices,vertexCount:b.vertexCount,elements:b.elements,elementCount:b.elementCount,mesh:y?b.mesh:void 0}}}var Tq=je.ODD,Cq=je.NONZERO,Aq=je.POSITIVE,Mq=je.NEGATIVE,Iq=je.ABS_GEQ_TWO,Nq=lt.POLYGONS,Eq=lt.CONNECTED_POLYGONS,Dq=lt.BOUNDARY_CONTOURS;import{Box2 as i3,BufferAttribute as Cu,BufferGeometry as n3,Vector2 as a3}from"three";var Ou=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Ou.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Ou.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*n,3*t);a+=3*t;let l=new Float32Array(o,a*n,3*t);a+=3*t;let c=new Float32Array(o,a*n,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},nl=Ou;nl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var al=class{constructor(t=[],e=(r,o)=>r<o?-1:r>o?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(this.length===0)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,o=e[t];for(;t>0;){let n=t-1>>1,a=e[n];if(r(o,a)>=0)break;e[t]=a,t=n}e[t]=o}_down(t){let{data:e,compare:r}=this,o=this.length>>1,n=e[t];for(;t<o;){let a=(t<<1)+1,s=a+1;if(s<this.length&&r(e[s],e[a])<0&&(a=s),r(e[a],n)>=0)break;e[t]=e[a],t=a}e[t]=n}};function vf(i,t,e=1,r=!1){let o=1/0,n=1/0,a=-1/0,s=-1/0;for(let[v,w]of i[0])v<o&&(o=v),w<n&&(n=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-n,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,n];return v.distance=0,v.distance}let p=new al([],(v,w)=>w.max-v.max),d=r3(i),f=new Tu(o+l/2,n+c/2,0,i);f.d>d.d&&(d=f);let h=2;function m(v,w,O){let S=new Tu(v,w,O,i);if(h++,S.max>d.d+e&&p.push(S),S.d>d.d&&(d=S,r&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${h} probes`),d.d>t))return t}let y=u/2;for(let v=o;v<a;v+=u)for(let w=n;w<s;w+=u)m(v+y,w+y,y);for(;p.length;){let{max:v,x:w,y:O,h:S}=p.pop();if(v-d.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}r&&console.log(`num probes: ${h}
3
+ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function Tu(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=t3(i,t,r),this.max=this.d+this.h*Math.SQRT2}function t3(i,t,e){let r=!1,o=1/0;for(let n of e)for(let a=0,s=n.length,l=s-1;a<s;l=a++){let c=n[a],u=n[l];c[1]>t!=u[1]>t&&i<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,o3(i,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function r3(i){let t=0,e=0,r=0,o=i[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],p=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*p,r+=(c[1]+u[1])*p,t+=p*3}let n=new Tu(e/t,r/t,0,i);return t===0||n.d<0?new Tu(o[0][0],o[0][1],0,i):n}function o3(i,t,e,r){let o=e[0],n=e[1],a=r[0]-o,s=r[1]-n;if(a!==0||s!==0){let l=((i-o)*a+(t-n)*s)/(a*a+s*s);l>1?(o=r[0],n=r[1]):l>0&&(o+=a*l,n+=s*l)}return a=i-o,s=t-n,a*a+s*s}var sl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},wf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Pf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Sf=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),Pi=class extends n3{constructor(e,r,o=0,n=12,a=3,s=je.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=n,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],n),u=this._shape.shapeHoles.map(I=>{let E=I.extractShapePointsToFlatArray([],n),_=[];for(let L=E.length-1;L>=1;L-=2){let V=E[L-1],U=E[L-0];_.push(V,U)}return _}),p=[],d=[];for(let I=0;I<c.length;I+=2)d.push([c[I],c[I+1]]);p.push(d);for(let I=0;I<u.length;I++){let E=u[I],_=[];for(let L=0;L<E.length;L+=2)_.push([E[L],E[L+1]]);p.push(_)}let f;e.isText?f=new i3().setFromPoints(e.points.map(E=>E.position)).getSize(new a3).length()*.1:p[0].length===0?f=o:o>0?f=vf(p,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Ur({windingRule:s,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=sl}let m;try{m=Ur({windingRule:je.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=wf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let E=m.elements[I],_=I%2===0?h.vertexCount:0;h.elements.push(E+_)}for(let I=0;I<m.vertexIndices.length;I++){let E=m.vertexIndices[I],_=h.vertexCount;h.vertexIndices.push(E+_)}for(let I=0;I<m.vertices.length;I++){let E=m.vertices[I];h.vertices.push(E)}}let b=1/0,v=-1/0,w=1/0,O=-1/0;for(let I=0,E=h.vertexCount;I<E;I++){let _=I*2,L=h.vertices[_+0],V=h.vertices[_+1];L<b&&(b=L),L>v&&(v=L),V<w&&(w=V),V>O&&(O=V)}this._minX=b,this._minY=w,this._width=v-b,this._height=O-w,this._buffer=new nl(this._computeBufferEstimatedSize(h));let S=[],T=[];for(let I=h.elementCount-1;I>=0;I--){let E=I>=y,_=I*2,L=h.elements[_+0],V=h.elements[_+1],U=L+V,B={start:L,count:V,normals:[],continuous:[],concave:[]},q=L,j=U-1,F=L+1,H=this._shape.roundedCurves.length;do{let re=q-L,K=h.vertices[j*2+0],Z=h.vertices[j*2+1],Q=h.vertices[q*2+0],$=h.vertices[q*2+1],de=h.vertices[F*2+0],le=h.vertices[F*2+1],ie=Q-K,ce=$-Z,ae=Math.sqrt(ie*ie+ce*ce);ie/=ae,ce/=ae;let me=Q-de,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,B.normals[re*2+0]=-fe,B.normals[re*2+1]=me,B.concave[re]=ie*fe-ce*me>0;let be=h.vertexIndices[q];if(Array.isArray(be))B.continuous[re]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(be-1,!0);if(C>0&&C<1)B.continuous[re]=!0;else{let ne=C===1?ye+1:ye-1;ne=(ne+H)%H;let De=C===1?0:1,ze=this._shape.roundedCurves[ye].getTangent(C),Le=this._shape.roundedCurves[ne].getTangent(De);B.continuous[re]=ze.dot(Le)>.95}}E&&(B.normals[re*2+0]*=-1,B.normals[re*2+1]*=-1),[j,q,F]=[q,F,F+1],F>=U&&(F-=V)}while(F!==L+1);let W=[];W.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(L*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((re,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(L*2,U*2)});let ee=0;for(let re=1;re<=this._bevelSegments;re++){let K=re/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],de=[],le=[],ie=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=h.vertices[B.start*2+me+0],be=h.vertices[B.start*2+me+1],ye=-B.normals[fe+0]*Z,C=-B.normals[fe+1]*Z,ne=-B.normals[me+0]*Z,De=-B.normals[me+1]*Z;if(B.concave[ae]||!B.concave[ae]&&E){let ze=Math.atan2(C,ye),Le=Math.atan2(De,ne);Le>ze&&(Le-=Math.PI*2);let Oe=Le-ze;if(B.continuous[ae]||E){let Pt=ze+Oe/2,Ie=Math.cos(Pt)*Z,St=Math.sin(Pt)*Z;Q[2*ie+0]=he+Ie*(E?-1:1),Q[2*ie+1]=be+St*(E?-1:1),le[ie]=ae,ie++}else{let Pt=Math.max(1,Math.floor(n/4*Math.abs(Oe)/Math.PI));for(let Ie=0;Ie<=Pt;Ie++){let St=ze+Oe*(Ie/Pt),Ot=Math.cos(St)*Z,qi=Math.sin(St)*Z;Q[2*ie+0]=he+Ot,Q[2*ie+1]=be+qi,le[ie]=ae,ie++}}}else Q[2*ie+0]=he+ye,Q[2*ie+1]=be+C,le[ie]=ae,$[ae]=ie,ie++,Q[2*ie+0]=he,Q[2*ie+1]=be,le[ie]=ae,ie++,Q[2*ie+0]=he+ne,Q[2*ie+1]=be+De,le[ie]=ae,de[ae]=ie,ie++}let ce=Ur({windingRule:je.POSITIVE,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,he=le[fe],be=le[(fe+1)%le.length];ae.idx=[he,be],ae.Sym.idx=[be,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${re}'th loop`);if(!ce.vertexCount){let ae=(re-1)/this._bevelSegments*Math.PI/2;ee=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,fe]=ce.vertexIndices[ae];if(me===fe)continue;let he=fe;fe<me&&(he+=V);for(let be=me;be<he;be++){let ye=be%V,C=(be+1)%V;if(!B.continuous[ye]||!B.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}W.push({bevelI:re,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let te=(re,K,Z)=>{let Q=0,$=re.boundary.vertexIndices.length;for(;Q<$&&Z(re.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},Y=S.length;for(let re=1;re<W.length;re++){let K=W[re-1],Z=W[re],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let de=B.concave.length,le=0,ie=Sf(le,V);for(;!K.boundary.vertexIndices.filter(ie).length||!Z.boundary.vertexIndices.filter(ie).length;)le++,ie=Sf(le,V);let ce=K.boundary.vertexIndices.findIndex(ie),ae=Z.boundary.vertexIndices.findIndex(ie);do ce=(ce+1)%Q;while(ie(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ie(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(B,K,(ce-1+Q)%Q,void 0,fe),be=this._buildBevelVert(B,Z,(ae-1+$)%$,void 0,fe),ye=he,C=be,ne,De,ze=!1;do{fe=(le||de)/de,ie=Sf(le,V);let Le=te(K,ce,ie),Oe=te(Z,ae,ie),Pt=ze;if(ze=!1,Le&&!Oe){for(let Ie=0;Ie<Le;Ie++)ne=this._buildBevelVert(B,K,(ce+Ie)%Q,Ie/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne;ze=!0}else if(!Le&&Oe)for(let Ie=0;Ie<Oe;Ie++)De=this._buildBevelVert(B,Z,(ae+Ie)%$,Ie/(Oe-1),fe),S.push(C.topN,ye.topP,De.topP),l===!1&&S.push(ye.bottomP,C.bottomN,De.bottomP),C=De;else if(Le&&Oe)if(ne=this._buildBevelVert(B,K,ce,0,fe),De=this._buildBevelVert(B,Z,ae,0,fe),Pt?(S.push(ye.topN,De.topP,C.topN),S.push(ye.topN,ne.topP,De.topP),l===!1&&(S.push(De.bottomP,ye.bottomN,C.bottomN),S.push(De.bottomP,ne.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ne.topP),S.push(C.topN,ne.topP,De.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,De.bottomP))),ye=ne,C=De,Le===Oe)for(let Ie=1;Ie<Le;Ie++)ne=this._buildBevelVert(B,K,(ce+Ie)%Q,Ie/(Le-1),fe),De=this._buildBevelVert(B,Z,(ae+Ie)%$,Ie/(Oe-1),fe),S.push(ye.topN,ne.topP,C.topN),S.push(C.topN,ne.topP,De.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,De.bottomP)),ye=ne,C=De;else if(Le>Oe){let Ie=Le/Oe,St=0;for(let Ot=1;Ot<Le;Ot++)ne=this._buildBevelVert(B,K,(ce+Ot)%Q,Ot/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne,Ot>(St+1)*Ie&&(St++,De=this._buildBevelVert(B,Z,(ae+St)%$,St/(Oe-1),fe),S.push(C.topN,ne.topP,De.topP),l===!1&&S.push(ne.bottomP,C.bottomN,De.bottomP),C=De)}else{let Ie=Oe/Le,St=0;for(let Ot=1;Ot<Oe;Ot++)De=this._buildBevelVert(B,Z,(ae+Ot)%$,Ot/(Oe-1),fe),S.push(C.topN,ne.topP,De.topP),l===!1&&S.push(ne.bottomP,C.bottomN,De.bottomP),C=De,Ot>(St+1)*Ie&&(St++,ne=this._buildBevelVert(B,K,(ce+St)%Q,St/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne)}ce=(ce+Le)%Q,ae=(ae+Oe)%$,le=(le+1)%de}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(W,B,S),E){let re=[];for(let K=S.length-1;K>=Y+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];re.push($,Q,Z)}S.splice(Y,S.length-Y,...re)}if(E){let re=[];for(let K=W[W.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=W[W.length-1].boundary.vertices[K-1],Q=W[W.length-1].boundary.vertices[K-0];re.push(Z,Q)}T.push(re)}if(!E){let re=W[W.length-1],K;try{K=Ur({windingRule:W.length>1?je.POSITIVE:je.ODD,elementType:lt.POLYGONS,vertexSize:2,strict:!0,contours:[re.insetPoints,...T]})}catch{K=Pf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],ee),$=this._buildSurfaceVert(K,K.elements[Z+1],ee),de=this._buildSurfaceVert(K,K.elements[Z+2],ee);S.push(Q.top,$.top,de.top),l===!1&&S.push(de.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let M=new Cu(Uint32Array.from(S),1),g=new Cu(this._buffer.positions,3),D=new Cu(this._buffer.normals,3),N=new Cu(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,N.needsUpdate=!0,M.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",N),this.setIndex(M)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,r,o){let n=r.toString();if(n in this.vertexCache)return this.vertexCache[n];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),p=u*3,d=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[n]=f,f}_buildBevelVert(e,r,o,n=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],u,p,d,f;l!==c?(p=l,u=c,f=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,f=e.concave[u]&&r.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,b=u*2,v=p*2,w=r.boundary.vertices[y+0],O=r.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(w-this._minX)/this._width,M=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),M=1);let g=e.normals[b+0],D=e.normals[b+1],N=e.normals[v+0],I=e.normals[v+1];if(f){let U=N-g,B=I-D;g=g+U*(1-n),D=D+B*(1-n);let q=Math.sqrt(g*g+D*D);g/=q,D/=q}let E=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=E*3,L=E*2,V={i:o,fi:u,topP:E+0,topN:E+0,bottomP:E+1,bottomN:E+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=T,this._buffer.uvs[L+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=M,this._buffer.uvs[L+3]=T),d||(this.forPathBevel?(E+=1,_+=3,L+=2):(E+=2,_+=6,L+=4),V.topP=E+0,V.bottomP=E+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*h,this._buffer.normals[_+1]=I*h,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=T,this._buffer.uvs[L+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*h,this._buffer.normals[_+4]=I*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=M,this._buffer.uvs[L+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new Pi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=No(this.userData),e}};var Ia=class extends s3{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=je.ODD;this.elementType=lt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:je.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=n.length/2;h<m;h++){let y=h*2,b=n[y+0],v=n[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=b,p=v,!l&&!c)break}if(!l&&!c)try{s=Ur({contours:[n,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=sl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Au(new Float32Array(d*3),3),this._normalAttribute=new Au(new Float32Array(d*3),3),this._uvAttribute=new Au(new Float32Array(d*2),2),this._indexAttribute=new Au(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1];M<h&&(h=M),M>m&&(m=M),g<y&&(y=g),g>b&&(b=g)}let v=m-h,w=b-y;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1],D=(M-h)/v,N=(g-y)/w;this._positionAttribute.setXYZ(O,M,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,N)}for(let O=0,S=f;O<S;O++){let T=O*3,M=s.elements[T+0],g=s.elements[T+1],D=s.elements[T+2];this._indexAttribute.setX(T+0,M),this._indexAttribute.setX(T+1,g),this._indexAttribute.setX(T+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Ia(this._shape,this._curveSegments);return e.userData=No(this.userData),e}};var Na=class extends Pi{constructor(e,r,o=0,n=12,a=3,s=je.ODD){super(e,r,o,n,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Na(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=No(this.userData),e}};var tr=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:je.ODD},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=i.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ue?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Ue(r,o).fromJSON(a),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&a.update());let l=a??new Ue(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:s}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n,windingRule:a}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Ia(i.shape,o,{windingRule:a}):s=new Na(i.shape,t,e,o,r,a),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{BufferGeometry as l3,Float32BufferAttribute as c3,MathUtils as Of,Vector2 as Y0}from"three";var K0=Math.PI*2,Da=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return e.angle=Of.clamp(e.angle,0,360),{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,p=e*.5,d=u3(c,u,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let f;return o===0?(f=new l3,f.setAttribute("position",new c3([],3))):f=tr.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...i,type:"EllipseGeometry"}})}};function u3(i,t,e,r,o,n){if(r>=K0)return o>30||o%4===0?(p3(i,t,e,n),Math.round(o/4)):X0(i,r,o,t,e,n);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},c=k0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?d3(i,a.x,a.y,c,o,t,e,n):X0(i,r,o,t,e,n)}function d3(i,t,e,r,o,n,a,s){let l=Math.round(o/r.length);i.addPoint(Ea(t,e));for(let c=0,u=r.length;c<u;c++){let p=r[c],d=i.points[c],f=Ea(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),i.addPoint(f)}return s>0?Q0(i,n,a,s):i.addPoint(Ea(0,0)),l}function X0(i,t,e,r,o,n){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*r,u=Math.cos(l)*o;i.addPoint(Ea(c,u))}return t<K0?n>0?Q0(i,r,o,n):i.addPoint(Ea(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Z0(i,r,o,n)),1}function p3(i,t,e,r=0,o=0,n=0){let a=.5522847498,s=t*a,l=e*a;i.addPoint(Mu(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Mu(o,n+e,o-s,n+e,o+s,n+e)),i.addPoint(Mu(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Mu(o,n-e,o+s,n-e,o-s,n-e)),r>0&&Z0(i,t,e,r)}function Ea(i,t){return new jr(Of.generateUUID(),new Y0(i,t))}function Mu(i,t,e,r,o,n){let a=Ea(i,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,n),a}function Q0(i,t,e,r){J0(i,t,e,r).forEach(n=>i.addPoint(n))}function Z0(i,t,e,r){let o=J0(i,t,e,r),n=new Ue;o.forEach(a=>n.addPoint(a)),n.isClosed=!0,i.shapeHoles.push(n)}function J0(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),a=new Y0(o/t,n/e),s=i.points.map(l=>{let c=l.clone();return c.uuid=Of.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as f3,Float32BufferAttribute as Tf,Uint32BufferAttribute as h3,Vector3 as eb}from"three";var tb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=i.parameters,d=new ll(!1,t,e,r,o,n,a,s,l,c,u,p);return Object.assign(d,{userData:{...i,type:"HelixGeometry"}})}},Cf=new h3([0,0,0],1),ll=class extends f3{constructor(t=!0,e=1,r=1,o=1,n=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let f=t&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new eb,m=new eb,y=h(),b=h(),v=h(),w,O,S,T,M,g,D,N,I=h(),E=h(),_=h(),L=h(),V=h(),U=h(),B=h(),q=h(),j=r-2*l+.001,F=j/a,H=Math.ceil(s*a),W=H+1,ee=j/H,te=-j/2,Y=u+1,re=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,de=0,le=2,ie=d*le+le,ce=Y*ie/le,ae=ce+Y*W,me=Math.max(0,Y*(W+ie)),[fe,he,be]=[3,3,2].map(nt=>Array(me*nt).fill(0)),ye=[],C=n-l;function ne(nt,Qe){let Dr=Math.PI/2;g=Qe*ee,N=2*Math.PI*(g%F)/F+Dr,g+=te,D=Math.sin(N)*C,M=Math.cos(N)*C,t?nt.set(M,D,g):nt.set(M,g,D)}ne(m,-1e-10),ne(y,0),I.copy(m),ne(m,1);let De=m.distanceTo(y),ze=f?0:$+Q,Le=De*H+2*ze,Oe=Q,Pt=Le-ze;for(let nt=0;nt<=H;nt++){ne(b,nt),q.subVectors(b,I).normalize(),I.copy(b),U.copy(b).setComponent(+t+1,0).normalize(),B.crossVectors(q,U).normalize();let Qe=nt===0,Dr=nt===H,qd=Qe?3*Math.PI/2:K,$d=Qe?Oe:Pt,Hl=Qe?Y:ae,$i=Qe?0:me-Y,dt=q.clone().multiplyScalar(Qe?-$:$).add(b),Xd=q.clone().multiplyScalar(Qe?-1:1).normalize();for(let gr=0;gr<Y;gr++){let Es=gr*re;if(E.addVectors(m.copy(U).multiplyScalar(l*Math.cos(Es)),y.copy(B).multiplyScalar(l*Math.sin(Es))),_.copy(E).normalize(),Qe||Dr){f||(de=$i+gr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=dt.getComponent(Wt),he[de*3+Wt]=Xd.getComponent(Wt)}),be[de*2]=+Dr,be[de*2+1]=gr/u),y.copy(_).multiplyScalar(Q),v.addVectors(b,y);for(let Wt=0;Wt<d;Wt++){let Xi=Wt*K+qd;L.addVectors(m.copy(q).multiplyScalar($*Math.sin(Xi)),y.copy(_).multiplyScalar($*Math.cos(Xi))),V.copy(L).normalize(),y.addVectors(v,L),L.normalize(),de=Hl+Wt*Y+gr,[0,1,2].forEach(Nn=>{fe[de*3+Nn]=y.getComponent(Nn),he[de*3+Nn]=V.getComponent(Nn)});let Wl=+Qe+Math.sin(Xi);be[de*2]=($d+$*Wl)/Le,be[de*2+1]=gr/u}}y.addVectors(b,E),de=ce+nt*Y+gr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=y.getComponent(Wt),he[de*3+Wt]=_.getComponent(Wt)}),be[de*2]=(ze+nt*De)/Le,be[de*2+1]=gr/u}}let Ie=W+2*d+le,St=1,[Ot,qi]=[+f,Ie-1];for(let nt=Ot;nt<=qi-1;nt++){let Qe=f&&nt===qi-1;for(let Dr=0;Dr<Y-1;Dr++)w=nt*Y+Dr,O=w+1,S=(Qe?Dr:w)+Y,T=(Qe?Dr+1:O)+Y,nt===0?ye.push(O,T,S):nt===Ie-2?ye.push(w,O,S):ye.push(w,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new Tf(fe,3)),this.setAttribute("normal",new Tf(he,3)),this.setAttribute("uv",new Tf(be,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),n,a,s,l,c=6*(e-1)*t.radialSegments,u=e,p=u===e;for(let d=0;d<t.radialSegments;d++)n=u*r+d,a=n+1,s=(p?d:n)+r,l=(p?d+1:a)+r,o[c++]=n,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Cf.array=o,Cf.count=o.length,Cf}};import{IcosahedronGeometry as m3}from"three";var rb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new cl(t*.5,n,a):new m3(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"IcosahedronGeometry"}})}},cl=class extends Si{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[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],s="IcosahedronGeometry";super(n,a,s,t,e,r),this.type=s}static fromJSON(t){return new cl(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as y3,Shape as g3}from"three";var ob=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.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}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new g3;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new y3(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as db,BufferGeometryLoader as I3,Vector3 as N3,BoxGeometry as pb}from"three";import{BufferGeometry as T3,Vector2 as Nf,Vector3 as ub}from"three";import{Box3 as x3,BufferAttribute as ul,BufferGeometry as ib,Color as If,EventDispatcher as b3,Float32BufferAttribute as _a,Matrix3 as nb,Matrix4 as cb,MathUtils as v3,Object3D as S3,Sphere as w3,Vector2 as fr,Vector3 as Gt,Vector4 as P3}from"three";var uo=new cb,Af=new S3,Iu=new Gt,Oi=class extends b3{constructor(){super(),this.uuid=v3.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(t){let e=new nb().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let a=0,s=n.vertexNormals.length;a<s;a++)n.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return uo.makeRotationX(t),this.applyMatrix4(uo),this}rotateY(t){return uo.makeRotationY(t),this.applyMatrix4(uo),this}rotateZ(t){return uo.makeRotationZ(t),this.applyMatrix4(uo),this}translate(t,e,r){return uo.makeTranslation(t,e,r),this.applyMatrix4(uo),this}scale(t,e,r){return uo.makeScale(t,e,r),this.applyMatrix4(uo),this}lookAt(t){return Af.lookAt(t),Af.updateMatrix(),this.applyMatrix4(Af.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<n.count;d++)e.vertices.push(new Gt().fromBufferAttribute(n,d)),s!==void 0&&e.colors.push(new If().fromBufferAttribute(s,d));function u(d,f,h,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[h].clone()],b=a===void 0?[]:[new Gt().fromBufferAttribute(a,d),new Gt().fromBufferAttribute(a,f),new Gt().fromBufferAttribute(a,h)],v=new La(d,f,h,b,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new fr().fromBufferAttribute(l,d),new fr().fromBufferAttribute(l,f),new fr().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new fr().fromBufferAttribute(c,d),new fr().fromBufferAttribute(c,f),new fr().fromBufferAttribute(c,h)])}let p=t.groups;if(p.length>0)for(let d=0;d<p.length;d++){let f=p[d],h=f.start,m=f.count;for(let y=h,b=h+m;y<b;y+=3)r!==void 0?u(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)u(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<n.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Iu).negate(),this.translate(Iu.x,Iu.y,Iu.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new cb;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Gt,e=new Gt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=this.vertices[n.a],s=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Gt;if(t){let r=new Gt,o=new Gt;for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];r.subVectors(u,c),o.subVectors(l,c),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=n.vertexNormals;a.length===3?(a[0].copy(e[n.a]),a[1].copy(e[n.b]),a[2].copy(e[n.c])):(a[0]=e[n.a].clone(),a[1]=e[n.b].clone(),a[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,a=o.vertexNormals.length;n<a;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Oi;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Gt,u={a:new Gt,b:new Gt,c:new Gt};n.push(c),a.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new x3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new w3),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,c=t.faces,u=this.colors,p=t.colors;e!==void 0&&(o=new nb().getNormalMatrix(e));for(let d=0,f=s.length;d<f;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,f=p.length;d<f;d++)u.push(p[d].clone());for(let d=0,f=c.length;d<f;d++){let h=c[d],m,y,b=h.vertexNormals,v=h.vertexColors,w=new La(h.a+n,h.b+n,h.c+n);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=b.length;O<S;O++)m=b[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++)v.push(b[w].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let p=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,p=this.faceVertexUvs.length;u<p;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Gt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),n&&n.length===e&&(s=[]);for(let l=0;l<e;l++){let c=t[l]._id;a&&a.push(o[c]),s&&s.push(n[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],n={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,v=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,M=0;if(M=u(M,0,0),M=u(M,1,y),M=u(M,2,b),M=u(M,3,v),M=u(M,4,w),M=u(M,5,O),M=u(M,6,S),M=u(M,7,T),r.push(M),r.push(m.a,m.b,m.c),r.push(m.materialIndex),v){let g=this.faceVertexUvs[0][h];r.push(f(g[0]),f(g[1]),f(g[2]))}if(w&&r.push(p(m.normal)),O){let g=m.vertexNormals;r.push(p(g[0]),p(g[1]),p(g[2]))}if(S&&r.push(d(m.color)),T){let g=m.vertexColors;r.push(d(g[0]),d(g[1]),d(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return n[m]!==void 0||(n[m]=o.length/3,o.push(h.x,h.y,h.z)),n[m]}function d(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Oi().copy(this)}copy(t){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=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++){let S=b[w];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let n=t.morphTargets;for(let d=0,f=n.length;d<f;d++){let h={};if(h.name=n[d].name,n[d].vertices!==void 0){h.vertices=[];for(let m=0,y=n[d].vertices.length;m<y;m++)h.vertices.push(n[d].vertices[m].clone())}if(n[d].normals!==void 0){h.normals=[];for(let m=0,y=n[d].normals.length;m<y;m++)h.normals.push(n[d].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let d=0,f=a.length;d<f;d++){let h={};if(a[d].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let b=a[d].vertexNormals[m],v={};v.a=b.a.clone(),v.b=b.b.clone(),v.c=b.c.clone(),h.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)h.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=t.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=t.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Mf().fromGeometry(this),e=new ib,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Nu.call(new ul(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Nu.call(new ul(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",ab.call(new ul(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",sb.call(new ul(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",sb.call(new ul(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new _a(c.data.length*3,3);u.name=c.name,n.push(Nu.call(u,c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new _a(t.skinIndices.length*4,4);e.setAttribute("skinIndex",lb.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new _a(t.skinWeights.length*4,4);e.setAttribute("skinWeight",lb.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new ib,r=t.geometry;if(t.isPoints||t.isLine){let o=new _a(r.vertices.length*3,3),n=new _a(r.colors.length*3,3);if(e.setAttribute("position",Nu.call(o,r.vertices)),e.setAttribute("color",ab.call(n,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new _a(r.lineDistances.length,1);e.setAttribute("lineDistance",O3.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Oi.prototype.isGeometry=!0;var Mf=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(t){let e=[],r,o,n,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==n&&(n=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,c;if(l>0){c=[];for(let b=0;b<l;b++)c[b]={name:s[b].name,data:[]};this.morphTargets.position=c}let u=t.morphNormals,p=u.length,d;if(p>0){d=[];for(let b=0;b<p;b++)d[b]={name:u[b].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let v=e[b];this.vertices.push(r[v.a],r[v.b],r[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 O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(n===!0){let S=o[0][b];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new fr,new fr,new fr))}if(a===!0){let S=o[1][b];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new fr,new fr,new fr))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[b];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(h[v.a],h[v.b],h[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},La=class{constructor(t,e,r,o,n,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Gt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new If,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function O3(i){return this.array.set(i),this}function ab(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),n=new If),t[e++]=n.r,t[e++]=n.g,t[e++]=n.b}return this}function sb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),n=new fr),t[e++]=n.x,t[e++]=n.y}return this}function Nu(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),n=new Gt),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z}return this}function lb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),n=new P3),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z,t[e++]=n.w}return this}var C3=["a","b","c"];function A3(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Ef(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Df(i,t,e,r,o,n){let a=Math.min(i,t),s=Math.max(i,t),l=a+"_"+s,c;if(r.has(l))c=r.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function M3(i,t,e,r){let o,n,a;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)a=t[o],Df(a.a,a.b,i,r,a,e),Df(a.b,a.c,i,r,a,e),Df(a.c,a.a,i,r,a,e)}function Eu(i,t,e,r,o){i.push(new La(t,e,r,void 0,void 0,o))}function Ra(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Du(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var _u=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof T3?t=new Oi().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new ub,r,o,n,a,s,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;M3(l,c,d,f);let h=[],m,y,b,v,w,O,S;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new ub,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),b.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[A3(v,C3[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),b.add(e),y.newEdge=h.length,h.push(b)}let T,M,g,D,N,I,E,_=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],N=d[o].edges,r=N.length,r==3?T=3/16:r>3&&(T=3/(8*r)),M=1-r*Number(T),g=T,r<=2&&(r==2?(M=3/4,g=1/8):r==1||r==0),E=I.clone().multiplyScalar(M),e.set(0,0,0),a=0;a<r;a++)D=N[a],m=D.a!==I?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),E.add(e),_.push(E)}let L=_.concat(h),V=_.length,U,B,q,j=[],F=[],H,W,ee,te,Y=new Nf,re=new Nf,K=new Nf;for(o=0,n=c.length;o<n;o++)v=c[o],U=Number(Ef(v.a,v.b,f).newEdge)+V,B=Number(Ef(v.b,v.c,f).newEdge)+V,q=Number(Ef(v.c,v.a,f).newEdge)+V,Eu(j,U,B,q,v.materialIndex),Eu(j,v.a,U,q,v.materialIndex),Eu(j,v.b,B,U,v.materialIndex),Eu(j,v.c,q,B,v.materialIndex),p&&(H=u[o],W=H[0],ee=H[1],te=H[2],Y.set(Ra(W.x,ee.x),Ra(W.y,ee.y)),re.set(Ra(ee.x,te.x),Ra(ee.y,te.y)),K.set(Ra(W.x,te.x),Ra(W.y,te.y)),Du(F,Y,re,K),Du(F,W,Y,K),Du(F,ee,re,Y),Du(F,te,K,re));t.vertices=L,t.faces=j,p&&(t.faceVertexUvs[0]=F)}};var Mt=new N3,fb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new db().copy(new pb(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Mt),r={width:Mt.x,height:Mt.y,depth:Mt.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new db().copy(new pb(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Mt)):Mt.set(a.width,a.height,a.depth),(t!==Mt.x||e!==Mt.y||r!==Mt.z)&&n.scale(Mt.x===0?1:t/Mt.x,Mt.y===0?1:e/Mt.y,Mt.z===0?1:r/Mt.z);let s=n.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=n),n=new _u(o).modify(s).toBufferGeometry()):(s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals())}catch{s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()}return s!==void 0&&Object.assign(n,{originalGeometry:s}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new I3(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Mt);let a=100/Mt.x;Object.assign(n.parameters,{width:100,height:Mt.y*a,depth:Mt.z*a}),t(this.build(n))})}};var Lu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5,p=0,d=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,b=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=tr.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as E3,Float32BufferAttribute as _f,Vector2 as po,Vector3 as _t}from"three";var hb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=new Rf(t*.5,e,o,n,a,s,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function dl(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Lf(i,t,e,r,o,n){let a=t.clone().sub(i),s=e.clone().sub(i),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let c=a.add(s).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=a.angleTo(s);n.copy(i),n.addScaledVector(a,o/Math.sin(c)),n.addScaledVector(s,r/Math.sin(c))}}function D3(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Rf=class extends E3{constructor(t=.5,e=1,r=4,o=1,n=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,b=(r-2)*Math.PI/r,v=Math.PI-b,w=new _t(0,-f,0),O=new _t(0,f,0),S=new po(t,-f),T=new po(m,-f),M=new po(0,O.y).sub(T),g=new po(0,O.y).sub(S),D=new po(M.y,-M.x).normalize(),N=new po(g.y,-g.x).normalize(),E=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-M.angle())/2)-1e-8;a=Math.min(a,E);let _;{let F=new _t(D.x,D.y,0),H=new _t(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let L=a/Math.tan((Math.PI-M.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new _t;if(!n){c.push(w.x,w.y,w.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],W=S.clone(),ee=L/Math.cos(Math.PI/r);W.x-=ee;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,re=new po(Math.sin(Y),Math.cos(Y));dl(W,re,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let te=0;te<H.length;te++)l.push(H[te],F,H[(te+1)%H.length])}let B=[];{let F=new _t,H=new _t,W=new _t,ee=new _t,te=new _t,Y=new _t;for(let re=0;re<r;re++){let K=re/r*Math.PI*2+h,Z=(re+.5)/r*Math.PI*2+h,Q=(re+1)/r*Math.PI*2+h,$=new po(Math.sin(K),Math.cos(K)),de=new po(Math.sin(Z),Math.cos(Z)),le=new po(Math.sin(Q),Math.cos(Q));dl(S,$,H),dl(S,le,W),dl(D,de,F),Lf(O,H,W,V,V,ee),c.push(ee.x,ee.y,ee.z),Lf(H,O,W,V,L,te),c.push(te.x,te.y,te.z),Lf(W,H,O,L,V,Y),c.push(Y.x,Y.y,Y.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let ie=d++,ce=d++,ae=d++;if(l.push(ie,ce,ae),a>0){{let he=H.clone().add(W).multiplyScalar(.5),be=O.clone().sub(he).normalize(),C=w.clone().sub(he).normalize().add(be).normalize().multiplyScalar(-1),ne=Y.clone().sub(te);q(he,ne,C,M.angle())}let me,fe;{let he=new _t;dl(N,le,he);let be=Y.clone().add(ee).multiplyScalar(.5);be=D3(be,W,O);let ye=Y.clone().sub(ee);[me,fe]=q(be,ye,he,_,ee.y)}{let he=me,be=he.clone().setY(0).normalize(),ye=new _t(0,-1,0),C=be.clone().cross(ye);j(he,be,ye,C)}B.concat(fe);{let he=M.angle(),be=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new _t,ne=[];for(let ze=0;ze<s;ze++){let Le=[],Oe=Math.PI/2-be*ze/s,Pt=Math.cos(Oe),Ie=Math.sin(Oe),St=Z;for(let Ot=0;Ot<=ze;Ot++){let qi=Math.cos(St),nt=Math.sin(St);F.x=Pt*nt,F.y=Ie,F.z=Pt*qi,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),Le.push(d++),St+=Math.PI*2/ze/r}ne.push(Le)}fe.reverse(),ne.push(fe);let De=ne.length-1;for(let ze=0;ze<De;ze++){let Le=ne[ze],Oe=ne[ze+1],Pt=Le.length-1;l.push(Oe[1],Le[0],Oe[0]);for(let Ie=1;Ie<=Pt;Ie++)l.push(Le[Ie],Le[Ie-1],Oe[Ie]),l.push(Oe[Ie+1],Le[Ie],Oe[Ie])}}}}}this.setIndex(l),this.setAttribute("position",new _f(c,3)),this.setAttribute("normal",new _f(u,3)),this.setAttribute("uv",new _f(p,2));function q(F,H,W,ee,te){let Y=-ee/2,re=(Math.PI-ee)/2,K=H.clone().normalize().cross(W);F.addScaledVector(W,-a/Math.sin(re));let Z=new _t,Q=new _t,$=1,de=d,le=[];for(let ie=0;ie<=s;ie++){let ce=Y+ie/s*ee;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(W,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),te!=null){let fe=Math.max(0,Z.y-te);Z.addScaledVector(H,-fe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ie=0;ie<s;ie++)for(let ce=0;ce<$;ce++){let ae=de+ce+($+1)*ie,me=ae+($+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,W,ee){let te=Math.PI/2,Y=g.angle()-te,re=[],K=new _t,Z=new _t;for(let $=0;$<=s;$++){let de=[],le=$/s;for(let ie=0;ie<=$;ie++){let ae=(($?ie/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(Y)*me),be=(te+he)*le,ye=Math.cos(be),C=Math.sin(be);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(W,ye),K.addScaledVector(ee,C*fe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),de.push(d++)}re.push(de)}let Q=re.length-1;for(let $=0;$<Q;$++){let de=re[$],le=re[$+1],ie=de.length-1;l.push(de[0],le[1],le[0]);for(let ce=1;ce<=ie;ce++)l.push(de[ce-1],de[ce],le[ce]),l.push(de[ce],le[ce+1],le[ce])}}}};var Ba=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,S,T){return S>e&&T>r?Math.min(O*e/S,O*r/T):S>e?O*e/S:T>r?O*r/T:O}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=p.x,y=p.y,b=u.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,b)),t.addPoint(t.createPoint(h,b)),t.isClosed=!0;let v=!0;for(let O=0,S=t.points.length;O<S;O++)t.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=n!==1,t.update();let w=tr.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...i,type:"RectangleGeometry"}})}};import{BufferGeometry as _3,Float32BufferAttribute as L3,MathUtils as mb,SphereGeometry as R3}from"three";var yb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},i.parameters);return e.thetaLength=mb.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=i.parameters,u;return c===0?(u=new _3,u.setAttribute("position",new L3([],3))):u=new R3(.5*t,o,n,a,s,l,c*mb.DEG2RAD),u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneGeometry as B3}from"three";var gb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new B3(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as V3,Float32BufferAttribute as Bf,Vector3 as z3}from"three";var xb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:a}=i.parameters,s=new Vf(t,e,r,o,n,a);return Object.assign(s,{userData:{...i,type:"BackdropGeometry"}})}},Vf=class extends V3{constructor(t=1,e=1,r=1,o=90,n=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;n==0&&(a=1),a=Math.max(1,Math.floor(a)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,f=(Z=0,Q=0,$=0)=>new z3(Z,Q,$),h=f(),m=f(),[y,b,v]=[e/2,t/2,r/2],w=-b,O=+b,[S,T,M]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));M.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(M.z=Math.min(N,I),M.z==I&&(M.y-=(N-I)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),h.subVectors(S,T),m.subVectors(M,T);let E=Math.min(h.length(),m.length())*n/100,_=E*Math.tan(o/2),L=E/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(L).add(T);h.set(0,g(o,!0),D(o,!0)),p.push([M,h.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),p.push([h.clone(),m.clone()])}p.push([S,f(0,1,0)]);let B=Math.sin(U/2)*_*2,q=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[q-1][0].distanceTo(p[q][0]),H=j+B*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*B)/H);p[q].push(0);let[W,ee,te]=p[0],Y,re,K;for(let Z=1;Z<p.length;Z++)[Y,re,K]=p[Z],s.push(w,W.y,W.z,w,Y.y,Y.z,O,W.y,W.z,O,W.y,W.z,w,Y.y,Y.z,O,Y.y,Y.z),l.push(0,ee.y,ee.z,0,re.y,re.z,0,ee.y,ee.z,0,ee.y,ee.z,0,re.y,re.z,0,re.y,re.z),c.push(0,te,0,K,1,te,1,te,0,K,1,K),[W,ee,te]=[Y,re,K];this.setAttribute("position",new Bf(s,3)),this.setAttribute("normal",new Bf(l,3)),this.setAttribute("uv",new Bf(c,2))}};var Ru=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,p=t*.5,d=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*r/100,v=d*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=f+Math.sin(S)*p,M=h+Math.cos(S)*d;u.addPoint(u.createPoint(T,M))}}else for(let O=0;O<o;O++){let S=f+Math.cos(y)*p,T=h+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=f+Math.cos(y)*b,T=h+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=n;u.roundness=n,u.update();let w=tr.create({shape:u,parameters:{roundness:n,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...i,type:"StarGeometry"}})}};import{PlaneGeometry as G3}from"three";var bb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new G3(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};import{BufferGeometry as F3,Float32BufferAttribute as j3,MathUtils as U3}from"three";var vb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width);e.shapeBlendNode&&(o=r);let n=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=k3(t,e,r,t*.5,a,n,0,0,o,s,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function k3(i,t,e,r,o,n,a,s,l,c,u){[t,e]=[e,t],a=t/2;let p=U3.clamp(o/360,0,1);if(p===0){let d=new F3;return d.setAttribute("position",new j3([],3)),d}return p===1&&(c=0),new ll(!0,i,t,e,r,p,n,a,s,l,c,u)}import{TorusKnotGeometry as H3}from"three";var Sb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:a}=i.parameters,s=t*.5;s!==e&&(s-=e);let l=new H3(s,e,r,o,n,a);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var wb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let d=0,f=l.points.length;d<f;d++)l.points[d].roundness=r;l.roundness=r,l.update();let p=tr.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};import{Vector2 as Cb,Vector3 as Lt,Matrix3 as oN,Matrix4 as cn,BufferGeometry as Ab,BufferAttribute as Va,MathUtils as Vu}from"three";function Pb(i,t){let e=2*Math.PI;return(i%e+e)%e===(t%e+e)%e}function W3(i){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(i.toLowerCase())}function q3(i,t,e){let r,o,n,a=Math.floor(i*6),s=i*6-a,l=e*(1-t),c=e*(1-s*t),u=e*(1-(1-s)*t);switch(a%6){case 0:r=e,o=u,n=l;break;case 1:r=c,o=e,n=l;break;case 2:r=l,o=e,n=u;break;case 3:r=l,o=c,n=e;break;case 4:r=u,o=l,n=e;break;case 5:default:r=e,o=l,n=c;break}return{r:r*255,g:o*255,b:n*255}}function $3(i,t,e){i/=255,t/=255,e/=255;let r=Math.max(i,t,e),o=Math.min(i,t,e),n=r,a=r-o,s=r==0?0:a/r,l;if(r==o)l=0;else{switch(r){case i:l=(t-e)/a+(t<e?6:0);break;case t:l=(e-i)/a+2;break;case e:default:l=(i-t)/a+4;break}l/=6}return{h:l,s,v:n}}function X3(i){return i=Math.floor(i),{r:i>>16&255,g:i>>8&255,b:i&255}}function Y3(i,t,e){return(i<<16)+(t<<8)+e}function K3(i,t,e){return i=Math.round(i),t=Math.round(t),e=Math.round(e),"#"+[i,t,e].map(r=>r.toString(16).padStart(2,"0")).join("").toUpperCase()}function Q3(i){let t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;i=i.replace(t,(r,o,n,a)=>String(o+o+n+n+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var Ob={parseRgba:W3,hsvToRgb:q3,rgbToHsv:$3,hexToRgb:X3,rgbToHex:Y3,rgbToHexString:K3,hexStringToRgb:Q3};function ko(i){return{all:i=i||new Map,on:function(t,e){var r=i.get(t);r?r.push(e):i.set(t,[e])},off:function(t,e){var r=i.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):i.set(t,[]))},emit:function(t,e){var r=i.get(t);r&&r.slice().map(function(o){o(e)}),(r=i.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Bu=class{constructor(t,e,r){this.id=t;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(t=>t());this.emitter=ko();this._innerCallUserAPI=async t=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await rN(this.userAPI,t),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let r=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=r,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(r)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=Oc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?Oc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(t){await this.callUserAPI(t)}async callUserAPI(t){await this._debouncedCallUserAPI(t)}update(t,e,r=!0){this.userAPI=t,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&r&&this._debouncedPrefetch(e)}retrieveValue(t){if(this.result)try{return Je.zoom(this.result,t)}catch(e){console.error(e)}}retrieveZoomedKeyValues(t){if(this.result){let e=t&&t.length?Je.zoom(this.result,t):this.result;if(tN(e))return Object.entries(e);if(eN(e))return e.map((r,o)=>[o.toString(),r]);throw J3(e)?new Error("This path points to a value, use retrieveValue() instead. "+t?.join(".")):new Error("Path error"+t?.join("."))}}dispose(){}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}get autostart(){return this.userAPI.autoStart}};function Z3(i){let t=new Headers;return i.headers.forEach(e=>{e.data.key!==""&&t.append(e.data.key,e.data.value)}),t}function J3(i){return typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i===null}function eN(i){return Array.isArray(i)}function tN(i){return typeof i=="object"&&i!==null}async function rN(i,t,e=new AbortController){let r,o=i.url,n=i.proxy?.enabled??!1,a;if(i.integration?.type==="OpenAI"){let l=pl(i.integration.prompt===""?[]:JSON.parse(i.integration.prompt),t),c=i.integration.behavior===""?[]:pl(JSON.parse(i.integration.behavior),t);a=`{
4
4
  "model": "${i.integration.model}",
5
5
  "messages": [${i.integration.useBehavior?`
6
6
  {
@@ -13,9 +13,9 @@ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}functio
13
13
  }
14
14
  ]
15
15
  }`}if(n){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${i.proxy.fileId}/external-api/request?uuidexternalapi=${i.proxy.proxyId}`;let u;a!==void 0?u=a:i.method==="POST"&&i.body&&(u=pl(JSON.parse(i.body),t)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else i.integration?.type==="OpenAI"?r=a:i.method==="POST"&&i.body&&(r=pl(JSON.parse(i.body),t));let s=await fetch(o,{method:n?"GET":i.method,headers:n?void 0:Z3(i),signal:e.signal,body:r});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(i.integration?.type==="OpenAI"){let l=await s.json();return n&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return n&&(l=l.response),l}}var Tb=(i,t)=>{if(typeof i=="string"){let e=t.getVariable(i);if(e)return Tb(e,t)}return bi.isBoolean(i)?bi.getDisplayedValue(i).toLowerCase():bi.getDisplayedValue(i)},pl=(i,t)=>i.map((e,r)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(r>0?`
16
- `:"")+pl(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return Tb(o,t)}}return""}).join("");var iN=new cn,nN=new cn;function aN(i,t,e){let r=[new Lt,new Lt,new Lt],o=[new Lt,new Lt,new Lt];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=Vu.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new cn().makeBasis(r[0],r[1],r[2])}var Mb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Da.create({parameters:Ep}).userData.shape;return{path:i.path??fa.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...Xc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new zf(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new Ab,{userData:{...i,type:"PathGeometry"}})}},zf=class extends Ab{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!Pb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),p.push(r[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=aN(p[j],p[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,d(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),p[j].copy(p[0])}this._applyPathModifiers(p,f,m);let{bevel:b,bevelSides:v}=this.inputs.parameters.extrusion,w=b>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:M}=this._computeShapePoints(O),g=0,D;w==="round"&&(D=new Pi(this.inputs.shapeData,2*b,b,O,v,void 0,!0),g=D.getAttribute("position").count);let N=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=N,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),I+=j.verticesCount,N=I});let E=I*c,_,L=0;if(this._isOpenEnded()&&w==="flat"){try{_=Ur({windingRule:je.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=Pf}L=_.vertexCount}let V=E+2*L+g*2,U=E+2*L,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,M,p,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,E,q,B,p[0],u[0],!1),this._closeEnd(_,E+L,q,B,p[p.length-1],u[u.length-1],!0)),D){B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);for(let W=U;W<U+g;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...D.getIndex().array.map(W=>W+U)),U+=g,B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);let F=q.length;q.push(...D.getIndex().array.map(W=>W+U)),this.setAttribute("position",new Va(B.positions,3)),this.setAttribute("normal",new Va(B.normals,3)),this.setAttribute("uv",new Va(B.uvs,2)),this.setIndex(q);let H=iN;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(nN.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-g,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Va(B.positions,3)),this.setAttribute("normal",new Va(B.normals,3)),this.setAttribute("uv",new Va(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=mu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new Lt,s=new Lt,l=new Lt,c=new Lt,u=new Lt(0,1,0);for(let y=0;y<o;y++){let b=e[y],v;y===0?v=n?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=n?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=b.clone().sub(v).normalize(),S=w.clone().sub(b).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let M=u.clone().cross(T).normalize(),g=T.clone().cross(M).normalize();u.copy(g),c.copy(M),y===0&&(a.copy(g),s.copy(T));let D=new cn().makeBasis(M,g,T);r.push(D)}let p=n?s:l,d=n?a:new Lt(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return r;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let b=new cn().makeRotationZ(h*y/r.length);r[y].multiply(b)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new cn,p=new cn;return e.forEach((d,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(Vu.lerp(a,a+s,h)*Vu.DEG2RAD);let m=Vu.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,r=je.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],O=y[v-0];b.push(w,O)}return b}),s;try{s=Ur({windingRule:r,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=sl}let l;try{l=Ur({windingRule:je.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=wf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],b=m%2===0?s.vertexCount:0;s.elements.push(y+b)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],b=s.vertexCount;s.vertexIndices.push(y+b)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let b=m*2,v=s.vertices[b+0],w=s.vertices[b+1];v<u&&(u=v),v>p&&(p=v),w<d&&(d=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,v=s.elements[b+0],w=s.elements[b+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=v,M=O-1,g=v+1,D=o.roundedCurves.length;do{let N=T-v,I=s.vertices[M*2+0],E=s.vertices[M*2+1],_=s.vertices[T*2+0],L=s.vertices[T*2+1],V=s.vertices[g*2+0],U=s.vertices[g*2+1],B=_-I,q=L-E,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=L-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[N]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[N]=!0;else{let re=Y===1?te+1:te-1;re=(re+D)%D;let K=Y===1?0:1,Z=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[M,T,g]=[T,g,g+1],g>=O&&(g-=w)}while(g!==v+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new Lt,u=new Lt,p=new Lt,d=new Lt,f=new Cb;o.forEach((m,y)=>{let b=n[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(r[O+0],r[O+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[w])d.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(r[S+0],r[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,f),v++,!e.continuous[w]||w===0){if(w===0)d.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+2;u.set(r[S+0],r[S+1],0),d.copy(u).sub(c),d.set(-d.y,d.x,0),e.isHole||d.negate()}d.applyMatrix4(m).normalize(),this._insertVertex(a,v,p,d,f),v++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,b=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,T=y+O,M=b+O,g=b+v;e.isHole?s.push(S,M,T,S,g,M):s.push(S,T,M,S,M,g),v++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new Lt(0,0,l?-1:1).applyMatrix4(a),p=new Lt,d=new Cb;for(let h=0;h<c;h++){let m=2*h;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,b=f[m+(l?1:2)]+r,v=f[m+(l?2:1)]+r;o.push(y,b,v)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new oN().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let f=p.array,h=d.array,m=p.itemSize;for(let y=r*m,b=o*m;y<b;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Ib,BufferGeometry as Gf}from"three";import{mergeBufferGeometries as lN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Nb(){let i=new Gf;return i.setAttribute("position",new Ib(new Float32Array([]),3)),i.setIndex(new Ib(new Uint16Array([]),1)),i}var cN=Nb().attributes,uN=12,dN=1,un=class extends Gf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,cN),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:p}=e,d=bi.getDisplayedValue(u),f=p===2?d.toUpperCase():p===3?d.toLowerCase():d,h=pN(e,o,f,r),{shapes:m,charWidths:y,charCoords:b}=o.generateShapes(h,e,r),v=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,O=m.map(M=>new Ue().fromShape(M,!0));this.vectorShapes=O;let S=O.map(M=>tr.create({shape:M,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?je.NONZERO:je.ODD,subdivisions:this.isLowResolution&&s>0?dN:uN}})),T=S.length?lN(S):Nb();T.translate(-v,w,0),this.dispose(),this.wrappedText=h,this.charCoords=b,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([M,g])=>{this.setAttribute(M,g)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=Ot(new Gf,un.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function pN(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
16
+ `:"")+pl(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return Tb(o,t)}}return""}).join("");var iN=new cn,nN=new cn;function aN(i,t,e){let r=[new Lt,new Lt,new Lt],o=[new Lt,new Lt,new Lt];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=Vu.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new cn().makeBasis(r[0],r[1],r[2])}var Mb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Da.create({parameters:Ep}).userData.shape;return{path:i.path??fa.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...Xc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new zf(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new Ab,{userData:{...i,type:"PathGeometry"}})}},zf=class extends Ab{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!Pb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),p.push(r[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=aN(p[j],p[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,d(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),p[j].copy(p[0])}this._applyPathModifiers(p,f,m);let{bevel:b,bevelSides:v}=this.inputs.parameters.extrusion,w=b>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:M}=this._computeShapePoints(O),g=0,D;w==="round"&&(D=new Pi(this.inputs.shapeData,2*b,b,O,v,void 0,!0),g=D.getAttribute("position").count);let N=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=N,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),I+=j.verticesCount,N=I});let E=I*c,_,L=0;if(this._isOpenEnded()&&w==="flat"){try{_=Ur({windingRule:je.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=Pf}L=_.vertexCount}let V=E+2*L+g*2,U=E+2*L,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,M,p,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,E,q,B,p[0],u[0],!1),this._closeEnd(_,E+L,q,B,p[p.length-1],u[u.length-1],!0)),D){B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);for(let W=U;W<U+g;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...D.getIndex().array.map(W=>W+U)),U+=g,B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);let F=q.length;q.push(...D.getIndex().array.map(W=>W+U)),this.setAttribute("position",new Va(B.positions,3)),this.setAttribute("normal",new Va(B.normals,3)),this.setAttribute("uv",new Va(B.uvs,2)),this.setIndex(q);let H=iN;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(nN.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-g,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Va(B.positions,3)),this.setAttribute("normal",new Va(B.normals,3)),this.setAttribute("uv",new Va(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=mu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new Lt,s=new Lt,l=new Lt,c=new Lt,u=new Lt(0,1,0);for(let y=0;y<o;y++){let b=e[y],v;y===0?v=n?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=n?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=b.clone().sub(v).normalize(),S=w.clone().sub(b).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let M=u.clone().cross(T).normalize(),g=T.clone().cross(M).normalize();u.copy(g),c.copy(M),y===0&&(a.copy(g),s.copy(T));let D=new cn().makeBasis(M,g,T);r.push(D)}let p=n?s:l,d=n?a:new Lt(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return r;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let b=new cn().makeRotationZ(h*y/r.length);r[y].multiply(b)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new cn,p=new cn;return e.forEach((d,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(Vu.lerp(a,a+s,h)*Vu.DEG2RAD);let m=Vu.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,r=je.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],O=y[v-0];b.push(w,O)}return b}),s;try{s=Ur({windingRule:r,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=sl}let l;try{l=Ur({windingRule:je.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=wf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],b=m%2===0?s.vertexCount:0;s.elements.push(y+b)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],b=s.vertexCount;s.vertexIndices.push(y+b)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let b=m*2,v=s.vertices[b+0],w=s.vertices[b+1];v<u&&(u=v),v>p&&(p=v),w<d&&(d=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,v=s.elements[b+0],w=s.elements[b+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=v,M=O-1,g=v+1,D=o.roundedCurves.length;do{let N=T-v,I=s.vertices[M*2+0],E=s.vertices[M*2+1],_=s.vertices[T*2+0],L=s.vertices[T*2+1],V=s.vertices[g*2+0],U=s.vertices[g*2+1],B=_-I,q=L-E,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=L-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[N]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[N]=!0;else{let re=Y===1?te+1:te-1;re=(re+D)%D;let K=Y===1?0:1,Z=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[M,T,g]=[T,g,g+1],g>=O&&(g-=w)}while(g!==v+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new Lt,u=new Lt,p=new Lt,d=new Lt,f=new Cb;o.forEach((m,y)=>{let b=n[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(r[O+0],r[O+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[w])d.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(r[S+0],r[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,f),v++,!e.continuous[w]||w===0){if(w===0)d.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+2;u.set(r[S+0],r[S+1],0),d.copy(u).sub(c),d.set(-d.y,d.x,0),e.isHole||d.negate()}d.applyMatrix4(m).normalize(),this._insertVertex(a,v,p,d,f),v++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,b=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,T=y+O,M=b+O,g=b+v;e.isHole?s.push(S,M,T,S,g,M):s.push(S,T,M,S,M,g),v++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new Lt(0,0,l?-1:1).applyMatrix4(a),p=new Lt,d=new Cb;for(let h=0;h<c;h++){let m=2*h;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,b=f[m+(l?1:2)]+r,v=f[m+(l?2:1)]+r;o.push(y,b,v)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new oN().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let f=p.array,h=d.array,m=p.itemSize;for(let y=r*m,b=o*m;y<b;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Ib,BufferGeometry as Gf}from"three";import{mergeBufferGeometries as lN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Nb(){let i=new Gf;return i.setAttribute("position",new Ib(new Float32Array([]),3)),i.setIndex(new Ib(new Uint16Array([]),1)),i}var cN=Nb().attributes,uN=12,dN=1,un=class extends Gf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,cN),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:p}=e,d=bi.getDisplayedValue(u),f=p===2?d.toUpperCase():p===3?d.toLowerCase():d,h=pN(e,o,f,r),{shapes:m,charWidths:y,charCoords:b}=o.generateShapes(h,e,r),v=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,O=m.map(M=>new Ue().fromShape(M,!0));this.vectorShapes=O;let S=O.map(M=>tr.create({shape:M,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?je.NONZERO:je.ODD,subdivisions:this.isLowResolution&&s>0?dN:uN}})),T=S.length?lN(S):Nb();T.translate(-v,w,0),this.dispose(),this.wrappedText=h,this.charCoords=b,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([M,g])=>{this.setAttribute(M,g)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=Tt(new Gf,un.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function pN(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
17
17
  `?(n[n.length-1]+=a,a="",s===`
18
- `&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as jf,BufferAttribute as Lb,Uint32BufferAttribute as Uf,Float32BufferAttribute as kf,Matrix4 as gN,Vector3 as hl,Sphere as xN,Box3 as bN,BoxGeometry as vN}from"three";var Db,Gu=new Promise(i=>{Db=i}),Eb=!1;var zu;function _b(i){if(Eb)return;if(zu)return zu;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.11.9/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Db(c),Eb=!0}return zu=t(),zu}import{BufferGeometryLoader as fN}from"three";var hN=["font"];function fo(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let p of c)u=u[p];for(o in u){let p=u[o];Mp(p)&&!hN.includes(o)&&(u[o]=t.getVariable(p,[r.uuid,"geometry",...c,o]),Mp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=Ue.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new fN().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new bt(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new un(n,t);if(n.type==="InputGeometry")return new un(n,t);if(n.type==="UIGeometry")return Ba.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Ff(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=Ue.createFromState(pa.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Ff(s)}return l}import{Matrix4 as mN}from"three";var yN=new mN;function fl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=yN.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Fu=new bN,za=new hl,we;Gu.then(i=>{we=i});var Rb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Bb=new Uint32Array([0,1,2,3]),Vb=new Uint8Array([4]),bt=class extends jf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,n=fi.div(r,o);if(n.every(l=>l===1))return;this.subdividedGeometry&&fl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&fl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(za.fromArray(n));let s=za.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=bt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new vN(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(bt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new xN,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Fu.setFromBufferAttribute(r),Fu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Fu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Fu.getSize(za);let n={width:za.x,height:za.y,depth:za.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(we.free_bvh(r),we.free_subdivision_surface(r));try{a=bt.allocate(e,n)}catch(u){console.error(u,e),a=bt.allocate({positionWASM:Rb,indexWASM:Bb,verticesPerFaceWASM:Vb},n)}if(we.set_destination_refinement_level(a,0),s=bt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=bt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=bt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:fo(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=$f(n.getAttribute("position"),a));let p;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,f=d+e.radialSegments*3;p=[d,f]}return{indices:l,verticesPerFace:c}=Xf(s,u,n,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Rb,n=Bb,a=Vb);let c=o.length,u=n.length,p=a.length,d=o.length+s.length+l.length,f=n.length+a.length,h=d*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,b=we._malloc(h),v=new Float32Array(we.HEAPF32.buffer,b,d),w=new Uint32Array(we.HEAPU32.buffer,b+m,f);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(n,0),w.set(a,n.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new gN().makeScale(...e.scaleBaked)),r&&(O?O.premultiply(r):O=r);let S=O?we.alloc_subdivision_surface2(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):we.alloc_subdivision_surface(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(b),S}static buildLevel(e,r,o,n,a){let s=a?we.get_mesh_data2(e,r?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,r?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=we.HEAPU32[c[p]>>2],f=we.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let h=we.HEAPU32[c[p]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+u[p]);p++;let y=we.HEAPU32[c[p]>>2],b=we.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=we.HEAPU32[c[p]>>2],w=we.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,n===void 0){let O=new jf;if(O.setIndex(new Uf(w,1)),O.setAttribute("position",new kf(f,3)),O.setAttribute("normal",new kf(m,3)),r){O.setAttribute("faceMap",new Uf(b,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new Lb(S,4))}return we.free_mesh_data(s),O.userData.type="SubdivGeometry",O}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],p=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=we.HEAPU32[s[c]>>2],f=we.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(r===void 0){let h=new jf;h.setAttribute("position",new kf(p,3));let m=new Float32Array(p.length);for(let y=0,b=p.length;y<b;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Lb(m,3)),h.setIndex(new Uf(f,1)),we.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(p),r.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||we.set_destination_refinement_level(e,r);let a=o?we.get_topological_data2(e,n?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,n?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=we.HEAPU32[l[u]>>2],d=new Float32Array(we.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let f=we.HEAPU32[l[u]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:d,indices:h,verticesPerFace:y}}};var zb=["getX","getY","getZ"];function $f(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(i[zb[d]](u)*s)},`;if(p in e)n.push(e[p]);else{for(let d=0;d<3;d++)a.push(i[zb[d]](u));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:a,triIndices:l}}var ju=new hl,Hf=new hl,Wf=new hl,qf=new hl;function Xf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let d=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);i.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)i.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)i.push(l[d],l[d+1],0),o.push(p++);return n.push(p),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){ju.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Hf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Wf.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),qf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Hf.sub(ju).normalize(),Wf.sub(ju).normalize(),qf.sub(ju).normalize();let l=Hf.cross(Wf).dot(qf);Math.abs(l)>.005||r&&r.some((c,u)=>u%2===1?!1:s>=r[u]&&s<r[u+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<i.length;p+=3,d++)i[p+2]===0&&(l.push(d),u++),i[p+2]===a&&c.push(d);if(e.userData.parameters.extrudeBevelSize===0){let p=c[0];c[0]=c[1],c[1]=p}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Or={};bw(Or,{calcBoolean:()=>TN,calcBooleanTopological:()=>ON,freeMeshSet:()=>IN,getMeshSet:()=>CN,hasOpenEdges:()=>AN,transformMeshSet:()=>MN});var SN,Gb=new Promise(i=>{SN=i});import{Float32BufferAttribute as Fb,Sphere as wN}from"three";var Ve,Ga;Gb.then(i=>Ve=i);function PN(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=$f(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=Xf(n,a,i);s=c.length,r=[];for(let u=0,p=0;u<s;u++){r.push(c[u]);for(let d=0;d<c[u];d++)r.push(l[p++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function jb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Ve._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Ve.HEAPU32.buffer,n,t):new Float32Array(Ve.HEAPF32.buffer,n,t)).set(i,0),n}function Ub(i){switch(i){case 0:return Ve.OP.UNION;case 1:return Ve.OP.INTERSECTION;case 2:return Ve.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function ON(i,t){Ga===void 0&&(Ga=Ve.init_csg());let e=jb(i),r=Ve.csg_calc_topological(Ga,e,i.length,Ub(t));Ve._free(e);let o=6,n=Ve.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Ve.HEAPU32[n[s]>>2],c=new Float32Array(Ve.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ve.HEAPU32[n[s]>>2],p=new Uint32Array(Ve.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Ve.HEAPU32[n[s]>>2],f=new Uint8Array(Ve.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Ve.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:f}}function TN(i,t,e,r){Ga===void 0&&(Ga=Ve.init_csg());let o=jb(i),n=Ve.csg_calc(Ga,o,i.length,r,Ub(t));Ve._free(o);let a=5,s=Ve.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Ve.HEAPU32[s[c]>>2],p=Ve.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Ve.HEAPU32[s[c]>>2],f=Ve.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Fb(p,3)),e.setAttribute("normal",new Fb(f,3));let m=Ve.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new wN),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ve.free_mesh_data(n),h}function CN(i,t,e){if(Ve===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let b=i.userData;n=b.verticesPerFace.length,r=b.positions,o=Array(b.verticesPerFace.reduce((v,w)=>v+w,0)+n);for(let v=0,w=0,O=0;v<b.verticesPerFace.length;v++){o[O++]=b.verticesPerFace[v];for(let S=0;S<b.verticesPerFace[v];S++)o[O++]=b.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=PN(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,d=c*Uint32Array.BYTES_PER_ELEMENT,f=Ve._malloc(u),h=new Float32Array(Ve.HEAPF32.buffer,f,l),m=new Uint32Array(Ve.HEAPU32.buffer,f+p,c);h.set(r,0),m.set(o,0);let y=Ve.get_csg_mesh(f,a,f+p,s,n);return Ve._free(f),y}function AN(i){return Ve.has_open_edges(i)}function MN(i,t){Ve.transform_csg_mesh(i,t.elements)}function IN(i){Ve.free_csg_mesh(i)}var NN={ConeGeometry:P0,CubeGeometry:O0,CylinderGeometry:w0,DodecahedronGeometry:T0,EllipseGeometry:Da,HelixGeometry:tb,IcosahedronGeometry:rb,LatheGeometry:ob,NonParametricGeometry:fb,PolygonGeometry:Lu,PyramidGeometry:hb,RectangleGeometry:Ba,SphereGeometry:yb,PlaneGeometry:gb,BackdropGeometry:xb,StarGeometry:Ru,TextFrameGeometry:bb,TorusGeometry:vb,TorusKnotGeometry:Sb,TriangleGeometry:wb,PathGeometry:Mb,VectorGeometry:tr},Ff=i=>NN[i.type].create(i);function Fa(i){return i!==null&&"booleanOp"in i}var ja=class extends Oa(DN){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new EN}updateVisible(e){super.updateVisible(e),this.visible=!Fa(this.parent)&&this.visible,Fa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Fa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof ja&&(e.freeBooleanPointer(),Fa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Fa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Fa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Uu=new _N;function ml(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=t;p<e;p++){let d=i.getX(p),f=i.getY(p),h=i.getZ(p);d<n&&(n=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Uu.min.set(n,a,s),Uu.max.set(l,c,u),Uu.getCenter(r),Uu.getSize(o).multiplyScalar(.5)}var BN=new LN,VN=new RN,It=class extends ja{constructor(t,e){super(BN,VN),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ml(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as aD,Matrix4 as sD,Sphere as Rv,Vector3 as lD}from"three";import{BufferAttribute as oD,Float32BufferAttribute as Lv,MathUtils as Ph,Vector3 as Oh}from"three";import{ShaderMaterial as LE,Texture as RE}from"three";var Ho=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Ho.uuidContext===null)throw new Error("plz startContext");Ho.uuidContext===Ho.globalContext?this.uuid="_gid"+Ho.uuidContext.nodeContextUuid++:this.uuid="_uid"+Ho.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Ho.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},Xe=Ho;Xe.globalContext={nodeContextUuid:0},Xe.uuidContext=Ho.globalContext;import{CubeReflectionMapping as $N,CubeRefractionMapping as XN,CubeUVReflectionMapping as YN,LinearEncoding as Zb,sRGBEncoding as KN}from"three";var yl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Yf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},Nt=new Yf;import{Vector2 as kb}from"three";import{MathUtils as zN}from"three";var ge=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=zN.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Ye=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var ct=class extends Ye{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof kb?e:new kb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Hb}from"three";var Ft=class extends Ye{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Hb?e:new Hb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var rr=class extends Ye{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof At?e:new At(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var GN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Wb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=Wb.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],f=d[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Nt.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=Nt.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||Nt.getKeyword(f,e),b.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Nt.contains(m)&&e.include(Nt.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=GN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Wb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let p=s[l++];this.inputs.push({name:p,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var FN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Kf=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Kf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=FN.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,r){if(r==="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 e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,a){return e.format(this.name,this.getType(e),r)}},Fe=Kf;Fe.PI="PI",Fe.PI2="PI2",Fe.RECIPROCAL_PI="RECIPROCAL_PI",Fe.RECIPROCAL_PI2="RECIPROCAL_PI2",Fe.LOG2="LOG2",Fe.EPSILON="EPSILON";var jN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
18
+ `&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as jf,BufferAttribute as Lb,Uint32BufferAttribute as Uf,Float32BufferAttribute as kf,Matrix4 as gN,Vector3 as hl,Sphere as xN,Box3 as bN,BoxGeometry as vN}from"three";var Db,Gu=new Promise(i=>{Db=i}),Eb=!1;var zu;function _b(i){if(Eb)return;if(zu)return zu;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.12.1/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Db(c),Eb=!0}return zu=t(),zu}import{BufferGeometryLoader as fN}from"three";var hN=["font"];function fo(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let p of c)u=u[p];for(o in u){let p=u[o];Mp(p)&&!hN.includes(o)&&(u[o]=t.getVariable(p,[r.uuid,"geometry",...c,o]),Mp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=Ue.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new fN().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new vt(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new un(n,t);if(n.type==="InputGeometry")return new un(n,t);if(n.type==="UIGeometry")return Ba.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Ff(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=Ue.createFromState(pa.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Ff(s)}return l}import{Matrix4 as mN}from"three";var yN=new mN;function fl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=yN.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Fu=new bN,za=new hl,we;Gu.then(i=>{we=i});var Rb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Bb=new Uint32Array([0,1,2,3]),Vb=new Uint8Array([4]),vt=class extends jf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,n=fi.div(r,o);if(n.every(l=>l===1))return;this.subdividedGeometry&&fl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&fl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(za.fromArray(n));let s=za.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=vt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new vN(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(vt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new xN,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Fu.setFromBufferAttribute(r),Fu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Fu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Fu.getSize(za);let n={width:za.x,height:za.y,depth:za.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(we.free_bvh(r),we.free_subdivision_surface(r));try{a=vt.allocate(e,n)}catch(u){console.error(u,e),a=vt.allocate({positionWASM:Rb,indexWASM:Bb,verticesPerFaceWASM:Vb},n)}if(we.set_destination_refinement_level(a,0),s=vt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=vt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=vt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:fo(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=$f(n.getAttribute("position"),a));let p;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,f=d+e.radialSegments*3;p=[d,f]}return{indices:l,verticesPerFace:c}=Xf(s,u,n,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Rb,n=Bb,a=Vb);let c=o.length,u=n.length,p=a.length,d=o.length+s.length+l.length,f=n.length+a.length,h=d*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,b=we._malloc(h),v=new Float32Array(we.HEAPF32.buffer,b,d),w=new Uint32Array(we.HEAPU32.buffer,b+m,f);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(n,0),w.set(a,n.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new gN().makeScale(...e.scaleBaked)),r&&(O?O.premultiply(r):O=r);let S=O?we.alloc_subdivision_surface2(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):we.alloc_subdivision_surface(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(b),S}static buildLevel(e,r,o,n,a){let s=a?we.get_mesh_data2(e,r?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,r?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=we.HEAPU32[c[p]>>2],f=we.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let h=we.HEAPU32[c[p]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+u[p]);p++;let y=we.HEAPU32[c[p]>>2],b=we.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=we.HEAPU32[c[p]>>2],w=we.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,n===void 0){let O=new jf;if(O.setIndex(new Uf(w,1)),O.setAttribute("position",new kf(f,3)),O.setAttribute("normal",new kf(m,3)),r){O.setAttribute("faceMap",new Uf(b,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new Lb(S,4))}return we.free_mesh_data(s),O.userData.type="SubdivGeometry",O}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],p=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=we.HEAPU32[s[c]>>2],f=we.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(r===void 0){let h=new jf;h.setAttribute("position",new kf(p,3));let m=new Float32Array(p.length);for(let y=0,b=p.length;y<b;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Lb(m,3)),h.setIndex(new Uf(f,1)),we.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(p),r.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||we.set_destination_refinement_level(e,r);let a=o?we.get_topological_data2(e,n?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,n?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=we.HEAPU32[l[u]>>2],d=new Float32Array(we.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let f=we.HEAPU32[l[u]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:d,indices:h,verticesPerFace:y}}};var zb=["getX","getY","getZ"];function $f(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(i[zb[d]](u)*s)},`;if(p in e)n.push(e[p]);else{for(let d=0;d<3;d++)a.push(i[zb[d]](u));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:a,triIndices:l}}var ju=new hl,Hf=new hl,Wf=new hl,qf=new hl;function Xf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let d=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);i.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)i.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)i.push(l[d],l[d+1],0),o.push(p++);return n.push(p),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){ju.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Hf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Wf.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),qf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Hf.sub(ju).normalize(),Wf.sub(ju).normalize(),qf.sub(ju).normalize();let l=Hf.cross(Wf).dot(qf);Math.abs(l)>.005||r&&r.some((c,u)=>u%2===1?!1:s>=r[u]&&s<r[u+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<i.length;p+=3,d++)i[p+2]===0&&(l.push(d),u++),i[p+2]===a&&c.push(d);if(e.userData.parameters.extrudeBevelSize===0){let p=c[0];c[0]=c[1],c[1]=p}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Or={};bw(Or,{calcBoolean:()=>TN,calcBooleanTopological:()=>ON,freeMeshSet:()=>IN,getMeshSet:()=>CN,hasOpenEdges:()=>AN,transformMeshSet:()=>MN});var SN,Gb=new Promise(i=>{SN=i});import{Float32BufferAttribute as Fb,Sphere as wN}from"three";var Ve,Ga;Gb.then(i=>Ve=i);function PN(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=$f(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=Xf(n,a,i);s=c.length,r=[];for(let u=0,p=0;u<s;u++){r.push(c[u]);for(let d=0;d<c[u];d++)r.push(l[p++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function jb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Ve._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Ve.HEAPU32.buffer,n,t):new Float32Array(Ve.HEAPF32.buffer,n,t)).set(i,0),n}function Ub(i){switch(i){case 0:return Ve.OP.UNION;case 1:return Ve.OP.INTERSECTION;case 2:return Ve.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function ON(i,t){Ga===void 0&&(Ga=Ve.init_csg());let e=jb(i),r=Ve.csg_calc_topological(Ga,e,i.length,Ub(t));Ve._free(e);let o=6,n=Ve.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Ve.HEAPU32[n[s]>>2],c=new Float32Array(Ve.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ve.HEAPU32[n[s]>>2],p=new Uint32Array(Ve.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Ve.HEAPU32[n[s]>>2],f=new Uint8Array(Ve.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Ve.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:f}}function TN(i,t,e,r){Ga===void 0&&(Ga=Ve.init_csg());let o=jb(i),n=Ve.csg_calc(Ga,o,i.length,r,Ub(t));Ve._free(o);let a=5,s=Ve.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Ve.HEAPU32[s[c]>>2],p=Ve.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Ve.HEAPU32[s[c]>>2],f=Ve.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Fb(p,3)),e.setAttribute("normal",new Fb(f,3));let m=Ve.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new wN),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ve.free_mesh_data(n),h}function CN(i,t,e){if(Ve===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let b=i.userData;n=b.verticesPerFace.length,r=b.positions,o=Array(b.verticesPerFace.reduce((v,w)=>v+w,0)+n);for(let v=0,w=0,O=0;v<b.verticesPerFace.length;v++){o[O++]=b.verticesPerFace[v];for(let S=0;S<b.verticesPerFace[v];S++)o[O++]=b.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=PN(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,d=c*Uint32Array.BYTES_PER_ELEMENT,f=Ve._malloc(u),h=new Float32Array(Ve.HEAPF32.buffer,f,l),m=new Uint32Array(Ve.HEAPU32.buffer,f+p,c);h.set(r,0),m.set(o,0);let y=Ve.get_csg_mesh(f,a,f+p,s,n);return Ve._free(f),y}function AN(i){return Ve.has_open_edges(i)}function MN(i,t){Ve.transform_csg_mesh(i,t.elements)}function IN(i){Ve.free_csg_mesh(i)}var NN={ConeGeometry:P0,CubeGeometry:O0,CylinderGeometry:w0,DodecahedronGeometry:T0,EllipseGeometry:Da,HelixGeometry:tb,IcosahedronGeometry:rb,LatheGeometry:ob,NonParametricGeometry:fb,PolygonGeometry:Lu,PyramidGeometry:hb,RectangleGeometry:Ba,SphereGeometry:yb,PlaneGeometry:gb,BackdropGeometry:xb,StarGeometry:Ru,TextFrameGeometry:bb,TorusGeometry:vb,TorusKnotGeometry:Sb,TriangleGeometry:wb,PathGeometry:Mb,VectorGeometry:tr},Ff=i=>NN[i.type].create(i);function Fa(i){return i!==null&&"booleanOp"in i}var ja=class extends Oa(DN){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new EN}updateVisible(e){super.updateVisible(e),this.visible=!Fa(this.parent)&&this.visible,Fa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Fa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof ja&&(e.freeBooleanPointer(),Fa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Fa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Fa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Uu=new _N;function ml(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=t;p<e;p++){let d=i.getX(p),f=i.getY(p),h=i.getZ(p);d<n&&(n=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Uu.min.set(n,a,s),Uu.max.set(l,c,u),Uu.getCenter(r),Uu.getSize(o).multiplyScalar(.5)}var BN=new LN,VN=new RN,It=class extends ja{constructor(t,e){super(BN,VN),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ml(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as aD,Matrix4 as sD,Sphere as Rv,Vector3 as lD}from"three";import{BufferAttribute as oD,Float32BufferAttribute as Lv,MathUtils as Ph,Vector3 as Oh}from"three";import{ShaderMaterial as LE,Texture as RE}from"three";var Ho=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Ho.uuidContext===null)throw new Error("plz startContext");Ho.uuidContext===Ho.globalContext?this.uuid="_gid"+Ho.uuidContext.nodeContextUuid++:this.uuid="_uid"+Ho.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Ho.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},Xe=Ho;Xe.globalContext={nodeContextUuid:0},Xe.uuidContext=Ho.globalContext;import{CubeReflectionMapping as $N,CubeRefractionMapping as XN,CubeUVReflectionMapping as YN,LinearEncoding as Zb,sRGBEncoding as KN}from"three";var yl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Yf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},Nt=new Yf;import{Vector2 as kb}from"three";import{MathUtils as zN}from"three";var ge=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=zN.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Ye=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var ct=class extends Ye{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof kb?e:new kb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Hb}from"three";var Ft=class extends Ye{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Hb?e:new Hb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var rr=class extends Ye{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof At?e:new At(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var GN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Wb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=Wb.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],f=d[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Nt.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=Nt.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||Nt.getKeyword(f,e),b.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Nt.contains(m)&&e.include(Nt.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=GN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Wb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let p=s[l++];this.inputs.push({name:p,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var FN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Kf=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Kf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=FN.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,r){if(r==="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 e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,a){return e.format(this.name,this.getType(e),r)}},Fe=Kf;Fe.PI="PI",Fe.PI2="PI2",Fe.RECIPROCAL_PI="RECIPROCAL_PI",Fe.RECIPROCAL_PI2="RECIPROCAL_PI2",Fe.LOG2="LOG2",Fe.EPSILON="EPSILON";var jN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
19
19
  )*?)}`,"gim"),UN=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ua=class extends ge{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=jN.exec(e);if(r){let o=r[2],n;for(;n=UN.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ka=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};Nt.addKeyword("uv",function(){return new ka});Nt.addKeyword("uv2",function(){return new ka(1)});import{LinearEncoding as kN,sRGBEncoding as HN}from"three";var dn=class extends ge{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??dn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case kN:return["Linear"];case HN:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),a=dn.Nodes[this.method],s=e.include(a);if(s===dn.LINEAR_TO_LINEAR)return e.format(o,n,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",n,r)}else return e.format(s+"( "+o+" )",n,r)}fromEncoding(e){let r=dn.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=dn.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},Yt=dn;Yt.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
20
20
  `)),sRGBToLinear:new J(["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(`
21
21
  `)),LinearTosRGB:new J(["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(`
@@ -1873,7 +1873,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1873
1873
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1874
1874
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1875
1875
  return displaced_position;
1876
- }`,[e,r])}}();var Me={normalRenderTarget:new Kt,normalRenderTargetDepth:new Kt,transmissionRenderTarget:new Kt,aspectRatio:new ct,transmissionSize:new ct(2048,2048),transmissionRenderTargetDepth:new Kt,aoRenderTarget:new Kt,aoEnabled:new ut,pixelRatioNode:new se(1),resolution:new ct,penumbraSize:new Hr(5,.5),frameIndex:new Re(0),transmissionLod:new Re(2),taaEnabled:new ut(!0)};for(let i of Object.values(Me))i.isRenderGlobal=!0;var av={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.11.9/build/ui.wasm"};var Wo=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new qe(gt),this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aE.merge([nE.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
1876
+ }`,[e,r])}}();var Me={normalRenderTarget:new Kt,normalRenderTargetDepth:new Kt,transmissionRenderTarget:new Kt,aspectRatio:new ct,transmissionSize:new ct(2048,2048),transmissionRenderTargetDepth:new Kt,aoRenderTarget:new Kt,aoEnabled:new ut,pixelRatioNode:new se(1),resolution:new ct,penumbraSize:new Hr(5,.5),frameIndex:new Re(0),transmissionLod:new Re(2),taaEnabled:new ut(!0)};for(let i of Object.values(Me))i.isRenderGlobal=!0;var av={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.12.1/build/ui.wasm"};var Wo=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new qe(xt),this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aE.merge([nE.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
1877
1877
  `));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1878
1878
  #include <skinbase_vertex>
1879
1879
  #include <skinnormal_vertex>
@@ -1893,9 +1893,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1893
1893
  #include <begin_vertex>
1894
1894
  #endif /* !USE_LAYER_DISPLACE */
1895
1895
  `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1896
- `)}else{this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1896
+ `)}else{this.color===void 0&&(this.color=new qe(xt)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1897
1897
  `));let l=["#include <normal_fragment_begin>",o.code];n&&l.push(n.code,"#ifdef ALPHATEST"," if ( "+n.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),n?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
1898
- `)}return r}};import{UniformsLib as sv,UniformsUtils as sE}from"three";var bl=class extends Xe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new qe(gt),this.emissive=new qe(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"lambert"}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(sE.merge([sv.fog,sv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1898
+ `)}return r}};import{UniformsLib as sv,UniformsUtils as sE}from"three";var bl=class extends Xe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new qe(xt),this.emissive=new qe(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"lambert"}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(sE.merge([sv.fog,sv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1899
1899
  `));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1900
1900
  #include <skinbase_vertex>
1901
1901
  #include <skinnormal_vertex>
@@ -1990,7 +1990,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1990
1990
  #pragma unroll_loop_end
1991
1991
  #endif
1992
1992
  `," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1993
- `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1993
+ `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(xt)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1994
1994
  `));let f=["#include <normal_fragment_begin>",`
1995
1995
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1996
1996
  vec3 viewdx = dFdx(vViewPosition);
@@ -2037,7 +2037,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2037
2037
 
2038
2038
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
2039
2039
  return normalize( abs( fDet ) * vN - vGrad );
2040
- }`);return{dHdxy:i,perturbNormalArb:t}}();var vl=class extends Xe{constructor(){super("phong");this.nodeType="Phong";this.color=new qe(gt),this.specular=new qe(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"phong"}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(lE.merge([lv.fog,lv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2040
+ }`);return{dHdxy:i,perturbNormalArb:t}}();var vl=class extends Xe{constructor(){super("phong");this.nodeType="Phong";this.color=new qe(xt),this.specular=new qe(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"phong"}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(lE.merge([lv.fog,lv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2041
2041
  `));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2042
2042
  #include <skinbase_vertex>
2043
2043
  #include <skinnormal_vertex>
@@ -2057,7 +2057,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2057
2057
  #include <begin_vertex>
2058
2058
  #endif
2059
2059
  `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
2060
- `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let n=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
2060
+ `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(xt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let n=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
2061
2061
  `));let f=["#include <normal_fragment_begin>",`
2062
2062
  // NOTE: gl_FrontFacing alternative using face normal estimation.
2063
2063
  vec3 viewdx = dFdx(vViewPosition);
@@ -2104,7 +2104,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2104
2104
  outgoingLight *= ao;
2105
2105
  }
2106
2106
  `),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&f.push(`gl_FragColor.a *= ${d.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
2107
- `)}return r}};import{UniformsLib as lh,UniformsUtils as cE}from"three";var Sl=class extends Xe{constructor(){super("standard");this.nodeType="Standard";this.color=new qe(gt),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"physical"}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(cE.merge([lh.fog,lh.lights])),lh.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2107
+ `)}return r}};import{UniformsLib as lh,UniformsUtils as cE}from"three";var Sl=class extends Xe{constructor(){super("standard");this.nodeType="Standard";this.color=new qe(xt),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"physical"}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(cE.merge([lh.fog,lh.lights])),lh.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2108
2108
  `));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2109
2109
  #include <skinbase_vertex>
2110
2110
  #include <skinnormal_vertex>
@@ -2124,7 +2124,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2124
2124
  #include <begin_vertex>
2125
2125
  #endif /* !USE_LAYER_DISPLACE */
2126
2126
  `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
2127
- `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let n=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2127
+ `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new qe(xt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let n=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2128
2128
  `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
2129
2129
  // NOTE: gl_FrontFacing alternative using face normal estimation.
2130
2130
  vec3 viewdx = dFdx(vViewPosition);
@@ -2197,7 +2197,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2197
2197
  outgoingLight *= ao;
2198
2198
  }
2199
2199
  `),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),d?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
2200
- `)}return r}};import{UniformsLib as cv,UniformsUtils as uE}from"three";var wl=class extends Xe{constructor(){super("toon");this.nodeType="Toon";this.color=new qe(gt),this.specular=new qe(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0)}get category(){return"toon"}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(uE.merge([cv.fog,cv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2200
+ `)}return r}};import{UniformsLib as cv,UniformsUtils as uE}from"three";var wl=class extends Xe{constructor(){super("toon");this.nodeType="Toon";this.color=new qe(xt),this.specular=new qe(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0)}get category(){return"toon"}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(uE.merge([cv.fog,cv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2201
2201
  `));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2202
2202
  #include <skinbase_vertex>
2203
2203
  #include <skinnormal_vertex>
@@ -2217,7 +2217,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2217
2217
  #include <begin_vertex>
2218
2218
  #endif
2219
2219
  `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
2220
- `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2220
+ `)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(xt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2221
2221
  varying vec3 vViewPosition;
2222
2222
  struct ToonMaterial {
2223
2223
  vec3 diffuseColor;
@@ -2282,11 +2282,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2282
2282
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
2283
2283
  }
2284
2284
  `),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&d.push(`gl_FragColor.a *= ${p.result};`),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
2285
- `)}return r}};import{VideoTexture as dE,Texture as pE}from"three";var $u=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var uh=class extends $u{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ch;function uv(i){return typeof i=="string"?i:(ch||(ch=new uh),ch.load(i))}var Xu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Yu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ls=class extends Xu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=uv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new dE(this.img,void 0,e,e):a=new pE(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var hr=class extends ls{};import{Vector2 as $o,Vector3 as go,Vector4 as Ku}from"three";function Ut(i,t){return t.color(i)}function dv(i,t){switch(i.type){case"fresnel":return mE(i,t);case"gradient":return yE(i,t);case"depth":return gE(i,t);case"normal":return xE(i,t);case"noise":return bE(i,t);case"rainbow":return vE(i,t);case"toon":return SE(i,t);case"outline":return wE(i,t);case"transmission":return PE(i,t);case"color":return hE(i,t);case"pattern":return OE(i,t)}}function fE(i){return{type:i.type}}function qr(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...fE(i),alpha:n,mode:r,isMask:o}}function hE(i,t){return{...qr(i,t),color:Ut(i.color,t)}}function mE(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...qr(i,t),color:Ut(a,t),bias:e,scale:r,intensity:o,factor:n}}function yE(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...qr(i,t),gradientType:e,smooth:r,colors:o.map(c=>new Ku(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new $o(...s),morph:new $o(...l),angle:a}}function gE(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=i;return{...qr(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new go(...s),direction:l?new go(...l):new go(1,0,0),colors:c.map(d=>d!==void 0?new Ku(d[0],d[1],d[2],d[3]):new Ku(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function xE(i,t){let{cnormal:e}=i;return{...qr(i,t),cnormal:new go(e[0],e[1],e[2])}}function bE(i,t){return{...qr(i,t),scale:i.scale,move:i.move,fA:new $o(...i.fA),fB:new $o(...i.fB),size:new go(...i.size),distortion:new $o(...i.distortion),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),colorC:Ut(i.colorC,t),colorD:Ut(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function vE(i,t){return{...qr(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new go(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new go(...i.offset)}}function SE(i,t){return{...qr(i,t),positioning:i.positioning,colors:i.colors.map(e=>new Ku(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new go(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ut(i.shadowColor,t),offset:new go(...i.offset)}}function wE(i,t){return{...qr(i,t),outlineColor:Ut(i.outlineColor,t),contourColor:Ut(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new go(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function PE(i,t){return{...qr(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function OE(i,t){return{...qr(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new $o(...i.offset),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),frequency:new $o(...i.frequency),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new $o(...i.vertical),horizontal:new $o(...i.horizontal),sides:i.sides}}var Ai=class extends At{};import{MathUtils as TE,Vector4 as CE}from"three";var AE={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},ME={depth:["colors"]};function IE(i,t,e){if(t==="isMask")return!0;let r=AE[i.type],o=ME[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function dh(i,t){if(Array.isArray(t)){if(!Array.isArray(i)||i.length!==t.length)return!1;for(let[o,n]of t.entries()){let a=i[o];if(typeof n=="string"||typeof n=="number"&&typeof a=="string")return!0}return!1}let e=typeof i=="string",r=typeof t=="string";return e!==r||e&&r}function Pl(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof hr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof hr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(Se(n.rotation??0,t)??0)*TE.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];if(!s)return o;if("repeat"in n){let l=n.repeat;dh(e.data.texture.repeat,l)&&(o=!0),s.repeat=cs(l,t).map((c,u)=>typeof l[u]=="string"?1/c:c)}if("offset"in n){let l=n.offset;dh(e.data.texture.offset,l)&&(o=!0),s.offset=cs(l,t).map((c,u)=>typeof l[u]=="string"?-c:c)}if("rotation"in n){let l=e.data.texture.rotation,c=n.rotation??0;(l===void 0||dh(l,c))&&(o=!0),s.rotation=Se(c,t)??0}s.updateMatrix()}return o}function pv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(ph(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Ti))switch(o=o||IE(e,n,a),s.constructor){case qe:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ai?s.value=new At(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case rr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ai?s.value=new At(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case ct:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Ft:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Kt:{Pl(a,t,e);break}case Wr:{s.value=a.map(l=>new CE(...l));break}default:{s.value=a;break}}}return o}var Ii=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Se=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Mi=(i,t)=>(i||(i=new yn),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i.z=Se(i.z,t)??0,i),Xo=(i,t)=>(i||(i=new $r),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i),cs=(i,t)=>{let e=i.map(r=>Se(r,t)??0);return[e[0],e[1]]},Ni=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)ph(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Qt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new fn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Wu(n),l=new qu(cs(r.texture.repeat,o),cs(r.texture.offset,o),Se(r.texture.rotation??0,o)),c=new se(r.crop?1:0),u=new Re(r.projection??0),p=new Re(["x","y","z"].indexOf(r.axis)??0),d=new Re(r.side??0),f=new ct(r.size?new $r(...cs(r.size,o)):new $r(100,100)),h=new se(r.blending??0),m=new se(Ii(r.alpha,o)),y=new Re(r.mode??0),b=new ut(r.isMask??!1),v=new Ci(a,s,c,u,p,d,f,h,l,m,y,b),w=new ke(v.calpha,"f");return new it(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},v,y,w,b,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new fn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ii(r.alpha,o)),l=new Re(r.mode??0),c=new ut(r.isMask??!1),u=new se((Se(r.texture.rotation??0,o)??0)*NE.DEG2RAD),p=new es(a,s,l,c,u),d=new ke(p.calpha,"f");return new it(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new Ft(new yn(...r.offset.map(b=>Se(b,o)??0))),a=new se(Se(r.scale,o)??10),s=new se(Se(r.intensity,o)??8),l=new se(Se(r.movement,o)??1),c=new Re(r.noiseType??0),u=new Re(r.voronoiStyle??0),p=new se(Se(r.smoothness,o)??.5),d=new se(Se(r.seed,o)??0),f=new se(Se(r.highCut,o)??1),h=new se(Se(r.lowCut,o)??0),m=new Re(Se(r.quality,o)??1),y=new ss(s,l,n,u,p,d,f,h,m,a,c);return new Ol(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return _E(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let p=s[c];if(typeof u=="string"||typeof u=="number"&&typeof p=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):pv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Pl(o.props,r.shared,this)||n:!0;return n}dispose(){if(EE(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof hr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},it=class extends Ni{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Ol=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Qt=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ii(o.alpha,n)),l=new Re(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ii(o.alphaOverride,n)),p;if(!o.visible)a=new Wo,p={};else if(o.category==="lambert"){a=new bl;let d=new qe(n.color(o.emissive)??0),f=new ut(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new wl;let d=new se(o.shininess??30),f=new qe(n.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new Sl;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new ut(o.occlusion??!0);p={roughness:d,metalness:f,reflectivity:h,occlusion:m},a.roughness=d,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new vl;let d=new se(o.shininess??30),f=new qe(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new ut(o.occlusion??!0);p={shininess:d,specular:f,occlusion:h},a.shininess=d,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,p.alpha=a.shadingAlpha,p.mode=a.shadingBlend,p.bumpMapIntensity=a.bumpMapIntensity,p.alphaOverride=a.alphaOverride,new Qt(e,r,o,a,p,n)}get category(){return this.node.category}};function EE(i){let t=i instanceof Ni?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Tr(i){return{alpha:new se(i.alpha??1),mode:new Re(i.mode??0),isMask:new ut(i.isMask??!1)}}function DE(i,t,e,r,o){switch(i.type){case"color":{let n=new qe(r.color??gt),a=Tr(r),s=new hn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new qe(r.color??16777215),a=new se(Se(r.bias,o)??.1),s=new se(Se(r.scale,o)??1),l=new se(Se(r.intensity,o)??2),c=new se(Se(r.factor,o)??1),u=Tr(r),p=new xl(n,a,s,l,c,u.alpha,u.mode,u.isMask),d=new ke(p.calpha,"f");return new it(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let n=new se(Se(r.filmThickness,o)??30),a=new se(Se(r.movement,o)??0),s=new Ft(Mi(r.wavelengths,o)),l=new se(Se(r.noiseStrength,o)??0),c=new se(Se(r.noiseScale,o)??1),u=new Ft(Mi(r.offset,o)),p=Tr(r),d=new is(n,a,s,l,c,u,p.alpha,p.isMask),f=new ke(d.calpha,"f");return new it(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,p.isMask,o)}case"transmission":{let n=new se(Se(r.thickness??10,o)),a=new se(Se(r.ior??1.5,o)),s=new se(Se(r.roughness??.5,o)),l=Me.transmissionSize,c=Me.transmissionRenderTarget,u=Me.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new ct(d/p,1):new ct(1,p/d),h=Tr(r),m=new as(n,a,s,l,c,u,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Re(r.positioning??0),a;r.colors?a=new Wr(r.colors.length,r.colors):(a=new Wr(10,new us(0,0,0,1)),a.value[1]=new us(1,1,1,1));let s;r.steps?s=new Hr(r.steps.length,r.steps):(s=new Hr(10,1),s.value[0]=0);let l=new Ft(Mi(r.source??new yn(0,0,0),o)),c=new ut(r.isWorldSpace??!0),u=new se(Se(r.noiseStrength??0,o)),p=new se(Se(r.noiseScale??1,o)),d=new rr(r.shadowColor),f=new Ft(Mi(r.offset??new yn(0,0,0),o)),h=Tr(r),m=new ns(n,a,s,l,c,u,p,d,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new qe(r.outlineColor??16777215),a=new qe(r.contourColor??16777215),s=new se(Se(r.outlineWidth??.1,o)),l=new se(Se(r.contourWidth??.1,o)),c=new se(Se(r.outlineThreshold??.1,o)),u=new se(Se(r.contourThreshold??.1,o)),p=new se(Se(r.outlineSmoothing??.1,o)),d=new se(Se(r.contourFrequency??.1,o)),f=new Ft(Mi(r.contourDirection??new yn(0,1,0),o)),h=new ut(r.positionalLines??!1),m=new ut(r.compensation??!0),y=Me.normalRenderTarget,b=Me.normalRenderTargetDepth,v=Me.pixelRatioNode,w=Me.resolution,O=Tr(r),S=new rs(n,a,s,l,c,u,p,d,f,h,m,w,y,b,v,O.alpha),T=new ke(S.calpha,"f");return new it(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let n=new Re(r.gradientType??0),a=new ut(r.smooth??!1),s=new se(Se(r.near,o)??50),l=new se(Se(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),p=new Ft(Mi(r.origin,o)),d=new Ft(Mi(r.direction,o)),f;r.colors?f=new Wr(r.colors.length,r.colors):(f=new Wr(2,new us(0,0,0,1)),f.value[1]=new us(1,1,1,1));let h;r.steps?h=new Hr(r.steps.length,r.steps):(h=new Hr(2,1),h.value[0]=0);let m=Tr(r),y=new Za(n,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new ke(y.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:f,steps:h,...m},y,m.mode,b,m.isMask,o)}case"noise":{let n=new se(Se(r.scale,o)??1),a=new Ft(Mi(r.size??new yn(100,100,100),o)),s=new se(Se(r.move,o)??1),l=new ct(Xo(r.fA??new $r(1.7,9.2),o)),c=new ct(Xo(r.fB??new $r(8.3,2.8),o)),u=new ct(Xo(r.distortion??new $r(1,1),o)),p=new rr(r.colorA),d=new rr(r.colorB),f=new rr(r.colorC),h=new rr(r.colorD),m=new Re(r.noiseType??0),y=new Re(r.voronoiStyle??0),b=new se(Se(r.highCut,o)??1),v=new se(Se(r.lowCut,o)??0),w=new se(Se(r.smoothness,o)??.5),O=new se(Se(r.seed,o)??.5),S=new Re(r.quality??1),T=Tr(r),M=new ts(n,a,s,l,c,u,p,d,f,h,T.alpha,m,T.isMask,y,b,v,w,O,S),g=new ke(M.calpha,"f");return new it(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:b,lowCut:v,smoothness:w,seed:O,quality:S},M,T.mode,g,T.isMask,o)}case"normal":{let n=new Ft(r.cnormal??new yn(1,1,1)),a=Tr(r),s=new Ya(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Re(r.gradientType??0),a=new ut(r.smooth??!1),s;r.colors?s=new Wr(r.colors.length,r.colors):(s=new Wr(10,new us(0,0,0,1)),s.value[1]=new us(1,1,1,1));let l;r.steps?l=new Hr(r.steps.length,r.steps):(l=new Hr(10,1),l.value[0]=0);let c=new ct(Xo(r.offset??new $r(0,0),o)),u=new ct(Xo(r.morph??new $r(0,0),o)),p=new se(Se(r.angle??0,o)),d=Tr(r),f=new Ja(n,a,s,l,c,u,p,d.alpha,d.isMask),h=new ke(f.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let n=new Re(r.style??0),a=new Re(r.projection??0),s=new Re(["x","y","z"].indexOf(r.axis)??0),l=new se(Se(r.blending??0,o)),c=new ct(Xo(r.offset,o)),u=new rr(r.colorA),p=new rr(r.colorB),d=new ct(Xo(r.frequency??new $r(10,10),o)),f=new se(Se(r.size??.5,o)),h=new se(Se(r.variation??0,o)),m=new se(Se(r.smoothness??.5,o)),y=new se(Se(r.zigzag??0,o)),b=new se(Se(r.rotation??0,o)),v=new ct(Xo(r.vertical??new $r(0,1),o)),w=new ct(Xo(r.horizontal??new $r(0,1),o)),O=new Re(r.sides??6),S=Tr(r),T=new os(n,a,s,l,c,u,p,d,f,h,m,y,b,v,w,O,S.alpha,S.isMask),M=new ke(T.calpha,"f");return new it(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:f,variation:h,smoothness:m,zigzag:y,rotation:b,vertical:v,horizontal:w,sides:O,...S},T,S.mode,M,S.isMask,o)}default:{let n=new qe(1,0,0,1),a=Tr(r),s=new hn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function _E(i,t,e,r){let o=dv(e,r);return DE(e,i,t,o,r)}function ph(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Se(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ii(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function ir(i,t,e,r,o,n,a=[]){let s=e;for(let l of a)l in s&&(s=s[l]);for(let l of i)l in s&&o.getVariable(s[l],["material",n,"layer",r,...a,String(l)]);for(let l of t)l in s&&s[l].forEach((c,u)=>{o.getVariable(c,["material",n,"layer",r,...a,String(l),u===0?"x":u===1?"y":"z"])})}function Qu(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var nr=class extends LE{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Zu=class extends nr{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},gn=class extends nr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,Xe.startContext(this),this.reset0(e,r),Xe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new Zu(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){Xe.startContext(this),(this.data!==e||o)&&this.reset0(e,r),Xe.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Ct.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ni.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=Qu(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=Qu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.transparent=Qu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3],u=e[4];if(l instanceof RE){let p=l[c],d;typeof p=="number"?d=Number(r):p.isVector2&&(d=p.toArray(),u==="x"?d[0]=Number(r):u==="y"&&(d[1]=Number(r))),Pl({[c]:d},o.shared,s);return}(c==="x"||c==="y"||c==="z")&&l.isVector3||(c==="x"||c==="y")&&l.isVector2?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"?o.data.displacementType==="noise"?ir(["intensity","scale","movement","smoothness","seed","highCut","lowCut"],["offset"],o.data,o.id,e.shared,this.uuid):ir(["intensity"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="depth"?ir(["near","far"],["origin","direction"],o.data,o.id,e.shared,this.uuid):o.data.type==="fresnel"?ir(["bias","scale","intensity","factor"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="rainbow"?ir(["filmThickness","movement","noiseStrength","noiseScale"],["offset","wavelengths"],o.data,o.id,e.shared,this.uuid):o.data.type==="noise"?ir(["scale","move","seed","highCut","lowCut","smoothness"],["size","distortion","fA","fB"],o.data,o.id,e.shared,this.uuid):o.data.type==="pattern"?ir(["blending","size","variation","smoothness","zigzag","rotation"],["offset","frequency","vertical","horizontal"],o.data,o.id,e.shared,this.uuid):o.data.type==="outline"?ir(["outlineWidth","contourWidth","outlineThreshold","contourThreshold","outlineSmoothing","contourFrequency"],["contourDirection"],o.data,o.id,e.shared,this.uuid):o.data.type==="toon"?ir(["noiseStrength","noiseScale"],["offset","source"],o.data,o.id,e.shared,this.uuid):o.data.type==="transmission"?ir(["roughness","thickness","ior"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="texture"||o.data.type==="video"?(ir([],["size"],o.data,o.id,e.shared,this.uuid),ir(["rotation"],["repeat","offset"],o.data,o.id,e.shared,this.uuid,["texture"])):o.data.type==="gradient"?ir(["angle"],["offset","morph"],o.data,o.id,e.shared,this.uuid):o.data.type==="matcap"&&ir(["rotation"],[],o.data,o.id,e.shared,this.uuid,["texture"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Qt),this.lightLayer===void 0&&(this.lightLayer=new Qt(0,"",{...St.defaultData("light","phong"),visible:!1},new Wo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Qt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof it&&s.color instanceof Ci&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(Xe.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=Qu(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ii(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ii(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);Xe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof it?r.color.mask=void 0:r instanceof Qt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof it&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Qt?n.node.mask=new Rt(r.color,r.alpha,Rt.MUL):n instanceof it&&(n.isMask.value||(n.color.mask=new Rt(r.color,r.alpha,Rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof it),r=this.layers.findIndex(o=>o instanceof Qt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof it){if(a.isMask.value)continue;o=new Xa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ke("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Qt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof it){if(n.isMask.value)continue;e=new Xa(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Ol);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Rt(r,e[o].position,Rt.ADD),r=new Rt(r,new se(.5).setReadonly(!0),Rt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new qa;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof it){let r=e.params.texture;if(r instanceof fn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(nr.prototype,{properties:{get:function(){return this.fragment.properties}}});var xn=class extends gn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var fv=new Map;function hv(i){if(typeof i=="string")return i;let t=fv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},fv.set(i,t)),t.url}var BE,mv=new Promise(i=>{BE=i});var yv;mv.then(i=>yv=i);var bn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:hv(t),format:"wav"},this.sound=new yv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as VE,Vector2 as vn,Path as gv,Shape as zE,ShapeUtils as GE,Color as FE}from"three";var Ju=class{constructor(){this.type="ShapePath";this.color=new FE;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new gv,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,b,v){let w=m.x,O=y.x,S=b.x,T=v.x,M=m.y,g=y.y,D=b.y,N=v.y,I=(T-S)*(M-D)-(N-D)*(w-S),E=(O-w)*(M-D)-(g-M)*(w-S),_=(N-D)*(O-w)-(T-S)*(g-M),L=I/_,V=E/_;if(_===0&&I!==0||L<=0||L>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?b:v,m,y),r.loc===e.ORIGIN){let B=U===0?b:v;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(O-w)).toPrecision(10),q=+(M+r.t*(g-M)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?b:v,m,y),r.loc===e.ORIGIN){let j=q===0?b:v;return{x:j.x,y:j.y,t:r.t}}let U=+(w+L*(O-w)).toPrecision(10),B=+(M+L*(g-M)).toPrecision(10);return{x:U,y:B,t:L}}}function n(m,y,b){let v=b.x-y.x,w=b.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===b.x&&m.y===b.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(v*O<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){r.loc=e.BEYOND;return}let M;v!==0?M=O/v:M=S/w,r.loc=e.BETWEEN,r.t=M}function a(m,y){let b=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let M=y[T-1],g=y[T],D=o(O,S,M,g);D!==null&&b.find(N=>N.t<=D.t+Number.EPSILON&&N.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),v.push(new vn(D.x,D.y)))}}return v}function s(m,y,b){let v=new vn;y.getCenter(v);let w=[];return b.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{w.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,b,v,w){(w==null||w==="")&&(w="nonzero");let O=new vn;m.boundingBox.getCenter(O);let S=[new vn(b,O.y),new vn(v,O.y)],T=s(S,m.boundingBox,y);T.sort((E,_)=>E.point.x-_.point.x);let M=[],g=[];T.forEach(E=>{E.identifier===m.identifier?M.push(E):g.push(E)});let D=M[0].point.x,N=[],I=0;for(;I<g.length&&g[I].point.x<D;)N.length>0&&N[N.length-1]===g[I].identifier?N.pop():N.push(g[I].identifier),I++;if(N.push(m.identifier),w==="evenodd"){let E=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:E,for:_}}else if(w==="nonzero"){let E=!0,_=null,L=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(E?(L=y[U].isCW,E=!1,_=U):L!==y[U].isCW&&(L=y[U].isCW,E=!0))}return{identifier:m.identifier,isHole:E,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>b&&(b=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<O&&(O=T.x)}p<=w&&(p=w+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:GE.isClockWise(y),identifier:c++,boundingBox:new VE(new vn(O,v),new vn(w,b))})});let f=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),h=[];return d.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let b=new zE;b.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=d[w.identifier],S=new gv;S.curves=O.curves,b.holes.push(S)}}),h.push(b)}}),h}};var fh=!1,bv,hh=new Promise(i=>{bv=i}),xv=!1;var ed;function vv(){if(fh=!0,xv)return;if(ed)return ed;async function i(){let e=await import("./opentype.js");bv(e),xv=!0}return ed=i(),ed}var Tl=class{async load(t,e,r=()=>{}){let{load:o}=await hh;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await hh;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function jE(i){return await(await fetch(i)).arrayBuffer()}var UE=new Tl;async function mh(i){let t,e,r=!1;if(i.url?(t=await jE(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(fh){let o=await UE.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as kE,LineCurve as HE,QuadraticBezierCurve as WE}from"three";function qE(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var td=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=mh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=mh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,p=String.fromCharCode(r[c].unicode),d=n[s];if(qE(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let f=d.char,h="",m=[d.state.glyphIndex],y=[],b=!1;for(;!b;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(b=!0),s>e.length&&(b=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(v=>this.getTextWidth(v,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
2285
+ `)}return r}};import{VideoTexture as dE,Texture as pE}from"three";var $u=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var uh=class extends $u{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ch;function uv(i){return typeof i=="string"?i:(ch||(ch=new uh),ch.load(i))}var Xu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Yu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ls=class extends Xu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=uv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new dE(this.img,void 0,e,e):a=new pE(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var hr=class extends ls{};import{Vector2 as $o,Vector3 as go,Vector4 as Ku}from"three";function Ut(i,t){return t.color(i)}function dv(i,t){switch(i.type){case"fresnel":return mE(i,t);case"gradient":return yE(i,t);case"depth":return gE(i,t);case"normal":return xE(i,t);case"noise":return bE(i,t);case"rainbow":return vE(i,t);case"toon":return SE(i,t);case"outline":return wE(i,t);case"transmission":return PE(i,t);case"color":return hE(i,t);case"pattern":return OE(i,t)}}function fE(i){return{type:i.type}}function qr(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...fE(i),alpha:n,mode:r,isMask:o}}function hE(i,t){return{...qr(i,t),color:Ut(i.color,t)}}function mE(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...qr(i,t),color:Ut(a,t),bias:e,scale:r,intensity:o,factor:n}}function yE(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...qr(i,t),gradientType:e,smooth:r,colors:o.map(c=>new Ku(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new $o(...s),morph:new $o(...l),angle:a}}function gE(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=i;return{...qr(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new go(...s),direction:l?new go(...l):new go(1,0,0),colors:c.map(d=>d!==void 0?new Ku(d[0],d[1],d[2],d[3]):new Ku(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function xE(i,t){let{cnormal:e}=i;return{...qr(i,t),cnormal:new go(e[0],e[1],e[2])}}function bE(i,t){return{...qr(i,t),scale:i.scale,move:i.move,fA:new $o(...i.fA),fB:new $o(...i.fB),size:new go(...i.size),distortion:new $o(...i.distortion),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),colorC:Ut(i.colorC,t),colorD:Ut(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function vE(i,t){return{...qr(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new go(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new go(...i.offset)}}function SE(i,t){return{...qr(i,t),positioning:i.positioning,colors:i.colors.map(e=>new Ku(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new go(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ut(i.shadowColor,t),offset:new go(...i.offset)}}function wE(i,t){return{...qr(i,t),outlineColor:Ut(i.outlineColor,t),contourColor:Ut(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new go(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function PE(i,t){return{...qr(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function OE(i,t){return{...qr(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new $o(...i.offset),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),frequency:new $o(...i.frequency),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new $o(...i.vertical),horizontal:new $o(...i.horizontal),sides:i.sides}}var Ai=class extends At{};import{MathUtils as TE,Vector4 as CE}from"three";var AE={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},ME={depth:["colors"]};function IE(i,t,e){if(t==="isMask")return!0;let r=AE[i.type],o=ME[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function dh(i,t){if(Array.isArray(t)){if(!Array.isArray(i)||i.length!==t.length)return!1;for(let[o,n]of t.entries()){let a=i[o];if(typeof n=="string"||typeof n=="number"&&typeof a=="string")return!0}return!1}let e=typeof i=="string",r=typeof t=="string";return e!==r||e&&r}function Pl(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof hr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof hr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(Se(n.rotation??0,t)??0)*TE.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];if(!s)return o;if("repeat"in n){let l=n.repeat;dh(e.data.texture.repeat,l)&&(o=!0),s.repeat=cs(l,t).map((c,u)=>typeof l[u]=="string"?1/c:c)}if("offset"in n){let l=n.offset;dh(e.data.texture.offset,l)&&(o=!0),s.offset=cs(l,t).map((c,u)=>typeof l[u]=="string"?-c:c)}if("rotation"in n){let l=e.data.texture.rotation,c=n.rotation??0;(l===void 0||dh(l,c))&&(o=!0),s.rotation=Se(c,t)??0}s.updateMatrix()}return o}function pv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(ph(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Ti))switch(o=o||IE(e,n,a),s.constructor){case qe:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ai?s.value=new At(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case rr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ai?s.value=new At(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case ct:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Ft:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Kt:{Pl(a,t,e);break}case Wr:{s.value=a.map(l=>new CE(...l));break}default:{s.value=a;break}}}return o}var Ii=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Se=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Mi=(i,t)=>(i||(i=new yn),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i.z=Se(i.z,t)??0,i),Xo=(i,t)=>(i||(i=new $r),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i),cs=(i,t)=>{let e=i.map(r=>Se(r,t)??0);return[e[0],e[1]]},Ni=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)ph(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Qt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new fn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Wu(n),l=new qu(cs(r.texture.repeat,o),cs(r.texture.offset,o),Se(r.texture.rotation??0,o)),c=new se(r.crop?1:0),u=new Re(r.projection??0),p=new Re(["x","y","z"].indexOf(r.axis)??0),d=new Re(r.side??0),f=new ct(r.size?new $r(...cs(r.size,o)):new $r(100,100)),h=new se(r.blending??0),m=new se(Ii(r.alpha,o)),y=new Re(r.mode??0),b=new ut(r.isMask??!1),v=new Ci(a,s,c,u,p,d,f,h,l,m,y,b),w=new ke(v.calpha,"f");return new it(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},v,y,w,b,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new fn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ii(r.alpha,o)),l=new Re(r.mode??0),c=new ut(r.isMask??!1),u=new se((Se(r.texture.rotation??0,o)??0)*NE.DEG2RAD),p=new es(a,s,l,c,u),d=new ke(p.calpha,"f");return new it(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new Ft(new yn(...r.offset.map(b=>Se(b,o)??0))),a=new se(Se(r.scale,o)??10),s=new se(Se(r.intensity,o)??8),l=new se(Se(r.movement,o)??1),c=new Re(r.noiseType??0),u=new Re(r.voronoiStyle??0),p=new se(Se(r.smoothness,o)??.5),d=new se(Se(r.seed,o)??0),f=new se(Se(r.highCut,o)??1),h=new se(Se(r.lowCut,o)??0),m=new Re(Se(r.quality,o)??1),y=new ss(s,l,n,u,p,d,f,h,m,a,c);return new Ol(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return _E(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let p=s[c];if(typeof u=="string"||typeof u=="number"&&typeof p=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):pv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Pl(o.props,r.shared,this)||n:!0;return n}dispose(){if(EE(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof hr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},it=class extends Ni{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Ol=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Qt=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ii(o.alpha,n)),l=new Re(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ii(o.alphaOverride,n)),p;if(!o.visible)a=new Wo,p={};else if(o.category==="lambert"){a=new bl;let d=new qe(n.color(o.emissive)??0),f=new ut(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new wl;let d=new se(o.shininess??30),f=new qe(n.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new Sl;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new ut(o.occlusion??!0);p={roughness:d,metalness:f,reflectivity:h,occlusion:m},a.roughness=d,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new vl;let d=new se(o.shininess??30),f=new qe(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new ut(o.occlusion??!0);p={shininess:d,specular:f,occlusion:h},a.shininess=d,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,p.alpha=a.shadingAlpha,p.mode=a.shadingBlend,p.bumpMapIntensity=a.bumpMapIntensity,p.alphaOverride=a.alphaOverride,new Qt(e,r,o,a,p,n)}get category(){return this.node.category}};function EE(i){let t=i instanceof Ni?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Tr(i){return{alpha:new se(i.alpha??1),mode:new Re(i.mode??0),isMask:new ut(i.isMask??!1)}}function DE(i,t,e,r,o){switch(i.type){case"color":{let n=new qe(r.color??xt),a=Tr(r),s=new hn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new qe(r.color??16777215),a=new se(Se(r.bias,o)??.1),s=new se(Se(r.scale,o)??1),l=new se(Se(r.intensity,o)??2),c=new se(Se(r.factor,o)??1),u=Tr(r),p=new xl(n,a,s,l,c,u.alpha,u.mode,u.isMask),d=new ke(p.calpha,"f");return new it(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let n=new se(Se(r.filmThickness,o)??30),a=new se(Se(r.movement,o)??0),s=new Ft(Mi(r.wavelengths,o)),l=new se(Se(r.noiseStrength,o)??0),c=new se(Se(r.noiseScale,o)??1),u=new Ft(Mi(r.offset,o)),p=Tr(r),d=new is(n,a,s,l,c,u,p.alpha,p.isMask),f=new ke(d.calpha,"f");return new it(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,p.isMask,o)}case"transmission":{let n=new se(Se(r.thickness??10,o)),a=new se(Se(r.ior??1.5,o)),s=new se(Se(r.roughness??.5,o)),l=Me.transmissionSize,c=Me.transmissionRenderTarget,u=Me.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new ct(d/p,1):new ct(1,p/d),h=Tr(r),m=new as(n,a,s,l,c,u,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Re(r.positioning??0),a;r.colors?a=new Wr(r.colors.length,r.colors):(a=new Wr(10,new us(0,0,0,1)),a.value[1]=new us(1,1,1,1));let s;r.steps?s=new Hr(r.steps.length,r.steps):(s=new Hr(10,1),s.value[0]=0);let l=new Ft(Mi(r.source??new yn(0,0,0),o)),c=new ut(r.isWorldSpace??!0),u=new se(Se(r.noiseStrength??0,o)),p=new se(Se(r.noiseScale??1,o)),d=new rr(r.shadowColor),f=new Ft(Mi(r.offset??new yn(0,0,0),o)),h=Tr(r),m=new ns(n,a,s,l,c,u,p,d,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new qe(r.outlineColor??16777215),a=new qe(r.contourColor??16777215),s=new se(Se(r.outlineWidth??.1,o)),l=new se(Se(r.contourWidth??.1,o)),c=new se(Se(r.outlineThreshold??.1,o)),u=new se(Se(r.contourThreshold??.1,o)),p=new se(Se(r.outlineSmoothing??.1,o)),d=new se(Se(r.contourFrequency??.1,o)),f=new Ft(Mi(r.contourDirection??new yn(0,1,0),o)),h=new ut(r.positionalLines??!1),m=new ut(r.compensation??!0),y=Me.normalRenderTarget,b=Me.normalRenderTargetDepth,v=Me.pixelRatioNode,w=Me.resolution,O=Tr(r),S=new rs(n,a,s,l,c,u,p,d,f,h,m,w,y,b,v,O.alpha),T=new ke(S.calpha,"f");return new it(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let n=new Re(r.gradientType??0),a=new ut(r.smooth??!1),s=new se(Se(r.near,o)??50),l=new se(Se(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),p=new Ft(Mi(r.origin,o)),d=new Ft(Mi(r.direction,o)),f;r.colors?f=new Wr(r.colors.length,r.colors):(f=new Wr(2,new us(0,0,0,1)),f.value[1]=new us(1,1,1,1));let h;r.steps?h=new Hr(r.steps.length,r.steps):(h=new Hr(2,1),h.value[0]=0);let m=Tr(r),y=new Za(n,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new ke(y.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:f,steps:h,...m},y,m.mode,b,m.isMask,o)}case"noise":{let n=new se(Se(r.scale,o)??1),a=new Ft(Mi(r.size??new yn(100,100,100),o)),s=new se(Se(r.move,o)??1),l=new ct(Xo(r.fA??new $r(1.7,9.2),o)),c=new ct(Xo(r.fB??new $r(8.3,2.8),o)),u=new ct(Xo(r.distortion??new $r(1,1),o)),p=new rr(r.colorA),d=new rr(r.colorB),f=new rr(r.colorC),h=new rr(r.colorD),m=new Re(r.noiseType??0),y=new Re(r.voronoiStyle??0),b=new se(Se(r.highCut,o)??1),v=new se(Se(r.lowCut,o)??0),w=new se(Se(r.smoothness,o)??.5),O=new se(Se(r.seed,o)??.5),S=new Re(r.quality??1),T=Tr(r),M=new ts(n,a,s,l,c,u,p,d,f,h,T.alpha,m,T.isMask,y,b,v,w,O,S),g=new ke(M.calpha,"f");return new it(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:b,lowCut:v,smoothness:w,seed:O,quality:S},M,T.mode,g,T.isMask,o)}case"normal":{let n=new Ft(r.cnormal??new yn(1,1,1)),a=Tr(r),s=new Ya(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Re(r.gradientType??0),a=new ut(r.smooth??!1),s;r.colors?s=new Wr(r.colors.length,r.colors):(s=new Wr(10,new us(0,0,0,1)),s.value[1]=new us(1,1,1,1));let l;r.steps?l=new Hr(r.steps.length,r.steps):(l=new Hr(10,1),l.value[0]=0);let c=new ct(Xo(r.offset??new $r(0,0),o)),u=new ct(Xo(r.morph??new $r(0,0),o)),p=new se(Se(r.angle??0,o)),d=Tr(r),f=new Ja(n,a,s,l,c,u,p,d.alpha,d.isMask),h=new ke(f.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let n=new Re(r.style??0),a=new Re(r.projection??0),s=new Re(["x","y","z"].indexOf(r.axis)??0),l=new se(Se(r.blending??0,o)),c=new ct(Xo(r.offset,o)),u=new rr(r.colorA),p=new rr(r.colorB),d=new ct(Xo(r.frequency??new $r(10,10),o)),f=new se(Se(r.size??.5,o)),h=new se(Se(r.variation??0,o)),m=new se(Se(r.smoothness??.5,o)),y=new se(Se(r.zigzag??0,o)),b=new se(Se(r.rotation??0,o)),v=new ct(Xo(r.vertical??new $r(0,1),o)),w=new ct(Xo(r.horizontal??new $r(0,1),o)),O=new Re(r.sides??6),S=Tr(r),T=new os(n,a,s,l,c,u,p,d,f,h,m,y,b,v,w,O,S.alpha,S.isMask),M=new ke(T.calpha,"f");return new it(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:f,variation:h,smoothness:m,zigzag:y,rotation:b,vertical:v,horizontal:w,sides:O,...S},T,S.mode,M,S.isMask,o)}default:{let n=new qe(1,0,0,1),a=Tr(r),s=new hn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function _E(i,t,e,r){let o=dv(e,r);return DE(e,i,t,o,r)}function ph(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Se(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ii(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function ir(i,t,e,r,o,n,a=[]){let s=e;for(let l of a)l in s&&(s=s[l]);for(let l of i)l in s&&o.getVariable(s[l],["material",n,"layer",r,...a,String(l)]);for(let l of t)l in s&&s[l].forEach((c,u)=>{o.getVariable(c,["material",n,"layer",r,...a,String(l),u===0?"x":u===1?"y":"z"])})}function Qu(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var nr=class extends LE{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Zu=class extends nr{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},gn=class extends nr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,Xe.startContext(this),this.reset0(e,r),Xe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new Zu(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){Xe.startContext(this),(this.data!==e||o)&&this.reset0(e,r),Xe.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Ct.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ni.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=Qu(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=Qu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.transparent=Qu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3],u=e[4];if(l instanceof RE){let p=l[c],d;typeof p=="number"?d=Number(r):p.isVector2&&(d=p.toArray(),u==="x"?d[0]=Number(r):u==="y"&&(d[1]=Number(r))),Pl({[c]:d},o.shared,s);return}(c==="x"||c==="y"||c==="z")&&l.isVector3||(c==="x"||c==="y")&&l.isVector2?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"?o.data.displacementType==="noise"?ir(["intensity","scale","movement","smoothness","seed","highCut","lowCut"],["offset"],o.data,o.id,e.shared,this.uuid):ir(["intensity"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="depth"?ir(["near","far"],["origin","direction"],o.data,o.id,e.shared,this.uuid):o.data.type==="fresnel"?ir(["bias","scale","intensity","factor"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="rainbow"?ir(["filmThickness","movement","noiseStrength","noiseScale"],["offset","wavelengths"],o.data,o.id,e.shared,this.uuid):o.data.type==="noise"?ir(["scale","move","seed","highCut","lowCut","smoothness"],["size","distortion","fA","fB"],o.data,o.id,e.shared,this.uuid):o.data.type==="pattern"?ir(["blending","size","variation","smoothness","zigzag","rotation"],["offset","frequency","vertical","horizontal"],o.data,o.id,e.shared,this.uuid):o.data.type==="outline"?ir(["outlineWidth","contourWidth","outlineThreshold","contourThreshold","outlineSmoothing","contourFrequency"],["contourDirection"],o.data,o.id,e.shared,this.uuid):o.data.type==="toon"?ir(["noiseStrength","noiseScale"],["offset","source"],o.data,o.id,e.shared,this.uuid):o.data.type==="transmission"?ir(["roughness","thickness","ior"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="texture"||o.data.type==="video"?(ir([],["size"],o.data,o.id,e.shared,this.uuid),ir(["rotation"],["repeat","offset"],o.data,o.id,e.shared,this.uuid,["texture"])):o.data.type==="gradient"?ir(["angle"],["offset","morph"],o.data,o.id,e.shared,this.uuid):o.data.type==="matcap"&&ir(["rotation"],[],o.data,o.id,e.shared,this.uuid,["texture"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Qt),this.lightLayer===void 0&&(this.lightLayer=new Qt(0,"",{...yt.defaultData("light","phong"),visible:!1},new Wo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Qt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof it&&s.color instanceof Ci&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(Xe.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=Qu(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ii(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ii(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);Xe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof it?r.color.mask=void 0:r instanceof Qt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof it&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Qt?n.node.mask=new Rt(r.color,r.alpha,Rt.MUL):n instanceof it&&(n.isMask.value||(n.color.mask=new Rt(r.color,r.alpha,Rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof it),r=this.layers.findIndex(o=>o instanceof Qt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof it){if(a.isMask.value)continue;o=new Xa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ke("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Qt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof it){if(n.isMask.value)continue;e=new Xa(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Ol);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Rt(r,e[o].position,Rt.ADD),r=new Rt(r,new se(.5).setReadonly(!0),Rt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new qa;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof it){let r=e.params.texture;if(r instanceof fn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(nr.prototype,{properties:{get:function(){return this.fragment.properties}}});var xn=class extends gn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var fv=new Map;function hv(i){if(typeof i=="string")return i;let t=fv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},fv.set(i,t)),t.url}var BE,mv=new Promise(i=>{BE=i});var yv;mv.then(i=>yv=i);var bn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:hv(t),format:"wav"},this.sound=new yv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as VE,Vector2 as vn,Path as gv,Shape as zE,ShapeUtils as GE,Color as FE}from"three";var Ju=class{constructor(){this.type="ShapePath";this.color=new FE;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new gv,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,b,v){let w=m.x,O=y.x,S=b.x,T=v.x,M=m.y,g=y.y,D=b.y,N=v.y,I=(T-S)*(M-D)-(N-D)*(w-S),E=(O-w)*(M-D)-(g-M)*(w-S),_=(N-D)*(O-w)-(T-S)*(g-M),L=I/_,V=E/_;if(_===0&&I!==0||L<=0||L>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?b:v,m,y),r.loc===e.ORIGIN){let B=U===0?b:v;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(O-w)).toPrecision(10),q=+(M+r.t*(g-M)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?b:v,m,y),r.loc===e.ORIGIN){let j=q===0?b:v;return{x:j.x,y:j.y,t:r.t}}let U=+(w+L*(O-w)).toPrecision(10),B=+(M+L*(g-M)).toPrecision(10);return{x:U,y:B,t:L}}}function n(m,y,b){let v=b.x-y.x,w=b.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===b.x&&m.y===b.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(v*O<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){r.loc=e.BEYOND;return}let M;v!==0?M=O/v:M=S/w,r.loc=e.BETWEEN,r.t=M}function a(m,y){let b=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let M=y[T-1],g=y[T],D=o(O,S,M,g);D!==null&&b.find(N=>N.t<=D.t+Number.EPSILON&&N.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),v.push(new vn(D.x,D.y)))}}return v}function s(m,y,b){let v=new vn;y.getCenter(v);let w=[];return b.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{w.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,b,v,w){(w==null||w==="")&&(w="nonzero");let O=new vn;m.boundingBox.getCenter(O);let S=[new vn(b,O.y),new vn(v,O.y)],T=s(S,m.boundingBox,y);T.sort((E,_)=>E.point.x-_.point.x);let M=[],g=[];T.forEach(E=>{E.identifier===m.identifier?M.push(E):g.push(E)});let D=M[0].point.x,N=[],I=0;for(;I<g.length&&g[I].point.x<D;)N.length>0&&N[N.length-1]===g[I].identifier?N.pop():N.push(g[I].identifier),I++;if(N.push(m.identifier),w==="evenodd"){let E=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:E,for:_}}else if(w==="nonzero"){let E=!0,_=null,L=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(E?(L=y[U].isCW,E=!1,_=U):L!==y[U].isCW&&(L=y[U].isCW,E=!0))}return{identifier:m.identifier,isHole:E,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>b&&(b=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<O&&(O=T.x)}p<=w&&(p=w+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:GE.isClockWise(y),identifier:c++,boundingBox:new VE(new vn(O,v),new vn(w,b))})});let f=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),h=[];return d.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let b=new zE;b.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=d[w.identifier],S=new gv;S.curves=O.curves,b.holes.push(S)}}),h.push(b)}}),h}};var fh=!1,bv,hh=new Promise(i=>{bv=i}),xv=!1;var ed;function vv(){if(fh=!0,xv)return;if(ed)return ed;async function i(){let e=await import("./opentype.js");bv(e),xv=!0}return ed=i(),ed}var Tl=class{async load(t,e,r=()=>{}){let{load:o}=await hh;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await hh;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function jE(i){return await(await fetch(i)).arrayBuffer()}var UE=new Tl;async function mh(i){let t,e,r=!1;if(i.url?(t=await jE(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(fh){let o=await UE.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as kE,LineCurve as HE,QuadraticBezierCurve as WE}from"three";function qE(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var td=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=mh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=mh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,p=String.fromCharCode(r[c].unicode),d=n[s];if(qE(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let f=d.char,h="",m=[d.state.glyphIndex],y=[],b=!1;for(;!b;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(b=!0),s>e.length&&(b=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(v=>this.getTextWidth(v,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
2286
2286
  `,e),p=e.horizontalAlign===1?u:0,d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,t[0],u),f=this.getLineInitialOffsetY(a,t.length,c,n,e.verticalAlign),h=[],m=t.map(v=>[]),y=t.map(v=>[]);for(let v=0;v<t.length;v++){let w=t[v],O={features:{liga:!0},letterSpacing:e.letterSpacing},S=[];try{S=o.stringToGlyphs(w,O)}catch(N){console.warn(N)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,w,u);let T=[];try{T=this.reverseLigaturesTable(o,w,S)}catch(N){console.warn(N)}let M=this.computeSpaceWidthForLine(t,v,e,r),g=0,D=S[0];D&&e.horizontalAlign===2&&D.leftSideBearing!==void 0&&(d-=D.leftSideBearing*n),this.font?.forEachGlyph(w,d,f,e.fontSize,O,(N,I,E,_,L)=>{let V=N.index===0?`
2287
2287
  `:N.unicode?String.fromCharCode(N.unicode):void 0,U=T[g],B=0;if(V===`
2288
2288
  `)B=p;else if(V===" ")B=M;else{let q=this.createPath(N,n,I,E,e);q&&(B=q.offsetX,h.push(q.path))}if(U.replacements.length===1)y[v].push([I,E]),m[v].push(B);else{let q=U.replacements.map(W=>(o.glyphs.get(W).advanceWidth??0)*n),j=q.reduce((W,ee)=>W+=ee,0),F=q.map(W=>W/j),H=I;for(let W=0;W<F.length;W++){let ee=B*F[W];y[v].push([H,E]),m[v].push(ee),H+=ee}}g++}),f-=a}let b=[];for(let v=0,w=h.length;v<w;v++)b.push(...h[v].toShapes());return{shapes:b,charWidths:m,lineWidths:s,charCoords:y}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,n){return(r===3||r===2)&&o.indexOf(`
2289
- `)>=0&&(t-=n),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,n){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,c=-this.ascender*o-l/2;return n===3?-(r-a-c):n===2?-(r*.5-a*.5-c):c}createPath(t,e,r,o,n){let a=t.getPath(r,-o,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Ju,l=(t.advanceWidth??1)*e;if(t)for(let c of a.commands){let u=s.currentPath?.currentPoint;if(!(u&&c.type!=="Z"&&u.x===c.x&&-u.y===c.y))switch(c.type){case"M":s.moveTo(c.x,-c.y);break;case"L":s.lineTo(c.x,-c.y);break;case"Q":s.quadraticCurveTo(c.x1,-c.y1,c.x,-c.y);break;case"C":s.bezierCurveTo(c.x1,-c.y1,c.x2,-c.y2,c.x,-c.y);break}}return s.subPaths.forEach(c=>{let u=$E(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r,o){let n=this.getCharWidth(" ",r),a=t[e];if(a){let s=this.countSpaces(a.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=typeof r.width=="string"?Number(o.getVariable(r.width)):r.width,c=this.getTextWidth(a,r);return(l-(c-s*n))/s}}return n}countSpaces(t){return(t.match(/ /g)||[]).length}};function $E(i){if(i.length){let t=i[0];if(t instanceof HE)return t.v1;if(t instanceof kE||t instanceof WE)return t.v0}}var yh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Cl=class extends yh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let n=fo(e,r,this.flatShading,o);return n.computeBoundingSphere(),n}};var Sv={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Cv}from"three";var rd=1e3,wv=512*rd;function XE(i,t){let e=typeof i;return!!((t==="string"||t==="number")&&e===t||t==="boolean"&&(i==="true"||i==="false"||i===!0||i===!1)||t==="image"&&e==="string"&&i.startsWith("http"))}var Pv="https://hooks.spline.design",YE=`${Pv}/events?hashFile=`,yoe=`${Pv}/`,od=class{constructor(t,e){this.id=t;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=ko();this.reconnectWaitFor=rd;this._onError=t=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=t=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=rd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=rd,this._connected=!1};this._onMessage=t=>{let e=t.data,r;try{r=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(r){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:n})=>{r[n.name]!==void 0&&XE(r[n.name],n.type)&&(this.result===void 0&&(this.result={}),this.result[n.name]=r[n.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(YE+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>wv&&(this.reconnectWaitFor=wv),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(t){this.userWebhook=t}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(t=>t.data.name)}getParameterValue(t){if(this.getParametersKeys().includes(t)){if(this.result)return this.result?.[t];for(let r of this.userWebhook.parametersSchemas)if(r.data.name===t)return ou.defaultParameterValueByType(r.data.type)}}};var Ov=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],KE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Yo=[],nd=[];for(let i=1;i<=8;i++)for(let t=0;t<Ov.length;t++){let e=Ov[t];Yo.push(e/Math.pow(2,8-i)),nd.push(KE[t]+i)}var id=[32,2e3],gh=Yo.filter((i,t)=>Yo[t]>id[0]&&Yo[t]<id[1]),Tv=nd.filter((i,t)=>Yo[t]>id[0]&&Yo[t]<id[1]);var ad=class{static getFrequencies(t,e,r,o="frequency",n=-100,a=-30){r||(r=new Float32Array(t.frequencyBinCount),t.getFloatFrequencyData(r));let s=e/2,l=1/r.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?gh:Yo,m=Array(h.length).fill(n);for(let y=0;y<r.length;y++){let b=y*l,v=r[y];for(let w=h.length-1;w>=0;w--)if(b>h[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?gh:Yo,p=o==="voice"?Tv:nd}else c=Array.from(r),u=c.map((h,m)=>l*m),p=u.map(h=>`${h.toFixed(2)} Hz`);let d=c.map(h=>Math.max(0,Math.min((h-n)/(a-n),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}};var QE="gpt-4o-realtime-preview-2024-12-17",ZE=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/";async function JE(i){try{return(await(await fetch(ZE()+"session?uuidfile="+i)).json()).token}catch(t){console.error("Token generation error:",t)}}var xh=class{constructor(t){this.value=0;this.frequencies=new Float32Array(0);let e=new AudioContext;this.source=e.createMediaStreamSource(t),this.analyser=e.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(t=-100,e=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return ad.getFrequencies(this.analyser,44100,void 0,"voice",t,e)}update(){let t=this.getFrequencies(),e=t.values.reduce((r,o)=>r+o,0)/t.values.length;this.value=e,this.frequencies=t.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},Al=class{constructor(t,e,r){this.data=t;this.id=e;this.shared=r;this.emitter=ko();this.rafId=0;this.voice=0;this.frequencies=new Float32Array([0]);this.events=[];this.isConnected=!1;this.isToolsAdded=!1;this.tools=[];this.onMessage=t=>{let e=JSON.parse(t.data);if(this.appendEvent(e),e.type==="session.created"&&this.onSessionCreated(),e.type==="response.done"&&e.response?.output){for(let r of e.response.output)if(r.type==="function_call")for(let[o,n]of this.tools)r.name===o.name&&(n(JSON.parse(r.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}};this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()};this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let t=this.analyser.value,e=this.analyser.frequencies;this.voice=t,this.frequencies=e,this.emitter.emit("voice",{value:t,frequencies:e})}}}update(t){this.data=t}setColorByName(t,e){let r=this.shared.getColorByName(t);if(r){let{id:o}=r,{r:n,g:a,b:s}=Ob.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:n/255,g:a/255,b:s/255})}}async connect(){if(this.isConnected)return;let t=await JE(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=l=>{let c=l.streams[0];this.audioElement.srcObject=c,this.analyser=new xh(c)};let e=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(e.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let r=await this.pc.createOffer();await this.pc.setLocalDescription(r);let s={type:"answer",sdp:await(await fetch(`https://api.openai.com/v1/realtime?model=${QE}`,{method:"POST",body:r.sdp,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(s),this.animate()}appendEvent(t){this.events=[t,...this.events]}sendClientEvent(t){this.dc?(t.event_id=t.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(t)),this.appendEvent(t)):console.error("Failed to send message - no data channel available",t)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:n})=>{this.setColorByName("Voice Assistant Color",n)});let t=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${t}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:n,value:a})=>{let s=this.shared.getVariableByName(n);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:n,value:a})=>{this.setColorByName(n,a)});let r=this.shared.scene,o=[];r.traverseEntity(n=>{n.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:n,direction:a})=>{this.emitter.emit("trigger_event",{description:n,direction:a})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([n])=>n)}})}registerTool(t,e){this.tools.push([t,e])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(t){if(t.analysis==="range"){let e=this.frequencies.slice(...t.analysisRange);return e.reduce((r,o)=>r+o,0)/e.length}return t.analysis==="single"?this.frequencies[t.analysisSingle]:this.voice}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}};function Av(i){return"variable_"+i}var bh=class extends Yu{constructor(e){super();this.shared=e}create(e){return new ls(e,this.shared)}},Sn=class{constructor(t,e={},r=!0,o=!1){this.data=t;this.needsJitter=r;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Cl(!0);this.geometryCache2=new Cl(!1);this.imageHolderCache=new bh(this);this.thisContext={scene:Sv,shared:this};this.deletedMaterial=new xn(Ct.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new hr(lu.emptyImage,this);this.deletedVideo=new hr(da.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.timelineAnimations={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[n,a]of Object.entries(e.images))this.addImage(n,a);if(e.videos)for(let[n,a]of Object.entries(e.videos))this.addVideo(n,a);if(e.audios)for(let[n,a]of Object.entries(e.audios))this.addAudio(n,a);if(e.particles)for(let[n,a]of Object.entries(e.particles))this.addParticle(n,a);this.reset(t)}setRequestRender(t){this._requestRender=t}getImageLoadPromises(){return Object.values(this.images).map(t=>t.loadPromise)}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1,r=!1){this.data=t,this.resetLib(t.lib);for(let{id:o,data:n}of t.variables)this.addVariableHolder(o,n),e&&this.updateVariableHolder(o,n);for(let[o,n]of Object.entries(t.userAPIs??{}))this.addUserAPI(o,n);for(let[o,n]of Object.entries(t.userWebhooks??{}))this.addUserWebhook(o,n);if(!r){for(let[o,n]of Object.entries(t.images))this.addImage(o,n);for(let[o,n]of Object.entries(t.videos))this.addVideo(o,n)}for(let[o,n]of Object.entries(t.colors))this.addColor(o,n);for(let[o,n]of Object.entries(t.materials))this.addMaterial(o,n);for(let[o,n]of Object.entries(t.audios))this.addAudio(o,n);for(let[o,n]of Object.entries(t.particles))this.addParticle(o,n);for(let[o,n]of Object.entries(t.fonts))this.addFont(o,n);for(let[o,n]of Object.entries(t.timelineAnimations??{}))this.addAnimation(o,n)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new xn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new gn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new hr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addUIBuffer(t,e){return this.uiBuffers[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[t].updateSrc(e),!0):(this.uiBuffers[t]=new hr(e,this),!1)}uiBuffer(t){return this.uiBuffers[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new hr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Ai(e.r,e.g,e.b,e.a):this.colors[t]=new Ai(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}getColorNames(){return Object.values(this.data.colors).map(t=>t.name)}getColorByName(t){for(let e in this.data.colors)if(this.data.colors[e].name===t)return{color:this.colors[e],id:e}}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new At(0,0,0,0))}else return"a"in t?new At(t.r,t.g,t.b,t.a):new At(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof bn)return e;{let r=new bn({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof bn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new td(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}addAnimation(t,e){this.timelineAnimations[t]=e}getAnimation(t){return this.timelineAnimations[t]}deleteAniamtion(t){this.timelineAnimations[t]&&delete this.timelineAnimations[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof bn&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){if(this.variables[t]===void 0){let r=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(Av(t));r=o!==null?JSON.parse(o):e.value}return this.variables[t]={value:r,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0}return this.variables[t].value=e.value,!1}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[t].persistent&&localStorage.setItem(Av(t),JSON.stringify(e));let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let n=this.variables[t].locations.length-1;n>=0;n--){let a=this.variables[t].locations[n];if(a[0]==="material"){let s=a[1],l=r,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(d=>{let f=d.root??d;f.uuid===s&&f.onVariableUpdate(u,l,c)});let p=this.materials[s];p&&p.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(n,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*Cv.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),_e.is(s))if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let c=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(c.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],r)}}return this.requestRender(),!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Cv.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],n=o.locations?.findIndex(a=>Je.equal(a,e));n!==void 0&&n!==-1&&o.locations.splice(n,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;let n=this.variables[r].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r=n}while(typeof r=="string");return r}else return t}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(t=>t.data.name)}getVariableByName(t){for(let e of this.data.variables)if(e.data.name===t)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){if(this.data=e,t.path[0]==="images")t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id);else if(t.path[0]==="videos")t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id);else if(t.path[0]==="audios")t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id);else if(t.path[0]==="particles")t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id);else if(t.path[0]==="colors")t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id);else if(t.path[0]==="materials")t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(at.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r});else if(t.path[0]==="fonts")t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id);else if(t.path[0]==="variables")t.path.length===2&&t.type===0?"value"in t.props?this.updateVariable(t.path[1],t.props.value):"persistent"in t.props&&(this.variables[t.path[1]].persistent=t.props.persistent):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id);else if(t.path[0]==="userAPIs"){if(t.path.length===1&&t.type===1)this.addUserAPI(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserAPI(t.id);else if(typeof t.path[1]=="string"){let o=e.userAPIs[t.path[1]];if(o){let n=t.type===0&&t.props.debounce===void 0,a=this.getUserAPI(t.path[1]);a instanceof Al?a.update(o):a?.update(o,this,n)}}}else if(t.path[0]==="userWebhooks"){if(t.path.length===1&&t.type===1)this.addUserWebhook(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserWebhook(t.id);else if(typeof t.path[1]=="string"){let o=e.userWebhooks[t.path[1]];o&&this.getUserWebhook(t.path[1])?.update(o)}}else t.path[0]==="lib"&&this.updateLibByOp(at.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),n={...this.data.fonts[t],url:e.props.url};o.update(n),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}addUserAPI(t,e){return this.userAPIs[t]?(this.userAPIs[t].update(e,this),!0):this.openAIRealtime?.id===t?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Al(e,t,this),!1):(this.userAPIs[t]=new Bu(t,e,this),!1)}getUserAPI(t){return this.openAIRealtime?.id===t?this.openAIRealtime:this.userAPIs[t]}getUserAPIs(){return this.userAPIs}deleteUserAPI(t){let e=this.userAPIs[t];e&&(e.dispose(),delete this.userAPIs[t])}addUserWebhook(t,e){return this.userWebhooks[t]?(this.userWebhooks[t].update(e),!0):(this.userWebhooks[t]=new od(t,e),!1)}getUserWebhook(t){return this.userWebhooks[t]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(t){let e=this.userWebhooks[t];e&&(e.dispose(),delete this.userWebhooks[t])}get scene(){return this.entityOpContext.scene}},Mv=new Sn(wr.emptyData());var ar=class extends It{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),ox(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[n,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(n)]=s}else if(Be(e.path,["material"])&&this.material instanceof nr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(at.drop(e,1),r.material,o);else if(Be(e.path,["materials","*"])&&Array.isArray(this.material)){let n=e.path[1];if("materials"in r&&n<this.material.length){let a=r.materials[n];typeof a!="string"&&this.material[n].updateByOp(at.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;this.dataPatched.type==="Mesh"&&!!this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9);let a;this.dataPatched.type==="Mesh"&&this.dataPatched.geometry.type==="ShapeBlendGeometry"&&(a={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe,a),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(l=>r.shared.material(l).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty()));let s=this.data;if(s.geometry?.type!=="NonParametricGeometry"&&"materials"in s&&s.materials!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(s.materials[0]).getFlavor(o.flatShading,o.side,o.wireframe)),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let l=0;l<this.material.length;l++)this.material[l]=this.material[l].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe,a)}disposeMaterial(){this.material&&Ql(this.material).forEach(e=>{e instanceof nr&&(e instanceof xn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as tD,Matrix4 as Sh,Vector3 as _v,Vector4 as wh}from"three";var Iv=new _v,Nv=new wh,Ev=new wh,rD=new _v,Dv=new Sh,tt=class extends ar{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new Sh().fromArray(r.bindMatrix),this.bindMatrixInverse=new Sh)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof tD&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Sn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ws.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ws.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Be(e.path,["geometry"])&&this.updateByPatchedOpGeometry(at.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let n=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...n};this.localGeometry=fo(u,r,this.data.flatShading,this)}let a,s,l;n.scaleBaked?[a,s,l]=n.scaleBaked:{width:a,height:s,depth:l}=n;let c=this.localGeometry.userData;c.sxPrev!==void 0&&fl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let n={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fo(n,r,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let n=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof bt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(n=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),n||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:n,value:a}}of o)this.updateMorphInfluences(n,r.shared.getVariable(a,[this.uuid,"morphTargetInfluences",n]))}super.updateState(e,r)}updateMorphInfluences(e,r){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):o.centerOffset?e.fromArray(o.centerOffset):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new wh,o=this.geometry.attributes.skinWeight;for(let n=0,a=o.count;n<a;n++){r.fromBufferAttribute(o,n);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(n,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let n=this.geometry;Nv.fromBufferAttribute(n.attributes.skinIndex,e),Ev.fromBufferAttribute(n.attributes.skinWeight,e),Iv.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Ev.getComponent(a);if(s!==0){let l=Nv.getComponent(a);Dv.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(rD.copy(Iv).applyMatrix4(Dv),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function iD(i){if(i.geometry.attributes.extrudeNormal||!i.geometry.attributes.position||!i.geometry.attributes.normal)return;let t=new Map,e=i.geometry.attributes,r=e.position.array,o=e.normal.array,n=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Oh(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Oh})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(n[a]=l.x,n[a+1]=l.y,n[a+2]=l.z)}i.geometry.setAttribute("extrudeNormal",new Lv(n,3))}function nD(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Oh;for(let n=0;n<e.length;n+=3)o.set(e[n],e[n+1],e[n+2]).normalize(),r[n]=o.x,r[n+1]=o.y,r[n+2]=o.z;i.geometry.setAttribute("extrudeNormal",new Lv(r,3))}function ds(i){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(!(i.material instanceof nr)||i.material.getLayersOfType("outline").length===0)return;i instanceof tt&&i.is2DAndNoDepth?nD(i):iD(i)}function ps(i){if(!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(i.uuid.replace(/\D/g,"")),n=[Ph.seededRandom(o),Ph.seededRandom(o+1e4),Ph.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=n[a%3];i.geometry.setAttribute("randomColor",new oD(r,3))}var xo=new aD,Ml=new lD;function Bv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var wn=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new sD;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:n,subdivPointer:a}=bt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ds(this),ps(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(n=>n.getFlavor(!1,n.side,n.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){bt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&bt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=bt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=bt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,It.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Rv,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;xo.setFromBufferAttribute(r),xo.getCenter(o),e.boundingSphere.radius=o.distanceTo(xo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),xo.getSize(Ml),this.hasNonUniformScale&&Ml.divide(this.scale);let n={width:Ml.x,height:Ml.y,depth:Ml.z};return this.geometry.userData.parameters=n,n}updateBoundingSphere(e){let r=this.originalGeometry;xo.min.set(e[0],e[2],e[4]),xo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(xo.min.applyMatrix4(this.shearScaleInv),xo.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Rv);let o=r.boundingSphere.center;xo.getCenter(o),r.boundingSphere.radius=o.distanceTo(xo.max)}freeSubdivPointer(){this.subdivPointer&&(bt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as cD,Vector3 as On}from"three";var Vv=-1,uD=1,zv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Gv={polygon_center:0,edge:1,vertex:2},Il=(i,t)=>(e,r)=>!t||e===0||i===0?0:i*r/100,Ae=(i,t)=>{let e=Math.abs(t),r=e*-1;return(i-Vv)*(e-r)/(uD-Vv)+r},dD=new On,sd=new On,pD=new On,fD=new On;function fs(i,t){let e=pD.fromArray(i),r=fD.fromArray(t);sd.copy(r).sub(e);let o=sd.length();return sd.normalize().multiplyScalar(o*.5),dD.copy(e).add(sd).toArray()}var Cr=new cD,ld=new On,cd=new On,Pn=new On;function Fv(i){let t=[];for(let e=0;e<=i.index.count;e++)if(ld.fromArray(i.index.array,e*3),Cr.setFromAttributeAndIndices(i.attributes.position,ld.x,ld.y,ld.z),Cr.getNormal(cd),Cr.getMidpoint(Pn),!(isNaN(Pn.x)||isNaN(Pn.y)||isNaN(Pn.z))){let{a:r,b:o,c:n}=Cr,a=r.toArray(),s=o.toArray(),l=n.toArray(),c=r.distanceTo(o),u=o.distanceTo(n),p=n.distanceTo(r),d=fs(a,s),f=fs(s,l),h=fs(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Cr.getMidpoint(Pn).toArray();y===c&&!b&&(v=[f,h,h],w=d),y===u&&!b&&(v=[d,h,h],w=f),y===p&&!b&&(v=[d,f,f],w=h),b&&(v=[d,f,h]),t.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Cr.getNormal(cd).toArray()})}return t}function jv(i){let t=[],{position:e}=i.attributes;for(let r=0;r<e.count;r++){Cr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Cr.getNormal(cd),Cr.getMidpoint(Pn);let o=Cr.a.toArray(),n=Cr.b.toArray(),a=Cr.c.toArray();t.push({vertices:[o,n,a],faceCenters:[fs(o,n),fs(n,a),fs(a,o)],midpoint:Pn.toArray(),norm:cd.toArray()})}return t}var hD=4,mD=.5,Th=i=>.5*(1-Math.cos(i*Math.PI)),Ch=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),n=Math.floor(e),a=Math.floor(r),s=t-o,l=e-n,c=r-a,u,p,d=0,f=.5,h,m,y;for(let b=0;b<hD;b++){let v=o+(n<<4)+(a<<8);u=Th(s),p=Th(l),h=this.perlin[v&4095],h+=u*(this.perlin[v+1&4095]-h),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),h+=p*(m-h),v+=256,m=this.perlin[v&4095],m+=u*(this.perlin[v+1&4095]-m),y=this.perlin[v+16&4095],y+=u*(this.perlin[v+16+1&4095]-y),m+=p*(y-m),h+=Th(c)*(m-h),d+=h*f,f*=mD,o<<=1,s*=2,n<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(n++,l--),c>=1&&(a++,c--)}return d}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},Uv=Ch;import{Vector3 as yD,Matrix4 as gD,Ray as xD}from"three";var kv=new yD,Hv=new gD,Wv=new xD;function qv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&(r.geometry.type==="TextGeometry"||r.geometry.type==="InputGeometry")&&(t=!0)}),t}var Ei=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Hv.copy(o).invert(),Wv.copy(e.ray).applyMatrix4(Hv),Wv.intersectBox(this.singleBBox,kv))){let n=kv.applyMatrix4(o),a=e.ray.origin.distanceTo(n);r.push({distance:a,point:n.clone(),object:this})}}};var Zt=1e-4,bo,Kv,Qv,Zv,Xv=new mr,Yv=new mr;Gu.then(i=>{bo=i,Kv=[bo.get_face_center,bo.get_edge_midpoint,bo.get_vertex_position],Qv=[bo.get_face_normal,bo.get_edge_normal,bo.get_vertex_normal],Zv=[bo.face_count,bo.edge_count,bo.vertex_count]});var vD=new Tn,SD=new Tn,Di=new mr,ud=new mr,Nl=new mr,Mh=new mr,wD=new mr,PD=new mr;var Ih=class{constructor(t,e){this.data=t;this.is3D=e;this.perlin=new Uv;t.noiseType==="perlin"?(this.perlin.noiseSeed(t.seed),e?this.noise=(o,n,a)=>this.perlin.noise(o,n,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=p0((0,dd.default)(t.seed)):this.noise=d0((0,dd.default)(t.seed))}},_i=class extends Sa(bD){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Vr&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Vr&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)r=0;else if(e===void 0&&this.parameters.toObject.spreadType!=="random")return}if(this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===r)return;if(o.length<r)for(let n=0,a=r-o.length;n<a;++n){let s=new Vr(this.object);s.expand(),this.add(s)}else for(let n=0,a=o.length-r;n<a;++n)this.remove(o[n])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,n=r-this.children.length;o<n;++o){let a=new Vr(this.object);a.expand(),this.add(a)}else for(let o=0,n=this.children.length-r;o<n;++o)this.remove(this.children[o])}}getRandom(e,r=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==r)&&(this.random=new Ih(e,r)),this.random}_updateRadial(e){let r=e.radial,o=r.start*$v.DEG2RAD,n=r.end*$v.DEG2RAD,a=o-n,s=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new mr(0,0,1);break;case"y":l=new mr(0,1,0);break;default:case"x":l=new mr(1,0,0);break}let c=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=Il(c.strength,this.parameters.randomness);for(let[d,f]of this.children.entries()){let h=d*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=d+1;f.scale.x=r.scale[0]+p(y,Ae(m,c.scale[0]))||Zt,f.scale.y=r.scale[1]+p(y,Ae(m,c.scale[1]))||Zt,f.scale.z=r.scale[2]+p(y,Ae(m,c.scale[2]))||Zt,f.position.setScalar(0);let b=a/e.count*d-o;switch(r.axis){case"x":f.rotation.set(0,b,0);break;case"y":f.rotation.set(0,0,b);break;case"z":f.rotation.set(b,0,0);break}f.translateOnAxis(l,r.radius),f.position.x+=r.position[0]+p(y,Ae(m,c.position[0])),f.position.y+=r.position[1]+p(y,Ae(m,c.position[1])),f.position.z+=r.position[2]+p(y,Ae(m,c.position[2]));let v=p(y,Ae(m,c.rotation[0])),w=p(y,Ae(m,c.rotation[1])),O=p(y,Ae(m,c.rotation[2]));r.alignment===!0?(f.rotation.x+=s.x+v,f.rotation.y+=s.y+w,f.rotation.z+=s.z+O):f.rotation.set(s.x+v,s.y+w,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Il(n.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(n.freqScale/10)+n.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Ae(p,n.rotation[0])),h=s(d,Ae(p,n.rotation[1])),m=s(d,Ae(p,n.rotation[2]));c.scale.x=1+(r.scale[0]-1)*l+s(d,Ae(p,n.scale[0]))||Zt,c.scale.y=1+(r.scale[1]-1)*l+s(d,Ae(p,n.scale[1]))||Zt,c.scale.z=1+(r.scale[2]-1)*l+s(d,Ae(p,n.scale[2]))||Zt,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=r.position[0]*l+s(d,Ae(p,n.position[0])),c.position.y=r.position[1]*l+s(d,Ae(p,n.position[1])),c.position.z=r.position[2]*l+s(d,Ae(p,n.position[2]))}}_updateGrid(e){let r=0,o=e.grid,n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n,!0),s=Il(n.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new mr(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let d=0;d<o.count[2];d++){let f=a.noise((u+1)*(n.freqScale/10)+n.movement,(p+1)*(n.freqScale/10)+n.movement,(d+1)*(n.freqScale/10)+n.movement),h=this.children[r++];h.scale.x=1+s(r,Ae(f,n.scale[0]))||Zt,h.scale.y=1+s(r,Ae(f,n.scale[1]))||Zt,h.scale.z=1+s(r,Ae(f,n.scale[2]))||Zt;let m=s(r,Ae(f,n.rotation[0])),y=s(r,Ae(f,n.rotation[1])),b=s(r,Ae(f,n.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(r,Ae(f,n.position[0])),h.position.y=o.size[1]*p-c.y+s(r,Ae(f,n.position[1])),h.position.z=o.size[2]*d-c.z+s(r,Ae(f,n.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=a.noise((l+1)*(n.freqScale/10)+n.movement,(c+1)*(n.freqScale/10)+n.movement,(u+1)*(n.freqScale/10)+n.movement),d=this.children[r++];d.scale.x=1+s(r,Ae(p,n.scale[0]))||Zt,d.scale.y=1+s(r,Ae(p,n.scale[1]))||Zt,d.scale.z=1+s(r,Ae(p,n.scale[2]))||Zt;let f=s(r,Ae(p,n.rotation[0])),h=s(r,Ae(p,n.rotation[1])),m=s(r,Ae(p,n.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(r,Ae(p,n.position[0])),d.position.y=-o.size[1]*c+s(r,Ae(p,n.position[1])),d.position.z=-o.size[2]*u+s(r,Ae(p,n.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Il(n.strength,this.parameters.randomness);if(!r.object){for(let[,d]of this.children.entries())d.position.set(0,0,0),d.scale.setScalar(1),d.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ei)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let d=Math.round(l.length*r.count/100);this._updateCount(d)}else{let d=this.objectForSample.geometry.getAttribute("position");if(!d||isNaN(d.count)||d.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new fu(this.objectForSample).build(),u=zv[r.axis],p=this.children;c.setRandomGenerator((0,dd.default)(this.object.uuid+r.seed));for(let[d,f]of p.entries()){let h=d*(n.freqScale/10)+n.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Ae(m,n.rotation[0])),v=s(y,Ae(m,n.rotation[1])),w=s(y,Ae(m,n.rotation[2]));r.spreadType==="random"?c.sample(Nl,Mh):(l.length&&(Nl.fromArray(l[d].pos),Mh.fromArray(l[d].norm)),this.objectForSample instanceof wn&&Nl.applyMatrix4(vD.copy(this.objectForSample.matrixWorld).invert())),Nl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Nl),Di.fromArray(u);let O=r.align==="normal"?Mh:this.object.getWorldDirection(PD),S=ud.fromArray(r.position);ud.x+=s(y,Ae(m,n.position[0])),ud.y+=s(y,Ae(m,n.position[1])),ud.z+=s(y,Ae(m,n.position[2]));let T=Math.acos(O.dot(Di)),M=wD.crossVectors(Di,O).normalize(),g=SD.makeRotationAxis(M,T),D=O.clone().cross(this.object.up).normalize(),N=D.clone().cross(O).normalize(),I=new Tn().makeBasis(D,O,N),E=new mr(Di.y,Di.z,Di.x).normalize(),_=E.clone().cross(Di).normalize(),L=new Tn().makeBasis(E,Di,_).invert(),V=new Tn().multiplyMatrices(I,L);f.rotation.setFromRotationMatrix(V),S.applyMatrix4(g),f.position.add(S),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+v,f.rotation.z=f.rotation.z+o.z+w,f.scale.setScalar(1),f.scale.x=f.scale.x+r.scale[0]+s(y,Ae(m,n.scale[0]))||Zt,f.scale.y=f.scale.y+r.scale[1]+s(y,Ae(m,n.scale[1]))||Zt,f.scale.z=f.scale.z+r.scale[2]+s(y,Ae(m,n.scale[2]))||Zt,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,r=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=r.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):r.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof wn){let a=this.objectForSample,s=Gv[e],l=Zv[s],c=Kv[s],u=Qv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);Xv.fromArray(f).applyMatrix4(a.matrixWorld),Yv.fromArray(h),o(Xv.toArray(),Yv.toArray())}}else(this.objectForSample.geometry.index?Fv(this.objectForSample.geometry):jv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let n=Array.from(r.values());for(let a of n)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return n}updateState(e,r){if(this.parameters=No(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof It?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Tn,this.hiddenMatrix=new Tn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as iR,Vector3 as nR,Matrix4 as aR,Box3 as sR,MeshBasicMaterial as lR,Skeleton as cR}from"three";import{Camera as RD,OrthographicCamera as BD,PerspectiveCamera as VD,Vector3 as Yr,Object3D as r1,Quaternion as zD,Matrix4 as GD}from"three";import{Camera as ID,LineSegments as ND,BufferGeometry as ED,LineBasicMaterial as DD,Color as Eh,Vector3 as _D,Float32BufferAttribute as e1}from"three";import{BoxGeometry as OD}from"three";var vo=i=>{var t;return t=class extends i{},t.geometryHelper=new OD(30,30,30),t};import{Ray as TD,Sphere as CD,Matrix4 as AD,Vector3 as Ko}from"three";var pd=new TD,Nh=new CD,Jv=new AD,So=(i,t,e,r,o=!1,n=i)=>{let a=t,s=n.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Nh.copy(a.boundingSphere),Nh.applyMatrix4(s),e.ray.intersectsSphere(Nh)===!1||(Jv.copy(s).invert(),pd.copy(e.ray).applyMatrix4(Jv),a.boundingBox!==null&&pd.intersectsBox(a.boundingBox)===!1))return;let l,c,u,p,d=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let v=Math.max(0,h.start),w=Math.min(d.count,h.start+h.count);for(m=v,y=w;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(i,e,pd,f,c,u,p),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let w=a.attributes.position,O=new Ko,S=new Ko,T=new Ko,M=new Ko,g=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),I=N*N,E=Math.max(0,h.start),_=Math.min(w.count,h.start+h.count);for(let L=E,V=_-1;L<V;L+=g){if(O.fromBufferAttribute(w,L),S.fromBufferAttribute(w,L+1),pd.distanceSqToSegment(O,S,M,T)>I)continue;M.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(M);B<e.near||B>e.far||r.push({distance:B,point:T.clone().applyMatrix4(n.matrixWorld),object:i})}}function b(v,w,O,S,T,M,g){let D=new Ko,N=new Ko,I=new Ko,E=new Ko,_=new Ko;if(D.fromBufferAttribute(S,T),N.fromBufferAttribute(S,M),I.fromBufferAttribute(S,g),O.intersectTriangle(D,N,I,!1,E)===null)return null;_.copy(E),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var fd=new _D,Ar=new ID,Dh=class extends ND{constructor(e){let r=new ED,o=new DD({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],a=[],s={},l=new Eh(15711266),c=new Eh(15711266),u=new Eh(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",u),p("u2","u3",u),p("u3","u1",u);function p(f,h,m){d(f,m),d(h,m)}function d(f,h){n.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(n.length/3-1)}r.setAttribute("position",new e1(n,3)),r.setAttribute("color",new e1(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Ar.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,a=1,s=o?.8:1e-4;Xr("n1",r,e,Ar,-n,-a,s),Xr("n2",r,e,Ar,n,-a,s),Xr("n3",r,e,Ar,-n,a,s),Xr("n4",r,e,Ar,n,a,s);let l=s;Xr("f1",r,e,Ar,-n,-a,l),Xr("f2",r,e,Ar,n,-a,l),Xr("f3",r,e,Ar,-n,a,l),Xr("f4",r,e,Ar,n,a,l);let c=l,u=.5;Xr("u1",r,e,Ar,n*.7*u,a*1.1,c),Xr("u2",r,e,Ar,-n*.7*u,a*1.1,c),Xr("u3",r,e,Ar,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Xr(i,t,e,r,o,n,a){fd.set(o,n,a).unproject(r);let s=t[i];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],fd.x,fd.y,fd.z)}}var hd=class extends vo(Dh){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){So(this.object,this.geometry,e,r,!0)}};import{Box3Helper as t1,BoxGeometry as LD}from"three";var md;(t=>t.is=e=>"objectHelper"in e)(md||(md={}));var Mr=(i,t)=>class extends Oa(i){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}showGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof t1&&(n.visible=!0)}}updateEntityBoxSize(o,n){this.objectHelper.visible&&this.geometryHelper instanceof LD?(o.setScalar(0),n.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,n)}hideGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof t1&&(n.visible=!1)}}};var yd=790,hs=new Yr,_h=new Yr,Lh=new zD,Rh=new Yr,El=new Yr,Bh=new Yr,Qo=class extends Mr(RD,hd){constructor(e="",r={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=gi.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new GD,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,n=this.height;this.orthoCamera=new BD(o*-.5,o*.5,n*.5,n*-.5,-5e4,1e4),this.perspCamera=new VD(45,o/n,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Yr(e,r,o)),super.lookAt(e),this.getWorldPosition(hs),this.targetOffset=hs.distanceTo(e)}getTarget(e=new Yr){return this.getWorldDirection(_h),this.getWorldPosition(hs),_h.multiplyScalar(this.targetOffset),e.copy(hs).add(_h),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(hs),hs.distanceTo(e)}updateUp(){this.getWorldQuaternion(Lh),Rh.set(0,0,1).applyQuaternion(Lh),El.copy(r1.DEFAULT_UP),this.isUpVectorFlipped&&El.negate(),El.applyQuaternion(Lh),Bh.copy(r1.DEFAULT_UP).projectOnPlane(Rh),this.angleOffsetFromUp=Bh.angleTo(El),this.angleOffsetFromUp*=Bh.cross(El).dot(Rh)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Yr),n=e.getWorldDirection(new Yr).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Yr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Yr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let n=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-yd*.5*n,this.right=yd*.5*n,this.top=yd*.5*(1/a),this.bottom=-yd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,a,s):this.orthoCamera.setViewOffset(e,r,o,n,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ea(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as Rae}from"three";import{BufferGeometry as o1,Matrix4 as i1,Float32BufferAttribute as FD}from"three";var ms=new i1,jD=new i1;var sr=class extends ar{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new o1;this.onAfterRender=(e,r,o,n,a,s)=>{super.onAfterRender(e,r,o,n,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let n=0;n<this.children.length;n++){let a=this.children[n];a instanceof sr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let a=this.children[n];if(a instanceof It&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ms.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Or.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Or.transformMeshSet(a.booleanMeshSetAddress,ms),a.booleanMatrixInvOld.copy(ms).invert(),a.booleanWasTransformed=!1}else a instanceof sr&&a.needsTransformForDownstream===!0?(Or.transformMeshSet(a.booleanMeshSetAddress,ms),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Or.transformMeshSet(a.booleanMeshSetAddress,jD.multiplyMatrices(ms,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ms).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Or.hasOpenEdges(a.booleanMeshSetAddress)===!1||n===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new FD([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new o1,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Or.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ds(this),ps(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as UD}from"three";var n1;(t=>{function i(e){return _e.is(e)&&e instanceof UD}t.is=i})(n1||(n1={}));var ys=(i,t)=>class extends Mr(i,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Li=i=>i instanceof It,Dl=i=>i!==null&&i instanceof sr;var _l=i=>md.is(i);import{Group as XD}from"three";import{AxesHelper as kD,Group as HD,Quaternion as WD,Vector3 as Vh}from"three";var qD=new Vh(1,1,1),a1=new Vh,$D=new Vh,s1=new WD,Ir=class extends vo(kD){constructor(e,r=15){super(r);this.object=e;this.dummy=new HD;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){So(this.object,Ir.geometryHelper,e,r,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(a1,s1,$D),this.matrix.compose(a1,s1,qD),super.updateMatrixWorld(e)}updateWorldMatrix(e,r){}};var Ri=class extends Mr(XD,Ir){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as YD}from"three";var gs=class extends Mr(YD,Ir){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as V_,Fog as z_,HemisphereLight as G_}from"three";import{ShaderChunk as Ll}from"three";var KD=i=>`
2289
+ `)>=0&&(t-=n),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,n){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,c=-this.ascender*o-l/2;return n===3?-(r-a-c):n===2?-(r*.5-a*.5-c):c}createPath(t,e,r,o,n){let a=t.getPath(r,-o,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Ju,l=(t.advanceWidth??1)*e;if(t)for(let c of a.commands){let u=s.currentPath?.currentPoint;if(!(u&&c.type!=="Z"&&u.x===c.x&&-u.y===c.y))switch(c.type){case"M":s.moveTo(c.x,-c.y);break;case"L":s.lineTo(c.x,-c.y);break;case"Q":s.quadraticCurveTo(c.x1,-c.y1,c.x,-c.y);break;case"C":s.bezierCurveTo(c.x1,-c.y1,c.x2,-c.y2,c.x,-c.y);break}}return s.subPaths.forEach(c=>{let u=$E(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r,o){let n=this.getCharWidth(" ",r),a=t[e];if(a){let s=this.countSpaces(a.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=typeof r.width=="string"?Number(o.getVariable(r.width)):r.width,c=this.getTextWidth(a,r);return(l-(c-s*n))/s}}return n}countSpaces(t){return(t.match(/ /g)||[]).length}};function $E(i){if(i.length){let t=i[0];if(t instanceof HE)return t.v1;if(t instanceof kE||t instanceof WE)return t.v0}}var yh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Cl=class extends yh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let n=fo(e,r,this.flatShading,o);return n.computeBoundingSphere(),n}};var Sv={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Cv}from"three";var rd=1e3,wv=512*rd;function XE(i,t){let e=typeof i;return!!((t==="string"||t==="number")&&e===t||t==="boolean"&&(i==="true"||i==="false"||i===!0||i===!1)||t==="image"&&e==="string"&&i.startsWith("http"))}var Pv="https://hooks.spline.design",YE=`${Pv}/events?hashFile=`,yoe=`${Pv}/`,od=class{constructor(t,e){this.id=t;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=ko();this.reconnectWaitFor=rd;this._onError=t=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=t=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=rd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=rd,this._connected=!1};this._onMessage=t=>{let e=t.data,r;try{r=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(r){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:n})=>{r[n.name]!==void 0&&XE(r[n.name],n.type)&&(this.result===void 0&&(this.result={}),this.result[n.name]=r[n.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(YE+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>wv&&(this.reconnectWaitFor=wv),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(t){this.userWebhook=t}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(t=>t.data.name)}getParameterValue(t){if(this.getParametersKeys().includes(t)){if(this.result)return this.result?.[t];for(let r of this.userWebhook.parametersSchemas)if(r.data.name===t)return ou.defaultParameterValueByType(r.data.type)}}};var Ov=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],KE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Yo=[],nd=[];for(let i=1;i<=8;i++)for(let t=0;t<Ov.length;t++){let e=Ov[t];Yo.push(e/Math.pow(2,8-i)),nd.push(KE[t]+i)}var id=[32,2e3],gh=Yo.filter((i,t)=>Yo[t]>id[0]&&Yo[t]<id[1]),Tv=nd.filter((i,t)=>Yo[t]>id[0]&&Yo[t]<id[1]);var ad=class{static getFrequencies(t,e,r,o="frequency",n=-100,a=-30){r||(r=new Float32Array(t.frequencyBinCount),t.getFloatFrequencyData(r));let s=e/2,l=1/r.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?gh:Yo,m=Array(h.length).fill(n);for(let y=0;y<r.length;y++){let b=y*l,v=r[y];for(let w=h.length-1;w>=0;w--)if(b>h[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?gh:Yo,p=o==="voice"?Tv:nd}else c=Array.from(r),u=c.map((h,m)=>l*m),p=u.map(h=>`${h.toFixed(2)} Hz`);let d=c.map(h=>Math.max(0,Math.min((h-n)/(a-n),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}};var QE="gpt-4o-realtime-preview-2024-12-17",ZE=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/";async function JE(i){try{return(await(await fetch(ZE()+"session?uuidfile="+i)).json()).token}catch(t){console.error("Token generation error:",t)}}var xh=class{constructor(t){this.value=0;this.frequencies=new Float32Array(0);let e=new AudioContext;this.source=e.createMediaStreamSource(t),this.analyser=e.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(t=-100,e=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return ad.getFrequencies(this.analyser,44100,void 0,"voice",t,e)}update(){let t=this.getFrequencies(),e=t.values.reduce((r,o)=>r+o,0)/t.values.length;this.value=e,this.frequencies=t.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},Al=class{constructor(t,e,r){this.data=t;this.id=e;this.shared=r;this.emitter=ko();this.rafId=0;this.voice=0;this.frequencies=new Float32Array([0]);this.events=[];this.isConnected=!1;this.isToolsAdded=!1;this.tools=[];this.onMessage=t=>{let e=JSON.parse(t.data);if(this.appendEvent(e),e.type==="session.created"&&this.onSessionCreated(),e.type==="response.done"&&e.response?.output){for(let r of e.response.output)if(r.type==="function_call")for(let[o,n]of this.tools)r.name===o.name&&(n(JSON.parse(r.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}};this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()};this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let t=this.analyser.value,e=this.analyser.frequencies;this.voice=t,this.frequencies=e,this.emitter.emit("voice",{value:t,frequencies:e})}}}update(t){this.data=t}setColorByName(t,e){let r=this.shared.getColorByName(t);if(r){let{id:o}=r,{r:n,g:a,b:s}=Ob.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:n/255,g:a/255,b:s/255})}}async connect(){if(this.isConnected)return;let t=await JE(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=l=>{let c=l.streams[0];this.audioElement.srcObject=c,this.analyser=new xh(c)};let e=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(e.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let r=await this.pc.createOffer();await this.pc.setLocalDescription(r);let s={type:"answer",sdp:await(await fetch(`https://api.openai.com/v1/realtime?model=${QE}`,{method:"POST",body:r.sdp,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(s),this.animate()}appendEvent(t){this.events=[t,...this.events]}sendClientEvent(t){this.dc?(t.event_id=t.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(t)),this.appendEvent(t)):console.error("Failed to send message - no data channel available",t)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:n})=>{this.setColorByName("Voice Assistant Color",n)});let t=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${t}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:n,value:a})=>{let s=this.shared.getVariableByName(n);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:n,value:a})=>{this.setColorByName(n,a)});let r=this.shared.scene,o=[];r.traverseEntity(n=>{n.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:n,direction:a})=>{this.emitter.emit("trigger_event",{description:n,direction:a})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([n])=>n)}})}registerTool(t,e){this.tools.push([t,e])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(t){if(t.analysis==="range"){let e=this.frequencies.slice(...t.analysisRange);return e.reduce((r,o)=>r+o,0)/e.length}return t.analysis==="single"?this.frequencies[t.analysisSingle]:this.voice}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}};function Av(i){return"variable_"+i}var bh=class extends Yu{constructor(e){super();this.shared=e}create(e){return new ls(e,this.shared)}},Sn=class{constructor(t,e={},r=!0,o=!1){this.data=t;this.needsJitter=r;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Cl(!0);this.geometryCache2=new Cl(!1);this.imageHolderCache=new bh(this);this.thisContext={scene:Sv,shared:this};this.deletedMaterial=new xn(Ct.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new hr(lu.emptyImage,this);this.deletedVideo=new hr(da.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.timelineAnimations={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[n,a]of Object.entries(e.images))this.addImage(n,a);if(e.videos)for(let[n,a]of Object.entries(e.videos))this.addVideo(n,a);if(e.audios)for(let[n,a]of Object.entries(e.audios))this.addAudio(n,a);if(e.particles)for(let[n,a]of Object.entries(e.particles))this.addParticle(n,a);this.reset(t)}setRequestRender(t){this._requestRender=t}getImageLoadPromises(){return Object.values(this.images).map(t=>t.loadPromise)}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1,r=!1){this.data=t,this.resetLib(t.lib);for(let{id:o,data:n}of t.variables)this.addVariableHolder(o,n),e&&this.updateVariableHolder(o,n);for(let[o,n]of Object.entries(t.userAPIs??{}))this.addUserAPI(o,n);for(let[o,n]of Object.entries(t.userWebhooks??{}))this.addUserWebhook(o,n);if(!r){for(let[o,n]of Object.entries(t.images))this.addImage(o,n);for(let[o,n]of Object.entries(t.videos))this.addVideo(o,n)}for(let[o,n]of Object.entries(t.colors))this.addColor(o,n);for(let[o,n]of Object.entries(t.materials))this.addMaterial(o,n);for(let[o,n]of Object.entries(t.audios))this.addAudio(o,n);for(let[o,n]of Object.entries(t.particles))this.addParticle(o,n);for(let[o,n]of Object.entries(t.fonts))this.addFont(o,n);for(let[o,n]of Object.entries(t.timelineAnimations??{}))this.addAnimation(o,n)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new xn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new gn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new hr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addUIBuffer(t,e){return this.uiBuffers[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[t].updateSrc(e),!0):(this.uiBuffers[t]=new hr(e,this),!1)}uiBuffer(t){return this.uiBuffers[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new hr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Ai(e.r,e.g,e.b,e.a):this.colors[t]=new Ai(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}getColorNames(){return Object.values(this.data.colors).map(t=>t.name)}getColorByName(t){for(let e in this.data.colors)if(this.data.colors[e].name===t)return{color:this.colors[e],id:e}}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new At(0,0,0,0))}else return"a"in t?new At(t.r,t.g,t.b,t.a):new At(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof bn)return e;{let r=new bn({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof bn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new td(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}addAnimation(t,e){this.timelineAnimations[t]=e}getAnimation(t){return this.timelineAnimations[t]}deleteAniamtion(t){this.timelineAnimations[t]&&delete this.timelineAnimations[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof bn&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){if(this.variables[t]===void 0){let r=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(Av(t));r=o!==null?JSON.parse(o):e.value}return this.variables[t]={value:r,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0}return this.variables[t].value=e.value,!1}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[t].persistent&&localStorage.setItem(Av(t),JSON.stringify(e));let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let n=this.variables[t].locations.length-1;n>=0;n--){let a=this.variables[t].locations[n];if(a[0]==="material"){let s=a[1],l=r,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(d=>{let f=d.root??d;f.uuid===s&&f.onVariableUpdate(u,l,c)});let p=this.materials[s];p&&p.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(n,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*Cv.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),_e.is(s))if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let c=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(c.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],r)}}return this.requestRender(),!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Cv.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],n=o.locations?.findIndex(a=>Je.equal(a,e));n!==void 0&&n!==-1&&o.locations.splice(n,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;let n=this.variables[r].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r=n}while(typeof r=="string");return r}else return t}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(t=>t.data.name)}getVariableByName(t){for(let e of this.data.variables)if(e.data.name===t)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){if(this.data=e,t.path[0]==="images")t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id);else if(t.path[0]==="videos")t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id);else if(t.path[0]==="audios")t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id);else if(t.path[0]==="particles")t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id);else if(t.path[0]==="colors")t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id);else if(t.path[0]==="materials")t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(at.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r});else if(t.path[0]==="fonts")t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id);else if(t.path[0]==="variables")t.path.length===2&&t.type===0?"value"in t.props?this.updateVariable(t.path[1],t.props.value):"persistent"in t.props&&(this.variables[t.path[1]].persistent=t.props.persistent):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id);else if(t.path[0]==="userAPIs"){if(t.path.length===1&&t.type===1)this.addUserAPI(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserAPI(t.id);else if(typeof t.path[1]=="string"){let o=e.userAPIs[t.path[1]];if(o){let n=t.type===0&&t.props.debounce===void 0,a=this.getUserAPI(t.path[1]);a instanceof Al?a.update(o):a?.update(o,this,n)}}}else if(t.path[0]==="userWebhooks"){if(t.path.length===1&&t.type===1)this.addUserWebhook(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserWebhook(t.id);else if(typeof t.path[1]=="string"){let o=e.userWebhooks[t.path[1]];o&&this.getUserWebhook(t.path[1])?.update(o)}}else t.path[0]==="lib"&&this.updateLibByOp(at.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),n={...this.data.fonts[t],url:e.props.url};o.update(n),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}addUserAPI(t,e){return this.userAPIs[t]?(this.userAPIs[t].update(e,this),!0):this.openAIRealtime?.id===t?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Al(e,t,this),!1):(this.userAPIs[t]=new Bu(t,e,this),!1)}getUserAPI(t){return this.openAIRealtime?.id===t?this.openAIRealtime:this.userAPIs[t]}getUserAPIs(){return this.userAPIs}deleteUserAPI(t){let e=this.userAPIs[t];e&&(e.dispose(),delete this.userAPIs[t])}addUserWebhook(t,e){return this.userWebhooks[t]?(this.userWebhooks[t].update(e),!0):(this.userWebhooks[t]=new od(t,e),!1)}getUserWebhook(t){return this.userWebhooks[t]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(t){let e=this.userWebhooks[t];e&&(e.dispose(),delete this.userWebhooks[t])}get scene(){return this.entityOpContext.scene}},Mv=new Sn(wr.emptyData());var ar=class extends It{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),ox(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[n,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(n)]=s}else if(Be(e.path,["material"])&&this.material instanceof nr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(at.drop(e,1),r.material,o);else if(Be(e.path,["materials","*"])&&Array.isArray(this.material)){let n=e.path[1];if("materials"in r&&n<this.material.length){let a=r.materials[n];typeof a!="string"&&this.material[n].updateByOp(at.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;this.dataPatched.type==="Mesh"&&!!this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9);let a;this.dataPatched.type==="Mesh"&&this.dataPatched.geometry.type==="ShapeBlendGeometry"&&(a={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe,a),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(l=>r.shared.material(l).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty()));let s=this.data;if(s.geometry?.type!=="NonParametricGeometry"&&"materials"in s&&s.materials!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(s.materials[0]).getFlavor(o.flatShading,o.side,o.wireframe)),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let l=0;l<this.material.length;l++)this.material[l]=this.material[l].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe,a)}disposeMaterial(){this.material&&Ql(this.material).forEach(e=>{e instanceof nr&&(e instanceof xn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as tD,Matrix4 as Sh,Vector3 as _v,Vector4 as wh}from"three";var Iv=new _v,Nv=new wh,Ev=new wh,rD=new _v,Dv=new Sh,tt=class extends ar{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new Sh().fromArray(r.bindMatrix),this.bindMatrixInverse=new Sh)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof tD&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Sn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ws.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ws.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Be(e.path,["geometry"])&&this.updateByPatchedOpGeometry(at.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let n=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...n};this.localGeometry=fo(u,r,this.data.flatShading,this)}let a,s,l;n.scaleBaked?[a,s,l]=n.scaleBaked:{width:a,height:s,depth:l}=n;let c=this.localGeometry.userData;c.sxPrev!==void 0&&fl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let n={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fo(n,r,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let n=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof vt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(n=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),n||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:n,value:a}}of o)this.updateMorphInfluences(n,r.shared.getVariable(a,[this.uuid,"morphTargetInfluences",n]))}super.updateState(e,r)}updateMorphInfluences(e,r){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):o.centerOffset?e.fromArray(o.centerOffset):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new wh,o=this.geometry.attributes.skinWeight;for(let n=0,a=o.count;n<a;n++){r.fromBufferAttribute(o,n);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(n,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let n=this.geometry;Nv.fromBufferAttribute(n.attributes.skinIndex,e),Ev.fromBufferAttribute(n.attributes.skinWeight,e),Iv.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Ev.getComponent(a);if(s!==0){let l=Nv.getComponent(a);Dv.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(rD.copy(Iv).applyMatrix4(Dv),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function iD(i){if(i.geometry.attributes.extrudeNormal||!i.geometry.attributes.position||!i.geometry.attributes.normal)return;let t=new Map,e=i.geometry.attributes,r=e.position.array,o=e.normal.array,n=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Oh(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Oh})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(n[a]=l.x,n[a+1]=l.y,n[a+2]=l.z)}i.geometry.setAttribute("extrudeNormal",new Lv(n,3))}function nD(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Oh;for(let n=0;n<e.length;n+=3)o.set(e[n],e[n+1],e[n+2]).normalize(),r[n]=o.x,r[n+1]=o.y,r[n+2]=o.z;i.geometry.setAttribute("extrudeNormal",new Lv(r,3))}function ds(i){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(!(i.material instanceof nr)||i.material.getLayersOfType("outline").length===0)return;i instanceof tt&&i.is2DAndNoDepth?nD(i):iD(i)}function ps(i){if(!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(i.uuid.replace(/\D/g,"")),n=[Ph.seededRandom(o),Ph.seededRandom(o+1e4),Ph.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=n[a%3];i.geometry.setAttribute("randomColor",new oD(r,3))}var xo=new aD,Ml=new lD;function Bv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var wn=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new sD;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:n,subdivPointer:a}=vt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ds(this),ps(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(n=>n.getFlavor(!1,n.side,n.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){vt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&vt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=vt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=vt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,It.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Rv,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;xo.setFromBufferAttribute(r),xo.getCenter(o),e.boundingSphere.radius=o.distanceTo(xo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),xo.getSize(Ml),this.hasNonUniformScale&&Ml.divide(this.scale);let n={width:Ml.x,height:Ml.y,depth:Ml.z};return this.geometry.userData.parameters=n,n}updateBoundingSphere(e){let r=this.originalGeometry;xo.min.set(e[0],e[2],e[4]),xo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(xo.min.applyMatrix4(this.shearScaleInv),xo.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Rv);let o=r.boundingSphere.center;xo.getCenter(o),r.boundingSphere.radius=o.distanceTo(xo.max)}freeSubdivPointer(){this.subdivPointer&&(vt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as cD,Vector3 as On}from"three";var Vv=-1,uD=1,zv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Gv={polygon_center:0,edge:1,vertex:2},Il=(i,t)=>(e,r)=>!t||e===0||i===0?0:i*r/100,Ae=(i,t)=>{let e=Math.abs(t),r=e*-1;return(i-Vv)*(e-r)/(uD-Vv)+r},dD=new On,sd=new On,pD=new On,fD=new On;function fs(i,t){let e=pD.fromArray(i),r=fD.fromArray(t);sd.copy(r).sub(e);let o=sd.length();return sd.normalize().multiplyScalar(o*.5),dD.copy(e).add(sd).toArray()}var Cr=new cD,ld=new On,cd=new On,Pn=new On;function Fv(i){let t=[];for(let e=0;e<=i.index.count;e++)if(ld.fromArray(i.index.array,e*3),Cr.setFromAttributeAndIndices(i.attributes.position,ld.x,ld.y,ld.z),Cr.getNormal(cd),Cr.getMidpoint(Pn),!(isNaN(Pn.x)||isNaN(Pn.y)||isNaN(Pn.z))){let{a:r,b:o,c:n}=Cr,a=r.toArray(),s=o.toArray(),l=n.toArray(),c=r.distanceTo(o),u=o.distanceTo(n),p=n.distanceTo(r),d=fs(a,s),f=fs(s,l),h=fs(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Cr.getMidpoint(Pn).toArray();y===c&&!b&&(v=[f,h,h],w=d),y===u&&!b&&(v=[d,h,h],w=f),y===p&&!b&&(v=[d,f,f],w=h),b&&(v=[d,f,h]),t.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Cr.getNormal(cd).toArray()})}return t}function jv(i){let t=[],{position:e}=i.attributes;for(let r=0;r<e.count;r++){Cr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Cr.getNormal(cd),Cr.getMidpoint(Pn);let o=Cr.a.toArray(),n=Cr.b.toArray(),a=Cr.c.toArray();t.push({vertices:[o,n,a],faceCenters:[fs(o,n),fs(n,a),fs(a,o)],midpoint:Pn.toArray(),norm:cd.toArray()})}return t}var hD=4,mD=.5,Th=i=>.5*(1-Math.cos(i*Math.PI)),Ch=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),n=Math.floor(e),a=Math.floor(r),s=t-o,l=e-n,c=r-a,u,p,d=0,f=.5,h,m,y;for(let b=0;b<hD;b++){let v=o+(n<<4)+(a<<8);u=Th(s),p=Th(l),h=this.perlin[v&4095],h+=u*(this.perlin[v+1&4095]-h),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),h+=p*(m-h),v+=256,m=this.perlin[v&4095],m+=u*(this.perlin[v+1&4095]-m),y=this.perlin[v+16&4095],y+=u*(this.perlin[v+16+1&4095]-y),m+=p*(y-m),h+=Th(c)*(m-h),d+=h*f,f*=mD,o<<=1,s*=2,n<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(n++,l--),c>=1&&(a++,c--)}return d}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},Uv=Ch;import{Vector3 as yD,Matrix4 as gD,Ray as xD}from"three";var kv=new yD,Hv=new gD,Wv=new xD;function qv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&(r.geometry.type==="TextGeometry"||r.geometry.type==="InputGeometry")&&(t=!0)}),t}var Ei=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Hv.copy(o).invert(),Wv.copy(e.ray).applyMatrix4(Hv),Wv.intersectBox(this.singleBBox,kv))){let n=kv.applyMatrix4(o),a=e.ray.origin.distanceTo(n);r.push({distance:a,point:n.clone(),object:this})}}};var Zt=1e-4,bo,Kv,Qv,Zv,Xv=new mr,Yv=new mr;Gu.then(i=>{bo=i,Kv=[bo.get_face_center,bo.get_edge_midpoint,bo.get_vertex_position],Qv=[bo.get_face_normal,bo.get_edge_normal,bo.get_vertex_normal],Zv=[bo.face_count,bo.edge_count,bo.vertex_count]});var vD=new Tn,SD=new Tn,Di=new mr,ud=new mr,Nl=new mr,Mh=new mr,wD=new mr,PD=new mr;var Ih=class{constructor(t,e){this.data=t;this.is3D=e;this.perlin=new Uv;t.noiseType==="perlin"?(this.perlin.noiseSeed(t.seed),e?this.noise=(o,n,a)=>this.perlin.noise(o,n,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=p0((0,dd.default)(t.seed)):this.noise=d0((0,dd.default)(t.seed))}},_i=class extends Sa(bD){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Vr&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Vr&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)r=0;else if(e===void 0&&this.parameters.toObject.spreadType!=="random")return}if(this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===r)return;if(o.length<r)for(let n=0,a=r-o.length;n<a;++n){let s=new Vr(this.object);s.expand(),this.add(s)}else for(let n=0,a=o.length-r;n<a;++n)this.remove(o[n])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,n=r-this.children.length;o<n;++o){let a=new Vr(this.object);a.expand(),this.add(a)}else for(let o=0,n=this.children.length-r;o<n;++o)this.remove(this.children[o])}}getRandom(e,r=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==r)&&(this.random=new Ih(e,r)),this.random}_updateRadial(e){let r=e.radial,o=r.start*$v.DEG2RAD,n=r.end*$v.DEG2RAD,a=o-n,s=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new mr(0,0,1);break;case"y":l=new mr(0,1,0);break;default:case"x":l=new mr(1,0,0);break}let c=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=Il(c.strength,this.parameters.randomness);for(let[d,f]of this.children.entries()){let h=d*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=d+1;f.scale.x=r.scale[0]+p(y,Ae(m,c.scale[0]))||Zt,f.scale.y=r.scale[1]+p(y,Ae(m,c.scale[1]))||Zt,f.scale.z=r.scale[2]+p(y,Ae(m,c.scale[2]))||Zt,f.position.setScalar(0);let b=a/e.count*d-o;switch(r.axis){case"x":f.rotation.set(0,b,0);break;case"y":f.rotation.set(0,0,b);break;case"z":f.rotation.set(b,0,0);break}f.translateOnAxis(l,r.radius),f.position.x+=r.position[0]+p(y,Ae(m,c.position[0])),f.position.y+=r.position[1]+p(y,Ae(m,c.position[1])),f.position.z+=r.position[2]+p(y,Ae(m,c.position[2]));let v=p(y,Ae(m,c.rotation[0])),w=p(y,Ae(m,c.rotation[1])),O=p(y,Ae(m,c.rotation[2]));r.alignment===!0?(f.rotation.x+=s.x+v,f.rotation.y+=s.y+w,f.rotation.z+=s.z+O):f.rotation.set(s.x+v,s.y+w,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Il(n.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(n.freqScale/10)+n.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Ae(p,n.rotation[0])),h=s(d,Ae(p,n.rotation[1])),m=s(d,Ae(p,n.rotation[2]));c.scale.x=1+(r.scale[0]-1)*l+s(d,Ae(p,n.scale[0]))||Zt,c.scale.y=1+(r.scale[1]-1)*l+s(d,Ae(p,n.scale[1]))||Zt,c.scale.z=1+(r.scale[2]-1)*l+s(d,Ae(p,n.scale[2]))||Zt,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=r.position[0]*l+s(d,Ae(p,n.position[0])),c.position.y=r.position[1]*l+s(d,Ae(p,n.position[1])),c.position.z=r.position[2]*l+s(d,Ae(p,n.position[2]))}}_updateGrid(e){let r=0,o=e.grid,n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n,!0),s=Il(n.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new mr(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let d=0;d<o.count[2];d++){let f=a.noise((u+1)*(n.freqScale/10)+n.movement,(p+1)*(n.freqScale/10)+n.movement,(d+1)*(n.freqScale/10)+n.movement),h=this.children[r++];h.scale.x=1+s(r,Ae(f,n.scale[0]))||Zt,h.scale.y=1+s(r,Ae(f,n.scale[1]))||Zt,h.scale.z=1+s(r,Ae(f,n.scale[2]))||Zt;let m=s(r,Ae(f,n.rotation[0])),y=s(r,Ae(f,n.rotation[1])),b=s(r,Ae(f,n.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(r,Ae(f,n.position[0])),h.position.y=o.size[1]*p-c.y+s(r,Ae(f,n.position[1])),h.position.z=o.size[2]*d-c.z+s(r,Ae(f,n.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=a.noise((l+1)*(n.freqScale/10)+n.movement,(c+1)*(n.freqScale/10)+n.movement,(u+1)*(n.freqScale/10)+n.movement),d=this.children[r++];d.scale.x=1+s(r,Ae(p,n.scale[0]))||Zt,d.scale.y=1+s(r,Ae(p,n.scale[1]))||Zt,d.scale.z=1+s(r,Ae(p,n.scale[2]))||Zt;let f=s(r,Ae(p,n.rotation[0])),h=s(r,Ae(p,n.rotation[1])),m=s(r,Ae(p,n.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(r,Ae(p,n.position[0])),d.position.y=-o.size[1]*c+s(r,Ae(p,n.position[1])),d.position.z=-o.size[2]*u+s(r,Ae(p,n.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Il(n.strength,this.parameters.randomness);if(!r.object){for(let[,d]of this.children.entries())d.position.set(0,0,0),d.scale.setScalar(1),d.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ei)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let d=Math.round(l.length*r.count/100);this._updateCount(d)}else{let d=this.objectForSample.geometry.getAttribute("position");if(!d||isNaN(d.count)||d.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new fu(this.objectForSample).build(),u=zv[r.axis],p=this.children;c.setRandomGenerator((0,dd.default)(this.object.uuid+r.seed));for(let[d,f]of p.entries()){let h=d*(n.freqScale/10)+n.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Ae(m,n.rotation[0])),v=s(y,Ae(m,n.rotation[1])),w=s(y,Ae(m,n.rotation[2]));r.spreadType==="random"?c.sample(Nl,Mh):(l.length&&(Nl.fromArray(l[d].pos),Mh.fromArray(l[d].norm)),this.objectForSample instanceof wn&&Nl.applyMatrix4(vD.copy(this.objectForSample.matrixWorld).invert())),Nl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Nl),Di.fromArray(u);let O=r.align==="normal"?Mh:this.object.getWorldDirection(PD),S=ud.fromArray(r.position);ud.x+=s(y,Ae(m,n.position[0])),ud.y+=s(y,Ae(m,n.position[1])),ud.z+=s(y,Ae(m,n.position[2]));let T=Math.acos(O.dot(Di)),M=wD.crossVectors(Di,O).normalize(),g=SD.makeRotationAxis(M,T),D=O.clone().cross(this.object.up).normalize(),N=D.clone().cross(O).normalize(),I=new Tn().makeBasis(D,O,N),E=new mr(Di.y,Di.z,Di.x).normalize(),_=E.clone().cross(Di).normalize(),L=new Tn().makeBasis(E,Di,_).invert(),V=new Tn().multiplyMatrices(I,L);f.rotation.setFromRotationMatrix(V),S.applyMatrix4(g),f.position.add(S),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+v,f.rotation.z=f.rotation.z+o.z+w,f.scale.setScalar(1),f.scale.x=f.scale.x+r.scale[0]+s(y,Ae(m,n.scale[0]))||Zt,f.scale.y=f.scale.y+r.scale[1]+s(y,Ae(m,n.scale[1]))||Zt,f.scale.z=f.scale.z+r.scale[2]+s(y,Ae(m,n.scale[2]))||Zt,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,r=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=r.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):r.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof wn){let a=this.objectForSample,s=Gv[e],l=Zv[s],c=Kv[s],u=Qv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);Xv.fromArray(f).applyMatrix4(a.matrixWorld),Yv.fromArray(h),o(Xv.toArray(),Yv.toArray())}}else(this.objectForSample.geometry.index?Fv(this.objectForSample.geometry):jv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let n=Array.from(r.values());for(let a of n)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return n}updateState(e,r){if(this.parameters=No(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof It?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Tn,this.hiddenMatrix=new Tn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as iR,Vector3 as nR,Matrix4 as aR,Box3 as sR,MeshBasicMaterial as lR,Skeleton as cR}from"three";import{Camera as RD,OrthographicCamera as BD,PerspectiveCamera as VD,Vector3 as Yr,Object3D as r1,Quaternion as zD,Matrix4 as GD}from"three";import{Camera as ID,LineSegments as ND,BufferGeometry as ED,LineBasicMaterial as DD,Color as Eh,Vector3 as _D,Float32BufferAttribute as e1}from"three";import{BoxGeometry as OD}from"three";var vo=i=>{var t;return t=class extends i{},t.geometryHelper=new OD(30,30,30),t};import{Ray as TD,Sphere as CD,Matrix4 as AD,Vector3 as Ko}from"three";var pd=new TD,Nh=new CD,Jv=new AD,So=(i,t,e,r,o=!1,n=i)=>{let a=t,s=n.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Nh.copy(a.boundingSphere),Nh.applyMatrix4(s),e.ray.intersectsSphere(Nh)===!1||(Jv.copy(s).invert(),pd.copy(e.ray).applyMatrix4(Jv),a.boundingBox!==null&&pd.intersectsBox(a.boundingBox)===!1))return;let l,c,u,p,d=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let v=Math.max(0,h.start),w=Math.min(d.count,h.start+h.count);for(m=v,y=w;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(i,e,pd,f,c,u,p),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let w=a.attributes.position,O=new Ko,S=new Ko,T=new Ko,M=new Ko,g=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),I=N*N,E=Math.max(0,h.start),_=Math.min(w.count,h.start+h.count);for(let L=E,V=_-1;L<V;L+=g){if(O.fromBufferAttribute(w,L),S.fromBufferAttribute(w,L+1),pd.distanceSqToSegment(O,S,M,T)>I)continue;M.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(M);B<e.near||B>e.far||r.push({distance:B,point:T.clone().applyMatrix4(n.matrixWorld),object:i})}}function b(v,w,O,S,T,M,g){let D=new Ko,N=new Ko,I=new Ko,E=new Ko,_=new Ko;if(D.fromBufferAttribute(S,T),N.fromBufferAttribute(S,M),I.fromBufferAttribute(S,g),O.intersectTriangle(D,N,I,!1,E)===null)return null;_.copy(E),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var fd=new _D,Ar=new ID,Dh=class extends ND{constructor(e){let r=new ED,o=new DD({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],a=[],s={},l=new Eh(15711266),c=new Eh(15711266),u=new Eh(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",u),p("u2","u3",u),p("u3","u1",u);function p(f,h,m){d(f,m),d(h,m)}function d(f,h){n.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(n.length/3-1)}r.setAttribute("position",new e1(n,3)),r.setAttribute("color",new e1(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Ar.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,a=1,s=o?.8:1e-4;Xr("n1",r,e,Ar,-n,-a,s),Xr("n2",r,e,Ar,n,-a,s),Xr("n3",r,e,Ar,-n,a,s),Xr("n4",r,e,Ar,n,a,s);let l=s;Xr("f1",r,e,Ar,-n,-a,l),Xr("f2",r,e,Ar,n,-a,l),Xr("f3",r,e,Ar,-n,a,l),Xr("f4",r,e,Ar,n,a,l);let c=l,u=.5;Xr("u1",r,e,Ar,n*.7*u,a*1.1,c),Xr("u2",r,e,Ar,-n*.7*u,a*1.1,c),Xr("u3",r,e,Ar,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Xr(i,t,e,r,o,n,a){fd.set(o,n,a).unproject(r);let s=t[i];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],fd.x,fd.y,fd.z)}}var hd=class extends vo(Dh){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){So(this.object,this.geometry,e,r,!0)}};import{Box3Helper as t1,BoxGeometry as LD}from"three";var md;(t=>t.is=e=>"objectHelper"in e)(md||(md={}));var Mr=(i,t)=>class extends Oa(i){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}showGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof t1&&(n.visible=!0)}}updateEntityBoxSize(o,n){this.objectHelper.visible&&this.geometryHelper instanceof LD?(o.setScalar(0),n.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,n)}hideGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof t1&&(n.visible=!1)}}};var yd=790,hs=new Yr,_h=new Yr,Lh=new zD,Rh=new Yr,El=new Yr,Bh=new Yr,Qo=class extends Mr(RD,hd){constructor(e="",r={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=gi.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new GD,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,n=this.height;this.orthoCamera=new BD(o*-.5,o*.5,n*.5,n*-.5,-5e4,1e4),this.perspCamera=new VD(45,o/n,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Yr(e,r,o)),super.lookAt(e),this.getWorldPosition(hs),this.targetOffset=hs.distanceTo(e)}getTarget(e=new Yr){return this.getWorldDirection(_h),this.getWorldPosition(hs),_h.multiplyScalar(this.targetOffset),e.copy(hs).add(_h),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(hs),hs.distanceTo(e)}updateUp(){this.getWorldQuaternion(Lh),Rh.set(0,0,1).applyQuaternion(Lh),El.copy(r1.DEFAULT_UP),this.isUpVectorFlipped&&El.negate(),El.applyQuaternion(Lh),Bh.copy(r1.DEFAULT_UP).projectOnPlane(Rh),this.angleOffsetFromUp=Bh.angleTo(El),this.angleOffsetFromUp*=Bh.cross(El).dot(Rh)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Yr),n=e.getWorldDirection(new Yr).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Yr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Yr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let n=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-yd*.5*n,this.right=yd*.5*n,this.top=yd*.5*(1/a),this.bottom=-yd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,a,s):this.orthoCamera.setViewOffset(e,r,o,n,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ea(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as Rae}from"three";import{BufferGeometry as o1,Matrix4 as i1,Float32BufferAttribute as FD}from"three";var ms=new i1,jD=new i1;var sr=class extends ar{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new o1;this.onAfterRender=(e,r,o,n,a,s)=>{super.onAfterRender(e,r,o,n,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let n=0;n<this.children.length;n++){let a=this.children[n];a instanceof sr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let a=this.children[n];if(a instanceof It&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ms.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Or.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Or.transformMeshSet(a.booleanMeshSetAddress,ms),a.booleanMatrixInvOld.copy(ms).invert(),a.booleanWasTransformed=!1}else a instanceof sr&&a.needsTransformForDownstream===!0?(Or.transformMeshSet(a.booleanMeshSetAddress,ms),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Or.transformMeshSet(a.booleanMeshSetAddress,jD.multiplyMatrices(ms,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ms).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Or.hasOpenEdges(a.booleanMeshSetAddress)===!1||n===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new FD([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new o1,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Or.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ds(this),ps(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as UD}from"three";var n1;(t=>{function i(e){return _e.is(e)&&e instanceof UD}t.is=i})(n1||(n1={}));var ys=(i,t)=>class extends Mr(i,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Li=i=>i instanceof It,Dl=i=>i!==null&&i instanceof sr;var _l=i=>md.is(i);import{Group as XD}from"three";import{AxesHelper as kD,Group as HD,Quaternion as WD,Vector3 as Vh}from"three";var qD=new Vh(1,1,1),a1=new Vh,$D=new Vh,s1=new WD,Ir=class extends vo(kD){constructor(e,r=15){super(r);this.object=e;this.dummy=new HD;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){So(this.object,Ir.geometryHelper,e,r,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(a1,s1,$D),this.matrix.compose(a1,s1,qD),super.updateMatrixWorld(e)}updateWorldMatrix(e,r){}};var Ri=class extends Mr(XD,Ir){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as YD}from"three";var gs=class extends Mr(YD,Ir){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as V_,Fog as z_,HemisphereLight as G_}from"three";import{ShaderChunk as Ll}from"three";var KD=i=>`
2290
2290
 
2291
2291
  // PCSS implementation based on:
2292
2292
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2671,7 +2671,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2671
2671
  void main() {
2672
2672
  vec4 texel = texture2D( tDiffuse, vUv );
2673
2673
  gl_FragColor = texel;
2674
- }`,M_=new w_(-1,1,1,-1,0,1),$h=class extends g_{constructor(){super(),this.setAttribute("position",new V1([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new V1([0,2,0,0,2,0],2))}},I_=new $h,Xh=class{constructor(t){this._mesh=new S_(I_,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,M_)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}},z1=new P_({defines:{},uniforms:{tDiffuse:new O_(null)},vertexShader:C_,fragmentShader:A_}),N_=new Xh(z1),Wh=null,qh=null,E_=()=>(Wh===null&&(Wh=document.createElement("canvas")),Wh),D_=i=>(qh===null&&(qh=new Vl(i)),qh),__=Ee.identity(),Ps=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.dpr=window.devicePixelRatio;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this._innerApplySize=()=>{let t=this.width,e=this.height,r=this.dpr;this.renderer.dpr=this.isScreenSpace?r:Math.floor(2048/Math.max(t,e)),this.renderer.setSize(t,e)};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new An(v_.generateUUID(),pu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=E_(),this.renderer=D_(this.canvas),this.promise=this.init(),this.renderTarget=new T_(1,1,{type:b_,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new x_(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof Vl&&(this.renderer.wasmURL=av.skiaWasmUrl),await this.renderer.init()}render(t){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),z1.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=t.getRenderTarget();t.setRenderTarget(this.renderTarget),t.clear(),N_.render(t),t.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=__,this.isScreenSpace&&(this.frameOverride.fill.color=Ne.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},G1({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t,e=window.devicePixelRatio){let r=Math.max(1,t?.width??this.width),o=Math.max(1,t?.height??this.height);this.dpr=e,this.width=r,this.height=o,this._innerApplySize();let n=1,a=512,s=512;(r*e<a||o*e<s)&&(n=Math.max(a/(r*e),s/(o*e))),this.renderTarget.setSize(r*e*n,o*e*n),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof yr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function G1({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){if(i instanceof yr&&t instanceof yr||i instanceof lr&&t instanceof lr)for(let a=0,s=i.children.length;a<s;a++){let l=i.children[a],c=t.children[a];l&&c&&l.uuid===c.uuid&&R_({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n})}}function L_(i){if(Yh(i))return[i.width,i.height];if(i instanceof Jo){let[t,e]=i.getHalfSize();return[t*2,e*2]}else if(i instanceof lr){let[t,e]=i.recursiveBBox.getHalfSize();return[t*2,e*2]}return[0,0]}function R_({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){let[a,s]=L_(t),{width:l,height:c,position:u}=Hh({constraints:i.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:t.position});if(i.position=u,i.data={...i.data,position:u},i.states)for(let p in i.states)B_({stateId:p,objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n});if(Yh(i)||i instanceof lr)Yh(i)&&(i.width=l,i.height=c,i.data={...i.data,width:l,height:c}),G1({objectOverride:i,objectRoot:t,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(i instanceof Jo){let p=t,d=a!==0?l/a:1,f=s!==0?c/s:1;i.path=R1(p.path,d,f),i.data={...i.data,path:i.path}}}function B_({stateId:i,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a}){let s=t.states?.[i],l=e.states?.[i];if(s&&l){let{width:c,height:u,position:p}=Hh({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a,objectInitialWidth:Go.isResizeable(l)?l.width:0,objectInitialHeight:Go.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[i],{position:p}),Go.isResizeable(s)&&Object.assign(t.states[i],{width:c,height:u})}}function Yh(i){return i instanceof wo||i instanceof yr||i instanceof Vi||i instanceof zi}var Nr=class extends Oa(F_){constructor(e,r,o){super();this.data=r;this.bgColor=new At(1,1,1,1);this.fog=null;this.backupFog=new z_(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new V_;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Qo(mi,{...on.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new G_(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new An((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new Ps(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Ut(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof sr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&c1(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ut(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Ut(e.aoColor,r))}updateByOp(e,r,o,n){let a=this.data.uiFrame;super.updateByOp(e,r,o,n);let s=r;Be(e.path,["fog"])?this.updateFog(s.fog,o.shared):Be(e.path,["ao"])?this.updateAo(s.ao,o.shared):Be(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Be(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Ut(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof vs&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize??.5,r+=1)})}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||_l(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Fl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,n){this.uiCanvas?.updateEntity2DByOp(e,r,o,n)}};import{PointLight as j_,Vector3 as Cd,Box3 as U_,Box3Helper as F1,Color as k_}from"three";var Ad=class extends ys(j_,bs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let a=new Cd(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new Cd(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),l=new U_(a,s),c=new F1(l,new k_(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof F1){let r=this.shadow.camera,o=new Cd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),n=new Cd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,n),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Md=class extends tt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ml(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var Os=class extends tt{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape(),this.refreshAttachedCloners(r)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let n in e)typeof e[n]=="string"&&(e[n]=this._context.shared.getVariable(e[n],[this.uuid,"geometry","extrusion","shape",n]));let r;if(e.type==="Custom"){let n=e.shapeId;if(n!==this._shapeId&&this.detachShape(),n){this._shapeId=n;let a=this._context.scene.find(n);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let n;switch(e.type){case"Rectangle":n=Ba;break;case"Ellipse":n=Da;break;case"Polygon":n=Lu;break;case"Star":n=Ru;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=n.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?ml(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var Id=class extends Ei{constructor(e,r,o){super(e,r,o);this.data=r}};import{Group as H_,Matrix4 as W_,Skeleton as q_}from"three";var ei=class extends Mr(H_,Ir){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Bo.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let n,a;for(let s of ao.rootOverrideProps)e[s]===void 0?(n===void 0&&(n={...e}),n[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],n===void 0&&(n={...e}),n[s]=Jr.apply(o.data[s],e[s]));return this.overrideData=a,n}else return{...xt.defaultData,...e,..._r(xt.defaultData,ao.rootOverrideProps)}}updateByOp(e,r,o,n){let a;if(this.isInstanceRoot&&!n){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of ao.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&ao.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,n)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,n=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(_e.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Nd(s),a+=1;else break;this.children.splice(0,a)}n=!0}if(o){let a={};U1(e,[this.uuid],r.overrides,this,o,o,0,n,a);for(let s of this.children)if(_e.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof tt&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),f=p.boneInverses.map(m=>new W_().fromArray(m)),h=new q_(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Nd(i){if(i.component){let t=i.component.instances.indexOf(i);t>=0&&i.component.instances.splice(t,1);for(let e of i.children)_e.is(e)&&Nd(e)}}function j1(i,t,e,r){return i.component===t&&cp(i.identity,r)?i.overrideData===e?2:1:0}function U1(i,t,e,r,o,n,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let u=r.component.instances.indexOf(r);u>=0&&r.component.instances.splice(u,1)}o.instances.find(u=>u===r)||o.instances.push(r),r.component=o}o instanceof ei&&o.isInstanceRoot&&o.expandInstanceChildren(i);let c=0;for(let u of o.children)if(_e.is(u)){let p=[...t,...typeof u.identity=="string"?[u.identity]:u.identity],d=ma.resolve(e,p,1);if(d!=null&&!(d instanceof We)){if(!1)debugger;Object.setPrototypeOf(d,We.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[c];if(f=_e.is(m)?m:null,f!==null){let y=j1(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=i.scene.findInstance(p)??null,f!==null)){let y=j1(f,u,d,p);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let b=f.parent.children.indexOf(f);f.parent.children.splice(b,1),r.children.splice(c,0,f),f.parent===r?(b<=c&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),i.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?Jr.apply(u.data,d):u.data;Lr.is(m.type)&&(m={...m,type:"Empty"}),f=zr.createEntity(p,m,i),f.overrideData=d,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(c,0,f),f.updateState(f.data,i),h&&f.changeSelectedState(h,i),i.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,U1(i,t,e,f,u,n,a+1,s,l)}if(!s){let u=c;for(;;){let p=r.children[c];if(_e.is(p))i.pendingDeletes.add(p);else break;c+=1}r.children.splice(u,c-u)}return!0}import{Bone as $_}from"three";var Ed=class extends Mr($_,Ir){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var Mn=class extends tt{constructor(e,r,o){super(e,r,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new Ps(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,n=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:n}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=fo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,n){this.uiCanvas.updateEntity2DByOp(e,r,o,n),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(n):Be(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:n}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r);let o={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fo(o,r,this.data.flatShading,this)}};import{Object3D as iL,Vector3 as Er,InstancedMesh as nL,InstancedBufferAttribute as aL,PlaneGeometry as sL,Vector4 as jl,Quaternion as cS,TextureLoader as lL,Texture as uS,Euler as cL,MathUtils as rm}from"three";import{GPUComputationRenderer as uL}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as k1,FloatType as Kh,DataTexture as Qh,RGBAFormat as Zh,Mesh as X_,Euler as upe,Matrix4 as dpe}from"three";import{MeshSurfaceSampler as Y_}from"three/examples/jsm/math/MeshSurfaceSampler.js";function H1(i){let t=new Float32Array(i*i*2);for(let e=0;e<i;e++)for(let r=0;r<i;r++){let o=e*i+r;t[o*2+0]=e/(i-1),t[o*2+1]=r/(i-1)}return t}function W1(i){let t=Math.ceil(Math.sqrt(i));return Math.max(t,1)}function q1(i,t){let e=new X_(i.geometry,i.material),r=[],o=[],n=new k1,a=new k1;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new Y_(e).build();for(let u=0;u<t;u++)s.sample(n,a),r.push(n.x,n.y,n.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),c=new Float32Array(o);return{positions:l,normals:c}}function Jh(i,t){let e=i,r=new Float32Array(4*t*t);for(let n=0;n<t*t;n++)r[4*n]=e[3*n],r[4*n+1]=e[3*n+1],r[4*n+2]=e[3*n+2],r[4*n+3]=0;let o=new Qh(r,t,t,Zh,Kh);return o.needsUpdate=!0,o}function $1({size:i}){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Qh(t,i,i,Zh,Kh);return e.needsUpdate=!0,e}function X1(i){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Qh(t,i,i,Zh,Kh);return e.needsUpdate=!0,e}var Y1=`
2674
+ }`,M_=new w_(-1,1,1,-1,0,1),$h=class extends g_{constructor(){super(),this.setAttribute("position",new V1([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new V1([0,2,0,0,2,0],2))}},I_=new $h,Xh=class{constructor(t){this._mesh=new S_(I_,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,M_)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}},z1=new P_({defines:{},uniforms:{tDiffuse:new O_(null)},vertexShader:C_,fragmentShader:A_}),N_=new Xh(z1),Wh=null,qh=null,E_=()=>(Wh===null&&(Wh=document.createElement("canvas")),Wh),D_=i=>(qh===null&&(qh=new Vl(i)),qh),__=Ee.identity(),Ps=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.dpr=window.devicePixelRatio;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this._innerApplySize=()=>{let t=this.width,e=this.height,r=this.dpr;this.renderer.dpr=this.isScreenSpace?r:Math.floor(2048/Math.max(t,e)),this.renderer.setSize(t,e)};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new An(v_.generateUUID(),pu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=E_(),this.renderer=D_(this.canvas),this.promise=this.init(),this.renderTarget=new T_(1,1,{type:b_,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new x_(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof Vl&&(this.renderer.wasmURL=av.skiaWasmUrl),await this.renderer.init()}render(t){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),z1.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=t.getRenderTarget();t.setRenderTarget(this.renderTarget),t.clear(),N_.render(t),t.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=__,this.isScreenSpace&&(this.frameOverride.fill.color=Ne.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},G1({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t,e=window.devicePixelRatio){let r=Math.max(1,t?.width??this.width),o=Math.max(1,t?.height??this.height);this.dpr=e,this.width=r,this.height=o,this._innerApplySize();let n=1,a=512,s=512;(r*e<a||o*e<s)&&(n=Math.max(a/(r*e),s/(o*e))),this.renderTarget.setSize(r*e*n,o*e*n),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof yr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function G1({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){if(i instanceof yr&&t instanceof yr||i instanceof lr&&t instanceof lr)for(let a=0,s=i.children.length;a<s;a++){let l=i.children[a],c=t.children[a];l&&c&&l.uuid===c.uuid&&R_({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n})}}function L_(i){if(Yh(i))return[i.width,i.height];if(i instanceof Jo){let[t,e]=i.getHalfSize();return[t*2,e*2]}else if(i instanceof lr){let[t,e]=i.recursiveBBox.getHalfSize();return[t*2,e*2]}return[0,0]}function R_({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){let[a,s]=L_(t),{width:l,height:c,position:u}=Hh({constraints:i.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:t.position});if(i.position=u,i.data={...i.data,position:u},i.states)for(let p in i.states)B_({stateId:p,objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n});if(Yh(i)||i instanceof lr)Yh(i)&&(i.width=l,i.height=c,i.data={...i.data,width:l,height:c}),G1({objectOverride:i,objectRoot:t,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(i instanceof Jo){let p=t,d=a!==0?l/a:1,f=s!==0?c/s:1;i.path=R1(p.path,d,f),i.data={...i.data,path:i.path}}}function B_({stateId:i,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a}){let s=t.states?.[i],l=e.states?.[i];if(s&&l){let{width:c,height:u,position:p}=Hh({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a,objectInitialWidth:Go.isResizeable(l)?l.width:0,objectInitialHeight:Go.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[i],{position:p}),Go.isResizeable(s)&&Object.assign(t.states[i],{width:c,height:u})}}function Yh(i){return i instanceof wo||i instanceof yr||i instanceof Vi||i instanceof zi}var Nr=class extends Oa(F_){constructor(e,r,o){super();this.data=r;this.bgColor=new At(1,1,1,1);this.fog=null;this.backupFog=new z_(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new V_;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Qo(mi,{...on.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new G_(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new An((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new Ps(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Ut(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof sr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&c1(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ut(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Ut(e.aoColor,r))}updateByOp(e,r,o,n){let a=this.data.uiFrame;super.updateByOp(e,r,o,n);let s=r;Be(e.path,["fog"])?this.updateFog(s.fog,o.shared):Be(e.path,["ao"])?this.updateAo(s.ao,o.shared):Be(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Be(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Ut(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof vs&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize??.5,r+=1)})}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||_l(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Fl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,n){this.uiCanvas?.updateEntity2DByOp(e,r,o,n)}};import{PointLight as j_,Vector3 as Cd,Box3 as U_,Box3Helper as F1,Color as k_}from"three";var Ad=class extends ys(j_,bs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let a=new Cd(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new Cd(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),l=new U_(a,s),c=new F1(l,new k_(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof F1){let r=this.shadow.camera,o=new Cd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),n=new Cd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,n),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Md=class extends tt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ml(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var Os=class extends tt{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape(),this.refreshAttachedCloners(r)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let n in e)typeof e[n]=="string"&&(e[n]=this._context.shared.getVariable(e[n],[this.uuid,"geometry","extrusion","shape",n]));let r;if(e.type==="Custom"){let n=e.shapeId;if(n!==this._shapeId&&this.detachShape(),n){this._shapeId=n;let a=this._context.scene.find(n);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let n;switch(e.type){case"Rectangle":n=Ba;break;case"Ellipse":n=Da;break;case"Polygon":n=Lu;break;case"Star":n=Ru;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=n.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?ml(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var Id=class extends Ei{constructor(e,r,o){super(e,r,o);this.data=r}};import{Group as H_,Matrix4 as W_,Skeleton as q_}from"three";var ei=class extends Mr(H_,Ir){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Bo.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let n,a;for(let s of ao.rootOverrideProps)e[s]===void 0?(n===void 0&&(n={...e}),n[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],n===void 0&&(n={...e}),n[s]=Jr.apply(o.data[s],e[s]));return this.overrideData=a,n}else return{...bt.defaultData,...e,..._r(bt.defaultData,ao.rootOverrideProps)}}updateByOp(e,r,o,n){let a;if(this.isInstanceRoot&&!n){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of ao.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&ao.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,n)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,n=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(_e.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Nd(s),a+=1;else break;this.children.splice(0,a)}n=!0}if(o){let a={};U1(e,[this.uuid],r.overrides,this,o,o,0,n,a);for(let s of this.children)if(_e.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof tt&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),f=p.boneInverses.map(m=>new W_().fromArray(m)),h=new q_(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Nd(i){if(i.component){let t=i.component.instances.indexOf(i);t>=0&&i.component.instances.splice(t,1);for(let e of i.children)_e.is(e)&&Nd(e)}}function j1(i,t,e,r){return i.component===t&&cp(i.identity,r)?i.overrideData===e?2:1:0}function U1(i,t,e,r,o,n,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let u=r.component.instances.indexOf(r);u>=0&&r.component.instances.splice(u,1)}o.instances.find(u=>u===r)||o.instances.push(r),r.component=o}o instanceof ei&&o.isInstanceRoot&&o.expandInstanceChildren(i);let c=0;for(let u of o.children)if(_e.is(u)){let p=[...t,...typeof u.identity=="string"?[u.identity]:u.identity],d=ma.resolve(e,p,1);if(d!=null&&!(d instanceof We)){if(!1)debugger;Object.setPrototypeOf(d,We.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[c];if(f=_e.is(m)?m:null,f!==null){let y=j1(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=i.scene.findInstance(p)??null,f!==null)){let y=j1(f,u,d,p);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let b=f.parent.children.indexOf(f);f.parent.children.splice(b,1),r.children.splice(c,0,f),f.parent===r?(b<=c&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),i.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?Jr.apply(u.data,d):u.data;Lr.is(m.type)&&(m={...m,type:"Empty"}),f=zr.createEntity(p,m,i),f.overrideData=d,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(c,0,f),f.updateState(f.data,i),h&&f.changeSelectedState(h,i),i.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,U1(i,t,e,f,u,n,a+1,s,l)}if(!s){let u=c;for(;;){let p=r.children[c];if(_e.is(p))i.pendingDeletes.add(p);else break;c+=1}r.children.splice(u,c-u)}return!0}import{Bone as $_}from"three";var Ed=class extends Mr($_,Ir){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var Mn=class extends tt{constructor(e,r,o){super(e,r,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new Ps(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,n=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:n}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=fo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,n){this.uiCanvas.updateEntity2DByOp(e,r,o,n),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(n):Be(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:n}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r);let o={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fo(o,r,this.data.flatShading,this)}};import{Object3D as iL,Vector3 as Er,InstancedMesh as nL,InstancedBufferAttribute as aL,PlaneGeometry as sL,Vector4 as jl,Quaternion as cS,TextureLoader as lL,Texture as uS,Euler as cL,MathUtils as rm}from"three";import{GPUComputationRenderer as uL}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as k1,FloatType as Kh,DataTexture as Qh,RGBAFormat as Zh,Mesh as X_,Euler as upe,Matrix4 as dpe}from"three";import{MeshSurfaceSampler as Y_}from"three/examples/jsm/math/MeshSurfaceSampler.js";function H1(i){let t=new Float32Array(i*i*2);for(let e=0;e<i;e++)for(let r=0;r<i;r++){let o=e*i+r;t[o*2+0]=e/(i-1),t[o*2+1]=r/(i-1)}return t}function W1(i){let t=Math.ceil(Math.sqrt(i));return Math.max(t,1)}function q1(i,t){let e=new X_(i.geometry,i.material),r=[],o=[],n=new k1,a=new k1;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new Y_(e).build();for(let u=0;u<t;u++)s.sample(n,a),r.push(n.x,n.y,n.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),c=new Float32Array(o);return{positions:l,normals:c}}function Jh(i,t){let e=i,r=new Float32Array(4*t*t);for(let n=0;n<t*t;n++)r[4*n]=e[3*n],r[4*n+1]=e[3*n+1],r[4*n+2]=e[3*n+2],r[4*n+3]=0;let o=new Qh(r,t,t,Zh,Kh);return o.needsUpdate=!0,o}function $1({size:i}){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Qh(t,i,i,Zh,Kh);return e.needsUpdate=!0,e}function X1(i){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Qh(t,i,i,Zh,Kh);return e.needsUpdate=!0,e}var Y1=`
2675
2675
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
2676
2676
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
2677
2677
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3496,7 +3496,7 @@ vec3 lab2rgb (in vec3 lab) {
3496
3496
 
3497
3497
  gl_FragColor = vec4(finalColor, finalAlpha);
3498
3498
 
3499
- `;var Dd=class extends K_{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],Xe.startContext(Xe.globalContext),this.lightLayer=new Qt(0,"",{...St.defaultData("light","phong"),visible:!1},new Wo,{},r.shared),Xe.endContext(Xe.globalContext),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new qa;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(Kb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(Qb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(oS),e.addFragmentParsCode(nS),e.addVertexFinalCode(iS({easeSize:this.easeSize})),e.addFragmentFinalCode(aS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as Q_,ConeGeometry as Z_,MeshBasicMaterial as J_,SphereGeometry as tm,Vector3 as eL}from"three";import{Mesh as tL}from"three";import{TorusGeometry as rL}from"three";import{PlaneGeometry as oL}from"three";var Ts=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=W1(e);let n=1;this.targetMesh=o?.geometry.type==="BufferGeometry"||o?.type==="Mesh"&&o&&o.geometry.hasAttribute("position")&&o.geometry.hasAttribute("normal")?o:this.getMesh(r,n);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,n));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=q1(e,t*t),n=Jh(r,t),a=Jh(o,t);return{dataTexture:n,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new tm(e*.5,32,32);break}case"TorusEmitterShape":{r=new rL(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new Z_(e,e,15);break}case"BoxEmitterShape":{r=new Q_(e,e,e);break}case"PlaneEmitterShape":{r=new oL(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new tm(e,32,32);break}default:{r=new tm(e,32,32);break}}return new tL(r,new J_({color:16711680}))}applyToShader(t,e){this.size=new eL().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function Gi(i){let t={...i},e=ua.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var sS=`
3499
+ `;var Dd=class extends K_{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],Xe.startContext(Xe.globalContext),this.lightLayer=new Qt(0,"",{...yt.defaultData("light","phong"),visible:!1},new Wo,{},r.shared),Xe.endContext(Xe.globalContext),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new qa;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(Kb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(Qb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(oS),e.addFragmentParsCode(nS),e.addVertexFinalCode(iS({easeSize:this.easeSize})),e.addFragmentFinalCode(aS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as Q_,ConeGeometry as Z_,MeshBasicMaterial as J_,SphereGeometry as tm,Vector3 as eL}from"three";import{Mesh as tL}from"three";import{TorusGeometry as rL}from"three";import{PlaneGeometry as oL}from"three";var Ts=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=W1(e);let n=1;this.targetMesh=o?.geometry.type==="BufferGeometry"||o?.type==="Mesh"&&o&&o.geometry.hasAttribute("position")&&o.geometry.hasAttribute("normal")?o:this.getMesh(r,n);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,n));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=q1(e,t*t),n=Jh(r,t),a=Jh(o,t);return{dataTexture:n,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new tm(e*.5,32,32);break}case"TorusEmitterShape":{r=new rL(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new Z_(e,e,15);break}case"BoxEmitterShape":{r=new Q_(e,e,e);break}case"PlaneEmitterShape":{r=new oL(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new tm(e,32,32);break}default:{r=new tm(e,32,32);break}}return new tL(r,new J_({color:16711680}))}applyToShader(t,e){this.size=new eL().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function Gi(i){let t={...i},e=ua.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var sS=`
3500
3500
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
3501
3501
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
3502
3502
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -4376,4 +4376,4 @@ void main() {
4376
4376
  A = exp(A) * vColor.a;
4377
4377
  gl_FragColor = vec4(color.rgb, A);
4378
4378
  gVelocity = vec4(0.0); // so it is ignored by TAA
4379
- }`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new ki},viewport:{type:"v2",value:new ki},basisViewport:{type:"v2",value:new ki},debugColor:{type:"v3",value:new HL},covariancesTextureSize:{type:"v2",value:new ki(1024,1024)},centersColorsTextureSize:{type:"v2",value:new ki(1024,1024)},orthoZoom:{type:"f",value:-1}};return new tR({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:ZL,depthTest:!0,depthWrite:!1,side:qL})}static buildGeomtery(e){let r=new kL;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new UL(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new KL().copy(r),s=new Uint32Array(e),l=new YL(s,1,!1);return l.setUsage($L),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new ki(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new ki(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=WL.toHalfFloat(this.covariances[h]);s=new jd(l,n.x,n.y,MS,XL)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new jd(l,n.x,n.y,MS,AS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,b=h*4;c[b]=CS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Fd(this.centers[y]),c[b+2]=Fd(this.centers[y+1]),c[b+3]=Fd(this.centers[y+2])}let u=new jd(c,a.x,a.y,eR,rR);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let p=256*4,d=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)d.set(this.meshMatrixWorlds[h].elements,h*16);let f=new jd(d,p,1,JL,AS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(Ud.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Ud),this.material.uniforms.basisViewport.value.set(2/Ud.x,2/Ud.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var NS,dm=new Promise(i=>{NS=i}),IS=!1;var Hd;function pm(){if(IS)return;if(Hd)return Hd;async function i(){let e=await import("./gaussian-splat-compression.js");NS(e),IS=!0}return Hd=i(),Hd}var _S;dm.then(i=>_S=i);var kl=class{constructor(t={}){Ki(this,"updateView",function(){let t=new ES,e=[],r=new Ns(0,0,-1),o=new Ns(0,0,-1),n=new Ns,a=new Ns;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let d=!1,f=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!d&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new ES().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new oR;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Ns().fromArray(t.position)),t.orientation&&(t.orientation=new DS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new _S.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Ns,o=new DS,n=!1,a=1,s,l){this.splatMesh=Hi.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,p)=>this.update(c,p)}setupSortWorker(t){this.sortWorker=TS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var uR=new lR;uR.wireframe=!0;var LS=new nR,Wd=class extends iR{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Gd;this.invisibleObjects=new Ri("jflkdsafjasdifjaslk",{...eu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Nr("fdasfa",{..._o.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=PS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=wS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Nr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>Zl(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===mi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Nr&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Nr&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Mn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Nr&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Li(n)&&Dl(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof Fi&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Dl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Li(o)&&(o.freeBooleanPointer(),n instanceof sr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Os&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Li(o)&&(o.invalidateUpstreamBooleanData(),Dl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof sr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Nr&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{dS(a,r,o,{scene:this,shared:n}),a instanceof tt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Mn||l instanceof Nr)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Qo&&n.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){_e.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{_e.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=ci(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...Ql(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=Je.zoom(d,r);b[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ei&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=ci(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of iu.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof ei&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Nd(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ei&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)_e.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(_e.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let p=s.matrixWorld.clone().invert();u.point.applyMatrix4(p),o.push(u)}}else(Li(s)||_l(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Fl(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||_l(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Fl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)_e.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)_e.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)_e.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof tt&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Dl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Fo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)_e.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=Ld(e,r,l);return c instanceof Fi&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof tt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof tt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),f=p.boneInverses.map(m=>new aR().fromArray(m)),h=new cR(d,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new sR;return o.setFromPoints(r),o.getCenter(LS),LS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof nr&&e(r.material[o]);else r.material instanceof nr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Qo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new kl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as dR}from"three/examples/jsm/loaders/DRACOLoader.js";var Wi;function RS(i){return Wi||(Wi=new dR,Wi.setDecoderPath(i?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Wi.decoderPending}async function pR(i){if(Wi){let t={attributeIDs:Wi.defaultAttributeIDs,attributeTypes:Wi.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Wi.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function BS(i,t){let[e,r]=mp(jc.deserialize(new Uint8Array(i)));return su(e),t&&t(e),r.result().data}function VS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function zS(i){for(let t of i){let e=await pR(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as $me}from"three";import{mergeBufferGeometries as Kme}from"three/examples/jsm/utils/BufferGeometryUtils.js";function GS(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as FS,ShaderLib as fR}from"three";function jS(i){let t=new Set;return i.traverse(e=>{if(e instanceof ar)if(ft(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(hR(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new FS,specularColor:new FS});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},fR.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=nv(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else mR(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function hR(i){return i.getLayersOfType("transmission").length>0}function mR(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function US(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function kS(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as yR}from"three/examples/jsm/utils/BufferGeometryUtils.js";function HS(i){let t=[];return i.traverse(e=>{e instanceof _i&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&GS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=yR(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Mv})}),i}function WS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function qS(i){Object.values(i.shared.materials).forEach(t=>{fm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?fm(e.material):"materials"in e&&e.materials.forEach(r=>{fm(r)})})}function fm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var KS=_s(XS(),1);var YS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",hm=class extends xR{load(t,e,r,o=console.error){let n=new gR(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(YS+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(YS),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await BS(t,qS),r=VS(e);e.version&&(0,KS.default)(e.version,"1.11.9")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&RS(),Bv(e)&&_b(),qv(e)&&vv(),I1(e)&&C1(),kd(e)&&pm()].filter(Boolean)),r.length&&await zS(r);let o=!1,n=new Sn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Wd(e.scene,n);kd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=HS(a),a=jS(a),a=US(a),a=kS(a),a=WS(a),a}};export{hm as default};
4379
+ }`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new ki},viewport:{type:"v2",value:new ki},basisViewport:{type:"v2",value:new ki},debugColor:{type:"v3",value:new HL},covariancesTextureSize:{type:"v2",value:new ki(1024,1024)},centersColorsTextureSize:{type:"v2",value:new ki(1024,1024)},orthoZoom:{type:"f",value:-1}};return new tR({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:ZL,depthTest:!0,depthWrite:!1,side:qL})}static buildGeomtery(e){let r=new kL;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new UL(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new KL().copy(r),s=new Uint32Array(e),l=new YL(s,1,!1);return l.setUsage($L),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new ki(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new ki(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=WL.toHalfFloat(this.covariances[h]);s=new jd(l,n.x,n.y,MS,XL)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new jd(l,n.x,n.y,MS,AS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,b=h*4;c[b]=CS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Fd(this.centers[y]),c[b+2]=Fd(this.centers[y+1]),c[b+3]=Fd(this.centers[y+2])}let u=new jd(c,a.x,a.y,eR,rR);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let p=256*4,d=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)d.set(this.meshMatrixWorlds[h].elements,h*16);let f=new jd(d,p,1,JL,AS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(Ud.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Ud),this.material.uniforms.basisViewport.value.set(2/Ud.x,2/Ud.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var NS,dm=new Promise(i=>{NS=i}),IS=!1;var Hd;function pm(){if(IS)return;if(Hd)return Hd;async function i(){let e=await import("./gaussian-splat-compression.js");NS(e),IS=!0}return Hd=i(),Hd}var _S;dm.then(i=>_S=i);var kl=class{constructor(t={}){Ki(this,"updateView",function(){let t=new ES,e=[],r=new Ns(0,0,-1),o=new Ns(0,0,-1),n=new Ns,a=new Ns;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let d=!1,f=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!d&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new ES().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new oR;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Ns().fromArray(t.position)),t.orientation&&(t.orientation=new DS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new _S.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Ns,o=new DS,n=!1,a=1,s,l){this.splatMesh=Hi.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,p)=>this.update(c,p)}setupSortWorker(t){this.sortWorker=TS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var uR=new lR;uR.wireframe=!0;var LS=new nR,Wd=class extends iR{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Gd;this.invisibleObjects=new Ri("jflkdsafjasdifjaslk",{...eu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Nr("fdasfa",{..._o.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=PS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=wS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Nr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>Zl(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===mi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Nr&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Nr&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Mn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Nr&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Li(n)&&Dl(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof Fi&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Dl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Li(o)&&(o.freeBooleanPointer(),n instanceof sr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Os&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Li(o)&&(o.invalidateUpstreamBooleanData(),Dl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof sr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Nr&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{dS(a,r,o,{scene:this,shared:n}),a instanceof tt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Mn||l instanceof Nr)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Qo&&n.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){_e.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{_e.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=ci(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...Ql(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=Je.zoom(d,r);b[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ei&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=ci(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of iu.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof ei&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Nd(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ei&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)_e.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(_e.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let p=s.matrixWorld.clone().invert();u.point.applyMatrix4(p),o.push(u)}}else(Li(s)||_l(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Fl(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||_l(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Fl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)_e.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)_e.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)_e.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof tt&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Dl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Fo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)_e.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=Ld(e,r,l);return c instanceof Fi&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof tt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof tt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),f=p.boneInverses.map(m=>new aR().fromArray(m)),h=new cR(d,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new sR;return o.setFromPoints(r),o.getCenter(LS),LS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof nr&&e(r.material[o]);else r.material instanceof nr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Qo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new kl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as dR}from"three/examples/jsm/loaders/DRACOLoader.js";var Wi;function RS(i){return Wi||(Wi=new dR,Wi.setDecoderPath(i?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Wi.decoderPending}async function pR(i){if(Wi){let t={attributeIDs:Wi.defaultAttributeIDs,attributeTypes:Wi.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Wi.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function BS(i,t){let[e,r]=mp(jc.deserialize(new Uint8Array(i)));return su(e),t&&t(e),r.result().data}function VS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function zS(i){for(let t of i){let e=await pR(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as $me}from"three";import{mergeBufferGeometries as Kme}from"three/examples/jsm/utils/BufferGeometryUtils.js";function GS(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as FS,ShaderLib as fR}from"three";function jS(i){let t=new Set;return i.traverse(e=>{if(e instanceof ar)if(ft(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(hR(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new FS,specularColor:new FS});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},fR.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=nv(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else mR(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function hR(i){return i.getLayersOfType("transmission").length>0}function mR(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function US(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function kS(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as yR}from"three/examples/jsm/utils/BufferGeometryUtils.js";function HS(i){let t=[];return i.traverse(e=>{e instanceof _i&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&GS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=yR(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Mv})}),i}function WS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function qS(i){Object.values(i.shared.materials).forEach(t=>{fm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?fm(e.material):"materials"in e&&e.materials.forEach(r=>{fm(r)})})}function fm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var KS=_s(XS(),1);var YS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",hm=class extends xR{load(t,e,r,o=console.error){let n=new gR(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(YS+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(YS),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await BS(t,qS),r=VS(e);e.version&&(0,KS.default)(e.version,"1.12.1")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&RS(),Bv(e)&&_b(),qv(e)&&vv(),I1(e)&&C1(),kd(e)&&pm()].filter(Boolean)),r.length&&await zS(r);let o=!1,n=new Sn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Wd(e.scene,n);kd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=HS(a),a=jS(a),a=US(a),a=kS(a),a=WS(a),a}};export{hm as default};