@splinetool/loader 1.5.4 → 1.5.6

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,7 +1,7 @@
1
1
  var t1=Object.create;var Cl=Object.defineProperty;var r1=Object.getOwnPropertyDescriptor;var o1=Object.getOwnPropertyNames;var n1=Object.getPrototypeOf,i1=Object.prototype.hasOwnProperty;var a1=(n,r,e)=>r in n?Cl(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var En=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),s1=(n,r)=>{for(var e in r)Cl(n,e,{get:r[e],enumerable:!0})},l1=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of o1(r))!i1.call(n,o)&&o!==e&&Cl(n,o,{get:()=>r[o],enumerable:!(t=r1(r,o))||t.enumerable});return n};var hi=(n,r,e)=>(e=n!=null?t1(n1(n)):{},l1(r||!n||!n.__esModule?Cl(e,"default",{value:n,enumerable:!0}):e,n));var _n=(n,r,e)=>(a1(n,typeof r!="symbol"?r+"":r,e),e);var ux=En((lp,cx)=>{(function(n,r){typeof lp=="object"?cx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(lp,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)t-=s(e[l]),t<0&&(t+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var c=function(){var u=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=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[t,o,i,a]},c.importState=function(u){t=+u[0]||0,o=+u[1]||0,i=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);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 t.version="Mash 0.9",t}})});var mx=En((kc,hx)=>{(function(n,r){typeof kc=="object"&&typeof hx<"u"?r(kc):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(kc,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,h,f,m,y,g,v=r[0].length,P=r.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],T=[],A=e==="f"?P:v,x=m=d=0;x<P;x++)S[x]=new Array(A).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var E,N=new Array(v).fill(0);for(x=0;x<P;x++)for(a=0;a<v;a++)S[x][a]=r[x][a];for(x=0;x<v;x++){for(O[x]=d,f=0,l=x+1,a=x;a<P;a++)f+=Math.pow(S[a][x],2);if(f<i)d=0;else for(h=(p=S[x][x])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x]=p-d,a=l;a<v;a++){for(f=0,s=x;s<P;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<P;s++)S[s][a]=S[s][a]+p*S[s][x]}for(N[x]=d,f=0,a=l;a<v;a++)f+=Math.pow(S[x][a],2);if(f<i)d=0;else{for(h=(p=S[x][x+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x+1]=p-d,a=l;a<v;a++)O[a]=S[x][a]/h;for(a=l;a<P;a++){for(f=0,s=l;s<v;s++)f+=S[a][s]*S[x][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+f*O[s]}}m<(y=Math.abs(N[x])+Math.abs(O[x]))&&(m=y)}if(t)for(x=v-1;0<=x;x--){if(d!==0){for(h=S[x][x+1]*d,a=l;a<v;a++)T[a][x]=S[x][a]/h;for(a=l;a<v;a++){for(f=0,s=l;s<v;s++)f+=S[x][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+f*T[s][x]}}for(a=l;a<v;a++)T[x][a]=0,T[a][x]=0;T[x][x]=1,d=O[x],l=x}if(e){if(e==="f")for(x=v;x<P;x++){for(a=v;a<P;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=N[x],a=l;a<A;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<A;a++){for(f=0,s=l;s<P;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<P;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<P;a++)S[a][x]=S[a][x]/d}else for(a=x;a<P;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(E=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){E=!0;break}if(Math.abs(N[l-1])<=o)break}if(!E){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*O[x],O[x]=u*O[x],!(Math.abs(p)<=o));x++)if(d=N[x],N[x]=Math.sqrt(p*p+d*d),u=d/(h=N[x]),f=-p/h,e)for(a=0;a<P;a++)y=S[a][c],g=S[a][x],S[a][c]=y*u+g*f,S[a][x]=-y*f+g*u}if(g=N[s],l===s){if(g<0&&(N[s]=-g,t))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=N[l],p=(((y=N[s-1])-g)*(y+g)+((d=O[s-1])-(h=O[s]))*(d+h))/(2*h*y),d=Math.sqrt(p*p+1),p=((m-g)*(m+g)+h*(y/(p<0?p-d:p+d)-h))/m,x=l+(f=u=1);x<s+1;x++){if(d=O[x],y=N[x],h=f*d,d*=u,g=Math.sqrt(p*p+h*h),p=m*(u=p/(O[x-1]=g))+d*(f=h/g),d=-m*f+d*u,h=y*f,y*=u,t)for(a=0;a<v;a++)m=T[a][x-1],g=T[a][x],T[a][x-1]=m*u+g*f,T[a][x]=-m*f+g*u;if(g=Math.sqrt(p*p+h*h),p=(u=p/(N[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<P;a++)y=S[a][x-1],g=S[a][x],S[a][x-1]=y*u+g*f,S[a][x]=-y*f+g*u}O[l]=0,O[s]=p,N[s]=m}for(x=0;x<v;x++)N[x]<o&&(N[x]=0);return{u:S,q:N,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Yx=En((Lp,Rp)=>{(function(n,r){typeof Lp=="object"&&typeof Rp<"u"?Rp.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Lp,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var l=t-1>>1,c=i[l];if(a(s,c)>=0)break;i[t]=c,t=l}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[t];t<s;){var c=(t<<1)+1,u=i[c],p=c+1;if(p<this.length&&a(i[p],u)<0&&(c=p,u=i[p]),a(u,l)>=0)break;i[t]=u,t=c}i[t]=l};function r(e,t){return e<t?-1:e>t?1:0}return n})});var Kx=En((GW,Vp)=>{"use strict";var eu=Yx();eu.default&&(eu=eu.default);Vp.exports=Xx;Vp.exports.default=Xx;function Xx(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<t)&&(t=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var c=i-t,u=a-o,p=Math.min(c,u),d=p/2;if(p===0){var h=[t,o];return h.distance=0,h}for(var f=new eu(void 0,TM),m=t;m<i;m+=p)for(var y=o;y<a;y+=p)f.push(new un(m+d,y+d,d,n));var g=MM(n),v=new un(t+c/2,o+u/2,0,n);v.d>g.d&&(g=v);for(var P=f.length;f.length;){var O=f.pop();O.d>g.d&&(g=O,e&&console.log("found best %d after %d probes",Math.round(1e4*O.d)/1e4,P)),!(O.max-g.d<=r)&&(d=O.h/2,f.push(new un(O.x-d,O.y-d,d,n)),f.push(new un(O.x+d,O.y-d,d,n)),f.push(new un(O.x-d,O.y+d,d,n)),f.push(new un(O.x+d,O.y+d,d,n)),P+=4)}e&&(console.log("num probes: "+P),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function TM(n,r){return r.max-n.max}function un(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=AM(n,r,t),this.max=this.d+this.h*Math.SQRT2}function AM(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,c=l-1;s<l;c=s++){var u=a[s],p=a[c];u[1]>r!=p[1]>r&&n<(p[0]-u[0])*(r-u[1])/(p[1]-u[1])+u[0]&&(t=!t),o=Math.min(o,IM(n,r,u,p))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function MM(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],c=o[s],u=l[0]*c[1]-c[0]*l[1];e+=(l[0]+c[0])*u,t+=(l[1]+c[1])*u,r+=u*3}return r===0?new un(o[0][0],o[0][1],0,n):new un(e/r,t/r,0,n)}function IM(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}});var Iv=En((Oie,Mv)=>{"use strict";function vD(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function si(n,r,e,t){this.message=n,this.expected=r,this.found=e,this.location=t,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,si)}vD(si,Error);si.buildMessage=function(n,r){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?i(c.parts[p][0])+"-"+i(c.parts[p][1]):i(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 t(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function i(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(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(n)+" but "+l(r)+" found."};function SD(n,r){r=r!==void 0?r:{};var e={},t={svg_path:fs},o=fs,i=function(b){if(!b)return[];for(var w=[],L=0;L<b.length;L++)w=w.concat.apply(w,b[L]);var M=w[0];return M&&M.code=="m"&&(delete M.relative,M.code="M"),w},a=function(b,w){return e1(b,w)},s=/^[Mm]/,l=Xe(["M","m"],!1,!1),c=function(b,w,L){var M=pi(b,[w]);return L&&(M=M.concat(pi(b=="M"?"L":"l",L[1]))),M},u=/^[Zz]/,p=Xe(["Z","z"],!1,!1),d=function(){return pi("Z")},h=/^[Ll]/,f=Xe(["L","l"],!1,!1),m=function(b,w){return pi(b,w)},y=/^[Hh]/,g=Xe(["H","h"],!1,!1),v=function(b,w){return pi(b,w.map(function(L){return{x:L}}))},P=/^[Vv]/,O=Xe(["V","v"],!1,!1),S=function(b,w){return pi(b,w.map(function(L){return{y:L}}))},T=/^[Cc]/,A=Xe(["C","c"],!1,!1),x=function(b,w,L){return{x1:b.x,y1:b.y,x2:w.x,y2:w.y,x:L.x,y:L.y}},E=/^[Ss]/,N=Xe(["S","s"],!1,!1),I=function(b,w){return{x2:b.x,y2:b.y,x:w.x,y:w.y}},D=/^[Qq]/,_=Xe(["Q","q"],!1,!1),B=function(b,w){return{x1:b.x,y1:b.y,x:w.x,y:w.y}},V=/^[Tt]/,U=Xe(["T","t"],!1,!1),R=/^[Aa]/,W=Xe(["A","a"],!1,!1),j=function(b,w,L,M,z,oe){return{rx:b,ry:w,xAxisRotation:L,largeArc:M,sweep:z,x:oe.x,y:oe.y}},F=function(b,w){return{x:b,y:w}},H=function(b){return b*1},q=function(b){return b.join("")*1},re=/^[01]/,ee=Xe(["0","1"],!1,!1),X=function(b){return b=="1"},te=function(){return""},K=",",Z=rt(",",!1),Q=function(b){return b.join("")},$=".",ue=rt(".",!1),le=/^[eE]/,ne=Xe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Xe(["+","-"],!1,!1),he=/^[0-9]/,pe=Xe([["0","9"]],!1,!1),fe=function(b){return b.join("")},ge=/^[ \t\n\r]/,me=Xe([" "," ",`
2
- `,"\r"],!1,!1),C=0,ie=0,Ee=[{line:1,column:1}],Ve=0,_e=[],Pe=0,bt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function Me(){return n.substring(ie,C)}function yt(){return In(ie,C)}function vt(b,w){throw w=w!==void 0?w:In(ie,C),hr([dd(b)],n.substring(ie,C),w)}function Mn(b,w){throw w=w!==void 0?w:In(ie,C),pd(b,w)}function rt(b,w){return{type:"literal",text:b,ignoreCase:w}}function Xe(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Ar(){return{type:"any"}}function ud(){return{type:"end"}}function dd(b){return{type:"other",description:b}}function vl(b){var w=Ee[b],L;if(w)return w;for(L=b-1;!Ee[L];)L--;for(w=Ee[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return Ee[b]=w,w}function In(b,w){var L=vl(b),M=vl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function ct(b){C<Ve||(C>Ve&&(Ve=C,_e=[]),_e.push(b))}function pd(b,w){return new si(b,null,null,w)}function hr(b,w,L){return new si(si.buildMessage(b,w),b,w,L)}function fs(){var b,w,L,M,z;for(b=C,w=[],L=ze();L!==e;)w.push(L),L=ze();if(w!==e)if(L=Ft(),L===e&&(L=null),L!==e){for(M=[],z=ze();z!==e;)M.push(z),z=ze();M!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function Ft(){var b,w,L,M,z,oe;if(b=C,w=Nn(),w!==e){for(L=[],M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Nn(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Nn(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Nn(){var b,w,L,M,z,oe;if(b=C,w=ui(),w!==e){for(L=[],M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Sl(){var b;return b=GS(),b===e&&(b=jS(),b===e&&(b=FS(),b===e&&(b=US(),b===e&&(b=kS(),b===e&&(b=WS(),b===e&&(b=$S(),b===e&&(b=XS(),b===e&&(b=QS())))))))),b}function ui(){var b,w,L,M,z,oe,fi;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(l)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=kt(),M!==e?(z=C,oe=Je(),oe===e&&(oe=null),oe!==e?(fi=vh(),fi!==e?(oe=[oe,fi],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=b,w=c(w,M,z),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function GS(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(p)),w!==e&&(ie=b,w=d()),b=w,b}function jS(){var b,w,L,M;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(f)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=vh(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function vh(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function FS(){var b,w,L,M;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(g)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=Sh(),M!==e?(ie=b,w=v(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function Sh(){var b,w,L,M,z,oe;if(b=C,w=di(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function US(){var b,w,L,M;if(b=C,P.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(O)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=Sh(),M!==e?(ie=b,w=S(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function kS(){var b,w,L,M;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(A)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=HS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function HS(){var b,w,L,M,z,oe;if(b=C,w=fd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function fd(){var b,w,L,M,z,oe;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function WS(){var b,w,L,M;if(b=C,E.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(N)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=qS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function qS(){var b,w,L,M,z,oe;if(b=C,w=hd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function hd(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=I(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function $S(){var b,w,L,M;if(b=C,D.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(_)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=YS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function YS(){var b,w,L,M,z,oe;if(b=C,w=md(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function md(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=B(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function XS(){var b,w,L,M;if(b=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(U)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=KS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function KS(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function QS(){var b,w,L,M;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(W)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=ZS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function ZS(){var b,w,L,M,z,oe;if(b=C,w=yd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function yd(){var b,w,L,M,z,oe,fi,xd,Pl,bd,Ol,vd;return b=C,w=wh(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=wh(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(fi=Je(),fi!==e?(xd=Ph(),xd!==e?(Pl=Je(),Pl===e&&(Pl=null),Pl!==e?(bd=Ph(),bd!==e?(Ol=Je(),Ol===e&&(Ol=null),Ol!==e?(vd=kt(),vd!==e?(ie=b,w=j(w,M,oe,xd,bd,vd),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function kt(){var b,w,L,M;return b=C,w=di(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=di(),M!==e?(ie=b,w=F(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function wh(){var b,w;return b=C,w=Ch(),w===e&&(w=Dn()),w!==e&&(ie=b,w=H(w)),b=w,b}function di(){var b,w,L,M;return b=C,w=C,L=gd(),L===e&&(L=null),L!==e?(M=Ch(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=gd(),L===e&&(L=null),L!==e?(M=Dn(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=q(w)),b=w,b}function Ph(){var b,w;return b=C,re.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(ee)),w!==e&&(ie=b,w=X(w)),b=w,b}function Je(){var b,w,L,M,z;if(b=C,w=[],L=ze(),L!==e)for(;L!==e;)w.push(L),L=ze();else w=e;if(w!==e)if(L=Oh(),L===e&&(L=null),L!==e){for(M=[],z=ze();z!==e;)M.push(z),z=ze();M!==e?(w=[w,L,M],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=Oh(),L!==e){for(M=[],z=ze();z!==e;)M.push(z),z=ze();M!==e?(L=[L,M],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function Oh(){var b;return n.charCodeAt(C)===44?(b=K,C++):(b=e,Pe===0&&ct(Z)),b}function Ch(){var b,w,L,M;return b=C,w=C,L=JS(),L!==e?(M=Th(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Dn(),L!==e?(M=Th(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function JS(){var b,w,L,M,z;return b=C,w=C,L=Dn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=$,C++):(M=e,Pe===0&&ct(ue)),M!==e?(z=Dn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Dn(),L!==e?(n.charCodeAt(C)===46?(M=$,C++):(M=e,Pe===0&&ct(ue)),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function Th(){var b,w,L,M,z;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(ne)),L!==e?(M=gd(),M===e&&(M=null),M!==e?(z=Dn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=Q(w)),b=w,b}function gd(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Pe===0&&ct(ae)),b}function Dn(){var b,w,L;if(b=C,w=[],he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(pe)),L!==e)for(;L!==e;)w.push(L),he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(pe));else w=e;return w!==e&&(ie=b,w=fe(w)),b=w,b}function ze(){var b,w;return b=C,ge.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(me)),w!==e&&(ie=b,w=te()),b=w,b}function e1(b,w){if(!w)return[b];for(var L=[b],M=0,z=w.length;M<z;M++)L[M+1]=w[M][1];return L}var wl={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 Ah in wl)wl[Ah.toUpperCase()]=wl[Ah];function pi(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:wl[b]};b==b.toLowerCase()&&(M.relative=!0);for(var z in w[L])M[z]=w[L][z];w[L]=M}return w}if(bt=o(),bt!==e&&C===n.length)return bt;throw bt!==e&&C<n.length&&ct(ud()),hr(_e,Ve<n.length?n.charAt(Ve):null,Ve<n.length?In(Ve,Ve+1):In(Ve,Ve))}Mv.exports={SyntaxError:si,parse:SD}});var oh=En((Cie,Nv)=>{var $u=Iv().parse;$u.parseSVG=$u;$u.makeAbsolute=wD;Nv.exports=$u;function wD(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]: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=r.x,o.y=r.y),e=o}),n}});var RS=En((bpe,LS)=>{LS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);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 $E,Loader as YE}from"three";function Tl(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Ht(n,r){return Object.setPrototypeOf(n,r),n}function Al(n){return Array.isArray(n)?n:[n]}function Ml(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var c1=typeof global=="object"&&global&&global.Object===Object&&global,Il=c1;var u1=typeof self=="object"&&self&&self.Object===Object&&self,d1=Il||u1||Function("return this")(),gt=d1;var p1=gt.Symbol,At=p1;var Mh=Object.prototype,f1=Mh.hasOwnProperty,h1=Mh.toString,hs=At?At.toStringTag:void 0;function m1(n){var r=f1.call(n,hs),e=n[hs];try{n[hs]=void 0;var t=!0}catch{}var o=h1.call(n);return t&&(r?n[hs]=e:delete n[hs]),o}var Ih=m1;var y1=Object.prototype,g1=y1.toString;function x1(n){return g1.call(n)}var Nh=x1;var b1="[object Null]",v1="[object Undefined]",Dh=At?At.toStringTag:void 0;function S1(n){return n==null?n===void 0?v1:b1:Dh&&Dh in Object(n)?Ih(n):Nh(n)}var ar=S1;function w1(n){return n!=null&&typeof n=="object"}var Bt=w1;var P1="[object Symbol]";function O1(n){return typeof n=="symbol"||Bt(n)&&ar(n)==P1}var mi=O1;function C1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Nl=C1;var T1=Array.isArray,ut=T1;var A1=1/0,Eh=At?At.prototype:void 0,_h=Eh?Eh.toString:void 0;function Bh(n){if(typeof n=="string")return n;if(ut(n))return Nl(n,Bh)+"";if(mi(n))return _h?_h.call(n):"";var r=n+"";return r=="0"&&1/n==-A1?"-0":r}var Lh=Bh;function M1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var sr=M1;function I1(n){return n}var Rh=I1;var N1="[object AsyncFunction]",D1="[object Function]",E1="[object GeneratorFunction]",_1="[object Proxy]";function B1(n){if(!sr(n))return!1;var r=ar(n);return r==D1||r==E1||r==N1||r==_1}var Dl=B1;var L1=gt["__core-js_shared__"],El=L1;var Vh=function(){var n=/[^.]+$/.exec(El&&El.keys&&El.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function R1(n){return!!Vh&&Vh in n}var zh=R1;var V1=Function.prototype,z1=V1.toString;function G1(n){if(n!=null){try{return z1.call(n)}catch{}try{return n+""}catch{}}return""}var yo=G1;var j1=/[\\^$.*+?()[\]{}|]/g,F1=/^\[object .+?Constructor\]$/,U1=Function.prototype,k1=Object.prototype,H1=U1.toString,W1=k1.hasOwnProperty,q1=RegExp("^"+H1.call(W1).replace(j1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $1(n){if(!sr(n)||zh(n))return!1;var r=Dl(n)?q1:F1;return r.test(yo(n))}var Gh=$1;function Y1(n,r){return n?.[r]}var jh=Y1;function X1(n,r){var e=jh(n,r);return Gh(e)?e:void 0}var Kt=X1;var K1=Kt(gt,"WeakMap"),_l=K1;var Fh=Object.create,Q1=function(){function n(){}return function(r){if(!sr(r))return{};if(Fh)return Fh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Uh=Q1;function Z1(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var kh=Z1;function J1(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Hh=J1;var ew=800,tw=16,rw=Date.now;function ow(n){var r=0,e=0;return function(){var t=rw(),o=tw-(t-e);if(e=t,o>0){if(++r>=ew)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Wh=ow;function nw(n){return function(){return n}}var qh=nw;var iw=function(){try{var n=Kt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),yi=iw;var aw=yi?function(n,r){return yi(n,"toString",{configurable:!0,enumerable:!1,value:qh(r),writable:!0})}:Rh,$h=aw;var sw=Wh($h),Yh=sw;function lw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Xh=lw;var cw=9007199254740991,uw=/^(?:0|[1-9]\d*)$/;function dw(n,r){var e=typeof n;return r=r??cw,!!r&&(e=="number"||e!="symbol"&&uw.test(n))&&n>-1&&n%1==0&&n<r}var gi=dw;function pw(n,r,e){r=="__proto__"&&yi?yi(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Bl=pw;function fw(n,r){return n===r||n!==n&&r!==r}var xi=fw;var hw=Object.prototype,mw=hw.hasOwnProperty;function yw(n,r,e){var t=n[r];(!(mw.call(n,r)&&xi(t,e))||e===void 0&&!(r in n))&&Bl(n,r,e)}var bi=yw;function gw(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Bl(e,s,l):bi(e,s,l)}return e}var Hr=gw;var Kh=Math.max;function xw(n,r,e){return r=Kh(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Kh(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),kh(n,this,s)}}var Qh=xw;var bw=9007199254740991;function vw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=bw}var vi=vw;function Sw(n){return n!=null&&vi(n.length)&&!Dl(n)}var Ll=Sw;var ww=Object.prototype;function Pw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||ww;return n===e}var Si=Pw;function Ow(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Zh=Ow;var Cw="[object Arguments]";function Tw(n){return Bt(n)&&ar(n)==Cw}var Sd=Tw;var Jh=Object.prototype,Aw=Jh.hasOwnProperty,Mw=Jh.propertyIsEnumerable,Iw=Sd(function(){return arguments}())?Sd:function(n){return Bt(n)&&Aw.call(n,"callee")&&!Mw.call(n,"callee")},wi=Iw;function Nw(){return!1}var em=Nw;var om=typeof exports=="object"&&exports&&!exports.nodeType&&exports,tm=om&&typeof module=="object"&&module&&!module.nodeType&&module,Dw=tm&&tm.exports===om,rm=Dw?gt.Buffer:void 0,Ew=rm?rm.isBuffer:void 0,_w=Ew||em,Bn=_w;var Bw="[object Arguments]",Lw="[object Array]",Rw="[object Boolean]",Vw="[object Date]",zw="[object Error]",Gw="[object Function]",jw="[object Map]",Fw="[object Number]",Uw="[object Object]",kw="[object RegExp]",Hw="[object Set]",Ww="[object String]",qw="[object WeakMap]",$w="[object ArrayBuffer]",Yw="[object DataView]",Xw="[object Float32Array]",Kw="[object Float64Array]",Qw="[object Int8Array]",Zw="[object Int16Array]",Jw="[object Int32Array]",e2="[object Uint8Array]",t2="[object Uint8ClampedArray]",r2="[object Uint16Array]",o2="[object Uint32Array]",et={};et[Xw]=et[Kw]=et[Qw]=et[Zw]=et[Jw]=et[e2]=et[t2]=et[r2]=et[o2]=!0;et[Bw]=et[Lw]=et[$w]=et[Rw]=et[Yw]=et[Vw]=et[zw]=et[Gw]=et[jw]=et[Fw]=et[Uw]=et[kw]=et[Hw]=et[Ww]=et[qw]=!1;function n2(n){return Bt(n)&&vi(n.length)&&!!et[ar(n)]}var nm=n2;function i2(n){return function(r){return n(r)}}var Pi=i2;var im=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ms=im&&typeof module=="object"&&module&&!module.nodeType&&module,a2=ms&&ms.exports===im,wd=a2&&Il.process,s2=function(){try{var n=ms&&ms.require&&ms.require("util").types;return n||wd&&wd.binding&&wd.binding("util")}catch{}}(),go=s2;var am=go&&go.isTypedArray,l2=am?Pi(am):nm,Rl=l2;var c2=Object.prototype,u2=c2.hasOwnProperty;function d2(n,r){var e=ut(n),t=!e&&wi(n),o=!e&&!t&&Bn(n),i=!e&&!t&&!o&&Rl(n),a=e||t||o||i,s=a?Zh(n.length,String):[],l=s.length;for(var c in n)(r||u2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||gi(c,l)))&&s.push(c);return s}var Vl=d2;function p2(n,r){return function(e){return n(r(e))}}var zl=p2;var f2=zl(Object.keys,Object),sm=f2;var h2=Object.prototype,m2=h2.hasOwnProperty;function y2(n){if(!Si(n))return sm(n);var r=[];for(var e in Object(n))m2.call(n,e)&&e!="constructor"&&r.push(e);return r}var lm=y2;function g2(n){return Ll(n)?Vl(n):lm(n)}var Oi=g2;function x2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var cm=x2;var b2=Object.prototype,v2=b2.hasOwnProperty;function S2(n){if(!sr(n))return cm(n);var r=Si(n),e=[];for(var t in n)t=="constructor"&&(r||!v2.call(n,t))||e.push(t);return e}var um=S2;function w2(n){return Ll(n)?Vl(n,!0):um(n)}var Ci=w2;var P2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O2=/^\w*$/;function C2(n,r){if(ut(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||mi(n)?!0:O2.test(n)||!P2.test(n)||r!=null&&n in Object(r)}var dm=C2;var T2=Kt(Object,"create"),xo=T2;function A2(){this.__data__=xo?xo(null):{},this.size=0}var pm=A2;function M2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var fm=M2;var I2="__lodash_hash_undefined__",N2=Object.prototype,D2=N2.hasOwnProperty;function E2(n){var r=this.__data__;if(xo){var e=r[n];return e===I2?void 0:e}return D2.call(r,n)?r[n]:void 0}var hm=E2;var _2=Object.prototype,B2=_2.hasOwnProperty;function L2(n){var r=this.__data__;return xo?r[n]!==void 0:B2.call(r,n)}var mm=L2;var R2="__lodash_hash_undefined__";function V2(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xo&&r===void 0?R2:r,this}var ym=V2;function Ti(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ti.prototype.clear=pm;Ti.prototype.delete=fm;Ti.prototype.get=hm;Ti.prototype.has=mm;Ti.prototype.set=ym;var Pd=Ti;function z2(){this.__data__=[],this.size=0}var gm=z2;function G2(n,r){for(var e=n.length;e--;)if(xi(n[e][0],r))return e;return-1}var Ho=G2;var j2=Array.prototype,F2=j2.splice;function U2(n){var r=this.__data__,e=Ho(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():F2.call(r,e,1),--this.size,!0}var xm=U2;function k2(n){var r=this.__data__,e=Ho(r,n);return e<0?void 0:r[e][1]}var bm=k2;function H2(n){return Ho(this.__data__,n)>-1}var vm=H2;function W2(n,r){var e=this.__data__,t=Ho(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Sm=W2;function Ai(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ai.prototype.clear=gm;Ai.prototype.delete=xm;Ai.prototype.get=bm;Ai.prototype.has=vm;Ai.prototype.set=Sm;var Wo=Ai;var q2=Kt(gt,"Map"),qo=q2;function $2(){this.size=0,this.__data__={hash:new Pd,map:new(qo||Wo),string:new Pd}}var wm=$2;function Y2(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Pm=Y2;function X2(n,r){var e=n.__data__;return Pm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var $o=X2;function K2(n){var r=$o(this,n).delete(n);return this.size-=r?1:0,r}var Om=K2;function Q2(n){return $o(this,n).get(n)}var Cm=Q2;function Z2(n){return $o(this,n).has(n)}var Tm=Z2;function J2(n,r){var e=$o(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Am=J2;function Mi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Mi.prototype.clear=wm;Mi.prototype.delete=Om;Mi.prototype.get=Cm;Mi.prototype.has=Tm;Mi.prototype.set=Am;var Ln=Mi;var eP="Expected a function";function Od(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(eP);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(Od.Cache||Ln),e}Od.Cache=Ln;var Mm=Od;var tP=500;function rP(n){var r=Mm(n,function(t){return e.size===tP&&e.clear(),t}),e=r.cache;return r}var Im=rP;var oP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nP=/\\(\\)?/g,iP=Im(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(oP,function(e,t,o,i){r.push(o?i.replace(nP,"$1"):t||e)}),r}),Nm=iP;function aP(n){return n==null?"":Lh(n)}var Dm=aP;function sP(n,r){return ut(n)?n:dm(n,r)?[n]:Nm(Dm(n))}var mr=sP;var lP=1/0;function cP(n){if(typeof n=="string"||mi(n))return n;var r=n+"";return r=="0"&&1/n==-lP?"-0":r}var Yo=cP;function uP(n,r){r=mr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Yo(r[e++])];return e&&e==t?n:void 0}var Gl=uP;function dP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Ii=dP;var Em=At?At.isConcatSpreadable:void 0;function pP(n){return ut(n)||wi(n)||!!(Em&&n&&n[Em])}var _m=pP;function Bm(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=_m),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Bm(s,r-1,e,t,o):Ii(o,s):t||(o[o.length]=s)}return o}var Lm=Bm;function fP(n){var r=n==null?0:n.length;return r?Lm(n,1):[]}var Rm=fP;function hP(n){return Yh(Qh(n,void 0,Rm),n+"")}var jl=hP;var mP=zl(Object.getPrototypeOf,Object),Ni=mP;var yP="[object Object]",gP=Function.prototype,xP=Object.prototype,Vm=gP.toString,bP=xP.hasOwnProperty,vP=Vm.call(Object);function SP(n){if(!Bt(n)||ar(n)!=yP)return!1;var r=Ni(n);if(r===null)return!0;var e=bP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Vm.call(e)==vP}var zm=SP;function wP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Gm=wP;function PP(){this.__data__=new Wo,this.size=0}var jm=PP;function OP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Fm=OP;function CP(n){return this.__data__.get(n)}var Um=CP;function TP(n){return this.__data__.has(n)}var km=TP;var AP=200;function MP(n,r){var e=this.__data__;if(e instanceof Wo){var t=e.__data__;if(!qo||t.length<AP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Ln(t)}return e.set(n,r),this.size=e.size,this}var Hm=MP;function Di(n){var r=this.__data__=new Wo(n);this.size=r.size}Di.prototype.clear=jm;Di.prototype.delete=Fm;Di.prototype.get=Um;Di.prototype.has=km;Di.prototype.set=Hm;var Ei=Di;function IP(n,r){return n&&Hr(r,Oi(r),n)}var Wm=IP;function NP(n,r){return n&&Hr(r,Ci(r),n)}var qm=NP;var Km=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$m=Km&&typeof module=="object"&&module&&!module.nodeType&&module,DP=$m&&$m.exports===Km,Ym=DP?gt.Buffer:void 0,Xm=Ym?Ym.allocUnsafe:void 0;function EP(n,r){if(r)return n.slice();var e=n.length,t=Xm?Xm(e):new n.constructor(e);return n.copy(t),t}var Qm=EP;function _P(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Zm=_P;function BP(){return[]}var Fl=BP;var LP=Object.prototype,RP=LP.propertyIsEnumerable,Jm=Object.getOwnPropertySymbols,VP=Jm?function(n){return n==null?[]:(n=Object(n),Zm(Jm(n),function(r){return RP.call(n,r)}))}:Fl,_i=VP;function zP(n,r){return Hr(n,_i(n),r)}var ey=zP;var GP=Object.getOwnPropertySymbols,jP=GP?function(n){for(var r=[];n;)Ii(r,_i(n)),n=Ni(n);return r}:Fl,Ul=jP;function FP(n,r){return Hr(n,Ul(n),r)}var ty=FP;function UP(n,r,e){var t=r(n);return ut(n)?t:Ii(t,e(n))}var kl=UP;function kP(n){return kl(n,Oi,_i)}var ys=kP;function HP(n){return kl(n,Ci,Ul)}var Hl=HP;var WP=Kt(gt,"DataView"),Wl=WP;var qP=Kt(gt,"Promise"),ql=qP;var $P=Kt(gt,"Set"),$l=$P;var ry="[object Map]",YP="[object Object]",oy="[object Promise]",ny="[object Set]",iy="[object WeakMap]",ay="[object DataView]",XP=yo(Wl),KP=yo(qo),QP=yo(ql),ZP=yo($l),JP=yo(_l),Rn=ar;(Wl&&Rn(new Wl(new ArrayBuffer(1)))!=ay||qo&&Rn(new qo)!=ry||ql&&Rn(ql.resolve())!=oy||$l&&Rn(new $l)!=ny||_l&&Rn(new _l)!=iy)&&(Rn=function(n){var r=ar(n),e=r==YP?n.constructor:void 0,t=e?yo(e):"";if(t)switch(t){case XP:return ay;case KP:return ry;case QP:return oy;case ZP:return ny;case JP:return iy}return r});var bo=Rn;var eO=Object.prototype,tO=eO.hasOwnProperty;function rO(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&tO.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var sy=rO;var oO=gt.Uint8Array,Bi=oO;function nO(n){var r=new n.constructor(n.byteLength);return new Bi(r).set(new Bi(n)),r}var Li=nO;function iO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ly=iO;var aO=/\w*$/;function sO(n){var r=new n.constructor(n.source,aO.exec(n));return r.lastIndex=n.lastIndex,r}var cy=sO;var uy=At?At.prototype:void 0,dy=uy?uy.valueOf:void 0;function lO(n){return dy?Object(dy.call(n)):{}}var py=lO;function cO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var fy=cO;var uO="[object Boolean]",dO="[object Date]",pO="[object Map]",fO="[object Number]",hO="[object RegExp]",mO="[object Set]",yO="[object String]",gO="[object Symbol]",xO="[object ArrayBuffer]",bO="[object DataView]",vO="[object Float32Array]",SO="[object Float64Array]",wO="[object Int8Array]",PO="[object Int16Array]",OO="[object Int32Array]",CO="[object Uint8Array]",TO="[object Uint8ClampedArray]",AO="[object Uint16Array]",MO="[object Uint32Array]";function IO(n,r,e){var t=n.constructor;switch(r){case xO:return Li(n);case uO:case dO:return new t(+n);case bO:return ly(n,e);case vO:case SO:case wO:case PO:case OO:case CO:case TO:case AO:case MO:return fy(n,e);case pO:return new t;case fO:case yO:return new t(n);case hO:return cy(n);case mO:return new t;case gO:return py(n)}}var hy=IO;function NO(n){return typeof n.constructor=="function"&&!Si(n)?Uh(Ni(n)):{}}var my=NO;var DO="[object Map]";function EO(n){return Bt(n)&&bo(n)==DO}var yy=EO;var gy=go&&go.isMap,_O=gy?Pi(gy):yy,xy=_O;var BO="[object Set]";function LO(n){return Bt(n)&&bo(n)==BO}var by=LO;var vy=go&&go.isSet,RO=vy?Pi(vy):by,Sy=RO;var VO=1,zO=2,GO=4,wy="[object Arguments]",jO="[object Array]",FO="[object Boolean]",UO="[object Date]",kO="[object Error]",Py="[object Function]",HO="[object GeneratorFunction]",WO="[object Map]",qO="[object Number]",Oy="[object Object]",$O="[object RegExp]",YO="[object Set]",XO="[object String]",KO="[object Symbol]",QO="[object WeakMap]",ZO="[object ArrayBuffer]",JO="[object DataView]",eC="[object Float32Array]",tC="[object Float64Array]",rC="[object Int8Array]",oC="[object Int16Array]",nC="[object Int32Array]",iC="[object Uint8Array]",aC="[object Uint8ClampedArray]",sC="[object Uint16Array]",lC="[object Uint32Array]",Ze={};Ze[wy]=Ze[jO]=Ze[ZO]=Ze[JO]=Ze[FO]=Ze[UO]=Ze[eC]=Ze[tC]=Ze[rC]=Ze[oC]=Ze[nC]=Ze[WO]=Ze[qO]=Ze[Oy]=Ze[$O]=Ze[YO]=Ze[XO]=Ze[KO]=Ze[iC]=Ze[aC]=Ze[sC]=Ze[lC]=!0;Ze[kO]=Ze[Py]=Ze[QO]=!1;function Yl(n,r,e,t,o,i){var a,s=r&VO,l=r&zO,c=r&GO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!sr(n))return n;var u=ut(n);if(u){if(a=sy(n),!s)return Hh(n,a)}else{var p=bo(n),d=p==Py||p==HO;if(Bn(n))return Qm(n,s);if(p==Oy||p==wy||d&&!o){if(a=l||d?{}:my(n),!s)return l?ty(n,qm(a,n)):ey(n,Wm(a,n))}else{if(!Ze[p])return o?n:{};a=hy(n,p,s)}}i||(i=new Ei);var h=i.get(n);if(h)return h;i.set(n,a),Sy(n)?n.forEach(function(y){a.add(Yl(y,r,e,y,n,i))}):xy(n)&&n.forEach(function(y,g){a.set(g,Yl(y,r,e,g,n,i))});var f=c?l?Hl:ys:l?Ci:Oi,m=u?void 0:f(n);return Xh(m||n,function(y,g){m&&(g=y,y=n[g]),bi(a,g,Yl(y,r,e,g,n,i))}),a}var Xl=Yl;var cC=1,uC=4;function dC(n){return Xl(n,cC|uC)}var vo=dC;var pC="__lodash_hash_undefined__";function fC(n){return this.__data__.set(n,pC),this}var Cy=fC;function hC(n){return this.__data__.has(n)}var Ty=hC;function Kl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Ln;++r<e;)this.add(n[r])}Kl.prototype.add=Kl.prototype.push=Cy;Kl.prototype.has=Ty;var Ay=Kl;function mC(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var My=mC;function yC(n,r){return n.has(r)}var Iy=yC;var gC=1,xC=2;function bC(n,r,e,t,o,i){var a=e&gC,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,h=e&xC?new Ay:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var f=n[p],m=r[p];if(t)var y=a?t(m,f,p,r,n,i):t(f,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(h){if(!My(r,function(g,v){if(!Iy(h,v)&&(f===g||o(f,g,e,t,i)))return h.push(v)})){d=!1;break}}else if(!(f===m||o(f,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Ql=bC;function vC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Ny=vC;function SC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Dy=SC;var wC=1,PC=2,OC="[object Boolean]",CC="[object Date]",TC="[object Error]",AC="[object Map]",MC="[object Number]",IC="[object RegExp]",NC="[object Set]",DC="[object String]",EC="[object Symbol]",_C="[object ArrayBuffer]",BC="[object DataView]",Ey=At?At.prototype:void 0,Cd=Ey?Ey.valueOf:void 0;function LC(n,r,e,t,o,i,a){switch(e){case BC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case _C:return!(n.byteLength!=r.byteLength||!i(new Bi(n),new Bi(r)));case OC:case CC:case MC:return xi(+n,+r);case TC:return n.name==r.name&&n.message==r.message;case IC:case DC:return n==r+"";case AC:var s=Ny;case NC:var l=t&wC;if(s||(s=Dy),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=PC,a.set(n,r);var u=Ql(s(n),s(r),t,o,i,a);return a.delete(n),u;case EC:if(Cd)return Cd.call(n)==Cd.call(r)}return!1}var _y=LC;var RC=1,VC=Object.prototype,zC=VC.hasOwnProperty;function GC(n,r,e,t,o,i){var a=e&RC,s=ys(n),l=s.length,c=ys(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:zC.call(r,d)))return!1}var h=i.get(n),f=i.get(r);if(h&&f)return h==r&&f==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var g=n[d],v=r[d];if(t)var P=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(P===void 0?g===v||o(g,v,e,t,i):P)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=n.constructor,S=r.constructor;O!=S&&"constructor"in n&&"constructor"in r&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var By=GC;var jC=1,Ly="[object Arguments]",Ry="[object Array]",Zl="[object Object]",FC=Object.prototype,Vy=FC.hasOwnProperty;function UC(n,r,e,t,o,i){var a=ut(n),s=ut(r),l=a?Ry:bo(n),c=s?Ry:bo(r);l=l==Ly?Zl:l,c=c==Ly?Zl:c;var u=l==Zl,p=c==Zl,d=l==c;if(d&&Bn(n)){if(!Bn(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Ei),a||Rl(n)?Ql(n,r,e,t,o,i):_y(n,r,l,e,t,o,i);if(!(e&jC)){var h=u&&Vy.call(n,"__wrapped__"),f=p&&Vy.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Ei),o(m,y,e,t,i)}}return d?(i||(i=new Ei),By(n,r,e,t,o,i)):!1}var zy=UC;function Gy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Bt(n)&&!Bt(r)?n!==n&&r!==r:zy(n,r,e,t,Gy,o)}var jy=Gy;function kC(n,r){return n!=null&&r in Object(n)}var Fy=kC;function HC(n,r,e){r=mr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Yo(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&vi(o)&&gi(a,o)&&(ut(n)||wi(n)))}var Uy=HC;function WC(n,r){return n!=null&&Uy(n,r,Fy)}var ky=WC;function qC(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Hy=qC;function $C(n,r){return r.length<2?n:Gl(n,Gm(r,0,-1))}var Wy=$C;function YC(n,r){return jy(n,r)}var Td=YC;function XC(n,r){return r=mr(r,n),n=Wy(n,r),n==null||delete n[Yo(Hy(r))]}var qy=XC;function KC(n){return zm(n)?void 0:n}var $y=KC;var QC=1,ZC=2,JC=4,eT=jl(function(n,r){var e={};if(n==null)return e;var t=!1;r=Nl(r,function(i){return i=mr(i,n),t||(t=i.length>1),i}),Hr(n,Hl(n),e),t&&(e=Xl(e,QC|ZC|JC,$y));for(var o=r.length;o--;)qy(e,r[o]);return e}),Ri=eT;function tT(n,r,e,t){if(!sr(n))return n;r=mr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=Yo(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=sr(u)?u:gi(r[o+1])?[]:{})}bi(s,l,c),s=s[l]}return n}var Yy=tT;function rT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Gl(n,a);e(s,a)&&Yy(i,mr(a,n),s)}return i}var Xy=rT;function oT(n,r){return Xy(n,r,function(e,t){return ky(n,t)})}var Ky=oT;var nT=jl(function(n,r){return n==null?{}:Ky(n,r)}),Mr=nT;var xe=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,xe.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,xe.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,xe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function gs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&gs(t)}return Object.freeze(n)}function Qy(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Vi=class extends Error{};function Jl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Wr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function zi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Zy(){return typeof process<"u"}function Jy(n,r){for(let e of n)r(e.id,e.data)!==!0&&Jy(e.children,r)}function eg(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)eg(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);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,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)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,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&eg(o,t)}}traverse(e){Jy(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),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:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,Ke.prototype);let a=i;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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:a,children:s};return c=[...c,u],c.sort((d,h)=>d.fi-h.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let h=t;for(;h!==null;){if(h===void 0)throw new Error;if(h===i)throw new Vi("cyclic tree");h=this.parent(h)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(h=>h.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((h,f)=>h.fi-f.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Qy(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Wr(0,o,o);{let a=i[0].fi;return Wr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Wr(l,l+o,o)}else return Wr(a.fi,s.fi,o)}}};var Gi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},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");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Gi||(Gi={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ve.prototype);let t=e;return Zy()||t.fillCaches(),t}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:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};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:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Wr(0,t,t);{let i=o[0].fi;return Wr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Wr(s,s+t,t)}else return Wr(i.fi,a.fi,t)}}};function ji(n){return n&&typeof n=="object"&&n instanceof Qe}var Qe=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ji(t))return null;o+=1}t=t?Jl(t):new Qe;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=Jl(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Jl(l);c[r.path[o-1]]=t,t=c}else{let c=new Qe;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,Qe.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},qr;(t=>{function n(o,i){return xs(o,i)??o}t.apply=n;function r(o,i){return Md(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!ji(l))return;a+=1}if(l===void 0)return i;if(!!ji(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=Ad([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(qr||(qr={}));function Ad(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Ad(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function iT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function xs(n,r){if(!ji(r))return r;if(n instanceof Ke){let e=Ad(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return iT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=xs(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Qe)return Md(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=xs(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Md(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ji(r))return r;if(!ji(n))return qr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Qe;for(let o of e){let i=Md(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function tg(n,r){let e={cur:[],result:[],len:0};return n=bs(n,r,e)??n,[n,e.result]}function ec(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function tc(n){n&&(n.len-=1)}function aT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function rg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));tc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=rg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function sT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));return tc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function bs(n,r,e){if(n instanceof Ke){let t=rg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return sT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=bs(i,r,ec(e,a));return tc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!zi(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=bs(a,r,ec(e,i));tc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&aT(e),t}else return}}var Fi;(r=>{function n(e,t){let o=ot.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Fi||(Fi={}));var nt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof Qe&&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 Ke||l instanceof ve||l instanceof xe?d=l.runOp(c):d=Gi.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let g=u[y],v=p[y];if(v instanceof Ke){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof ve){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof xe){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Qe){let P={...v,[g]:m};m=Object.setPrototypeOf(P,Qe.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let P=m;m=[...v],m[g]=P}else m={...v,[g]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let h=u[p.length],f;if(l instanceof Ke){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof ve){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else l!==null&&(f=l[h]);if(f!==void 0)p.push(l),l=f;else return null}}s.apply=e;function t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;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 i(l,c){return t(l.path,c.path)}s.commutative=i;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})(nt||(nt={}));var vs;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[h,...f]=d.path;h===u&&p.push({...d,path:f})}return p}l.removePrefix=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(h=>nt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>nt.commutative(p,d)))}l.commutative=i;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=[],h=[];for(let f of u)try{if(f.type===3||f.type===5&&f.path[f.path.length-1]==="variables"){let m,y,g;if(f.type===3?(m=ot.zoom(p,[...f.path,f.id]),g=nt.apply(p,{...f,type:2})):(m=ot.zoom(p,[...f.path,f.id,"value"]),g=nt.apply(p,f)),g!==null){p=g.data;let[v,P]=tg(p,{[f.id]:m});p=v;for(let O=0;O<P.length;O++){let S=P[O],T=S.pop();if(typeof T=="number"){let A=[T];for(let E=O+1;E<P.length;E++){let N=P[E],I=N[N.length-1];if(typeof I=="number"&&ot.equal(S,N.slice(0,N.length-1)))A.push(I),P.splice(E,1);else break}let x=ot.zoom(p,S);y=x.map((E,N)=>A.includes(N)?f.id:E),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let A=m,x=ot.zoom(p,S.slice(0,S.length-2)),E=x.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:A}}:N);Object.setPrototypeOf(E,Object.getPrototypeOf(x.layers)),x.layers=E}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=nt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof Vi)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(vs||(vs={}));var og=Symbol(),lT=Symbol(),oc=Symbol(),Vn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof rc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[oc];t&&t(),delete this._children[r]}}}},Nd=class extends Vn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Gi.runOp(this._current,r),r.path)}},Dd=class extends Vn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,xe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},ng={get(n,r){if(r===oc)return()=>{n._parent=null};if(r===og)return n._current;if(r===lT)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=nc(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},cT={...ng,set(n,r,e){let t={type:0,props:{[r]:it(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},uT={...ng,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Ui=class extends Vn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ki=class extends Vn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Id(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ot.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var rc=class extends Vn{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Id(this.ts,e,r),Id(this.actual,t,r),Id(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function nc(n,r,e){return e instanceof Ke?new Ui(n,r,e):e instanceof ve?new ki(n,r,e):e instanceof xe?new Proxy(new Dd(n,r,e),uT):e!==null&&typeof e=="object"?zi(e)?e:new Proxy(new Nd(n,r,e),cT):e}function Ed(n){let r=new rc(n);return[nc(r,"",n),r]}function Xo(n,r){let[e,t]=Ed(n);return r(e),t.result()}function it(n){return n instanceof Ui||n instanceof ki?n._current:n!==null&&typeof n=="object"?n[og]:n}var ot;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);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=r;function e(i,a){if((i instanceof Ke||i instanceof Ui)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ki)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ot||(ot={}));function ig(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Le(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var ic=class{},Ss=class extends ic{constructor(e){super();this.id=e}},ws=class extends ic{constructor(e){super();this.data=e}};var Bd;try{Bd=new TextDecoder}catch{}var de,Qo,G=0;var fg=[],Ld=fg,Rd=0,Qt={},ke,Ko,yr=0,$r=0,lr,So,Wt=[],We,ag={useRecords:!1,mapsAsObjects:!0},Ps=class{},zd=new Ps;zd.name="MessagePack 0xC1";var Hi=!1,Yr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return xg(()=>(sc(),this?this.unpack(r,e):Yr.prototype.unpack.call(ag,r,e)));Qo=e>-1?e:r.length,G=0,Rd=0,$r=0,Ko=null,Ld=fg,lr=null,de=r;try{We=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Yr){if(Qt=this,this.structures)return ke=this.structures,ac();(!ke||ke.length>0)&&(ke=[])}else Qt=ag,(!ke||ke.length>0)&&(ke=[]);return ac()}unpackMultiple(r,e){let t,o=0;try{Hi=!0;let i=r.length,a=this?this.unpack(r,i):uc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(ac())===!1)return}else{for(t=[a];G<i;)o=G,t.push(ac());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Hi=!1,sc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function ac(){try{if(!Qt.trusted&&!Hi){let r=ke.sharedLength||0;r<ke.length&&(ke.length=r)}let n=dt();if(G==Qo)ke.restoreStructures&&sg(),ke=null,de=null,So&&(So=null);else if(G>Qo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Hi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ke.restoreStructures&&sg(),sc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function sg(){for(let n in ke.restoreStructures)ke[n]=ke.restoreStructures[n];ke.restoreStructures=null}function dt(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=ke[n&63]||Qt.getStructures&&hg()[n&63];return r?(r.read||(r.read=Gd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Qt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[yg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}else if(n<192){let r=n-160;if($r>=G)return Ko.slice(G-yr,(G+=r)-yr);if($r==0&&Qo<140){let e=r<16?jd(r):mg(r);if(e!=null)return e}return Vd(r)}else{let r;switch(n){case 192:return null;case 193:return lr?(r=dt(),r>0?lr[1].slice(lr.position1,lr.position1+=r):lr[0].slice(lr.position0,lr.position0-=r)):zd;case 194:return!1;case 195:return!0;case 196:return _d(de[G++]);case 197:return r=We.getUint16(G),G+=2,_d(r);case 198:return r=We.getUint32(G),G+=4,_d(r);case 199:return zn(de[G++]);case 200:return r=We.getUint16(G),G+=2,zn(r);case 201:return r=We.getUint32(G),G+=4,zn(r);case 202:if(r=We.getFloat32(G),Qt.useFloat32>2){let e=cc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=We.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=We.getUint16(G),G+=2,r;case 206:return r=We.getUint32(G),G+=4,r;case 207:return Qt.int64AsNumber?(r=We.getUint32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigUint64(G),G+=8,r;case 208:return We.getInt8(G++);case 209:return r=We.getInt16(G),G+=2,r;case 210:return r=We.getInt32(G),G+=4,r;case 211:return Qt.int64AsNumber?(r=We.getInt32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return pg(de[G++]&63);{let e=Wt[r];if(e)return e.read?(G++,e.read(dt())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,pg(de[G++]&63,de[G++])):zn(2);case 214:return zn(4);case 215:return zn(8);case 216:return zn(16);case 217:return r=de[G++],$r>=G?Ko.slice(G-yr,(G+=r)-yr):pT(r);case 218:return r=We.getUint16(G),G+=2,$r>=G?Ko.slice(G-yr,(G+=r)-yr):fT(r);case 219:return r=We.getUint32(G),G+=4,$r>=G?Ko.slice(G-yr,(G+=r)-yr):hT(r);case 220:return r=We.getUint16(G),G+=2,cg(r);case 221:return r=We.getUint32(G),G+=4,cg(r);case 222:return r=We.getUint16(G),G+=2,ug(r);case 223:return r=We.getUint32(G),G+=4,ug(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var dT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Gd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>dT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(dt);return n.highByte===0&&(n.read=lg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=dt()}return t}return e.count=0,n.highByte===0?lg(r,e):e}var lg=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=ke[t]||hg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Gd(o,n)),o.read()};function hg(){let n=xg(()=>(de=null,Qt.getStructures()));return ke=Qt._mergeStructures(n,ke)}var Vd=lc,pT=lc,fT=lc,hT=lc;function lc(n){let r;if(n<16&&(r=jd(n)))return r;if(n>64&&Bd)return Bd.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=Mt.apply(String,t),t.length=0)}return t.length>0&&(r+=Mt.apply(String,t)),r}function cg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}function ug(n){if(Qt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[yg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}}var Mt=String.fromCharCode;function mg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return Mt.apply(String,e)}function jd(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return Mt(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return Mt(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return Mt(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Mt(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Mt(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Mt(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Mt(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Mt(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return Mt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return Mt(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return Mt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return Mt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[G++],f=de[G++];if((h&128)>0||(f&128)>0){G-=14;return}if(n<15)return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[G++];if((m&128)>0){G-=15;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function _d(n){return Qt.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function zn(n){let r=de[G++];if(Wt[r])return Wt[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var dg=new Array(4096);function yg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,$r>=G)return Ko.slice(G-yr,(G+=n)-yr);if(!($r==0&&Qo<180))return Vd(n)}else return G--,dt();let r=(n<<5^(n>1?We.getUint16(G):n>0?de[G]:0))&4095,e=dg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=We.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],dg[r]=e,e.bytes=n;t<o;)i=We.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?jd(n):mg(n);return s!=null?e.string=s:e.string=Vd(n)}var pg=(n,r)=>{var e=dt();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=ke[n];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[n]=o),ke[n]=e,e.read=Gd(e,t),e.read()},gg=typeof self=="object"?self:global;Wt[0]=()=>{};Wt[0].noBuffer=!0;Wt[101]=()=>{let n=dt();return(gg[n[0]]||Error)(n[1])};Wt[105]=n=>{let r=We.getUint32(G-4);So||(So=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};So.set(r,o);let i=dt();return o.used?Object.assign(t,i):(o.target=i,i)};Wt[112]=n=>{let r=We.getUint32(G-4),e=So.get(r);return e.used=!0,e.target};Wt[115]=()=>new Set(dt());var Fd=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Wt[116]=n=>{let r=n[0],e=Fd[r];if(!e)throw new Error("Could not find typed array for code "+r);return new gg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Wt[120]=()=>{let n=dt();return new RegExp(n[0],n[1])};Wt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,lr=[dt(),dt()],lr.position0=0,lr.position1=0;let t=G;G=e;try{return dt()}finally{G=t}};Wt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function xg(n){let r=Qo,e=G,t=Rd,o=yr,i=$r,a=Ko,s=Ld,l=So,c=lr,u=new Uint8Array(de.slice(0,Qo)),p=ke,d=ke.slice(0,ke.length),h=Qt,f=Hi,m=n();return Qo=r,G=e,Rd=t,yr=o,$r=i,Ko=a,Ld=s,So=l,lr=c,de=u,Hi=f,ke=p,ke.splice(0,ke.length,...d),Qt=h,We=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function sc(){de=null,So=null,ke=null}function bg(n){n.unpack?Wt[n.type]=n.unpack:Wt[n.type]=n}var cc=new Array(147);for(let n=0;n<256;n++)cc[n]=+("1e"+Math.floor(45.15-n*.30103));var uc=new Yr({useRecords:!1}),mT=uc.unpack,yT=uc.unpackMultiple,gT=uc.unpack,dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},xT=new Float32Array(1),fU=new Uint8Array(xT.buffer,0,4);var pc;try{pc=new TextEncoder}catch{}var fc,kd,hc=typeof Buffer<"u",Ud=hc?Buffer.allocUnsafeSlow:Uint8Array,Pg=hc?Buffer:Uint8Array,vg=hc?4294967296:2144337920,Y,ft,k=0,Xr,Kr=null,bT=/[\u0080-\uFFFF]/,Os=Symbol("record-id"),Gn=class extends Yr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Pg.prototype.utf8Write?function(x,E,N){return Y.utf8Write(x,E,N)}:pc&&pc.encodeInto?function(x,E){return pc.encodeInto(x,Y.subarray(E)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,O=0;this.pack=this.encode=function(x,E){if(Y||(Y=new Ud(8192),ft=new DataView(Y.buffer,0,8192),k=0),Xr=Y.length-10,Xr-k<2048?(Y=new Ud(Y.length),ft=new DataView(Y.buffer,0,Y.length),Xr=Y.length-10,k=0):k=k+7&2147483640,t=k,s=u.structuredClone?new Map:null,u.bundleStrings?(Kr=["",""],Y[k++]=214,Y[k++]=98,Kr.position=k-t,k+=4):Kr=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>h)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 D=o[I];if(!D)continue;let _,B=o.transitions;for(let V=0,U=D.length;V<U;V++){let R=D[V];_=B[R],_||(_=B[R]=Object.create(null)),B=_}B[Os]=I+64}l=N}p||(o.nextId=N+64)}i&&(i=!1),a=o||[];try{if(S(x),Kr){ft.setUint32(Kr.position+t,k-Kr.position-t);let N=Kr;Kr=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>Xr&&A(k),u.offset=k;let N=ST(Y.subarray(t,k),s.idsToInsert);return s=null,N}return E&Cg?(Y.start=t,Y.end=k,Y):Y.subarray(t,k)}finally{if(o){if(O<10&&O++,P>1e4)o.transitions=null,O=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Os]=0;v=[]}if(i&&u.saveStructures){let N=o.sharedLength||h;o.length>N&&(o=o.slice(0,N));let I=Y.subarray(t,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=N,I)}}E&MT&&(k=t)}};let S=x=>{k>Xr&&(Y=A(k));var E=typeof x,N;if(E==="string"){let I=x.length;if(Kr&&I>=8&&I<4096){let B=bT.test(x);Kr[B?0:1]+=x,Y[k++]=193,S(B?-I:I);return}let D;I<32?D=1:I<256?D=2:I<65536?D=3:D=5;let _=I*3;if(k+_>Xr&&(Y=A(k+_)),I<64||!c){let B,V,U,R=k+D;for(B=0;B<I;B++)V=x.charCodeAt(B),V<128?Y[R++]=V:V<2048?(Y[R++]=V>>6|192,Y[R++]=V&63|128):(V&64512)===55296&&((U=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),B++,Y[R++]=V>>18|240,Y[R++]=V>>12&63|128,Y[R++]=V>>6&63|128,Y[R++]=V&63|128):(Y[R++]=V>>12|224,Y[R++]=V>>6&63|128,Y[R++]=V&63|128);N=R-k-D}else N=c(x,k+D,_);N<32?Y[k++]=160|N:N<256?(D<2&&Y.copyWithin(k+2,k+1,k+1+N),Y[k++]=217,Y[k++]=N):N<65536?(D<3&&Y.copyWithin(k+3,k+2,k+2+N),Y[k++]=218,Y[k++]=N>>8,Y[k++]=N&255):(D<5&&Y.copyWithin(k+5,k+3,k+3+N),Y[k++]=219,ft.setUint32(k,N),k+=4),k+=N}else if(E==="number")if(x>>>0===x)x<64?Y[k++]=x:x<256?(Y[k++]=204,Y[k++]=x):x<65536?(Y[k++]=205,Y[k++]=x>>8,Y[k++]=x&255):(Y[k++]=206,ft.setUint32(k,x),k+=4);else if(x>>0===x)x>=-32?Y[k++]=256+x:x>=-128?(Y[k++]=208,Y[k++]=x+256):x>=-32768?(Y[k++]=209,ft.setInt16(k,x),k+=2):(Y[k++]=210,ft.setInt32(k,x),k+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Y[k++]=202,ft.setFloat32(k,x);let D;if(I<4||(D=x*cc[(Y[k]&127)<<1|Y[k+1]>>7])>>0===D){k+=4;return}else k--}Y[k++]=203,ft.setFloat64(k,x),k+=8}else if(E==="object")if(!x)Y[k++]=192;else{if(s){let D=s.get(x);if(D){if(!D.id){let _=s.idsToInsert||(s.idsToInsert=[]);D.id=_.push(D)}Y[k++]=214,Y[k++]=112,ft.setUint32(k,D.id),k+=4;return}else s.set(x,{offset:k-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){N=x.length,N<16?Y[k++]=144|N:N<65536?(Y[k++]=220,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=221,ft.setUint32(k,N),k+=4);for(let D=0;D<N;D++)S(x[D])}else if(I===Map){N=x.size,N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ft.setUint32(k,N),k+=4);for(let[D,_]of x)S(D),S(_)}else{for(let D=0,_=fc.length;D<_;D++){let B=kd[D];if(x instanceof B){let V=fc[D];if(V.write){V.type&&(Y[k++]=212,Y[k++]=V.type,Y[k++]=0),S(V.write.call(this,x));return}let U=Y,R=ft,W=k;Y=null;let j;try{j=V.pack.call(this,x,F=>(Y=U,U=null,k+=F,k>Xr&&A(k),{target:Y,targetView:ft,position:k-F}),S)}finally{U&&(Y=U,ft=R,k=W,Xr=Y.length-10)}j&&(j.length+k>Xr&&A(j.length+k),k=vT(j,Y,k,V.type));return}}T(x,!x.hasOwnProperty)}}else if(E==="boolean")Y[k++]=x?195:194;else if(E==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Y[k++]=211,ft.setBigInt64(k,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Y[k++]=207,ft.setBigUint64(k,x);else if(this.largeBigIntToFloat)Y[k++]=203,ft.setFloat64(k,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(E==="undefined")this.encodeUndefinedAsNil?Y[k++]=192:(Y[k++]=212,Y[k++]=0,Y[k++]=0);else if(E==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+E)},T=this.useRecords===!1?this.variableMapSize?x=>{let E=Object.keys(x),N=E.length;N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ft.setUint32(k,N),k+=4);let I;for(let D=0;D<N;D++)S(I=E[D]),S(x[I])}:(x,E)=>{Y[k++]=222;let N=k-t;k+=2;let I=0;for(let D in x)(E||x.hasOwnProperty(D))&&(S(D),S(x[D]),I++);Y[N+++t]=I>>8,Y[N+t]=I&255}:x=>{let E=Object.keys(x),N,I=a.transitions||(a.transitions=Object.create(null)),D=0;for(let B=0,V=E.length;B<V;B++){let U=E[B];N=I[U],N||(N=I[U]=Object.create(null),D++),I=N}let _=I[Os];if(_)_>=96&&m?(Y[k++]=((_-=96)&31)+96,Y[k++]=_>>5):Y[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(E)?(_=a.nextOwnId,_<g||(_=y),a.nextOwnId=_+1):(_>=g&&(_=y),a.nextId=_+1);let B=E.highByte=_>=96&&m?_-96>>5:-1;I[Os]=_,a[_-64]=E,_<y?(E.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[k++]=(_&31)+96,Y[k++]=B):Y[k++]=_):(B>=0?(Y[k++]=213,Y[k++]=114,Y[k++]=(_&31)+96,Y[k++]=B):(Y[k++]=212,Y[k++]=114,Y[k++]=_),D&&(P+=O*D),v.length>=f&&(v.shift()[Os]=0),v.push(I),S(E))}for(let B=0,V=E.length;B<V;B++)S(x[E[B]])},A=x=>{let E;if(x>16777216){if(x-t>vg)throw new Error("Packed buffer would be larger than maximum buffer size");E=Math.min(vg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else E=(Math.max(x-t<<2,Y.length-1)>>12)+1<<12;let N=new Ud(E);return ft=new DataView(N.buffer,0,E),Y.copy?Y.copy(N,0,t,x):N.set(Y.slice(t,x)),k-=t,t=0,Xr=N.length-10,Y=N}}useBuffer(r){Y=r,ft=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),k=0}};kd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ps];fc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Sg(n,16,r):wg(hc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Pg&&this.structuredClone?Sg(n,Fd.indexOf(e.name),r):wg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Sg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function wg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function vT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function ST(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Zo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");kd.unshift(n.Class),fc.unshift(n)}bg(n)}var Og=new Gn({useRecords:!1}),wT=Og.pack,PT=Og.pack;var{NEVER:OT,ALWAYS:CT,DECIMAL_ROUND:TT,DECIMAL_FIT:AT}=dc,Cg=512,MT=1024;var Tg=new Gn({structuredClone:!0});Zo({Class:xe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,xe.prototype),n}});Zo({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});Zo({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});Zo({Class:Ss.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ss(n)}});Zo({Class:ws.prototype.constructor,type:5,write(n){return n.data},read(n){return new ws(n)}});Zo({Class:Qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});function IT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Hd(n){if(zi(n))return n;if(Array.isArray(n))return n.map(Hd);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Hd(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var mc;(t=>{function n(o){return Tg.pack(o)}t.serialize=n;function r(o){return Tg.unpack(o)}t.deserialize=r;function e(o){return IT(n(Hd(o))).toString()}t.checksum=e})(mc||(mc={}));var tn="personal camera",rn="a218fcc3-276b-49b9-b485-49037fd14f5f",Eg=2960946,ht=5526619;var Wi;(h=>{function n(f,m){return f[0]===m[0]&&f[1]===m[1]}h.isEqual=n;function r(f,m,y){return[f[0]+(m[0]-f[0])*y,f[1]+(m[1]-f[1])*y]}h.lerp=r;function e(f,m){return[f[0]+m[0],f[1]+m[1]]}h.add=e;function t(f,m){return[f[0]-m[0],f[1]-m[1]]}h.sub=t;function o(f,m){return[f[0]*m[0],f[1]*m[1]]}h.multiply=o;function i(f,m){return[f[0]/m[0],f[1]/m[1]]}h.divide=i;function a(f,m){return Math.pow(m[0]-f[0],2)+Math.pow(m[1]-f[1],2)}h.distanceSquared=a;function s(f,m){return Math.sqrt(a(f,m))}h.distance=s;function l(f,m){return f[0]*m[0]+f[1]*m[1]}h.dot=l;function c(f,m){return[f[0]*m,f[1]*m]}h.scalarMultiply=c;function u(f,m,y){let g=h.sub(m,f),v=h.sub(y,f),P=h.dot(g,v)/h.dot(g,g),O=h.scalarMultiply(g,P);return h.add(f,O)}h.projectionOnto=u;function p(f,m,y){return s(f,u(f,m,y))}h.projectionOntoDistance=p;function d(f,m){return[(f[0]+m[0])*.5,(f[1]+m[1])*.5]}h.center=d})(Wi||(Wi={}));var Jo;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;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})(Jo||(Jo={}));var Ag;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Ag||(Ag={}));var Mg;(a=>{let n=180/Math.PI,r=Math.PI/180;function e(s){return typeof s=="number"?s*n:s}function t(s){return typeof s=="number"?s*r:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function i(s){return[t(s[0]),t(s[1]),t(s[2])]}a.degToRad=i})(Mg||(Mg={}));var en;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(en||(en={}));var St;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,p.white={r:1,g:1,b:1},p.red={r:1,g:0,b:0},p.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,h){return d.r===h.r&&d.g===h.g&&d.b===h.b}p.equals=l;function c(d,h){return d.r.toFixed(2)===h.r.toFixed(2)&&d.g.toFixed(2)===h.g.toFixed(2)&&d.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(d,h,f){return{r:d.r+(h.r-d.r)*f,g:d.g+(h.g-d.g)*f,b:d.b+(h.b-d.b)*f}}p.lerp=u})(St||(St={}));var Ie;(c=>{c.white={...St.white,a:1},c.transparent={...St.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...St.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return St.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return St.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:h}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${h})`}c.toStyle=l})(Ie||(Ie={}));var yc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(yc||(yc={}));var Ig;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ig||(Ig={}));var Ng;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Ng||(Ng={}));var Dg;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Dg||(Dg={}));function Wd(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ir||(Ir={}));var on;(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 t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(on||(on={}));var Qr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},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:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),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"}}}e.defaultData=n;function r(t,o){let i={...t};if(NT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;DT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;ET.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;_T.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;BT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;LT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Qr||(Qr={}));var gc;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(gc||(gc={}));var NT=["count"],DT=["radius","start","end","position","scale","rotation"],ET=["position","scale","rotation"],_T=["count","size"],BT=["count","position","scale","rotation"],LT=["strength","scale","rotation","position","movement","seed","freqScale"];var xc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(xc||(xc={}));var bc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ie.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(t==="DirectionalLight")return{type:t,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(bc||(bc={}));var qi;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.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:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...t.defaultCollisionData}))(qi||(qi={}));var nn;(r=>r.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]})(nn||(nn={}));var qd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(qd||(qd={}));var $d;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})($d||($d={}));var vc;(r=>r.defaultData={...$d.defaultData,...qd.defaultData})(vc||(vc={}));var _g;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(_g||(_g={}));var $i;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))($i||($i={}));var Bg;(r=>{function n(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"}r.is=n})(Bg||(Bg={}));function Rg(n){return n.type!=="displace"}var Lg;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Lg||(Lg={}));var Vg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],zg=["wrapping","image","video","name","minFilter"],xt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){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 t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){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},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:$i.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:St.fromHex(ht)};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:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.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:Ie.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:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.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}};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:{...St.fromHex(0),a:1},colorB:{...St.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}}}})(xt||(xt={}));var Lt;(c=>{function n(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=n;function r(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([h,f])=>{p+=`${h}${f}`,Array.isArray(f)?f.forEach(m=>p+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${f}`})}),p}c.getHash=r;function e(){return{layers:new ve}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let h=new ve;return h.push({fi:0,data:xt.defaultData("light",u),id:p}),h.push({fi:1,data:xt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=xt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...xt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...xt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Lt||(Lt={}));var Yi;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Yi||(Yi={}));var Xi;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Xi||(Xi={}));var Yd={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Sc;(r=>{function n(e,t){let o={...e};return RT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Sc||(Sc={}));var wc={shape:Yd,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},RT=["depth","offset","angle","twist","startScale","endScale"];var Cs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Cs||(Cs={}));var Pc;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Sc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Pc||(Pc={}));var an;(r=>{function n(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:Xi.defaultData(),extrusion:wc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.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==="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",extrudeBevelSize:0,extrudeBevelSegments:1};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")}r.defaultData=n})(an||(an={}));var Oc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:St.white,near:.1,far:2e3})(Oc||(Oc={}));var Cc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(Cc||(Cc={}));var Xd;(r=>r.defaultData={softShadowQuality:"low"})(Xd||(Xd={}));var Kd;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Kd||(Kd={}));var Qd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Qd||(Qd={}));var Ts;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ts||(Ts={}));var Zd;(r=>r.defaultData={playCamera:tn,gameControlObject:null})(Zd||(Zd={}));var Tc;(r=>r.defaultData={backgroundColor:Ie.fromHexAndA(Eg,1),postprocessing:Cc.defaultData,fog:Oc.defaultData,globalPhysics:Ts.defaultData,ambient:Kd.defaultData,ao:Qd.defaultData,shadow:Xd.defaultData,publish:Zd.defaultData})(Tc||(Tc={}));var Ac;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Ac||(Ac={}));var Gg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Gg||(Gg={}));var Ki;(o=>{o.identity={...yc.identity,hiddenMatrix:en.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return Tl({position:Jo.isEqual(i.position,a.position)?void 0:a.position,rotation:Jo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Jo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:en.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Ki||(Ki={}));var wt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:nn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ki.identity,cloner:null})(wt||(wt={}));var Mc;(r=>r.defaultData={type:"Empty",...wt.defaultData})(Mc||(Mc={}));var jg;(r=>r.defaultData={type:"ParticleCollider",...Ac.defaultData,...wt.defaultData})(jg||(jg={}));var Fg;(r=>r.defaultData={type:"Component",...wt.defaultData})(Fg||(Fg={}));var Ug;(r=>r.defaultData={type:"Particle",...wt.defaultData,...qi.defaultData})(Ug||(Ug={}));var jn;(r=>r.defaultData={type:"Mesh",...wt.defaultData,...vc.defaultData})(jn||(jn={}));var Fn;(r=>r.defaultData={...wt.defaultData,...Ki.identity,position:[0,0,on.DefaultTargetOffset],...on.defaultData})(Fn||(Fn={}));var Ic;(e=>{function n(t){return{...wt.defaultData,...bc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ic||(Ic={}));var Qi;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(Qi||(Qi={}));var Zr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...wt.defaultData,...s,component:a,overrides:new Qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Ki.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Zr||(Zr={}));var wo;(e=>{e.defaultData={type:"Page",...wt.defaultData,physics:{...nn.defaultData,fusedBody:!1},...Tc.defaultData,camera:Fn.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(wo||(wo={}));var Nc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:en.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:nn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...on.defaultData},i.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"]},i.defaultMeshObject={name:"Rectangle",...wt.defaultData,...jn.defaultData,geometry:an.defaultData("RectangleGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...wt.defaultData,...jn.defaultData,geometry:an.defaultData("BooleanGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...wt.defaultData,...jn.defaultData,geometry:an.defaultData("TextGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")}))(Nc||(Nc={}));var Un;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Qe})))):Ir.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Xo(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&xt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Xo(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 h=l[c]?.layers?.data(p);h&&xt.patch(h,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[h,f]of Object.entries(d.layers)){let{texture:m,...y}=f;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...p,"layers",h,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...p,"layers",h],props:y,type:0};l.push(g)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...gc.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[h,f]of Object.entries(d))u(["materials",h],f);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let h={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(h),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let h={path:[p],props:d,type:0};l.push(h)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ki.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})}),Ir.is(i.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(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Pc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(xc.is(i.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=St.clone(l.color))}return s}o.patch=t})(Un||(Un={}));var Zi;(r=>r.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})(Zi||(Zi={}));var Nr;(r=>r.defaultData={orbitControls:Zi.defaultData,playPage:rn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},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}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var Jd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Jd||(Jd={}));var ep;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(ep||(ep={}));var Po;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Jd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:ep.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Po||(Po={}));var kg;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ji.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(kg||(kg={}));var Oo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:Ic.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=Nc.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:h,children:[]})),d.push(...p);let f=new Ke;return f.push({fi:1,id:rn,data:{...wo.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Nr.defaultData,styles:Po.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Nr.defaultData,styles:Po.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Nr.defaultData,styles:Po.defaultData()}},c.emptyData=function(){return{objects:new Ke,publish:{...Nr.defaultData},styles:Po.defaultData()}};function s(u){return{...c.defaultData,objects:Ht(u,Ke.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Oo||(Oo={}));var ea;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ea||(ea={}));var Dc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.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():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Dc||(Dc={}));var tp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(tp||(tp={}));var Hg;(r=>r.all=[...tp.all,"components"])(Hg||(Hg={}));var Wg;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Wg||(Wg={}));var Co;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Co||(Co={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Ht(a,xe.prototype)}i.defaultColors=n;function r(){return Ht({},xe.prototype)}i.defaultImages=r;function e(){return{catelogs:new xe,materials:new xe,images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,variables:new ve,lib:Co.defaultData()}}i.emptyData=e;function t(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)}}i.defaultVariables=t;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}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Bc}from"three";var Ec;(r=>r.list=["idle","move","jump","run"])(Ec||(Ec={}));var _c;(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 ve,move:new ve,jump:new ve,run:new ve},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(_c||(_c={}));function qg(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(it(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...it(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function To(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ao(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Lt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==Qe.prototype&&r(o.material)})})}function VT(n){Object.assign(n.scene.publish,{orbitControls:{...Zi.defaultData,...it(n.scene.publish.orbitControls)}})}function zT(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...it(n.scene.publish.settings.video)}})}function GT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Vg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(zg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function jT(n){n.scene.publish.withBackground=!0}function FT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function UT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function kT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function HT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=it(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=it(e).booleanExclude!==!0)}})}function WT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function qT(n){function r(t){Object.setPrototypeOf(t,Qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,Qe.prototype)}function e(t){Object.setPrototypeOf(t,Qe.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=it(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=it(l).layers;e(c),l.layers=c}})})}function $g(n){n.layers===void 0&&Object.assign(n,Lt.defaultTwoLayerData("lambert"))}function rp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...it(r),colors:e,steps:t};Object.assign(r,o)}})}function $T(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Yg(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&rp(t)}):"material"in e&&typeof e.material!="string"&&rp(e.material)}),Object.values(n.shared.materials).forEach(r=>rp(r))}function YT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function XT(n){n.shared.audios=Ht({},xe.prototype)}function KT(n){n.shared.videos=Ht({},xe.prototype)}function QT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.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(r,{[e]:o})}})}function ZT(n){Object.entries(it(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(it(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function JT(n){n.scene.publish.settings.web.preload=!1}function Xg(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Kg(n){n.layers&&n.layers.forEach(r=>{Rg(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function eA(n){n.shared.fonts=Ht({},xe.prototype)}function tA(n){return n.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 rA(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Lt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=tA(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...wt.defaultData,...jn.defaultData,flatShading:!1,wireframe:!1,geometry:{...an.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:i,states:it(o.states),events:it(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=it(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function oA(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[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 ve,move:new ve,jump:new ve}});else{let i=new ve;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Bc.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,Mr(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},h={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ve({fi:0,id:Bc.generateUUID(),data:c},{fi:1,id:Bc.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function nA(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Mr(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={...Mr(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:Bc.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Qg(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=xt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Zg(n){To(n,Qg),Ao(n,Qg)}function iA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function aA(n){n.scene.objects.traverse((r,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 sA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Lt.defaultTwoLayerData("phong"))})}function lA(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,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 cA(n){n.scene.objects.traverse((r,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 uA(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function dA(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function pA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function fA(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function hA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=_c.defaultDataThirdPerson.navmesh)})})}function mA(n){n.scene.styles||(n.scene.styles=Po.defaultData())}function Jg(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function yA(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Ao(n,Jg),To(n,Jg)}function gA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function xA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function ex(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function tx(n,r){if(r<1&&(Ao(n,qg),To(n,qg),n.schema=1),r<2&&(VT(n),n.schema=2),r<3&&(GT(n),n.schema=3),r<4&&(jT(n),n.schema=4),r<5&&(FT(n),n.schema=5),r<6&&(UT(n),n.schema=6),r<7&&(kT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Yg(n),n.schema=9),r<10&&($T(n),n.schema=10),r<11&&(YT(n),n.schema=11),r<12&&(Yg(n),n.schema=12),r<13&&(XT(n),n.schema=13),r<14&&(QT(n),n.schema=14),r<15&&(ZT(n),n.schema=15),r<16&&(JT(n),n.schema=16),r<17&&(Ao(n,Xg),To(n,Xg),n.schema=17),r<18&&(Ao(n,$g),To(n,$g),n.schema=18),r<19&&(zT(n),n.schema=19),r<20&&(eA(n),rA(n),n.schema=20),r<21&&(oA(n),nA(n),n.schema=21),r<22&&(Zg(n),n.schema=22),r<23&&(iA(n),n.schema=23),r<24&&(aA(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(KT(n),r<25&&(n.schema=25)),r<26&&(HT(n),n.schema=26),r<27&&(WT(n),n.schema=27),r<28&&(Zg(n),n.schema=28),r<29&&(qT(n),n.schema=29),r<30&&(sA(n),n.schema=30),r<31&&(lA(n),n.schema=31),r<33&&(cA(n),n.schema=33),r<34&&(uA(n),n.schema=34),r<35&&(dA(n),n.schema=35),r<36&&(pA(n),n.schema=36),r<37&&(fA(n),n.schema=37),r<38&&(Ao(n,Kg),To(n,Kg),n.schema=38),r<39&&(hA(n),n.schema=39),r<40&&(mA(n),n.schema=40),r<41&&(yA(n),n.schema=41),r<42&&(gA(n),n.schema=42),r<43&&(xA(n),n.schema=43),r<99){Ao(n,ex),To(n,ex),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=tn);let e=it(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=rn,t.insertBefore(null,null,[{id:rn,data:{...wo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ts.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:it(n.scene.ownerCamera)??wo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Oo.TRASH_CAN_ID&&t.move(rn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,nn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function rx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function bA(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function vA(n){Array.isArray(it(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var ta=180/Math.PI;function ox(n){n.rotation=n.rotation.slice(0,3).map(r=>r*ta)}function nx(n){ox(n),n.type==="Page"&&ox(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*ta))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*ta),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*ta),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=ta,r.extrusion.twist*=ta),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(it(n.events))&&n.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 SA(n){n.shared.variables=Ht({},xe.prototype)}function wA(n){let r=it(n.shared.variables);n.shared.variables=Ht(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var Jr=113;function ix(n,r){r(n.data);for(let e of n.children)ix(e,r)}function PA(n){let r=n.schema??104;r!==Jr&&r<105&&(ix(n.asset,nx),n.schema=105)}function OA(n){n.shared.particles=Ht({},xe.prototype),n.shared.lib&&(n.shared.lib.particles=Co.defaultData().particles)}function CA(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function TA(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function AA(n){n.scene.objects.traverse((r,e)=>{Array.isArray(it(e.events))!==!1&&e.events?.forEach(t=>{let o=t.runMode;t.type==="MouseDown"||t.type==="MouseUp"||t.type==="KeyDown"||t.type==="KeyUp"||t.type==="Collision"||t.type==="Trigger"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode=o??"Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode=o==="Toggle"?"Toggle":"Normal")}):t.type==="MouseHover"||t.type==="MousePress"||t.type==="KeyPress"?t.actions?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}):t.type==="GameControl"?(delete t.actions,Object.keys(t.gameActions).forEach(a=>{t.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):t.type==="DragDrop"?(delete t.actions,t.dragDropActions?.drag?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}),t.dragDropActions?.drop?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")})):t.type==="Resize"?(delete t.actions,t.breakpoints?.forEach(i=>{i.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):t.type==="Start"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Once"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="VariableChange"||t.type==="Scroll"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="Conditional"&&(delete t.actions,t.inActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}),t.outActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}))})})}function Lc(n){let r=n.schema??0;if(r!==Jr){console.warn("updating from ",r,"to ",Jr),tx(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Ao(n,rx),To(n,rx),n.schema=101),r<102&&(bA(n),n.schema=102),r<104&&(n.shared.catelogs=new xe,n.shared.lib=Co.defaultData(),n.schema=104),r<105&&(SA(n),n.scene.objects.traverse((e,t)=>{nx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))PA(e);r<106&&(wA(n),n.schema=106),r<107&&(n.shared.lib.variables=Co.defaultData().variables,n.schema=107),r<109&&(OA(n),n.schema=109),r<110&&(CA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{vA(t)}),n.schema=111),r<112&&(TA(n),n.schema=112),r<113&&(AA(n),n.schema=113)}}var Ji;(l=>{l.defaultData={schema:Jr,scene:Oo.defaultData,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(){let c=Oo.emptyDataWithPage();return{schema:Jr,scene:c,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages()}}},l.emptyData=function(){return{schema:Jr,scene:Oo.emptyDataWithPage(),frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:Jr,scene:Oo.emptyData(),frames:new xe,shared:xr.emptyData()}},l.collabHelper={...vs,updateSchema(c){return(c.schema??0)<Jr?Xo(c,Lc):(c.schema??0)-Jr}};function i(c){let u=l.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}l.updateSchemaDirectly=i;function a(c){return{...c,shared:{...c.shared,lib:Co.defaultData()}}}l.withoutLib=a;function s(c,u){let p=c.scene.objects.get(u);if(p&&p.data.type==="Component")return p;{let d=c.shared.lib.components[u];if(d)return d.asset}}l.getComponentData=s})(Ji||(Ji={}));var Rc;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Rc||(Rc={}));var ax;(r=>{function n(e){return!0}r.is=n})(ax||(ax={}));var Vc;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return Tl({position:Wi.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Wi.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&Wi.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Vc||(Vc={}));var op;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(op||(op={}));var sx;(r=>r.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(sx||(sx={}));var zc;(r=>r.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(ht,1),enabled:!0},stroke:{color:Ie.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:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(zc||(zc={}));var kn;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(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 t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Vc.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;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}i.toOps=o})(kn||(kn={}));var As;(r=>r.defaultData={...Vc.defaultData,...op.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(As||(As={}));var ra;(r=>r.defaultData={...As.defaultData,...zc.defaultData})(ra||(ra={}));var Gc;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Gc||(Gc={}));var np;(r=>r.defaultData={...ra.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(np||(np={}));var oa;(r=>r.defaultData={...ra.defaultData,...Gc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(oa||(oa={}));var ip;(r=>r.defaultData={...ra.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"})(ip||(ip={}));var ap;(r=>r.defaultData={...ra.defaultData,type:"path2d",path:"",name:"Path"})(ap||(ap={}));var lx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(lx||(lx={}));var Ms;(r=>r.defaultData={...As.defaultData,name:"Group",type:"group2d"})(Ms||(Ms={}));var sp;(r=>r.defaultData=()=>({...As.defaultData,...Gc.defaultData,...zc.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(sp||(sp={}));var Mo;(i=>{function n(a){switch(a){case"rectangle2d":return{...oa.defaultData};case"ellipse2d":return{...np.defaultData};case"text2d":return{...ip.defaultData};case"vector2d":return{...oa.defaultData};case"path2d":return{...ap.defaultData};case"frame2d":return{...sp.defaultData()};case"group2d":return{...Ms.defaultData}}}i.defaultData=n;function r(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]}i.getPivot=r;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}i.isResizeable=e;function t(a){return a.type==="frame2d"&&a.autoLayout!==void 0}i.isAutoLayoutable=t;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}i.hasCorners=o})(Mo||(Mo={}));var jc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ke},e.emptyData=function(){return{type:"scene2d",objects:new Ke}}))(jc||(jc={}));var Ja=hi(ux());import{Object3D as T3,Vector3 as pr,Euler as Uf,MathUtils as Wb,Matrix4 as ai}from"three";var MA=.5*(Math.sqrt(3)-1),Is=(3-Math.sqrt(3))/6,IA=1/3,eo=1/6,eH=(Math.sqrt(5)-1)/4,tH=(5-Math.sqrt(5))/20,Ns=n=>Math.floor(n)|0,dx=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]),cp=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 Fc(n=Math.random){let r=fx(n),e=new Float64Array(r).map(o=>dx[o%12*2]),t=new Float64Array(r).map(o=>dx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*MA,p=Ns(i+u),d=Ns(a+u),h=(p+d)*Is,f=p-h,m=d-h,y=i-f,g=a-m,v,P;y>g?(v=1,P=0):(v=0,P=1);let O=y-v+Is,S=g-P+Is,T=y-1+2*Is,A=g-1+2*Is,x=p&255,E=d&255,N=.5-y*y-g*g;if(N>=0){let _=x+r[E],B=e[_],V=t[_];N*=N,s=N*N*(B*y+V*g)}let I=.5-O*O-S*S;if(I>=0){let _=x+v+r[E+P],B=e[_],V=t[_];I*=I,l=I*I*(B*O+V*S)}let D=.5-T*T-A*A;if(D>=0){let _=x+1+r[E+1],B=e[_],V=t[_];D*=D,c=D*D*(B*T+V*A)}return 70*(s+l+c)}}function px(n=Math.random){let r=fx(n),e=new Float64Array(r).map(i=>cp[i%12*3]),t=new Float64Array(r).map(i=>cp[i%12*3+1]),o=new Float64Array(r).map(i=>cp[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*IA,f=Ns(a+h),m=Ns(s+h),y=Ns(l+h),g=(f+m+y)*eo,v=f-g,P=m-g,O=y-g,S=a-v,T=s-P,A=l-O,x,E,N,I,D,_;S>=T?T>=A?(x=1,E=0,N=0,I=1,D=1,_=0):S>=A?(x=1,E=0,N=0,I=1,D=0,_=1):(x=0,E=0,N=1,I=1,D=0,_=1):T<A?(x=0,E=0,N=1,I=0,D=1,_=1):S<A?(x=0,E=1,N=0,I=0,D=1,_=1):(x=0,E=1,N=0,I=1,D=1,_=0);let B=S-x+eo,V=T-E+eo,U=A-N+eo,R=S-I+2*eo,W=T-D+2*eo,j=A-_+2*eo,F=S-1+3*eo,H=T-1+3*eo,q=A-1+3*eo,re=f&255,ee=m&255,X=y&255,te=.6-S*S-T*T-A*A;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*S+t[$]*T+o[$]*A)}let K=.6-B*B-V*V-U*U;if(K<0)u=0;else{let $=re+x+r[ee+E+r[X+N]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*U)}let Z=.6-R*R-W*W-j*j;if(Z<0)p=0;else{let $=re+I+r[ee+D+r[X+_]];Z*=Z,p=Z*Z*(e[$]*R+t[$]*W+o[$]*j)}let Q=.6-F*F-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*F+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function fx(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as NA}from"three";var Dr=new NA,Uc=class{constructor(r){this.weightAttribute=null;let e=r.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 r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Dr.a.fromBufferAttribute(r,o),Dr.b.fromBufferAttribute(r,o+1),Dr.c.fromBufferAttribute(r,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,r*3),Dr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(t),this}};import{Object3D as LA}from"three";var yx=hi(mx());import{Object3D as DA,Matrix4 as to}from"three";var EA=new to,_A=new to,BA=new to,na;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(na||(na={}));var ia=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new to;this.copyPreviousMatrix=!0;this.hiddenMatrix=new to;this.matrixWorldRigid=new to;this.shearScale=new to;this.shearScaleInv=new to}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof DA&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(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,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.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(t,o=0){for(let i of this.children)na.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)na.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,yx.SVD)(o),l=EA.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=_A.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=BA.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(t,o){this.updateWorldMatrix(!0,!1);let i=new to().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof to?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var up=class extends ia(LA){},RA=n=>n.type==="Mesh",Io=class extends up{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Io(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=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 RA(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}};import{Box3 as $I,BufferGeometry as YI,MeshBasicMaterial as XI}from"three";import{Matrix4 as WI,Mesh as qI}from"three";import{Matrix4 as Wc,Vector3 as bx,Euler as UA,MathUtils as Es}from"three";import{Box3 as VA,Line3 as zA,Matrix4 as dp,Vector3 as cr}from"three";var Hn=new cr,Wn=new cr,aa=new dp,xx=[new cr(-1,1,1),new cr(-1,-1,1),new cr(1,-1,1),new cr(1,1,1),new cr(-1,1,-1),new cr(-1,-1,-1),new cr(1,-1,-1),new cr(1,1,-1)],GA=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],jA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],gx=(n,r,e)=>{n.updateEntityBoxSize(Hn,Wn),aa.copy(r).multiply(n.matrixWorld),Wn.x===0&&Wn.y===0&&Wn.z===0?e.push(new cr(Hn.x,Hn.y,Hn.z).applyMatrix4(aa)):xx.forEach(t=>{e.push(t.clone().multiply(Wn).add(Hn).applyMatrix4(aa))})},Ds=class extends VA{constructor(){super(...arguments);this.matrix=new dp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new dp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new cr);return}gx(a,t,i)}}):gx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(aa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Wn).multiplyScalar(.5),this.getCenter(Hn),aa.copy(this.matrix).setPosition(Hn),this.vertices=xx.map(e=>e.clone().multiply(Wn).applyMatrix4(aa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=GA.map(([e,t])=>new zA(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new cr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=jA.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as FA,CubicBezierCurve3 as pp,Vector3 as _r}from"three";var hp=class extends FA{constructor(){super()}getPoints(r=12){let e=[],t,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(r*u/a),d=c.getPoints(p);for(let h=0;h<d.length;h++){let f=d[h];t&&t.equals(f)||(e.push(f),t=f)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var mp=.001;function yp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=mp}function fp(n,r){let e=new _r(...n.position),t=new _r(...n.controlNext.position),o=new _r(...r.controlPrevious.position),i=new _r(...r.position);return yp(e,t,i)&&yp(e,o,i)}function Hc(n){let r=n.points.map(u=>new _r(...u.data.position)),e=[n.points[0]],t=new _r(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)yp(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new _r(...p.position),h=new _r(...p.controlPrevious.position),f=new _r(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:h,controlNext:f};if(p.roundness===0||!n.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,g=o&&u==a-1?0:u+1,v=e[y].data,P=e[g].data,O=new _r(...v.position),S=new _r(...P.position),T=O.clone().sub(d).normalize(),A=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:A});let x=fp(v,p),E=fp(p,P);if(!x||!E)s[u]={...m,removedLength:0};else{let N=T.clone().add(A).normalize(),I=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d];if(h.removedLength!==0||f.removedLength!==0){let m=h.position.distanceTo(f.position);h.removedLength=Math.min(h.removedLength,m/2),f.removedLength=Math.min(f.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d],m=null;if(!fp(e[p].data,e[d].data))h.position.distanceTo(f.position)>mp&&(m=new pp(h.position,h.controlNext,f.controlPrevious,f.position));else{let y=h.position.clone(),g=f.position.clone();(h.removedLength!==0||f.removedLength!==0)&&(h.nextDir&&y.add(h.nextDir.clone().setLength(h.removedLength)),f.prevDir&&g.add(f.prevDir.clone().setLength(f.removedLength))),y.distanceTo(g)>mp&&(m=new pp(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}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,h=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),f=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),g=h.clone().lerp(f,.5),v=h.distanceTo(f)/2,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),O=y.clone().multiplyScalar(-m).add(P),S=d.distanceTo(O)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),A=T.clone().lerp(O,2),x=h.clone().lerp(T,4/3),E=f.clone().lerp(A,4/3);l[2*u]=new pp(h,x,E,f)}let c=new hp;return l.forEach(u=>{u&&c.add(u)}),c}var Re;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Re||(Re={}));var sa=n=>Re.is(n),kA={type:"completeState",isfromEntity:!0},HA=["x","y","z"],gp=new bx,WA=new bx().set(0,1,0),la=n=>class extends ia(n){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.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Ds;this._recursiveBBox=new Ds;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Re.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Re.is(this.children[t]))return t+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 t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Re.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Un.toOps(this.data,a.data).forEach(l=>{let c=Fi.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=Un.patch(this.data,a),Un.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,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(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{sa(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Re.is(o[i]))return o[i];if(Re.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Re.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)sa(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Re.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)sa(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>sa(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Es.RAD2DEG,this.rotation.y*Es.RAD2DEG,this.rotation.z*Es.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ri(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,HA[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(gp.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Es.DEG2RAD),this.rotation.setFromVector3(gp),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??en.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Re.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Re.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ri(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Le(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let h=ot.zoom(d,t.path.slice(2));if(h)for(let f in t.props)t.props[f]===void 0&&f in h&&(p[f]=h[f])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...h}=u;u=h}if(t.props.material!==void 0&&"material"in u){let{material:d,...h}=u;u=h}let p=ot.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Le(t.path,["overrides"])){let u=[],p=[...t.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(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let h=i.scene.findInstance([this.uuid,...u]);h&&(h.overrideData=t.props[d],h.updateState(qr.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=ot.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let f=t.props;if(h)for(let[m,y]of Object.entries(t.props))y===void 0&&(f===t.props&&(f={...t.props}),f[m]=h[m]);t={...t,props:f}}d.overrideData=Qi.resolve(o.overrides,u),d.updateByOp(t,nt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of Zr.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Zr.rootOverrideProps)if(Le(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=qr.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=qr.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=nt.applySimple(p.data,d),p.updateByOp(d,h,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Ir.is(t.props.type)&&Er.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Re.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Le(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(t.path,["cloner"])!==null){let a=nt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=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=t.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=Hc(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.curves.length?u.getPointAt(p):null;if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new Wc;l.updateMatrixWorld();let f=new Wc().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new Wc().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new Wc().lookAt(d,g,WA),P=gp.setFromEuler(new UA().setFromRotationMatrix(v)).multiplyScalar(Es.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(kA)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Er.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as YA,ConeGeometry as XA,Float32BufferAttribute as KA,MathUtils as QA}from"three";import{BufferGeometry as Sx,CylinderGeometry as qA,Float32BufferAttribute as $c,MathUtils as $A,Vector2 as Br,Vector3 as qc}from"three";var wx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=$A.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:h}=n.parameters,f;return l===0?(f=new Sx,f.setAttribute("position",new $c([],3))):p||h?f=new _s(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new qA(c,u,t,o,i,a,s,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function sn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function vx(n){return new Br(n.y,-n.x)}var _s=class extends Sx{constructor(r,e,t,o,i,a,s,l,c,u,p,d,h=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||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 f=[],m=[],y=[],g=[],v=0,P=t/2,O=new qc,S=new qc;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new Br(r,P),A=new Br(e,-P),x=null,E=null,N=null,I=null,D=T.clone().sub(A),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let U=T.clone();U.x-=_;let R=Math.PI-D.angle(),W=D.angle(),j=Math.tan(W/2),F=Math.tan(R/2),H=j+F,q=d?H:F,re=d?H:j;if(c=Math.min(c,(r-B)/q,D.length()/H),u=Math.min(u,(e-V)/re,D.length()/H),c>0){let Q=c/j;x=T.clone().sub(new Br(Q,c)),d&&(N=x.clone(),N.x-=_-H*c),T.sub(D.clone().setLength(Q))}if(u>0){let Q=u/F;E=A.clone().sub(new Br(Q,-u)),A.add(D.clone().setLength(Q)),d&&(I=E.clone(),I.x-=_-H*u,U.sub(D.clone().setLength(Q)))}D=T.clone().sub(A);let ee=D.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new Br(Math.sin(le),Math.cos(le));I&&E?(te($,ue,ne,R,u,I,-1,!0),te($,ue,ne,W,u,E,-1,!1)):E?(K($,ne,E.x,0,-1),te($,ue,ne,W,u,E,-1,!1)):a||K($,ne,e,V,-1);let ce=vx(D).normalize();if(sn(ce,ne,O),!ee)for(let ae=0;ae<=i;ae++){let he=ae/i,pe=D.clone().multiplyScalar(he).add(A);sn(pe,ne,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),g.push(ue,.5+S.y/t),$.push(v++)}if(N&&x?(te($,ue,ne,R,c,x,1,!1),te($,ue,ne,W,c,N,1,!0)):x?(te($,ue,ne,R,c,x,1,!1),K($,ne,x.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=vx(D).multiplyScalar(-1).normalize();sn(ae,ne,O);for(let he=0;he<=i;he++){let pe=he/i,fe=D.clone().multiplyScalar(-pe).add(U);sn(fe,ne,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),g.push(ue,.5+S.y/t),$.push(v++)}}d&&!a&&$.push($[0]),X.push($)}for(let Q=0;Q<X.length-1;Q++)for(let $=0;$<X[0].length-1;$++){if(a&&d&&$==i)continue;let ue=X[Q][$],le=X[Q+1][$],ne=X[Q+1][$+1],ce=X[Q][$+1],ae=m[ne*3+0],he=m[ne*3+2];f.push(ue,le,ce),(ae!=0||he!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new $c(m,3)),this.setAttribute("normal",new $c(y,3)),this.setAttribute("uv",new $c(g,2));function te(Q,$,ue,le,ne,ce,ae,he){for(let pe=0;pe<p+1;pe++){let fe=pe/p,ge=ae<0?fe:1-fe;he&&(ge-=1),ge*=le;let me=new Br(Math.sin(ge),Math.cos(ge)*ae),C=me.clone().multiplyScalar(ne).add(ce);sn(C,ue,S),m.push(S.x,S.y,S.z),sn(me,ue,O),y.push(O.x,O.y,O.z),g.push($,.5+S.y/t),Q.push(v++)}}function K(Q,$,ue,le,ne){let ce=new qc,ae=new Br,he=[ue,le];ne<0&&he.reverse();for(let pe of he)ae.set(pe,P*ne),sn(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),Q.push(v++)}function Z(Q,$,ue){let le=new Br(Math.sin(ue),Math.cos(ue)),ne=new Br(-Math.cos(ue),Math.sin(ue)),ce=new qc,ae=Q<0?(fe,ge,me)=>f.push(fe,ge,me):(fe,ge,me)=>f.push(fe,me,ge),he=new Br((r+e+B+V)/4,0);sn(he,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=v++;for(let fe of $){let ge=m.slice(fe*3,fe*3+3);m.push(...ge),y.push(ne.x,0,ne.y);let me=g.slice(fe*2,fe*2+2);g.push(...me),v++}for(let fe=pe+1;fe<v-1;fe++)ae(pe,fe,fe+1);ae(pe,v-1,pe+1)}}};var Px=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=QA.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(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new YA,d.setAttribute("position",new KA([],3))):c>0||u>0||l<360?d=new _s(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new XA(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as ZA,BufferGeometry as JA,Float32BufferAttribute as xp,Vector3 as Bs}from"three";var Ox=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s===0?c=new ZA(r,e,t,o,i,a):c=new vp(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},bp=Math.PI/2,vp=class extends JA{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let c=[],u=[],p=[],d=[],h=0;f("z","y","x",-1,-1,t,e,r,a,i),f("z","y","x",1,-1,t,e,-r,a,i),f("x","z","y",1,1,r,t,e,o,a),f("x","z","y",1,-1,r,t,-e,o,a),f("x","y","z",1,-1,r,e,t,o,i),f("x","y","z",-1,-1,r,e,-t,o,i),s>0&&(m("z","y","x",-1,-1,1,t,e,r,a),m("z","y","x",1,-1,-1,t,e,r,a),m("z","y","x",-1,1,-1,t,e,r,a),m("z","y","x",1,1,1,t,e,r,a),m("x","y","z",-1,-1,-1,r,e,t,o),m("x","y","z",1,-1,1,r,e,t,o),m("x","y","z",-1,1,1,r,e,t,o),m("x","y","z",1,1,-1,r,e,t,o),m("y","x","z",-1,-1,1,e,r,t,i),m("y","x","z",1,-1,-1,e,r,t,i),m("y","x","z",1,1,1,e,r,t,i),m("y","x","z",-1,1,-1,e,r,t,i),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 xp(u,3)),this.setAttribute("normal",new xp(p,3)),this.setAttribute("uv",new xp(d,2));function f(g,v,P,O,S,T,A,x,E,N){let I=(T-2*s)/E,D=(A-2*s)/N,_=T/2-s,B=A/2-s,V=x/2,U=E+1,R=N+1,W=0,j=new Bs;for(let F=0;F<R;F++){let H=F*D-B;for(let q=0;q<U;q++){let re=q*I-_;j[g]=re*O,j[v]=H*S,j[P]=V,u.push(j.x,j.y,j.z),j[g]=0,j[v]=0,j[P]=x>0?1:-1,p.push(j.x,j.y,j.z),d.push(q/E),d.push(1-F/N),W+=1}}for(let F=0;F<N;F++)for(let H=0;H<E;H++){let q=h+H+U*F,re=h+H+U*(F+1),ee=h+(H+1)+U*(F+1),X=h+(H+1)+U*F;c.push(q,re,X),c.push(re,ee,X)}h+=W}function m(g,v,P,O,S,T,A,x,E,N){let I=(A-2*s)/N,D=A/2-s,_=x/2-s,B=E/2,V=N+1,U=0,R=new Bs,W=new Bs;for(let j=0;j<l+1;j++){let F=j/l*bp,H=Math.sin(F)*s,q=(1-Math.cos(F))*s,re=Math.sin(F),ee=Math.cos(F);R[v]=(_+H)*S,R[P]=(B-q)*T,W[g]=0,W[v]=re*Math.sign(R[v]),W[P]=ee*Math.sign(R[P]);for(let X=0;X<V;X++){let te=X*I-D;R[g]=te*O,u.push(R.x,R.y,R.z),p.push(W.x,W.y,W.z),d.push(X/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=h+F+V*j,q=h+F+V*(j+1),re=h+(F+1)+V*(j+1),ee=h+(F+1)+V*j;c.push(H,q,ee),c.push(q,re,ee)}h+=U}function y(g,v,P){let O=new Bs,S=new Bs(r/2,e/2,t/2);S.subScalar(s);let T=[],A=g*v*P>0?(E,N,I)=>c.push(E,N,I):(E,N,I)=>c.push(E,I,N);for(let E=0;E<=l;E++){let N=[],I=bp*(1-E/l),D=Math.cos(I),_=Math.sin(I),B=0;for(let V=0;V<=E;V++){let U=Math.cos(B),R=Math.sin(B);O.x=D*U,O.y=_,O.z=D*R;let W=S.clone().addScaledVector(O,s);u.push(g*W.x,v*W.y,P*W.z),p.push(g*O.x,v*O.y,P*O.z),d.push(0,0),N.push(h++),B+=bp/E}T.push(N)}let x=T.length-1;for(let E=0;E<x;E++){let N=T[E],I=T[E+1],D=N.length-1;A(N[0],I[1],I[0]);for(let _=1;_<=D;_++)A(N[_-1],N[_],I[_]),A(N[_],I[_+1],I[_])}}}};import{BufferGeometry as eM,Float32BufferAttribute as Sp,Triangle as tM,Vector3 as No,Vector2 as wp}from"three";var ln=class extends eM{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Sp(s,3)),this.setAttribute("normal",new Sp(c,3)),this.setAttribute("uv",new Sp(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let h={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new No,m=f.clone(),y=new tM,g=i*o,v=o-g,P=a+1,O=new No,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),A=T(r.length/3,(j,F)=>new No().fromArray(r,F*3).setLength(o)),x=[],E=1e6;for(let j=0;j<A.length;j++){let F=A[j],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(j,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=F.distanceToSquared(A[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=x[q]?.includes(j)==!0;ee<=X&&K.push(q+ +ue*E),Z=H.findIndex(le=>le[0]==re)}x.push(K)}let N=[];{let j=0,F=0,H,q,re=h==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[j,F]=[H+X+ee+2,q+X+ee+3],N.push(H,q,...re?[F,H]:[j,q],F,j),[H,q]=[j,F];N.push(H,q,H+a+2)}}let I=f.clone(),D=f.clone(),_=f.clone(),B=f.clone(),V=f.clone(),U=[],R=T(A.length,()=>T(h,()=>f.clone()));for(let j=0;j<A.length;j++){f.copy(A[j]).normalize(),I.copy(f).multiplyScalar(v);let F=x[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%h];y.setFromPointsAndIndices(A,j,Z%E,Q%E),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,R[j][K])}let H=[],q=[],re=[],ee=new No;a==0&&[...R[j]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/h);for(let K=0;K<h;K++){let Z=[],Q=(K-1+h)%h,$=R[j][Q],ue=R[j][K];f.copy($).sub(I),m.copy(ue).sub(I);let le=I.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?D.copy(ee):D.copy(I).setLength(v+ce),q.push(ce);let ae=[D,$,ue];for(let he=0;he<2;he++){let pe=ae[he],fe=ae[he+1];B.subVectors(pe,I),V.subVectors(fe,I),_.crossVectors(B,V).normalize();for(let ge=0;ge<P;ge++){let me=[le,ne][he]*ge/P;f.copy(B).applyAxisAngle(_,me).add(I),H.push(f.clone()),he&&(S(f,I),Z.push([ge==0?pe:f.clone(),O.clone()]))}he&&(S(fe,I),Z.push([fe,O.clone()]))}re.push(Z)}U.push(re);let X=2*P,te=2;for(let K=0;K<h;K++){let Z=X*K,Q=X*((K+1)%h),$=[H[Z]];for(let le=1;le<P;le++){B=H[Z+le],V=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,V,ne/(ce+1)),f.sub(I).setLength(q[K]).add(I),$.push(f.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=N.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let W=[];for(let j=0;j<x.length;j++)for(let F=0;F<h;F++){let H=x[j][F];if(H<E){let q=x[H].findIndex(X=>X%E==j),re=U[j][F],ee=U[H][q];for(let X=0;X<P;X++){let te=re[X],K=ee[P-X],Z=re[X+1],Q=ee[P-(X+1)];[te,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}W.push(re[0][0],ee[P][0],re[P][0],ee[0][0])}}for(;W.length;){let j,F,H,q;[j,F]=W.splice(0,2);let re=[j];for(;j!=F;)re.push(F),H=W.indexOf(F),q=H%2,F=W.splice(H-q,2)[1-q];O.subVectors(re[0],re[1]).cross(f.subVectors(re[0],re[2])).normalize();let ee=O.dot(re[0])<0;ee&&O.negate();for(let X=1;X<=re.length-2;X++)[re[X+ +ee],re[X+1-+ee],re[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new No;for(let A=0;A<s.length;A+=3){d.x=s[A+0],d.y=s[A+1],d.z=s[A+2];let x=S(d)/2/Math.PI+.5,E=T(d)/Math.PI+.5;l.push(x,1-E)}let h=new No,f=new No,m=new No,y=new No,g=new wp,v=new wp,P=new wp,O=(A,x,E,N)=>{N<0&&A.x===1&&(l[x]=A.x-1),E.x===0&&E.z===0&&(l[x]=N/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){h.set(s[A+0],s[A+1],s[A+2]),f.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),P.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let E=S(y);O(g,x+0,h,E),O(v,x+2,f,E),O(P,x+4,m,E)}for(let A=0;A<l.length;A+=6){let x=l[A+0],E=l[A+2],N=l[A+4],I=Math.max(x,E,N),D=Math.min(x,E,N);I>.9&&D<.1&&(x<.2&&(l[A+0]+=1),E<.2&&(l[A+2]+=1),N<.2&&(l[A+4]+=1))}function S(A){return Math.atan2(A.z,-A.x)}function T(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(r){return new ln(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as rM}from"three";var Cx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ls(r*.5,i,a):new rM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Ls=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=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,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],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,r,e,t),this.type=l}static fromJSON(r){return new Ls(r.radius,r.corner,r.cornerSides)}};import{Plane as fM,Shape as jx,Vector2 as Do,Vector3 as hM,MathUtils as Ip,LineCurve as Np,QuadraticBezierCurve as Fx,CubicBezierCurve as Qc}from"three";import{CubicBezierCurve as Yc,EllipseCurve as oM,LineCurve as Xc,LineCurve3 as nM,MathUtils as iM,QuadraticBezierCurve as Op,SplineCurve as aM,Vector2 as Ut,Vector3 as Mx}from"three";var Rs=1e-12,ca=class{constructor(r){this.position=new Ut;this.startPosition=new Ut;this.uuid=iM.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new ca(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ua=class extends ca{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ua(this.parent).copy(this)}},Lr=class extends ca{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ua(this),new ua(this))}static create(e,t){let o=new Lr(e,new Ut(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?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 Lr(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),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ut,t=new Ut){let[o,i]=this.computeTangents();return o&&i&&(Tx(o,e),Tx(i,t)),[e,t]}computeTangent(e=new Ut){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ut){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Tx(n,r=new Ut){let e=n.length();return r.set(-n.y/e,n.x/e)}var Cp=n=>n,da=new Ut,Kc=new Ut,sM=new Ut,lM=new Ut,cM=new Ut,uM=new Ut,Ix=new Mx,Nx=new Mx;function Dx(n){let r=new Ut;r.addVectors(n.v0,da.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ut;return e.addVectors(n.v2,Kc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Yc(n.v0,r,e,n.v2)}function Vs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function dM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function pM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Tp(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Ex(n,r,e){return Ax(n,r)&&Ax(r,e)&&Pp(n.position,r.position,e.position)}function Pp(n,r,e){return da.copy(r).sub(n).cross(Kc.copy(e).sub(n))===0}function _x(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function Bx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Lx(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return Tp(r,n,e)>Math.PI&&(u*=-1),Vs(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function Ap(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Ax(n,r){return Pp(n.position,n.controls[1].position,r.position)&&Pp(n.position,r.controls[0].position,r.position)}function Rx(n,r,e,t,o=.5){let i=da.subVectors(r,n).multiplyScalar(o).add(n),a=Kc.subVectors(e,r).multiplyScalar(o).add(r),s=sM.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=lM.subVectors(a,i).multiplyScalar(o).add(i),u=cM.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=uM.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function Vx(n,r,e=12,t=!0){let o=Nx.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=Cp(r[l]),u=da,p=cn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Yc||c instanceof Op||c instanceof Xc){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&pM(i,o))continue;i===void 0&&(i=Ix),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function zx(n,r,e,t=12,o=!0){let i=Nx.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=Cp(r[l]),p=da,d=cn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Yc||u instanceof Op||u instanceof Xc){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=Ix:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Mp(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=cn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=cn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=cn(n[0].roundedCurveCorner,r)*.5),t}function cn(n,r=12){return n&&n instanceof oM?r*2:n&&(n instanceof Xc||n instanceof nM)?1:n&&n instanceof aM?r*n.points.length:r}function Gx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Cp(r[a]),l=cn(s,e),c=da;for(let u=0;u<=l;u++)if(s instanceof Yc||s instanceof Op||s instanceof Xc){if(s.getPoint(u/l,c),o!==void 0&&dM(o,c,Rs))continue;o===void 0&&(o=Kc),o.copy(c),n.push(c.x,c.y),i++}}return Vs(n[0],n[n.length-2],Rs)&&Vs(n[1],n[n.length-1],Rs)&&(n.pop(),n.pop()),t&&i>1&&!(Vs(n[i-1],n[1],Rs)&&Vs(n[i-2],n[0],Rs))&&(n.push(n[0],n[1]),i++),n}var Dp=new Do,mM=new Do,yM=new Do,gM=new Do,xM=new Do,bM=new Do,Fe=class extends jx{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new fM(new hM(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=Ip.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Fe;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Lr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Fe.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}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 t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;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)i+=c;else return u+i}}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 t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Dp.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ip.generateUUID()){let i;e instanceof Do?i=e:i=new Do(e,t);let a=new Lr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Vx(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Mp(this.points,e,!1),this.roundedCurveDivisions=Mp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return zx(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Gx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=cn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Ap(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Dp.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){Ap(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.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,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;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&&Ex(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 h=a.roundedCurveBefore,f=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),g=Math.min(c,m*.499),v=Math.min(c,y*.499),P=Math.min(g,v),O=1-P/m,S=P/y,T=p.getPointAt(O,Dp),A=d.getPointAt(S,mM);this._subSplitCurve(p,h,O,T,void 0),this._subSplitCurve(d,f,S,void 0,A);let x;if(this.useCubicForRoundedCorners){let E=Tp(T,a.position,A)/2,N=Math.tan(E)*T.distanceTo(a.position),[I,D]=_x(T,A,N,yM,gM),_=Bx(I,D,a.position),[B,V]=Lx(_,T,A,N,xM,bM);x=new Qc(T.clone(),B.clone(),V.clone(),A.clone())}else x=new Fx(T.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Np)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=Rx(s.v0,s.v1,s.v2,s.v3,c);return i!==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 t}clone(){let e=new Fe(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],h=new Lr(Ip.generateUUID(),new Do(a,s));h.controls[0].position.set(l,c),h.controls[1].position.set(u,p),h.roundness=d,this.points.push(h)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Fe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Qc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Fx&&(a[l]=Dx(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],h=l>0?a[l-1]:null,f;d instanceof Qc?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Np&&(f=this.createPoint(d.v1)),f!==void 0&&(h!==null&&o(f,h),s.push(f))}let u=a[a.length-1],p=!1;return u instanceof Qc?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Np&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof jx&&(this.shapeHoles=e.holes.map(a=>{let s=new Fe;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var _p=Math.PI*2;function Ep({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function vM(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function Ux(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function SM(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(a,2),h=Math.pow(s,2),f=u*p-u*h-p*d;f<0&&(f=0),f/=u*h+p*d,f=Math.sqrt(f)*(l===c?-1:1);let m=f*o/i*s,y=f*-i/o*a,g=m+(n+e)/2,v=y+(r+t)/2,P=(a-m)/o,O=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,A=Ux(1,0,P,O),x=Ux(P,O,S,T);return!c&&x>0&&(x-=_p),c&&x<0&&(x+=_p),{centerx:g,centery:v,ang1:A,ang2:x}}function kx({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=SM(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(_p/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let P=0;P<v;P++)l.push(vM(h,f)),h+=f;return l.map(P=>{let{x:O,y:S}=Ep(P[0],o,i,m,y),{x:T,y:A}=Ep(P[1],o,i,m,y),{x,y:E}=Ep(P[2],o,i,m,y);return{x1:O,y1:S,x2:T,y2:A,x,y:E}})}import{BufferAttribute as ru,BufferGeometry as _M}from"three";var Ge;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ge||(Ge={}));var at;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(at||(at={}));function we(n,r){if(!n)throw r||"Assertion Failed!"}var be=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),zs=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Zc=function(){function n(r){this.side=r,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(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),pa=function(){function n(){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 n}(),Hx=function(){function n(){var r=new pa,e=new zs,t=new Zc(0),o=new Zc(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Zc(0),t=new Zc(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;we(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;we(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new pa,e=new pa,t=new zs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new pa;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new zs;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new zs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new pa;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new zs;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&be.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&be.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){we(o.prev===i),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(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)},n}(),Wx=function(){function n(){this.handle=null}return n}(),qx=function(){function n(){this.key=null,this.node=0}return n}(),wM=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Wx,this.handles[t]=new qx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,we(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Wx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new qx}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;we(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Bp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),$x=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),PM=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new $x,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new $x;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),OM=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?be.vertLeq(i.Org,a.Org)?be.edgeSign(a.Dst,i.Org,a.Org)<=0:be.edgeSign(i.Dst,a.Org,i.Org)>=0:be.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return be.edgeSign(i.Dst,o,i.Org)>=0;var s=be.edgeEval(i.Dst,o,i.Org),l=be.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){we(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Bp;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ge.ODD:return(e&1)!==0;case Ge.NONZERO:return e!==0;case Ge.POSITIVE:return e>0;case Ge.NEGATIVE:return e<0;case Ge.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do we(be.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=be.vertL1dist(e,r),i=be.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(be.vertLeq(o.Org,i.Org)){if(be.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;be.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(be.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(we(!be.vertEq(o.Dst,i.Dst)),be.vertLeq(o.Dst,i.Dst)){if(be.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(be.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new pa,h,f;if(we(!be.vertEq(c,l)),we(be.edgeSign(l,r.event,a)<=0),we(be.edgeSign(c,r.event,s)>=0),we(a!==r.event&&s!==r.event),we(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(be.vertLeq(a,s)){if(be.edgeSign(c,a,s)>0)return!1}else if(be.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),be.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),be.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=be.vertLeq(a,s)?a:s,be.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),be.vertEq(d,a)||be.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!be.vertEq(l,r.event)&&be.edgeSign(l,r.event,d)>=0||!be.vertEq(c,r.event)&&be.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(be.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),be.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),be.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),be.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}be.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,be.vertEq(o.Org,t)){we(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!be.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}we(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(we(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),be.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Bp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,be.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=be.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);we(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new Bp,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new PM(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++t===1)),we(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,be.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new wM(i,be.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,we(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!be.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),CM=function(){function n(){this.mesh=new Hx,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=Ge.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 n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=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]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.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,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;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]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!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),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;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))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;be.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;be.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(be.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(be.edgeGoesLeft(o.Lnext)||be.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(be.edgeGoesRight(t.Lprev)||be.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===at.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.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=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1;if(e===at.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==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;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Hx),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=Ge.ODD),e===void 0&&(e=at.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),OM.computeInterior(this,a);var s=this.mesh;return e===at.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===at.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Rr(n){var r=n.windingRule,e=r===void 0?Ge.ODD:r,t=n.elementType,o=t===void 0?at.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,h=n.strict,f=h===void 0?!0:h,m=n.debug,y=m===void 0?!1:m;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var g=new CM;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)g.addContour(l||2,d[v]);return g.tesselate(e,o,a,l,u,f),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var IW=Ge.ODD,NW=Ge.NONZERO,DW=Ge.POSITIVE,EW=Ge.NEGATIVE,_W=Ge.ABS_GEQ_TWO,BW=at.POLYGONS,LW=at.CONNECTED_POLYGONS,RW=at.BOUNDARY_CONTOURS;import{Box2 as NM,BufferAttribute as tu,BufferGeometry as DM,Vector2 as EM}from"three";var Jc=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Jc.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Jc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Gs=Jc;Gs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Qx=hi(Kx()),js={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Gp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},jp={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},zp=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),dn=class extends DM{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(I=>{let D=I.extractShapePointsToFlatArray([],i),_=[];for(let B=D.length-1;B>=1;B-=2){let V=D[B-1],U=D[B-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 D=u[I],_=[];for(let B=0;B<D.length;B+=2)_.push([D[B],D[B+1]]);p.push(_)}let h;e.isText?h=new NM().setFromPoints(e.points.map(D=>D.position)).getSize(new EM).length()*.1:p[0].length===0?h=o:h=(0,Qx.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=Rr({windingRule:s,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=js}let m;try{m=Rr({windingRule:Ge.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Gp}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let D=m.elements[I],_=I%2===0?f.vertexCount:0;f.elements.push(D+_)}for(let I=0;I<m.vertexIndices.length;I++){let D=m.vertexIndices[I],_=f.vertexCount;f.vertexIndices.push(D+_)}for(let I=0;I<m.vertices.length;I++){let D=m.vertices[I];f.vertices.push(D)}}let g=1/0,v=-1/0,P=1/0,O=-1/0;for(let I=0,D=f.vertexCount;I<D;I++){let _=I*2,B=f.vertices[_+0],V=f.vertices[_+1];B<g&&(g=B),B>v&&(v=B),V<P&&(P=V),V>O&&(O=V)}this._minX=g,this._minY=P,this._width=v-g,this._height=O-P,this._buffer=new Gs(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let I=f.elementCount-1;I>=0;I--){let D=I>=y,_=I*2,B=f.elements[_+0],V=f.elements[_+1],U=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,j=U-1,F=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=f.vertices[j*2+0],Z=f.vertices[j*2+1],Q=f.vertices[W*2+0],$=f.vertices[W*2+1],ue=f.vertices[F*2+0],le=f.vertices[F*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let he=Q-ue,pe=$-le,fe=Math.sqrt(he*he+pe*pe);he/=fe,pe/=fe,R.normals[te*2+0]=-pe,R.normals[te*2+1]=he,R.concave[te]=ne*pe-ce*he>0;let ge=f.vertexIndices[W];if(Array.isArray(ge))R.continuous[te]=!1;else{let[me,C]=this._shape.getCurveIndexFromVertexId(ge-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?me+1:me-1;ie=(ie+H)%H;let Ee=C===1?0:1,Ve=this._shape.roundedCurves[me].getTangent(C),_e=this._shape.roundedCurves[ie].getTangent(Ee);R.continuous[te]=Ve.dot(_e)>.95}}D&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[j,W,F]=[W,F,F+1],F>=U&&(F-=V)}while(F!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,U*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let he=ae*2,pe=(ae-1+V)%V*2,fe=f.vertices[R.start*2+he+0],ge=f.vertices[R.start*2+he+1],me=-R.normals[pe+0]*Z,C=-R.normals[pe+1]*Z,ie=-R.normals[he+0]*Z,Ee=-R.normals[he+1]*Z;if(R.concave[ae]||!R.concave[ae]&&D){let Ve=Math.atan2(C,me),_e=Math.atan2(Ee,ie);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(R.continuous[ae]||D){let bt=Ve+Pe/2,Me=Math.cos(bt)*Z,yt=Math.sin(bt)*Z;Q[2*ne+0]=fe+Me*(D?-1:1),Q[2*ne+1]=ge+yt*(D?-1:1),le[ne]=ae,ne++}else{let bt=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=bt;Me++){let yt=Ve+Pe*(Me/bt),vt=Math.cos(yt)*Z,Mn=Math.sin(yt)*Z;Q[2*ne+0]=fe+vt,Q[2*ne+1]=ge+Mn,le[ne]=ae,ne++}}}else Q[2*ne+0]=fe+me,Q[2*ne+1]=ge+C,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=fe,Q[2*ne+1]=ge,le[ne]=ae,ne++,Q[2*ne+0]=fe+ie,Q[2*ne+1]=ge+Ee,le[ne]=ae,ue[ae]=ne,ne++}let ce=Rr({windingRule:Ge.POSITIVE,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let pe=ae.Org.idx,fe=le[pe],ge=le[(pe+1)%le.length];ae.idx=[fe,ge],ae.Sym.idx=[ge,fe]},vertexIdCallback:ae=>{let he=ae.Lprev.idx;return[he?he[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[he,pe]=ce.vertexIndices[ae];if(he===pe)continue;let fe=pe;pe<he&&(fe+=V);for(let ge=he;ge<fe;ge++){let me=ge%V,C=(ge+1)%V;if(!R.continuous[me]||!R.continuous[C]){ce.vertexIndices[ae]=[he,me],ce.vertexIndices.splice(ae+1,0,[C,pe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=S.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=R.concave.length,le=0,ne=zp(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=zp(le,V);let ce=K.boundary.vertexIndices.findIndex(ne),ae=Z.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%Q;while(ne(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ne(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let he=le,pe=0,fe=this._buildBevelVert(R,K,(ce-1+Q)%Q,void 0,pe),ge=this._buildBevelVert(R,Z,(ae-1+$)%$,void 0,pe),me=fe,C=ge,ie,Ee,Ve=!1;do{pe=(le||ue)/ue,ne=zp(le,V);let _e=ee(K,ce,ne),Pe=ee(Z,ae,ne),bt=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)Ee=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(C.topN,me.topP,Ee.topP),l===!1&&S.push(me.bottomP,C.bottomN,Ee.bottomP),C=Ee;else if(_e&&Pe)if(ie=this._buildBevelVert(R,K,ce,0,pe),Ee=this._buildBevelVert(R,Z,ae,0,pe),bt?(S.push(me.topN,Ee.topP,C.topN),S.push(me.topN,ie.topP,Ee.topP),l===!1&&(S.push(Ee.bottomP,me.bottomN,C.bottomN),S.push(Ee.bottomP,ie.bottomP,me.bottomN))):(S.push(C.topN,me.topN,ie.topP),S.push(C.topN,ie.topP,Ee.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Ee.bottomP))),me=ie,C=Ee,_e===Pe)for(let Me=1;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),Ee=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(me.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,Ee.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Ee.bottomP)),me=ie,C=Ee;else if(_e>Pe){let Me=_e/Pe,yt=0;for(let vt=1;vt<_e;vt++)ie=this._buildBevelVert(R,K,(ce+vt)%Q,vt/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie,vt>(yt+1)*Me&&(yt++,Ee=this._buildBevelVert(R,Z,(ae+yt)%$,yt/(Pe-1),pe),S.push(C.topN,ie.topP,Ee.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Ee.bottomP),C=Ee)}else{let Me=Pe/_e,yt=0;for(let vt=1;vt<Pe;vt++)Ee=this._buildBevelVert(R,Z,(ae+vt)%$,vt/(Pe-1),pe),S.push(C.topN,ie.topP,Ee.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Ee.bottomP),C=Ee,vt>(yt+1)*Me&&(yt++,ie=this._buildBevelVert(R,K,(ce+yt)%Q,yt/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%ue}while(le!==he)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,R,S),D){let te=[];for(let K=S.length-1;K>=X+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];te.push($,Q,Z)}S.splice(X,S.length-X,...te)}if(D){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}T.push(te)}if(!D){let te=q[q.length-1],K;try{K=Rr({windingRule:q.length>1?Ge.POSITIVE:Ge.ODD,elementType:at.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{K=jp}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<h&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],re),$=this._buildSurfaceVert(K,K.elements[Z+1],re),ue=this._buildSurfaceVert(K,K.elements[Z+2],re);S.push(Q.top,$.top,ue.top),l===!1&&S.push(ue.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new tu(Uint32Array.from(S),1),x=new tu(this._buffer.positions,3),E=new tu(this._buffer.normals,3),N=new tu(this._buffer.uvs,2);x.needsUpdate=!0,E.needsUpdate=!0,N.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",E),this.setAttribute("uv",N),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*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,h={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[i]=h,h}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,p,d,h;l!==c?(p=l,u=c,h=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,h=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||h);let f=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,g=u*2,v=p*2,P=t.boundary.vertices[y+0],O=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(P-this._minX)/this._width,A=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),A=1);let x=e.normals[g+0],E=e.normals[g+1],N=e.normals[v+0],I=e.normals[v+1];if(h){let U=N-x,R=I-E;x=x+U*(1-i),E=E+R*(1-i);let W=Math.sqrt(x*x+E*E);x/=W,E/=W}let D=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=D*3,B=D*2,V={i:o,fi:u,topP:D+0,topN:D+0,bottomP:D+1,bottomN:D+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=x*f,this._buffer.normals[_+1]=E*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=x*f,this._buffer.normals[_+4]=E*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=T),d||(this.forPathBevel?(D+=1,_+=3,B+=2):(D+=2,_+=6,B+=4),V.topP=D+0,V.bottomP=D+1,this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*f,this._buffer.normals[_+1]=I*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*f,this._buffer.normals[_+4]=I*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new dn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var fa=class extends _M{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ge.ODD;this.elementType=at.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ge.ODD,elementType:at.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let f=0,m=i.length/2;f<m;f++){let y=f*2,g=i[y+0],v=i[y+1];if(u!==void 0&&g!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=g,p=v,!l&&!c)break}if(!l&&!c)try{s=Rr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=js}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new ru(new Float32Array(d*3),3),this._normalAttribute=new ru(new Float32Array(d*3),3),this._uvAttribute=new ru(new Float32Array(d*2),2),this._indexAttribute=new ru(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let O=0,S=d;O<S;O++){let T=O*2,A=s.vertices[T+0],x=s.vertices[T+1];A<f&&(f=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let v=m-f,P=g-y;for(let O=0,S=d;O<S;O++){let T=O*2,A=s.vertices[T+0],x=s.vertices[T+1],E=(A-f)/v,N=(x-y)/P;this._positionAttribute.setXYZ(O,A,x,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,E,N)}for(let O=0,S=h;O<S;O++){let T=O*3,A=s.elements[T+0],x=s.elements[T+1],E=s.elements[T+2];this._indexAttribute.setX(T+0,A),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,E)}}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 fa(this._shape,this._curveSegments);return e.userData=vo(this.userData),e}};var ha=class extends dn{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new ha(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var Zt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ge.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Fe?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Fe(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Fe(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new fa(n.shape,o,{windingRule:a}):s=new ha(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as BM,Float32BufferAttribute as LM,MathUtils as Fp,Vector2 as Jx}from"three";var e0=Math.PI*2,ya=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Fp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=RM(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new BM,h.setAttribute("position",new LM([],3))):h=Zt.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function RM(n,r,e,t,o,i){if(t>=e0)return o>30||o%4===0?(zM(n,r,e,i),Math.round(o/4)):Zx(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=kx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?VM(n,a.x,a.y,c,o,r,e,i):Zx(n,t,o,r,e,i)}function VM(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ma(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ma(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?t0(n,i,a,s):n.addPoint(ma(0,0)),l}function Zx(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(ma(c,u))}return r<e0?i>0?t0(n,t,o,i):n.addPoint(ma(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&r0(n,t,o,i)),1}function zM(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(ou(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(ou(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ou(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(ou(o,i-e,o+s,i-e,o-s,i-e)),t>0&&r0(n,r,e,t)}function ma(n,r){return new Lr(Fp.generateUUID(),new Jx(n,r))}function ou(n,r,e,t,o,i){let a=ma(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function t0(n,r,e,t){o0(n,r,e,t).forEach(i=>n.addPoint(i))}function r0(n,r,e,t){let o=o0(n,r,e,t),i=new Fe;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function o0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Jx(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=Fp.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 GM,Float32BufferAttribute as Up,Uint32BufferAttribute as jM,Vector3 as n0}from"three";var i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new Fs(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},kp=new jM([0,0,0],1),Fs=class extends GM{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let h=r&&a===1;h&&(d=0),p>100&&(p=100),p===0&&(d=0);let f=()=>new n0,m=new n0,y=f(),g=f(),v=f(),P,O,S,T,A,x,E,N,I=f(),D=f(),_=f(),B=f(),V=f(),U=f(),R=f(),W=f(),j=t-2*l+.001,F=j/a,H=Math.ceil(s*a),q=H+1,re=j/H,ee=-j/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,he=Math.max(0,X*(q+ne)),[pe,fe,ge]=[3,3,2].map(rt=>Array(he*rt).fill(0)),me=[],C=i-l;function ie(rt,Xe){let Ar=Math.PI/2;x=Xe*re,N=2*Math.PI*(x%F)/F+Ar,x+=ee,E=Math.sin(N)*C,A=Math.cos(N)*C,r?rt.set(A,E,x):rt.set(A,x,E)}ie(m,-1e-10),ie(y,0),I.copy(m),ie(m,1);let Ee=m.distanceTo(y),Ve=h?0:$+Q,_e=Ee*H+2*Ve,Pe=Q,bt=_e-Ve;for(let rt=0;rt<=H;rt++){ie(g,rt),W.subVectors(g,I).normalize(),I.copy(g),U.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,U).normalize();let Xe=rt===0,Ar=rt===H,ud=Xe?3*Math.PI/2:K,dd=Xe?Pe:bt,vl=Xe?X:ae,In=Xe?0:he-X,ct=W.clone().multiplyScalar(Xe?-$:$).add(g),pd=W.clone().multiplyScalar(Xe?-1:1).normalize();for(let hr=0;hr<X;hr++){let fs=hr*te;if(D.addVectors(m.copy(U).multiplyScalar(l*Math.cos(fs)),y.copy(R).multiplyScalar(l*Math.sin(fs))),_.copy(D).normalize(),Xe||Ar){h||(ue=In+hr,[0,1,2].forEach(Ft=>{pe[ue*3+Ft]=ct.getComponent(Ft),fe[ue*3+Ft]=pd.getComponent(Ft)}),ge[ue*2]=+Ar,ge[ue*2+1]=hr/u),y.copy(_).multiplyScalar(Q),v.addVectors(g,y);for(let Ft=0;Ft<d;Ft++){let Nn=Ft*K+ud;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(Nn)),y.copy(_).multiplyScalar($*Math.cos(Nn))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=vl+Ft*X+hr,[0,1,2].forEach(ui=>{pe[ue*3+ui]=y.getComponent(ui),fe[ue*3+ui]=V.getComponent(ui)});let Sl=+Xe+Math.sin(Nn);ge[ue*2]=(dd+$*Sl)/_e,ge[ue*2+1]=hr/u}}y.addVectors(g,D),ue=ce+rt*X+hr,[0,1,2].forEach(Ft=>{pe[ue*3+Ft]=y.getComponent(Ft),fe[ue*3+Ft]=_.getComponent(Ft)}),ge[ue*2]=(Ve+rt*Ee)/_e,ge[ue*2+1]=hr/u}}let Me=q+2*d+le,yt=1,[vt,Mn]=[+h,Me-1];for(let rt=vt;rt<=Mn-1;rt++){let Xe=h&&rt===Mn-1;for(let Ar=0;Ar<X-1;Ar++)P=rt*X+Ar,O=P+1,S=(Xe?Ar:P)+X,T=(Xe?Ar+1:O)+X,rt===0?me.push(O,T,S):rt===Me-2?me.push(P,O,S):me.push(P,O,S,O,T,S)}this.setIndex(me),this.setAttribute("position",new Up(pe,3)),this.setAttribute("normal",new Up(fe,3)),this.setAttribute("uv",new Up(ge,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,kp.array=o,kp.count=o.length,kp}};import{IcosahedronGeometry as FM}from"three";var a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Us(r*.5,i,a):new FM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Us=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-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(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new Us(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as UM,Shape as kM}from"three";var s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.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}]},n.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(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new kM;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new UM(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as m0,BufferGeometryLoader as tI,Vector3 as rI,BoxGeometry as y0}from"three";import{BufferGeometry as QM,Vector2 as $p,Vector3 as h0}from"three";import{Box3 as HM,BufferAttribute as ks,BufferGeometry as l0,Color as qp,EventDispatcher as WM,Float32BufferAttribute as ga,Matrix3 as c0,Matrix4 as f0,MathUtils as qM,Object3D as $M,Sphere as YM,Vector2 as ur,Vector3 as Rt,Vector4 as XM}from"three";var ro=new f0,Hp=new $M,nu=new Rt,pn=class extends WM{constructor(){super(),this.uuid=qM.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(r){let e=new c0().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return ro.makeRotationX(r),this.applyMatrix4(ro),this}rotateY(r){return ro.makeRotationY(r),this.applyMatrix4(ro),this}rotateZ(r){return ro.makeRotationZ(r),this.applyMatrix4(ro),this}translate(r,e,t){return ro.makeTranslation(r,e,t),this.applyMatrix4(ro),this}scale(r,e,t){return ro.makeScale(r,e,t),this.applyMatrix4(ro),this}lookAt(r){return Hp.lookAt(r),Hp.updateMatrix(),this.applyMatrix4(Hp.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=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<i.count;d++)e.vertices.push(new Rt().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new qp().fromBufferAttribute(s,d));function u(d,h,f,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[h].clone(),e.colors[f].clone()],g=a===void 0?[]:[new Rt().fromBufferAttribute(a,d),new Rt().fromBufferAttribute(a,h),new Rt().fromBufferAttribute(a,f)],v=new xa(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new ur().fromBufferAttribute(l,d),new ur().fromBufferAttribute(l,h),new ur().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new ur().fromBufferAttribute(c,d),new ur().fromBufferAttribute(c,h),new ur().fromBufferAttribute(c,f)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let h=p[d],f=h.start,m=h.count;for(let y=f,g=f+m;y<g;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),h.materialIndex):u(y,y+1,y+2,h.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(nu).negate(),this.translate(nu.x,nu.y,nu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new f0;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new Rt,e=new Rt;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new Rt;if(r){let t=new Rt,o=new Rt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new pn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Rt,u={a:new Rt,b:new Rt,c:new Rt};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new HM),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new YM),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new c0().getNormalMatrix(e));for(let d=0,h=s.length;d<h;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,h=p.length;d<h;d++)u.push(p[d].clone());for(let d=0,h=c.length;d<h;d++){let f=c[d],m,y,g=f.vertexNormals,v=f.vertexColors,P=new xa(f.a+i,f.b+i,f.c+i);P.normal.copy(f.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let O=0,S=g.length;O<S;O++)m=g[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),P.vertexNormals.push(m);P.color.copy(f.color);for(let O=0,S=v.length;O<S;O++)y=v[O],P.vertexColors.push(y.clone());P.materialIndex=f.materialIndex+t,l.push(P)}for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let P=0,O=g.length;P<O;P++)v.push(g[P].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.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-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new Rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let m in f)f[m]!==void 0&&(r[m]=f[m]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let m=this.vertices[f];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let f=0;f<this.faces.length;f++){let m=this.faces[f],y=!0,g=!1,v=this.faceVertexUvs[0][f]!==void 0,P=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,A=0;if(A=u(A,0,0),A=u(A,1,y),A=u(A,2,g),A=u(A,3,v),A=u(A,4,P),A=u(A,5,O),A=u(A,6,S),A=u(A,7,T),t.push(A),t.push(m.a,m.b,m.c),t.push(m.materialIndex),v){let x=this.faceVertexUvs[0][f];t.push(h(x[0]),h(x[1]),h(x[2]))}if(P&&t.push(p(m.normal)),O){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new pn().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let d=0,h=e.length;d<h;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,h=t.length;d<h;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,h=o.length;d<h;d++)this.faces.push(o[d].clone());for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let P=0,O=g.length;P<O;P++){let S=g[P];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let i=r.morphTargets;for(let d=0,h=i.length;d<h;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)f.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){f.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)f.normals.push(i[d].normals[m].clone())}this.morphTargets.push(f)}let a=r.morphNormals;for(let d=0,h=a.length;d<h;d++){let f={};if(a[d].vertexNormals!==void 0){f.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let g=a[d].vertexNormals[m],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),f.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){f.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)f.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(f)}let s=r.skinWeights;for(let d=0,h=s.length;d<h;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,h=l.length;d<h;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,h=c.length;d<h;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Wp().fromGeometry(this),e=new l0,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",iu.call(new ks(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",iu.call(new ks(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",u0.call(new ks(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",d0.call(new ks(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",d0.call(new ks(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new ga(c.data.length*3,3);u.name=c.name,i.push(iu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ga(r.skinIndices.length*4,4);e.setAttribute("skinIndex",p0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ga(r.skinWeights.length*4,4);e.setAttribute("skinWeight",p0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.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(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new l0,t=r.geometry;if(r.isPoints||r.isLine){let o=new ga(t.vertices.length*3,3),i=new ga(t.colors.length*3,3);if(e.setAttribute("position",iu.call(o,t.vertices)),e.setAttribute("color",u0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new ga(t.lineDistances.length,1);e.setAttribute("lineDistance",KM.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};pn.prototype.isGeometry=!0;var Wp=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(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,l=s.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:s[g].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let g=0;g<p;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let h=r.skinIndices,f=r.skinWeights,m=h.length===t.length,y=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[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(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ur,new ur,new ur))}if(a===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ur,new ur,new ur))}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[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},xa=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new Rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new qp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function KM(n){return this.array.set(n),this}function u0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new qp),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function d0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new ur),r[e++]=i.x,r[e++]=i.y}return this}function iu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new Rt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function p0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new XM),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var ZM=["a","b","c"];function JM(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Yp(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Xp(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function eI(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],Xp(a.a,a.b,n,t,a,e),Xp(a.b,a.c,n,t,a,e),Xp(a.c,a.a,n,t,a,e)}function au(n,r,e,t,o){n.push(new xa(r,e,t,void 0,void 0,o))}function ba(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function su(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var lu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof QM?r=new pn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new h0,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],h=new Map;eI(l,c,d,h);let f=[],m,y,g,v,P,O,S;for(let Z of Array.from(h.keys())){for(y=h.get(Z),g=new h0,P=3/8,O=1/8,S=y.faces.length,S!=2&&(P=.5,O=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[JM(v,ZM[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),g.add(e),y.newEdge=f.length,f.push(g)}let T,A,x,E,N,I,D,_=[];for(o=0,i=l.length;o<i;o++){for(I=l[o],N=d[o].edges,t=N.length,t==3?T=3/16:t>3&&(T=3/(8*t)),A=1-t*Number(T),x=T,t<=2&&(t==2?(A=3/4,x=1/8):t==1||t==0),D=I.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<t;a++)E=N[a],m=E.a!==I?E.a:E.b,e.add(m);e.multiplyScalar(Number(x)),D.add(e),_.push(D)}let B=_.concat(f),V=_.length,U,R,W,j=[],F=[],H,q,re,ee,X=new $p,te=new $p,K=new $p;for(o=0,i=c.length;o<i;o++)v=c[o],U=Number(Yp(v.a,v.b,h).newEdge)+V,R=Number(Yp(v.b,v.c,h).newEdge)+V,W=Number(Yp(v.c,v.a,h).newEdge)+V,au(j,U,R,W,v.materialIndex),au(j,v.a,U,W,v.materialIndex),au(j,v.b,R,U,v.materialIndex),au(j,v.c,W,R,v.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(ba(q.x,re.x),ba(q.y,re.y)),te.set(ba(re.x,ee.x),ba(re.y,ee.y)),K.set(ba(q.x,ee.x),ba(q.y,ee.y)),su(F,X,te,K),su(F,q,X,K),su(F,re,te,X),su(F,ee,K,te));r.vertices=B,r.faces=j,p&&(r.faceVertexUvs[0]=F)}};var Pt=new rI,g0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new m0().copy(new y0(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Pt),t={width:Pt.x,height:Pt.y,depth:Pt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.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(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new m0().copy(new y0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Pt)):Pt.set(a.width,a.height,a.depth),(r!==Pt.x||e!==Pt.y||t!==Pt.z)&&i.scale(Pt.x===0?1:r/Pt.x,Pt.y===0?1:e/Pt.y,Pt.z===0?1:t/Pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new lu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new tI(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Pt);let a=100/Pt.x;Object.assign(i.parameters,{width:100,height:Pt.y*a,depth:Pt.z*a}),r(this.build(i))})}};var cu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,h=2*Math.PI/t;for(let m=0;m<t;m++){let y=h*m,g=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(g,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 f=Zt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as oI,Float32BufferAttribute as Kp,Vector2 as oo,Vector3 as It}from"three";var x0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.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(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new Zp(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function Hs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qp(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function nI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Zp=class extends oI{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,h=e/2,f=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,P=new It(0,-h,0),O=new It(0,h,0),S=new oo(r,-h),T=new oo(m,-h),A=new oo(0,O.y).sub(T),x=new oo(0,O.y).sub(S),E=new oo(A.y,-A.x).normalize(),N=new oo(x.y,-x.x).normalize(),D=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,D);let _;{let F=new It(E.x,E.y,0),H=new It(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let B=a/Math.tan((Math.PI-A.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new It;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],q=S.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+f,te=new oo(Math.sin(X),Math.cos(X));Hs(q,te,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],F,H[(ee+1)%H.length])}let R=[];{let F=new It,H=new It,q=new It,re=new It,ee=new It,X=new It;for(let te=0;te<t;te++){let K=te/t*Math.PI*2+f,Z=(te+.5)/t*Math.PI*2+f,Q=(te+1)/t*Math.PI*2+f,$=new oo(Math.sin(K),Math.cos(K)),ue=new oo(Math.sin(Z),Math.cos(Z)),le=new oo(Math.sin(Q),Math.cos(Q));Hs(S,$,H),Hs(S,le,q),Hs(E,ue,F),Qp(O,H,q,V,V,re),c.push(re.x,re.y,re.z),Qp(H,O,q,V,B,ee),c.push(ee.x,ee.y,ee.z),Qp(q,H,O,B,V,X),c.push(X.x,X.y,X.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 ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let fe=H.clone().add(q).multiplyScalar(.5),ge=O.clone().sub(fe).normalize(),C=P.clone().sub(fe).normalize().add(ge).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(fe,ie,C,A.angle())}let he,pe;{let fe=new It;Hs(N,le,fe);let ge=X.clone().add(re).multiplyScalar(.5);ge=nI(ge,q,O);let me=X.clone().sub(re);[he,pe]=W(ge,me,fe,_,re.y)}{let fe=he,ge=fe.clone().setY(0).normalize(),me=new It(0,-1,0),C=ge.clone().cross(me);j(fe,ge,me,C)}R.concat(pe);{let fe=A.angle(),ge=Math.PI-fe,me=O.clone();me.y-=a/Math.sin(fe-Math.PI/2);let C=new It,ie=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-ge*Ve/s,bt=Math.cos(Pe),Me=Math.sin(Pe),yt=Z;for(let vt=0;vt<=Ve;vt++){let Mn=Math.cos(yt),rt=Math.sin(yt);F.x=bt*rt,F.y=Me,F.z=bt*Mn,C.copy(me).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),_e.push(d++),yt+=Math.PI*2/Ve/t}ie.push(_e)}pe.reverse(),ie.push(pe);let Ee=ie.length-1;for(let Ve=0;Ve<Ee;Ve++){let _e=ie[Ve],Pe=ie[Ve+1],bt=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=bt;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Kp(c,3)),this.setAttribute("normal",new Kp(u,3)),this.setAttribute("uv",new Kp(p,2));function W(F,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);F.addScaledVector(q,-a/Math.sin(te));let Z=new It,Q=new It,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,Math.cos(ce));for(let ae=0;ae<=$;ae++){let he=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,he),Z.addScaledVector(Q,a),ee!=null){let pe=Math.max(0,Z.y-ee);Z.addScaledVector(H,-pe/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 ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,he=ae+($+1),pe=he+1,fe=ae+1;l.push(ae,he,fe),l.push(he,pe,fe)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,q,re){let ee=Math.PI/2,X=x.angle()-ee,te=[],K=new It,Z=new It;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*v,he=Math.cos(ae),pe=Math.sin(ae),fe=Math.atan(Math.tan(X)*he),ge=(ee+fe)*le,me=Math.cos(ge),C=Math.sin(ge);K.set(0,0,0),K.addScaledVector(H,C*he),K.addScaledVector(q,me),K.addScaledVector(re,C*pe),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),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,S,T){return S>e&&T>t?Math.min(O*e/S,O*t/T):S>e?O*e/S:T>t?O*t/T:O}let h=[];h[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),h[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),h[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),h[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,m=p.x,y=p.y,g=u.y;r.addPoint(r.createPoint(f,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,g)),r.addPoint(r.createPoint(f,g)),r.isClosed=!0;let v=!0;for(let O=0,S=r.points.length;O<S;O++)r.points[O].roundness=h[O],O>0&&h[O]!==h[O-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let P=Zt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as iI,Float32BufferAttribute as aI,MathUtils as b0,SphereGeometry as sI}from"three";var v0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=b0.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(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new iI,u.setAttribute("position",new aI([],3))):u=new sI(.5*r,o,i,a,s,l,c*b0.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as lI}from"three";var S0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new lI(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as cI,Float32BufferAttribute as Jp,Vector3 as uI}from"three";var w0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new ef(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},ef=class extends cI{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,h=(Z=0,Q=0,$=0)=>new uI(Z,Q,$),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],P=-g,O=+g,[S,T,A]=[h(P,-y,+v),h(P,-y,-v),h(P,+y,-v)],x=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),E=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));A.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(A.z=Math.min(N,I),A.z==I&&(A.y-=(N-I)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),f.subVectors(S,T),m.subVectors(A,T);let D=Math.min(f.length(),m.length())*i/100,_=D*Math.tan(o/2),B=D/Math.cos(o/2),V=f.clone().normalize().add(m.normalize()).setLength(B).add(T);f.set(0,x(o,!0),E(o,!0)),p.push([A,f.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;f.set(0,Math.sin(Q)*_,Math.cos(Q)*_),f.add(V),m.set(0,x(Q),E(Q)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(U/2)*_*2,W=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[W-1][0].distanceTo(p[W][0]),H=j+R*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*R)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(P,q.y,q.z,P,X.y,X.z,O,q.y,q.z,O,q.y,q.z,P,X.y,X.z,O,X.y,X.z),l.push(0,re.y,re.z,0,te.y,te.z,0,re.y,re.z,0,re.y,re.z,0,te.y,te.z,0,te.y,te.z),c.push(0,ee,0,K,1,ee,1,ee,0,K,1,K),[q,re,ee]=[X,te,K];this.setAttribute("position",new Jp(s,3)),this.setAttribute("normal",new Jp(l,3)),this.setAttribute("uv",new Jp(c,2))}};var uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,h=0,f=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=p*t/100,v=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=h+Math.sin(S)*p,A=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,A))}}else for(let O=0;O<o;O++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+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=i;u.roundness=i,u.update();let P=Zt.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as dI}from"three";var P0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.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(n){let{width:r,height:e}=n.parameters,t=new dI(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as pI,Float32BufferAttribute as fI,MathUtils as hI}from"three";var O0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=mI(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function mI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=hI.clamp(o/360,0,1);if(p===0){let d=new pI;return d.setAttribute("position",new fI([],3)),d}return p===1&&(c=0),new Fs(!0,n,r,e,t,p,i,a,s,l,c,u)}import{TorusKnotGeometry as yI}from"three";var C0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.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(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new yI(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var T0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,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(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.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,h=l.points.length;d<h;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=Zt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as M0,Vector3 as Nt,Matrix3 as gI,Matrix4 as qn,BufferGeometry as I0,BufferAttribute as Sa,MathUtils as du}from"three";function A0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var xI=new qn,bI=new qn;function vI(n,r,e){let t=[new Nt,new Nt,new Nt],o=[new Nt,new Nt,new Nt];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=du.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new qn().makeBasis(t[0],t[1],t[2])}var N0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ya.create({parameters:Yd}).userData.shape;return{path:n.path??Xi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...wc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new tf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new I0,{userData:{...n,type:"PathGeometry"}})}},tf=class extends I0{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)||!A0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*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(t[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=vI(p[j],p[F],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+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,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,P=g>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:A}=this._computeShapePoints(O),x=0,E;P==="round"&&(E=new dn(this.inputs.shapeData,2*g,g,O,v,void 0,!0),x=E.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,q)=>F+(q===0||!H?2:1),0),I+=j.verticesCount,N=I});let D=I*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=Rr({windingRule:Ge.ODD,elementType:at.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=jp}B=_.vertexCount}let V=D+2*B+x*2,U=D+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(T.forEach(j=>{this._extrudeRegion(j,A,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,W,R,p[0],u[0],!1),this._closeEnd(_,D+B,W,R,p[p.length-1],u[u.length-1],!0)),E){R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);for(let q=U;q<U+x;q++)R.uvs[q*2+1]=1e-4;let j=W.length;W.push(...E.getIndex().array.map(q=>q+U)),U+=x,R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);let F=W.length;W.push(...E.getIndex().array.map(q=>q+U)),this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W);let H=xI;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(bI.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-x,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Hc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.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 t=[],o=e.length,i=this.inputs.path.isClosed,a=new Nt,s=new Nt,l=new Nt,c=new Nt,u=new Nt(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let P;y===o-1?P=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let O=g.clone().sub(v).normalize(),S=P.clone().sub(g).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 A=u.clone().cross(T).normalize(),x=T.clone().cross(A).normalize();u.copy(x),c.copy(A),y===0&&(a.copy(x),s.copy(T));let E=new qn().makeBasis(A,x,T);t.push(E)}let p=i?s:l,d=i?a:new Nt(0,1,0),h=p.clone().cross(c).normalize(),f=Math.acos(d.dot(h));if(isNaN(f))return t;let m=d.clone().cross(h);p.dot(m)>0&&(f*=-1);for(let y=1;y<t.length;y++){let g=new qn().makeRotationZ(f*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new qn,p=new qn;return e.forEach((d,h)=>{let f=h===0?0:h===i-1?1:(h-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(du.lerp(a,a+s,f)*du.DEG2RAD);let m=du.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=Ge.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let P=y[v-1],O=y[v-0];g.push(P,O)}return g}),s;try{s=Rr({windingRule:t,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=js}let l;try{l=Rr({windingRule:Ge.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Gp}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],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}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,h=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,v=s.vertices[g+0],P=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),P<d&&(d=P),P>h&&(h=P)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],P=s.elements[g+1],O=v+P,S={start:v,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,A=O-1,x=v+1,E=o.roundedCurves.length;do{let N=T-v,I=s.vertices[A*2+0],D=s.vertices[A*2+1],_=s.vertices[T*2+0],B=s.vertices[T*2+1],V=s.vertices[x*2+0],U=s.vertices[x*2+1],R=_-I,W=B-D,j=Math.sqrt(R*R+W*W);R/=j,W/=j;let F=_-V,H=B-U,q=Math.sqrt(F*F+H*H);F/=q,H/=q,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let re=s.vertexIndices[T];if(Array.isArray(re))S.continuous[N]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)S.continuous[N]=!0;else{let te=X===1?ee+1:ee-1;te=(te+E)%E;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[A,T,x]=[T,x,x+1],x>=O&&(x-=P)}while(x!==v+1)}return{regions:[i,...a],infos:f,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Nt,u=new Nt,p=new Nt,d=new Nt,h=new M0;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let O=(e.start+P)*2;if(c.set(t[O+0],t[O+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let S=P===0?(e.start+e.count-1)*2:O-2;u.set(t[S+0],t[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),h.set(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),h.set(0,y/(o.length-1));else{let S=P===e.count-1?e.start*2:O+2;u.set(t[S+0],t[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,h),v++}}});let f=o.length-1;for(let m=0;m<f;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&v++;let O=P===e.count-1?0:v+1,S=y+v,T=y+O,A=g+O,x=g+v;e.isHole?s.push(S,A,T,S,x,A):s.push(S,T,A,S,A,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Nt(0,0,l?-1:1).applyMatrix4(a),p=new Nt,d=new M0;for(let f=0;f<c;f++){let m=2*f;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+f,p,u,d)}let h=e.elements;for(let f=0;f<e.elementCount;f++){let m=3*f,y=h[m+0]+t,g=h[m+(l?1:2)]+t,v=h[m+(l?2:1)]+t;o.push(y,g,v)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new gI().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let h=p.array,f=d.array,m=p.itemSize;for(let y=t*m,g=o*m;y<g;y+=m){if(y===t)debugger;s=h[y+0],l=h[y+1],c=h[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),h[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,h[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,h[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=f[y+0],l=f[y+1],c=f[y+2],f[y+0]=a[0]*s+a[3]*l+a[6]*c,f[y+1]=a[1]*s+a[4]*l+a[7]*c,f[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as D0,BufferGeometry as rf}from"three";import{mergeBufferGeometries as wI}from"three/examples/jsm/utils/BufferGeometryUtils.js";function E0(){let n=new rf;return n.setAttribute("position",new D0(new Float32Array([]),3)),n.setIndex(new D0(new Uint16Array([]),1)),n}var PI=E0().attributes,OI=12,CI=1,wa=class extends rf{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,PI),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=Dc.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=TI(e,t,d),{shapes:f,charWidths:m,charCoords:y}=t.generateShapes(h,e),g=(typeof o=="number"?o:1)*.5,v=(typeof i=="number"?i:1)*.5,P=f.map(T=>new Fe().fromShape(T,!0));this.vectorShapes=P;let O=P.map(T=>Zt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ge.NONZERO:Ge.ODD,subdivisions:this.isLowResolution&&a>0?CI:OI}})),S=O.length?wI(O):E0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,A])=>{this.setAttribute(T,A)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Ht(new rf,wa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function TI(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
+ `,"\r"],!1,!1),C=0,ie=0,Ee=[{line:1,column:1}],Ve=0,_e=[],Pe=0,bt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function Me(){return n.substring(ie,C)}function yt(){return In(ie,C)}function vt(b,w){throw w=w!==void 0?w:In(ie,C),hr([dd(b)],n.substring(ie,C),w)}function Mn(b,w){throw w=w!==void 0?w:In(ie,C),pd(b,w)}function rt(b,w){return{type:"literal",text:b,ignoreCase:w}}function Xe(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Ar(){return{type:"any"}}function ud(){return{type:"end"}}function dd(b){return{type:"other",description:b}}function vl(b){var w=Ee[b],L;if(w)return w;for(L=b-1;!Ee[L];)L--;for(w=Ee[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return Ee[b]=w,w}function In(b,w){var L=vl(b),M=vl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function ct(b){C<Ve||(C>Ve&&(Ve=C,_e=[]),_e.push(b))}function pd(b,w){return new si(b,null,null,w)}function hr(b,w,L){return new si(si.buildMessage(b,w),b,w,L)}function fs(){var b,w,L,M,z;for(b=C,w=[],L=ze();L!==e;)w.push(L),L=ze();if(w!==e)if(L=Ft(),L===e&&(L=null),L!==e){for(M=[],z=ze();z!==e;)M.push(z),z=ze();M!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function Ft(){var b,w,L,M,z,oe;if(b=C,w=Nn(),w!==e){for(L=[],M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Nn(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Nn(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Nn(){var b,w,L,M,z,oe;if(b=C,w=ui(),w!==e){for(L=[],M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Sl(){var b;return b=GS(),b===e&&(b=jS(),b===e&&(b=FS(),b===e&&(b=US(),b===e&&(b=kS(),b===e&&(b=WS(),b===e&&(b=$S(),b===e&&(b=XS(),b===e&&(b=QS())))))))),b}function ui(){var b,w,L,M,z,oe,fi;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(l)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=kt(),M!==e?(z=C,oe=Je(),oe===e&&(oe=null),oe!==e?(fi=vh(),fi!==e?(oe=[oe,fi],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=b,w=c(w,M,z),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function GS(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(p)),w!==e&&(ie=b,w=d()),b=w,b}function jS(){var b,w,L,M;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(f)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=vh(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function vh(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function FS(){var b,w,L,M;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(g)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=Sh(),M!==e?(ie=b,w=v(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function Sh(){var b,w,L,M,z,oe;if(b=C,w=di(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function US(){var b,w,L,M;if(b=C,P.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(O)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=Sh(),M!==e?(ie=b,w=S(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function kS(){var b,w,L,M;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(A)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=HS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function HS(){var b,w,L,M,z,oe;if(b=C,w=fd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function fd(){var b,w,L,M,z,oe;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function WS(){var b,w,L,M;if(b=C,E.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(N)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=qS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function qS(){var b,w,L,M,z,oe;if(b=C,w=hd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function hd(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=I(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function $S(){var b,w,L,M;if(b=C,D.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(_)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=YS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function YS(){var b,w,L,M,z,oe;if(b=C,w=md(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function md(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=B(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function XS(){var b,w,L,M;if(b=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(U)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=KS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function KS(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function QS(){var b,w,L,M;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(W)),w!==e){for(L=[],M=ze();M!==e;)L.push(M),M=ze();L!==e?(M=ZS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function ZS(){var b,w,L,M,z,oe;if(b=C,w=yd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function yd(){var b,w,L,M,z,oe,fi,xd,Pl,bd,Ol,vd;return b=C,w=wh(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=wh(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(fi=Je(),fi!==e?(xd=Ph(),xd!==e?(Pl=Je(),Pl===e&&(Pl=null),Pl!==e?(bd=Ph(),bd!==e?(Ol=Je(),Ol===e&&(Ol=null),Ol!==e?(vd=kt(),vd!==e?(ie=b,w=j(w,M,oe,xd,bd,vd),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function kt(){var b,w,L,M;return b=C,w=di(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=di(),M!==e?(ie=b,w=F(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function wh(){var b,w;return b=C,w=Ch(),w===e&&(w=Dn()),w!==e&&(ie=b,w=H(w)),b=w,b}function di(){var b,w,L,M;return b=C,w=C,L=gd(),L===e&&(L=null),L!==e?(M=Ch(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=gd(),L===e&&(L=null),L!==e?(M=Dn(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=q(w)),b=w,b}function Ph(){var b,w;return b=C,re.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(ee)),w!==e&&(ie=b,w=X(w)),b=w,b}function Je(){var b,w,L,M,z;if(b=C,w=[],L=ze(),L!==e)for(;L!==e;)w.push(L),L=ze();else w=e;if(w!==e)if(L=Oh(),L===e&&(L=null),L!==e){for(M=[],z=ze();z!==e;)M.push(z),z=ze();M!==e?(w=[w,L,M],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=Oh(),L!==e){for(M=[],z=ze();z!==e;)M.push(z),z=ze();M!==e?(L=[L,M],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function Oh(){var b;return n.charCodeAt(C)===44?(b=K,C++):(b=e,Pe===0&&ct(Z)),b}function Ch(){var b,w,L,M;return b=C,w=C,L=JS(),L!==e?(M=Th(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Dn(),L!==e?(M=Th(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function JS(){var b,w,L,M,z;return b=C,w=C,L=Dn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=$,C++):(M=e,Pe===0&&ct(ue)),M!==e?(z=Dn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Dn(),L!==e?(n.charCodeAt(C)===46?(M=$,C++):(M=e,Pe===0&&ct(ue)),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function Th(){var b,w,L,M,z;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(ne)),L!==e?(M=gd(),M===e&&(M=null),M!==e?(z=Dn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=Q(w)),b=w,b}function gd(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Pe===0&&ct(ae)),b}function Dn(){var b,w,L;if(b=C,w=[],he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(pe)),L!==e)for(;L!==e;)w.push(L),he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(pe));else w=e;return w!==e&&(ie=b,w=fe(w)),b=w,b}function ze(){var b,w;return b=C,ge.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(me)),w!==e&&(ie=b,w=te()),b=w,b}function e1(b,w){if(!w)return[b];for(var L=[b],M=0,z=w.length;M<z;M++)L[M+1]=w[M][1];return L}var wl={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 Ah in wl)wl[Ah.toUpperCase()]=wl[Ah];function pi(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:wl[b]};b==b.toLowerCase()&&(M.relative=!0);for(var z in w[L])M[z]=w[L][z];w[L]=M}return w}if(bt=o(),bt!==e&&C===n.length)return bt;throw bt!==e&&C<n.length&&ct(ud()),hr(_e,Ve<n.length?n.charAt(Ve):null,Ve<n.length?In(Ve,Ve+1):In(Ve,Ve))}Mv.exports={SyntaxError:si,parse:SD}});var oh=En((Cie,Nv)=>{var $u=Iv().parse;$u.parseSVG=$u;$u.makeAbsolute=wD;Nv.exports=$u;function wD(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]: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=r.x,o.y=r.y),e=o}),n}});var RS=En((bpe,LS)=>{LS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);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 $E,Loader as YE}from"three";function Tl(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Ht(n,r){return Object.setPrototypeOf(n,r),n}function Al(n){return Array.isArray(n)?n:[n]}function Ml(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var c1=typeof global=="object"&&global&&global.Object===Object&&global,Il=c1;var u1=typeof self=="object"&&self&&self.Object===Object&&self,d1=Il||u1||Function("return this")(),gt=d1;var p1=gt.Symbol,At=p1;var Mh=Object.prototype,f1=Mh.hasOwnProperty,h1=Mh.toString,hs=At?At.toStringTag:void 0;function m1(n){var r=f1.call(n,hs),e=n[hs];try{n[hs]=void 0;var t=!0}catch{}var o=h1.call(n);return t&&(r?n[hs]=e:delete n[hs]),o}var Ih=m1;var y1=Object.prototype,g1=y1.toString;function x1(n){return g1.call(n)}var Nh=x1;var b1="[object Null]",v1="[object Undefined]",Dh=At?At.toStringTag:void 0;function S1(n){return n==null?n===void 0?v1:b1:Dh&&Dh in Object(n)?Ih(n):Nh(n)}var ar=S1;function w1(n){return n!=null&&typeof n=="object"}var Bt=w1;var P1="[object Symbol]";function O1(n){return typeof n=="symbol"||Bt(n)&&ar(n)==P1}var mi=O1;function C1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Nl=C1;var T1=Array.isArray,ut=T1;var A1=1/0,Eh=At?At.prototype:void 0,_h=Eh?Eh.toString:void 0;function Bh(n){if(typeof n=="string")return n;if(ut(n))return Nl(n,Bh)+"";if(mi(n))return _h?_h.call(n):"";var r=n+"";return r=="0"&&1/n==-A1?"-0":r}var Lh=Bh;function M1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var sr=M1;function I1(n){return n}var Rh=I1;var N1="[object AsyncFunction]",D1="[object Function]",E1="[object GeneratorFunction]",_1="[object Proxy]";function B1(n){if(!sr(n))return!1;var r=ar(n);return r==D1||r==E1||r==N1||r==_1}var Dl=B1;var L1=gt["__core-js_shared__"],El=L1;var Vh=function(){var n=/[^.]+$/.exec(El&&El.keys&&El.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function R1(n){return!!Vh&&Vh in n}var zh=R1;var V1=Function.prototype,z1=V1.toString;function G1(n){if(n!=null){try{return z1.call(n)}catch{}try{return n+""}catch{}}return""}var yo=G1;var j1=/[\\^$.*+?()[\]{}|]/g,F1=/^\[object .+?Constructor\]$/,U1=Function.prototype,k1=Object.prototype,H1=U1.toString,W1=k1.hasOwnProperty,q1=RegExp("^"+H1.call(W1).replace(j1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $1(n){if(!sr(n)||zh(n))return!1;var r=Dl(n)?q1:F1;return r.test(yo(n))}var Gh=$1;function Y1(n,r){return n?.[r]}var jh=Y1;function X1(n,r){var e=jh(n,r);return Gh(e)?e:void 0}var Kt=X1;var K1=Kt(gt,"WeakMap"),_l=K1;var Fh=Object.create,Q1=function(){function n(){}return function(r){if(!sr(r))return{};if(Fh)return Fh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Uh=Q1;function Z1(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var kh=Z1;function J1(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Hh=J1;var ew=800,tw=16,rw=Date.now;function ow(n){var r=0,e=0;return function(){var t=rw(),o=tw-(t-e);if(e=t,o>0){if(++r>=ew)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Wh=ow;function nw(n){return function(){return n}}var qh=nw;var iw=function(){try{var n=Kt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),yi=iw;var aw=yi?function(n,r){return yi(n,"toString",{configurable:!0,enumerable:!1,value:qh(r),writable:!0})}:Rh,$h=aw;var sw=Wh($h),Yh=sw;function lw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Xh=lw;var cw=9007199254740991,uw=/^(?:0|[1-9]\d*)$/;function dw(n,r){var e=typeof n;return r=r??cw,!!r&&(e=="number"||e!="symbol"&&uw.test(n))&&n>-1&&n%1==0&&n<r}var gi=dw;function pw(n,r,e){r=="__proto__"&&yi?yi(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Bl=pw;function fw(n,r){return n===r||n!==n&&r!==r}var xi=fw;var hw=Object.prototype,mw=hw.hasOwnProperty;function yw(n,r,e){var t=n[r];(!(mw.call(n,r)&&xi(t,e))||e===void 0&&!(r in n))&&Bl(n,r,e)}var bi=yw;function gw(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Bl(e,s,l):bi(e,s,l)}return e}var Hr=gw;var Kh=Math.max;function xw(n,r,e){return r=Kh(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Kh(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),kh(n,this,s)}}var Qh=xw;var bw=9007199254740991;function vw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=bw}var vi=vw;function Sw(n){return n!=null&&vi(n.length)&&!Dl(n)}var Ll=Sw;var ww=Object.prototype;function Pw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||ww;return n===e}var Si=Pw;function Ow(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Zh=Ow;var Cw="[object Arguments]";function Tw(n){return Bt(n)&&ar(n)==Cw}var Sd=Tw;var Jh=Object.prototype,Aw=Jh.hasOwnProperty,Mw=Jh.propertyIsEnumerable,Iw=Sd(function(){return arguments}())?Sd:function(n){return Bt(n)&&Aw.call(n,"callee")&&!Mw.call(n,"callee")},wi=Iw;function Nw(){return!1}var em=Nw;var om=typeof exports=="object"&&exports&&!exports.nodeType&&exports,tm=om&&typeof module=="object"&&module&&!module.nodeType&&module,Dw=tm&&tm.exports===om,rm=Dw?gt.Buffer:void 0,Ew=rm?rm.isBuffer:void 0,_w=Ew||em,Bn=_w;var Bw="[object Arguments]",Lw="[object Array]",Rw="[object Boolean]",Vw="[object Date]",zw="[object Error]",Gw="[object Function]",jw="[object Map]",Fw="[object Number]",Uw="[object Object]",kw="[object RegExp]",Hw="[object Set]",Ww="[object String]",qw="[object WeakMap]",$w="[object ArrayBuffer]",Yw="[object DataView]",Xw="[object Float32Array]",Kw="[object Float64Array]",Qw="[object Int8Array]",Zw="[object Int16Array]",Jw="[object Int32Array]",e2="[object Uint8Array]",t2="[object Uint8ClampedArray]",r2="[object Uint16Array]",o2="[object Uint32Array]",et={};et[Xw]=et[Kw]=et[Qw]=et[Zw]=et[Jw]=et[e2]=et[t2]=et[r2]=et[o2]=!0;et[Bw]=et[Lw]=et[$w]=et[Rw]=et[Yw]=et[Vw]=et[zw]=et[Gw]=et[jw]=et[Fw]=et[Uw]=et[kw]=et[Hw]=et[Ww]=et[qw]=!1;function n2(n){return Bt(n)&&vi(n.length)&&!!et[ar(n)]}var nm=n2;function i2(n){return function(r){return n(r)}}var Pi=i2;var im=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ms=im&&typeof module=="object"&&module&&!module.nodeType&&module,a2=ms&&ms.exports===im,wd=a2&&Il.process,s2=function(){try{var n=ms&&ms.require&&ms.require("util").types;return n||wd&&wd.binding&&wd.binding("util")}catch{}}(),go=s2;var am=go&&go.isTypedArray,l2=am?Pi(am):nm,Rl=l2;var c2=Object.prototype,u2=c2.hasOwnProperty;function d2(n,r){var e=ut(n),t=!e&&wi(n),o=!e&&!t&&Bn(n),i=!e&&!t&&!o&&Rl(n),a=e||t||o||i,s=a?Zh(n.length,String):[],l=s.length;for(var c in n)(r||u2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||gi(c,l)))&&s.push(c);return s}var Vl=d2;function p2(n,r){return function(e){return n(r(e))}}var zl=p2;var f2=zl(Object.keys,Object),sm=f2;var h2=Object.prototype,m2=h2.hasOwnProperty;function y2(n){if(!Si(n))return sm(n);var r=[];for(var e in Object(n))m2.call(n,e)&&e!="constructor"&&r.push(e);return r}var lm=y2;function g2(n){return Ll(n)?Vl(n):lm(n)}var Oi=g2;function x2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var cm=x2;var b2=Object.prototype,v2=b2.hasOwnProperty;function S2(n){if(!sr(n))return cm(n);var r=Si(n),e=[];for(var t in n)t=="constructor"&&(r||!v2.call(n,t))||e.push(t);return e}var um=S2;function w2(n){return Ll(n)?Vl(n,!0):um(n)}var Ci=w2;var P2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O2=/^\w*$/;function C2(n,r){if(ut(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||mi(n)?!0:O2.test(n)||!P2.test(n)||r!=null&&n in Object(r)}var dm=C2;var T2=Kt(Object,"create"),xo=T2;function A2(){this.__data__=xo?xo(null):{},this.size=0}var pm=A2;function M2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var fm=M2;var I2="__lodash_hash_undefined__",N2=Object.prototype,D2=N2.hasOwnProperty;function E2(n){var r=this.__data__;if(xo){var e=r[n];return e===I2?void 0:e}return D2.call(r,n)?r[n]:void 0}var hm=E2;var _2=Object.prototype,B2=_2.hasOwnProperty;function L2(n){var r=this.__data__;return xo?r[n]!==void 0:B2.call(r,n)}var mm=L2;var R2="__lodash_hash_undefined__";function V2(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xo&&r===void 0?R2:r,this}var ym=V2;function Ti(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ti.prototype.clear=pm;Ti.prototype.delete=fm;Ti.prototype.get=hm;Ti.prototype.has=mm;Ti.prototype.set=ym;var Pd=Ti;function z2(){this.__data__=[],this.size=0}var gm=z2;function G2(n,r){for(var e=n.length;e--;)if(xi(n[e][0],r))return e;return-1}var Ho=G2;var j2=Array.prototype,F2=j2.splice;function U2(n){var r=this.__data__,e=Ho(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():F2.call(r,e,1),--this.size,!0}var xm=U2;function k2(n){var r=this.__data__,e=Ho(r,n);return e<0?void 0:r[e][1]}var bm=k2;function H2(n){return Ho(this.__data__,n)>-1}var vm=H2;function W2(n,r){var e=this.__data__,t=Ho(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Sm=W2;function Ai(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ai.prototype.clear=gm;Ai.prototype.delete=xm;Ai.prototype.get=bm;Ai.prototype.has=vm;Ai.prototype.set=Sm;var Wo=Ai;var q2=Kt(gt,"Map"),qo=q2;function $2(){this.size=0,this.__data__={hash:new Pd,map:new(qo||Wo),string:new Pd}}var wm=$2;function Y2(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Pm=Y2;function X2(n,r){var e=n.__data__;return Pm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var $o=X2;function K2(n){var r=$o(this,n).delete(n);return this.size-=r?1:0,r}var Om=K2;function Q2(n){return $o(this,n).get(n)}var Cm=Q2;function Z2(n){return $o(this,n).has(n)}var Tm=Z2;function J2(n,r){var e=$o(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Am=J2;function Mi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Mi.prototype.clear=wm;Mi.prototype.delete=Om;Mi.prototype.get=Cm;Mi.prototype.has=Tm;Mi.prototype.set=Am;var Ln=Mi;var eP="Expected a function";function Od(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(eP);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(Od.Cache||Ln),e}Od.Cache=Ln;var Mm=Od;var tP=500;function rP(n){var r=Mm(n,function(t){return e.size===tP&&e.clear(),t}),e=r.cache;return r}var Im=rP;var oP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nP=/\\(\\)?/g,iP=Im(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(oP,function(e,t,o,i){r.push(o?i.replace(nP,"$1"):t||e)}),r}),Nm=iP;function aP(n){return n==null?"":Lh(n)}var Dm=aP;function sP(n,r){return ut(n)?n:dm(n,r)?[n]:Nm(Dm(n))}var mr=sP;var lP=1/0;function cP(n){if(typeof n=="string"||mi(n))return n;var r=n+"";return r=="0"&&1/n==-lP?"-0":r}var Yo=cP;function uP(n,r){r=mr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Yo(r[e++])];return e&&e==t?n:void 0}var Gl=uP;function dP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Ii=dP;var Em=At?At.isConcatSpreadable:void 0;function pP(n){return ut(n)||wi(n)||!!(Em&&n&&n[Em])}var _m=pP;function Bm(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=_m),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Bm(s,r-1,e,t,o):Ii(o,s):t||(o[o.length]=s)}return o}var Lm=Bm;function fP(n){var r=n==null?0:n.length;return r?Lm(n,1):[]}var Rm=fP;function hP(n){return Yh(Qh(n,void 0,Rm),n+"")}var jl=hP;var mP=zl(Object.getPrototypeOf,Object),Ni=mP;var yP="[object Object]",gP=Function.prototype,xP=Object.prototype,Vm=gP.toString,bP=xP.hasOwnProperty,vP=Vm.call(Object);function SP(n){if(!Bt(n)||ar(n)!=yP)return!1;var r=Ni(n);if(r===null)return!0;var e=bP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Vm.call(e)==vP}var zm=SP;function wP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Gm=wP;function PP(){this.__data__=new Wo,this.size=0}var jm=PP;function OP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Fm=OP;function CP(n){return this.__data__.get(n)}var Um=CP;function TP(n){return this.__data__.has(n)}var km=TP;var AP=200;function MP(n,r){var e=this.__data__;if(e instanceof Wo){var t=e.__data__;if(!qo||t.length<AP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Ln(t)}return e.set(n,r),this.size=e.size,this}var Hm=MP;function Di(n){var r=this.__data__=new Wo(n);this.size=r.size}Di.prototype.clear=jm;Di.prototype.delete=Fm;Di.prototype.get=Um;Di.prototype.has=km;Di.prototype.set=Hm;var Ei=Di;function IP(n,r){return n&&Hr(r,Oi(r),n)}var Wm=IP;function NP(n,r){return n&&Hr(r,Ci(r),n)}var qm=NP;var Km=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$m=Km&&typeof module=="object"&&module&&!module.nodeType&&module,DP=$m&&$m.exports===Km,Ym=DP?gt.Buffer:void 0,Xm=Ym?Ym.allocUnsafe:void 0;function EP(n,r){if(r)return n.slice();var e=n.length,t=Xm?Xm(e):new n.constructor(e);return n.copy(t),t}var Qm=EP;function _P(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Zm=_P;function BP(){return[]}var Fl=BP;var LP=Object.prototype,RP=LP.propertyIsEnumerable,Jm=Object.getOwnPropertySymbols,VP=Jm?function(n){return n==null?[]:(n=Object(n),Zm(Jm(n),function(r){return RP.call(n,r)}))}:Fl,_i=VP;function zP(n,r){return Hr(n,_i(n),r)}var ey=zP;var GP=Object.getOwnPropertySymbols,jP=GP?function(n){for(var r=[];n;)Ii(r,_i(n)),n=Ni(n);return r}:Fl,Ul=jP;function FP(n,r){return Hr(n,Ul(n),r)}var ty=FP;function UP(n,r,e){var t=r(n);return ut(n)?t:Ii(t,e(n))}var kl=UP;function kP(n){return kl(n,Oi,_i)}var ys=kP;function HP(n){return kl(n,Ci,Ul)}var Hl=HP;var WP=Kt(gt,"DataView"),Wl=WP;var qP=Kt(gt,"Promise"),ql=qP;var $P=Kt(gt,"Set"),$l=$P;var ry="[object Map]",YP="[object Object]",oy="[object Promise]",ny="[object Set]",iy="[object WeakMap]",ay="[object DataView]",XP=yo(Wl),KP=yo(qo),QP=yo(ql),ZP=yo($l),JP=yo(_l),Rn=ar;(Wl&&Rn(new Wl(new ArrayBuffer(1)))!=ay||qo&&Rn(new qo)!=ry||ql&&Rn(ql.resolve())!=oy||$l&&Rn(new $l)!=ny||_l&&Rn(new _l)!=iy)&&(Rn=function(n){var r=ar(n),e=r==YP?n.constructor:void 0,t=e?yo(e):"";if(t)switch(t){case XP:return ay;case KP:return ry;case QP:return oy;case ZP:return ny;case JP:return iy}return r});var bo=Rn;var eO=Object.prototype,tO=eO.hasOwnProperty;function rO(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&tO.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var sy=rO;var oO=gt.Uint8Array,Bi=oO;function nO(n){var r=new n.constructor(n.byteLength);return new Bi(r).set(new Bi(n)),r}var Li=nO;function iO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ly=iO;var aO=/\w*$/;function sO(n){var r=new n.constructor(n.source,aO.exec(n));return r.lastIndex=n.lastIndex,r}var cy=sO;var uy=At?At.prototype:void 0,dy=uy?uy.valueOf:void 0;function lO(n){return dy?Object(dy.call(n)):{}}var py=lO;function cO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var fy=cO;var uO="[object Boolean]",dO="[object Date]",pO="[object Map]",fO="[object Number]",hO="[object RegExp]",mO="[object Set]",yO="[object String]",gO="[object Symbol]",xO="[object ArrayBuffer]",bO="[object DataView]",vO="[object Float32Array]",SO="[object Float64Array]",wO="[object Int8Array]",PO="[object Int16Array]",OO="[object Int32Array]",CO="[object Uint8Array]",TO="[object Uint8ClampedArray]",AO="[object Uint16Array]",MO="[object Uint32Array]";function IO(n,r,e){var t=n.constructor;switch(r){case xO:return Li(n);case uO:case dO:return new t(+n);case bO:return ly(n,e);case vO:case SO:case wO:case PO:case OO:case CO:case TO:case AO:case MO:return fy(n,e);case pO:return new t;case fO:case yO:return new t(n);case hO:return cy(n);case mO:return new t;case gO:return py(n)}}var hy=IO;function NO(n){return typeof n.constructor=="function"&&!Si(n)?Uh(Ni(n)):{}}var my=NO;var DO="[object Map]";function EO(n){return Bt(n)&&bo(n)==DO}var yy=EO;var gy=go&&go.isMap,_O=gy?Pi(gy):yy,xy=_O;var BO="[object Set]";function LO(n){return Bt(n)&&bo(n)==BO}var by=LO;var vy=go&&go.isSet,RO=vy?Pi(vy):by,Sy=RO;var VO=1,zO=2,GO=4,wy="[object Arguments]",jO="[object Array]",FO="[object Boolean]",UO="[object Date]",kO="[object Error]",Py="[object Function]",HO="[object GeneratorFunction]",WO="[object Map]",qO="[object Number]",Oy="[object Object]",$O="[object RegExp]",YO="[object Set]",XO="[object String]",KO="[object Symbol]",QO="[object WeakMap]",ZO="[object ArrayBuffer]",JO="[object DataView]",eC="[object Float32Array]",tC="[object Float64Array]",rC="[object Int8Array]",oC="[object Int16Array]",nC="[object Int32Array]",iC="[object Uint8Array]",aC="[object Uint8ClampedArray]",sC="[object Uint16Array]",lC="[object Uint32Array]",Ze={};Ze[wy]=Ze[jO]=Ze[ZO]=Ze[JO]=Ze[FO]=Ze[UO]=Ze[eC]=Ze[tC]=Ze[rC]=Ze[oC]=Ze[nC]=Ze[WO]=Ze[qO]=Ze[Oy]=Ze[$O]=Ze[YO]=Ze[XO]=Ze[KO]=Ze[iC]=Ze[aC]=Ze[sC]=Ze[lC]=!0;Ze[kO]=Ze[Py]=Ze[QO]=!1;function Yl(n,r,e,t,o,i){var a,s=r&VO,l=r&zO,c=r&GO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!sr(n))return n;var u=ut(n);if(u){if(a=sy(n),!s)return Hh(n,a)}else{var p=bo(n),d=p==Py||p==HO;if(Bn(n))return Qm(n,s);if(p==Oy||p==wy||d&&!o){if(a=l||d?{}:my(n),!s)return l?ty(n,qm(a,n)):ey(n,Wm(a,n))}else{if(!Ze[p])return o?n:{};a=hy(n,p,s)}}i||(i=new Ei);var h=i.get(n);if(h)return h;i.set(n,a),Sy(n)?n.forEach(function(y){a.add(Yl(y,r,e,y,n,i))}):xy(n)&&n.forEach(function(y,g){a.set(g,Yl(y,r,e,g,n,i))});var f=c?l?Hl:ys:l?Ci:Oi,m=u?void 0:f(n);return Xh(m||n,function(y,g){m&&(g=y,y=n[g]),bi(a,g,Yl(y,r,e,g,n,i))}),a}var Xl=Yl;var cC=1,uC=4;function dC(n){return Xl(n,cC|uC)}var vo=dC;var pC="__lodash_hash_undefined__";function fC(n){return this.__data__.set(n,pC),this}var Cy=fC;function hC(n){return this.__data__.has(n)}var Ty=hC;function Kl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Ln;++r<e;)this.add(n[r])}Kl.prototype.add=Kl.prototype.push=Cy;Kl.prototype.has=Ty;var Ay=Kl;function mC(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var My=mC;function yC(n,r){return n.has(r)}var Iy=yC;var gC=1,xC=2;function bC(n,r,e,t,o,i){var a=e&gC,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,h=e&xC?new Ay:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var f=n[p],m=r[p];if(t)var y=a?t(m,f,p,r,n,i):t(f,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(h){if(!My(r,function(g,v){if(!Iy(h,v)&&(f===g||o(f,g,e,t,i)))return h.push(v)})){d=!1;break}}else if(!(f===m||o(f,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Ql=bC;function vC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Ny=vC;function SC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Dy=SC;var wC=1,PC=2,OC="[object Boolean]",CC="[object Date]",TC="[object Error]",AC="[object Map]",MC="[object Number]",IC="[object RegExp]",NC="[object Set]",DC="[object String]",EC="[object Symbol]",_C="[object ArrayBuffer]",BC="[object DataView]",Ey=At?At.prototype:void 0,Cd=Ey?Ey.valueOf:void 0;function LC(n,r,e,t,o,i,a){switch(e){case BC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case _C:return!(n.byteLength!=r.byteLength||!i(new Bi(n),new Bi(r)));case OC:case CC:case MC:return xi(+n,+r);case TC:return n.name==r.name&&n.message==r.message;case IC:case DC:return n==r+"";case AC:var s=Ny;case NC:var l=t&wC;if(s||(s=Dy),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=PC,a.set(n,r);var u=Ql(s(n),s(r),t,o,i,a);return a.delete(n),u;case EC:if(Cd)return Cd.call(n)==Cd.call(r)}return!1}var _y=LC;var RC=1,VC=Object.prototype,zC=VC.hasOwnProperty;function GC(n,r,e,t,o,i){var a=e&RC,s=ys(n),l=s.length,c=ys(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:zC.call(r,d)))return!1}var h=i.get(n),f=i.get(r);if(h&&f)return h==r&&f==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var g=n[d],v=r[d];if(t)var P=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(P===void 0?g===v||o(g,v,e,t,i):P)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=n.constructor,S=r.constructor;O!=S&&"constructor"in n&&"constructor"in r&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var By=GC;var jC=1,Ly="[object Arguments]",Ry="[object Array]",Zl="[object Object]",FC=Object.prototype,Vy=FC.hasOwnProperty;function UC(n,r,e,t,o,i){var a=ut(n),s=ut(r),l=a?Ry:bo(n),c=s?Ry:bo(r);l=l==Ly?Zl:l,c=c==Ly?Zl:c;var u=l==Zl,p=c==Zl,d=l==c;if(d&&Bn(n)){if(!Bn(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Ei),a||Rl(n)?Ql(n,r,e,t,o,i):_y(n,r,l,e,t,o,i);if(!(e&jC)){var h=u&&Vy.call(n,"__wrapped__"),f=p&&Vy.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Ei),o(m,y,e,t,i)}}return d?(i||(i=new Ei),By(n,r,e,t,o,i)):!1}var zy=UC;function Gy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Bt(n)&&!Bt(r)?n!==n&&r!==r:zy(n,r,e,t,Gy,o)}var jy=Gy;function kC(n,r){return n!=null&&r in Object(n)}var Fy=kC;function HC(n,r,e){r=mr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Yo(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&vi(o)&&gi(a,o)&&(ut(n)||wi(n)))}var Uy=HC;function WC(n,r){return n!=null&&Uy(n,r,Fy)}var ky=WC;function qC(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Hy=qC;function $C(n,r){return r.length<2?n:Gl(n,Gm(r,0,-1))}var Wy=$C;function YC(n,r){return jy(n,r)}var Td=YC;function XC(n,r){return r=mr(r,n),n=Wy(n,r),n==null||delete n[Yo(Hy(r))]}var qy=XC;function KC(n){return zm(n)?void 0:n}var $y=KC;var QC=1,ZC=2,JC=4,eT=jl(function(n,r){var e={};if(n==null)return e;var t=!1;r=Nl(r,function(i){return i=mr(i,n),t||(t=i.length>1),i}),Hr(n,Hl(n),e),t&&(e=Xl(e,QC|ZC|JC,$y));for(var o=r.length;o--;)qy(e,r[o]);return e}),Ri=eT;function tT(n,r,e,t){if(!sr(n))return n;r=mr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=Yo(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=sr(u)?u:gi(r[o+1])?[]:{})}bi(s,l,c),s=s[l]}return n}var Yy=tT;function rT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Gl(n,a);e(s,a)&&Yy(i,mr(a,n),s)}return i}var Xy=rT;function oT(n,r){return Xy(n,r,function(e,t){return ky(n,t)})}var Ky=oT;var nT=jl(function(n,r){return n==null?{}:Ky(n,r)}),Mr=nT;var xe=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,xe.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,xe.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,xe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function gs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&gs(t)}return Object.freeze(n)}function Qy(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Vi=class extends Error{};function Jl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Wr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function zi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Zy(){return typeof process<"u"}function Jy(n,r){for(let e of n)r(e.id,e.data)!==!0&&Jy(e.children,r)}function eg(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)eg(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);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,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)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,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&eg(o,t)}}traverse(e){Jy(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),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:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,Ke.prototype);let a=i;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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:a,children:s};return c=[...c,u],c.sort((d,h)=>d.fi-h.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let h=t;for(;h!==null;){if(h===void 0)throw new Error;if(h===i)throw new Vi("cyclic tree");h=this.parent(h)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(h=>h.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((h,f)=>h.fi-f.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Qy(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Wr(0,o,o);{let a=i[0].fi;return Wr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Wr(l,l+o,o)}else return Wr(a.fi,s.fi,o)}}};var Gi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},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");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Gi||(Gi={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ve.prototype);let t=e;return Zy()||t.fillCaches(),t}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:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};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:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Wr(0,t,t);{let i=o[0].fi;return Wr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Wr(s,s+t,t)}else return Wr(i.fi,a.fi,t)}}};function ji(n){return n&&typeof n=="object"&&n instanceof Qe}var Qe=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ji(t))return null;o+=1}t=t?Jl(t):new Qe;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=Jl(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Jl(l);c[r.path[o-1]]=t,t=c}else{let c=new Qe;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,Qe.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},qr;(t=>{function n(o,i){return xs(o,i)??o}t.apply=n;function r(o,i){return Md(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!ji(l))return;a+=1}if(l===void 0)return i;if(!!ji(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=Ad([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(qr||(qr={}));function Ad(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Ad(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function iT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function xs(n,r){if(!ji(r))return r;if(n instanceof Ke){let e=Ad(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return iT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=xs(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Qe)return Md(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=xs(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Md(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ji(r))return r;if(!ji(n))return qr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Qe;for(let o of e){let i=Md(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function tg(n,r){let e={cur:[],result:[],len:0};return n=bs(n,r,e)??n,[n,e.result]}function ec(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function tc(n){n&&(n.len-=1)}function aT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function rg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));tc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=rg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function sT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));return tc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function bs(n,r,e){if(n instanceof Ke){let t=rg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return sT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=bs(i,r,ec(e,a));return tc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!zi(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=bs(a,r,ec(e,i));tc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&aT(e),t}else return}}var Fi;(r=>{function n(e,t){let o=ot.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Fi||(Fi={}));var nt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof Qe&&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 Ke||l instanceof ve||l instanceof xe?d=l.runOp(c):d=Gi.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let g=u[y],v=p[y];if(v instanceof Ke){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof ve){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof xe){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Qe){let P={...v,[g]:m};m=Object.setPrototypeOf(P,Qe.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let P=m;m=[...v],m[g]=P}else m={...v,[g]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let h=u[p.length],f;if(l instanceof Ke){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof ve){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else l!==null&&(f=l[h]);if(f!==void 0)p.push(l),l=f;else return null}}s.apply=e;function t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;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 i(l,c){return t(l.path,c.path)}s.commutative=i;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})(nt||(nt={}));var vs;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[h,...f]=d.path;h===u&&p.push({...d,path:f})}return p}l.removePrefix=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(h=>nt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>nt.commutative(p,d)))}l.commutative=i;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=[],h=[];for(let f of u)try{if(f.type===3||f.type===5&&f.path[f.path.length-1]==="variables"){let m,y,g;if(f.type===3?(m=ot.zoom(p,[...f.path,f.id]),g=nt.apply(p,{...f,type:2})):(m=ot.zoom(p,[...f.path,f.id,"value"]),g=nt.apply(p,f)),g!==null){p=g.data;let[v,P]=tg(p,{[f.id]:m});p=v;for(let O=0;O<P.length;O++){let S=P[O],T=S.pop();if(typeof T=="number"){let A=[T];for(let E=O+1;E<P.length;E++){let N=P[E],I=N[N.length-1];if(typeof I=="number"&&ot.equal(S,N.slice(0,N.length-1)))A.push(I),P.splice(E,1);else break}let x=ot.zoom(p,S);y=x.map((E,N)=>A.includes(N)?f.id:E),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let A=m,x=ot.zoom(p,S.slice(0,S.length-2)),E=x.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:A}}:N);Object.setPrototypeOf(E,Object.getPrototypeOf(x.layers)),x.layers=E}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=nt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof Vi)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(vs||(vs={}));var og=Symbol(),lT=Symbol(),oc=Symbol(),Vn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof rc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[oc];t&&t(),delete this._children[r]}}}},Nd=class extends Vn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Gi.runOp(this._current,r),r.path)}},Dd=class extends Vn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,xe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},ng={get(n,r){if(r===oc)return()=>{n._parent=null};if(r===og)return n._current;if(r===lT)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=nc(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},cT={...ng,set(n,r,e){let t={type:0,props:{[r]:it(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},uT={...ng,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Ui=class extends Vn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ki=class extends Vn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Id(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ot.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var rc=class extends Vn{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Id(this.ts,e,r),Id(this.actual,t,r),Id(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function nc(n,r,e){return e instanceof Ke?new Ui(n,r,e):e instanceof ve?new ki(n,r,e):e instanceof xe?new Proxy(new Dd(n,r,e),uT):e!==null&&typeof e=="object"?zi(e)?e:new Proxy(new Nd(n,r,e),cT):e}function Ed(n){let r=new rc(n);return[nc(r,"",n),r]}function Xo(n,r){let[e,t]=Ed(n);return r(e),t.result()}function it(n){return n instanceof Ui||n instanceof ki?n._current:n!==null&&typeof n=="object"?n[og]:n}var ot;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);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=r;function e(i,a){if((i instanceof Ke||i instanceof Ui)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ki)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ot||(ot={}));function ig(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Le(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var ic=class{},Ss=class extends ic{constructor(e){super();this.id=e}},ws=class extends ic{constructor(e){super();this.data=e}};var Bd;try{Bd=new TextDecoder}catch{}var de,Qo,G=0;var fg=[],Ld=fg,Rd=0,Qt={},ke,Ko,yr=0,$r=0,lr,So,Wt=[],We,ag={useRecords:!1,mapsAsObjects:!0},Ps=class{},zd=new Ps;zd.name="MessagePack 0xC1";var Hi=!1,Yr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return xg(()=>(sc(),this?this.unpack(r,e):Yr.prototype.unpack.call(ag,r,e)));Qo=e>-1?e:r.length,G=0,Rd=0,$r=0,Ko=null,Ld=fg,lr=null,de=r;try{We=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Yr){if(Qt=this,this.structures)return ke=this.structures,ac();(!ke||ke.length>0)&&(ke=[])}else Qt=ag,(!ke||ke.length>0)&&(ke=[]);return ac()}unpackMultiple(r,e){let t,o=0;try{Hi=!0;let i=r.length,a=this?this.unpack(r,i):uc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(ac())===!1)return}else{for(t=[a];G<i;)o=G,t.push(ac());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Hi=!1,sc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function ac(){try{if(!Qt.trusted&&!Hi){let r=ke.sharedLength||0;r<ke.length&&(ke.length=r)}let n=dt();if(G==Qo)ke.restoreStructures&&sg(),ke=null,de=null,So&&(So=null);else if(G>Qo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Hi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ke.restoreStructures&&sg(),sc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function sg(){for(let n in ke.restoreStructures)ke[n]=ke.restoreStructures[n];ke.restoreStructures=null}function dt(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=ke[n&63]||Qt.getStructures&&hg()[n&63];return r?(r.read||(r.read=Gd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Qt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[yg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}else if(n<192){let r=n-160;if($r>=G)return Ko.slice(G-yr,(G+=r)-yr);if($r==0&&Qo<140){let e=r<16?jd(r):mg(r);if(e!=null)return e}return Vd(r)}else{let r;switch(n){case 192:return null;case 193:return lr?(r=dt(),r>0?lr[1].slice(lr.position1,lr.position1+=r):lr[0].slice(lr.position0,lr.position0-=r)):zd;case 194:return!1;case 195:return!0;case 196:return _d(de[G++]);case 197:return r=We.getUint16(G),G+=2,_d(r);case 198:return r=We.getUint32(G),G+=4,_d(r);case 199:return zn(de[G++]);case 200:return r=We.getUint16(G),G+=2,zn(r);case 201:return r=We.getUint32(G),G+=4,zn(r);case 202:if(r=We.getFloat32(G),Qt.useFloat32>2){let e=cc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=We.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=We.getUint16(G),G+=2,r;case 206:return r=We.getUint32(G),G+=4,r;case 207:return Qt.int64AsNumber?(r=We.getUint32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigUint64(G),G+=8,r;case 208:return We.getInt8(G++);case 209:return r=We.getInt16(G),G+=2,r;case 210:return r=We.getInt32(G),G+=4,r;case 211:return Qt.int64AsNumber?(r=We.getInt32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return pg(de[G++]&63);{let e=Wt[r];if(e)return e.read?(G++,e.read(dt())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,pg(de[G++]&63,de[G++])):zn(2);case 214:return zn(4);case 215:return zn(8);case 216:return zn(16);case 217:return r=de[G++],$r>=G?Ko.slice(G-yr,(G+=r)-yr):pT(r);case 218:return r=We.getUint16(G),G+=2,$r>=G?Ko.slice(G-yr,(G+=r)-yr):fT(r);case 219:return r=We.getUint32(G),G+=4,$r>=G?Ko.slice(G-yr,(G+=r)-yr):hT(r);case 220:return r=We.getUint16(G),G+=2,cg(r);case 221:return r=We.getUint32(G),G+=4,cg(r);case 222:return r=We.getUint16(G),G+=2,ug(r);case 223:return r=We.getUint32(G),G+=4,ug(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var dT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Gd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>dT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(dt);return n.highByte===0&&(n.read=lg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=dt()}return t}return e.count=0,n.highByte===0?lg(r,e):e}var lg=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=ke[t]||hg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Gd(o,n)),o.read()};function hg(){let n=xg(()=>(de=null,Qt.getStructures()));return ke=Qt._mergeStructures(n,ke)}var Vd=lc,pT=lc,fT=lc,hT=lc;function lc(n){let r;if(n<16&&(r=jd(n)))return r;if(n>64&&Bd)return Bd.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=Mt.apply(String,t),t.length=0)}return t.length>0&&(r+=Mt.apply(String,t)),r}function cg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}function ug(n){if(Qt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[yg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}}var Mt=String.fromCharCode;function mg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return Mt.apply(String,e)}function jd(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return Mt(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return Mt(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return Mt(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Mt(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Mt(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Mt(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Mt(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Mt(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return Mt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return Mt(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return Mt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return Mt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[G++],f=de[G++];if((h&128)>0||(f&128)>0){G-=14;return}if(n<15)return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[G++];if((m&128)>0){G-=15;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function _d(n){return Qt.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function zn(n){let r=de[G++];if(Wt[r])return Wt[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var dg=new Array(4096);function yg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,$r>=G)return Ko.slice(G-yr,(G+=n)-yr);if(!($r==0&&Qo<180))return Vd(n)}else return G--,dt();let r=(n<<5^(n>1?We.getUint16(G):n>0?de[G]:0))&4095,e=dg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=We.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],dg[r]=e,e.bytes=n;t<o;)i=We.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?jd(n):mg(n);return s!=null?e.string=s:e.string=Vd(n)}var pg=(n,r)=>{var e=dt();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=ke[n];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[n]=o),ke[n]=e,e.read=Gd(e,t),e.read()},gg=typeof self=="object"?self:global;Wt[0]=()=>{};Wt[0].noBuffer=!0;Wt[101]=()=>{let n=dt();return(gg[n[0]]||Error)(n[1])};Wt[105]=n=>{let r=We.getUint32(G-4);So||(So=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};So.set(r,o);let i=dt();return o.used?Object.assign(t,i):(o.target=i,i)};Wt[112]=n=>{let r=We.getUint32(G-4),e=So.get(r);return e.used=!0,e.target};Wt[115]=()=>new Set(dt());var Fd=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Wt[116]=n=>{let r=n[0],e=Fd[r];if(!e)throw new Error("Could not find typed array for code "+r);return new gg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Wt[120]=()=>{let n=dt();return new RegExp(n[0],n[1])};Wt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,lr=[dt(),dt()],lr.position0=0,lr.position1=0;let t=G;G=e;try{return dt()}finally{G=t}};Wt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function xg(n){let r=Qo,e=G,t=Rd,o=yr,i=$r,a=Ko,s=Ld,l=So,c=lr,u=new Uint8Array(de.slice(0,Qo)),p=ke,d=ke.slice(0,ke.length),h=Qt,f=Hi,m=n();return Qo=r,G=e,Rd=t,yr=o,$r=i,Ko=a,Ld=s,So=l,lr=c,de=u,Hi=f,ke=p,ke.splice(0,ke.length,...d),Qt=h,We=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function sc(){de=null,So=null,ke=null}function bg(n){n.unpack?Wt[n.type]=n.unpack:Wt[n.type]=n}var cc=new Array(147);for(let n=0;n<256;n++)cc[n]=+("1e"+Math.floor(45.15-n*.30103));var uc=new Yr({useRecords:!1}),mT=uc.unpack,yT=uc.unpackMultiple,gT=uc.unpack,dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},xT=new Float32Array(1),fU=new Uint8Array(xT.buffer,0,4);var pc;try{pc=new TextEncoder}catch{}var fc,kd,hc=typeof Buffer<"u",Ud=hc?Buffer.allocUnsafeSlow:Uint8Array,Pg=hc?Buffer:Uint8Array,vg=hc?4294967296:2144337920,Y,ft,k=0,Xr,Kr=null,bT=/[\u0080-\uFFFF]/,Os=Symbol("record-id"),Gn=class extends Yr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Pg.prototype.utf8Write?function(x,E,N){return Y.utf8Write(x,E,N)}:pc&&pc.encodeInto?function(x,E){return pc.encodeInto(x,Y.subarray(E)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,O=0;this.pack=this.encode=function(x,E){if(Y||(Y=new Ud(8192),ft=new DataView(Y.buffer,0,8192),k=0),Xr=Y.length-10,Xr-k<2048?(Y=new Ud(Y.length),ft=new DataView(Y.buffer,0,Y.length),Xr=Y.length-10,k=0):k=k+7&2147483640,t=k,s=u.structuredClone?new Map:null,u.bundleStrings?(Kr=["",""],Y[k++]=214,Y[k++]=98,Kr.position=k-t,k+=4):Kr=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>h)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 D=o[I];if(!D)continue;let _,B=o.transitions;for(let V=0,U=D.length;V<U;V++){let R=D[V];_=B[R],_||(_=B[R]=Object.create(null)),B=_}B[Os]=I+64}l=N}p||(o.nextId=N+64)}i&&(i=!1),a=o||[];try{if(S(x),Kr){ft.setUint32(Kr.position+t,k-Kr.position-t);let N=Kr;Kr=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>Xr&&A(k),u.offset=k;let N=ST(Y.subarray(t,k),s.idsToInsert);return s=null,N}return E&Cg?(Y.start=t,Y.end=k,Y):Y.subarray(t,k)}finally{if(o){if(O<10&&O++,P>1e4)o.transitions=null,O=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Os]=0;v=[]}if(i&&u.saveStructures){let N=o.sharedLength||h;o.length>N&&(o=o.slice(0,N));let I=Y.subarray(t,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=N,I)}}E&MT&&(k=t)}};let S=x=>{k>Xr&&(Y=A(k));var E=typeof x,N;if(E==="string"){let I=x.length;if(Kr&&I>=8&&I<4096){let B=bT.test(x);Kr[B?0:1]+=x,Y[k++]=193,S(B?-I:I);return}let D;I<32?D=1:I<256?D=2:I<65536?D=3:D=5;let _=I*3;if(k+_>Xr&&(Y=A(k+_)),I<64||!c){let B,V,U,R=k+D;for(B=0;B<I;B++)V=x.charCodeAt(B),V<128?Y[R++]=V:V<2048?(Y[R++]=V>>6|192,Y[R++]=V&63|128):(V&64512)===55296&&((U=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),B++,Y[R++]=V>>18|240,Y[R++]=V>>12&63|128,Y[R++]=V>>6&63|128,Y[R++]=V&63|128):(Y[R++]=V>>12|224,Y[R++]=V>>6&63|128,Y[R++]=V&63|128);N=R-k-D}else N=c(x,k+D,_);N<32?Y[k++]=160|N:N<256?(D<2&&Y.copyWithin(k+2,k+1,k+1+N),Y[k++]=217,Y[k++]=N):N<65536?(D<3&&Y.copyWithin(k+3,k+2,k+2+N),Y[k++]=218,Y[k++]=N>>8,Y[k++]=N&255):(D<5&&Y.copyWithin(k+5,k+3,k+3+N),Y[k++]=219,ft.setUint32(k,N),k+=4),k+=N}else if(E==="number")if(x>>>0===x)x<64?Y[k++]=x:x<256?(Y[k++]=204,Y[k++]=x):x<65536?(Y[k++]=205,Y[k++]=x>>8,Y[k++]=x&255):(Y[k++]=206,ft.setUint32(k,x),k+=4);else if(x>>0===x)x>=-32?Y[k++]=256+x:x>=-128?(Y[k++]=208,Y[k++]=x+256):x>=-32768?(Y[k++]=209,ft.setInt16(k,x),k+=2):(Y[k++]=210,ft.setInt32(k,x),k+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Y[k++]=202,ft.setFloat32(k,x);let D;if(I<4||(D=x*cc[(Y[k]&127)<<1|Y[k+1]>>7])>>0===D){k+=4;return}else k--}Y[k++]=203,ft.setFloat64(k,x),k+=8}else if(E==="object")if(!x)Y[k++]=192;else{if(s){let D=s.get(x);if(D){if(!D.id){let _=s.idsToInsert||(s.idsToInsert=[]);D.id=_.push(D)}Y[k++]=214,Y[k++]=112,ft.setUint32(k,D.id),k+=4;return}else s.set(x,{offset:k-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){N=x.length,N<16?Y[k++]=144|N:N<65536?(Y[k++]=220,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=221,ft.setUint32(k,N),k+=4);for(let D=0;D<N;D++)S(x[D])}else if(I===Map){N=x.size,N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ft.setUint32(k,N),k+=4);for(let[D,_]of x)S(D),S(_)}else{for(let D=0,_=fc.length;D<_;D++){let B=kd[D];if(x instanceof B){let V=fc[D];if(V.write){V.type&&(Y[k++]=212,Y[k++]=V.type,Y[k++]=0),S(V.write.call(this,x));return}let U=Y,R=ft,W=k;Y=null;let j;try{j=V.pack.call(this,x,F=>(Y=U,U=null,k+=F,k>Xr&&A(k),{target:Y,targetView:ft,position:k-F}),S)}finally{U&&(Y=U,ft=R,k=W,Xr=Y.length-10)}j&&(j.length+k>Xr&&A(j.length+k),k=vT(j,Y,k,V.type));return}}T(x,!x.hasOwnProperty)}}else if(E==="boolean")Y[k++]=x?195:194;else if(E==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Y[k++]=211,ft.setBigInt64(k,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Y[k++]=207,ft.setBigUint64(k,x);else if(this.largeBigIntToFloat)Y[k++]=203,ft.setFloat64(k,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(E==="undefined")this.encodeUndefinedAsNil?Y[k++]=192:(Y[k++]=212,Y[k++]=0,Y[k++]=0);else if(E==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+E)},T=this.useRecords===!1?this.variableMapSize?x=>{let E=Object.keys(x),N=E.length;N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ft.setUint32(k,N),k+=4);let I;for(let D=0;D<N;D++)S(I=E[D]),S(x[I])}:(x,E)=>{Y[k++]=222;let N=k-t;k+=2;let I=0;for(let D in x)(E||x.hasOwnProperty(D))&&(S(D),S(x[D]),I++);Y[N+++t]=I>>8,Y[N+t]=I&255}:x=>{let E=Object.keys(x),N,I=a.transitions||(a.transitions=Object.create(null)),D=0;for(let B=0,V=E.length;B<V;B++){let U=E[B];N=I[U],N||(N=I[U]=Object.create(null),D++),I=N}let _=I[Os];if(_)_>=96&&m?(Y[k++]=((_-=96)&31)+96,Y[k++]=_>>5):Y[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(E)?(_=a.nextOwnId,_<g||(_=y),a.nextOwnId=_+1):(_>=g&&(_=y),a.nextId=_+1);let B=E.highByte=_>=96&&m?_-96>>5:-1;I[Os]=_,a[_-64]=E,_<y?(E.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[k++]=(_&31)+96,Y[k++]=B):Y[k++]=_):(B>=0?(Y[k++]=213,Y[k++]=114,Y[k++]=(_&31)+96,Y[k++]=B):(Y[k++]=212,Y[k++]=114,Y[k++]=_),D&&(P+=O*D),v.length>=f&&(v.shift()[Os]=0),v.push(I),S(E))}for(let B=0,V=E.length;B<V;B++)S(x[E[B]])},A=x=>{let E;if(x>16777216){if(x-t>vg)throw new Error("Packed buffer would be larger than maximum buffer size");E=Math.min(vg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else E=(Math.max(x-t<<2,Y.length-1)>>12)+1<<12;let N=new Ud(E);return ft=new DataView(N.buffer,0,E),Y.copy?Y.copy(N,0,t,x):N.set(Y.slice(t,x)),k-=t,t=0,Xr=N.length-10,Y=N}}useBuffer(r){Y=r,ft=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),k=0}};kd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ps];fc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Sg(n,16,r):wg(hc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Pg&&this.structuredClone?Sg(n,Fd.indexOf(e.name),r):wg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Sg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function wg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function vT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function ST(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Zo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");kd.unshift(n.Class),fc.unshift(n)}bg(n)}var Og=new Gn({useRecords:!1}),wT=Og.pack,PT=Og.pack;var{NEVER:OT,ALWAYS:CT,DECIMAL_ROUND:TT,DECIMAL_FIT:AT}=dc,Cg=512,MT=1024;var Tg=new Gn({structuredClone:!0});Zo({Class:xe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,xe.prototype),n}});Zo({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});Zo({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});Zo({Class:Ss.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ss(n)}});Zo({Class:ws.prototype.constructor,type:5,write(n){return n.data},read(n){return new ws(n)}});Zo({Class:Qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});function IT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Hd(n){if(zi(n))return n;if(Array.isArray(n))return n.map(Hd);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Hd(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var mc;(t=>{function n(o){return Tg.pack(o)}t.serialize=n;function r(o){return Tg.unpack(o)}t.deserialize=r;function e(o){return IT(n(Hd(o))).toString()}t.checksum=e})(mc||(mc={}));var tn="personal camera",rn="a218fcc3-276b-49b9-b485-49037fd14f5f",Eg=2960946,ht=5526619;var Wi;(h=>{function n(f,m){return f[0]===m[0]&&f[1]===m[1]}h.isEqual=n;function r(f,m,y){return[f[0]+(m[0]-f[0])*y,f[1]+(m[1]-f[1])*y]}h.lerp=r;function e(f,m){return[f[0]+m[0],f[1]+m[1]]}h.add=e;function t(f,m){return[f[0]-m[0],f[1]-m[1]]}h.sub=t;function o(f,m){return[f[0]*m[0],f[1]*m[1]]}h.multiply=o;function i(f,m){return[f[0]/m[0],f[1]/m[1]]}h.divide=i;function a(f,m){return Math.pow(m[0]-f[0],2)+Math.pow(m[1]-f[1],2)}h.distanceSquared=a;function s(f,m){return Math.sqrt(a(f,m))}h.distance=s;function l(f,m){return f[0]*m[0]+f[1]*m[1]}h.dot=l;function c(f,m){return[f[0]*m,f[1]*m]}h.scalarMultiply=c;function u(f,m,y){let g=h.sub(m,f),v=h.sub(y,f),P=h.dot(g,v)/h.dot(g,g),O=h.scalarMultiply(g,P);return h.add(f,O)}h.projectionOnto=u;function p(f,m,y){return s(f,u(f,m,y))}h.projectionOntoDistance=p;function d(f,m){return[(f[0]+m[0])*.5,(f[1]+m[1])*.5]}h.center=d})(Wi||(Wi={}));var Jo;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;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})(Jo||(Jo={}));var Ag;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Ag||(Ag={}));var Mg;(a=>{let n=180/Math.PI,r=Math.PI/180;function e(s){return typeof s=="number"?s*n:s}function t(s){return typeof s=="number"?s*r:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function i(s){return[t(s[0]),t(s[1]),t(s[2])]}a.degToRad=i})(Mg||(Mg={}));var en;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(en||(en={}));var St;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,p.white={r:1,g:1,b:1},p.red={r:1,g:0,b:0},p.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,h){return d.r===h.r&&d.g===h.g&&d.b===h.b}p.equals=l;function c(d,h){return d.r.toFixed(2)===h.r.toFixed(2)&&d.g.toFixed(2)===h.g.toFixed(2)&&d.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(d,h,f){return{r:d.r+(h.r-d.r)*f,g:d.g+(h.g-d.g)*f,b:d.b+(h.b-d.b)*f}}p.lerp=u})(St||(St={}));var Ie;(c=>{c.white={...St.white,a:1},c.transparent={...St.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...St.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return St.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return St.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:h}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${h})`}c.toStyle=l})(Ie||(Ie={}));var yc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(yc||(yc={}));var Ig;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ig||(Ig={}));var Ng;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Ng||(Ng={}));var Dg;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Dg||(Dg={}));function Wd(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ir||(Ir={}));var on;(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 t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(on||(on={}));var Qr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},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:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),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"}}}e.defaultData=n;function r(t,o){let i={...t};if(NT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;DT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;ET.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;_T.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;BT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;LT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Qr||(Qr={}));var gc;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(gc||(gc={}));var NT=["count"],DT=["radius","start","end","position","scale","rotation"],ET=["position","scale","rotation"],_T=["count","size"],BT=["count","position","scale","rotation"],LT=["strength","scale","rotation","position","movement","seed","freqScale"];var xc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(xc||(xc={}));var bc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ie.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(t==="DirectionalLight")return{type:t,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(bc||(bc={}));var qi;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.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:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...t.defaultCollisionData}))(qi||(qi={}));var nn;(r=>r.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]})(nn||(nn={}));var qd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(qd||(qd={}));var $d;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})($d||($d={}));var vc;(r=>r.defaultData={...$d.defaultData,...qd.defaultData})(vc||(vc={}));var _g;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(_g||(_g={}));var $i;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))($i||($i={}));var Bg;(r=>{function n(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"}r.is=n})(Bg||(Bg={}));function Rg(n){return n.type!=="displace"}var Lg;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Lg||(Lg={}));var Vg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],zg=["wrapping","image","video","name","minFilter","magFilter"],xt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){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 t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){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:$i.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:St.fromHex(ht)};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:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.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:Ie.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:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.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:{...St.fromHex(0),a:1},colorB:{...St.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}}}})(xt||(xt={}));var Lt;(c=>{function n(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=n;function r(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([h,f])=>{p+=`${h}${f}`,Array.isArray(f)?f.forEach(m=>p+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${f}`})}),p}c.getHash=r;function e(){return{layers:new ve}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let h=new ve;return h.push({fi:0,data:xt.defaultData("light",u),id:p}),h.push({fi:1,data:xt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=xt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...xt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...xt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Lt||(Lt={}));var Yi;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Yi||(Yi={}));var Xi;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Xi||(Xi={}));var Yd={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Sc;(r=>{function n(e,t){let o={...e};return RT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Sc||(Sc={}));var wc={shape:Yd,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},RT=["depth","offset","angle","twist","startScale","endScale"];var Cs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Cs||(Cs={}));var Pc;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Sc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Pc||(Pc={}));var an;(r=>{function n(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:Xi.defaultData(),extrusion:wc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.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==="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",extrudeBevelSize:0,extrudeBevelSegments:1};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")}r.defaultData=n})(an||(an={}));var Oc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:St.white,near:.1,far:2e3})(Oc||(Oc={}));var Cc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(Cc||(Cc={}));var Xd;(r=>r.defaultData={softShadowQuality:"low"})(Xd||(Xd={}));var Kd;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Kd||(Kd={}));var Qd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Qd||(Qd={}));var Ts;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ts||(Ts={}));var Zd;(r=>r.defaultData={playCamera:tn,gameControlObject:null})(Zd||(Zd={}));var Tc;(r=>r.defaultData={backgroundColor:Ie.fromHexAndA(Eg,1),postprocessing:Cc.defaultData,fog:Oc.defaultData,globalPhysics:Ts.defaultData,ambient:Kd.defaultData,ao:Qd.defaultData,shadow:Xd.defaultData,publish:Zd.defaultData})(Tc||(Tc={}));var Ac;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Ac||(Ac={}));var Gg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Gg||(Gg={}));var Ki;(o=>{o.identity={...yc.identity,hiddenMatrix:en.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return Tl({position:Jo.isEqual(i.position,a.position)?void 0:a.position,rotation:Jo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Jo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:en.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Ki||(Ki={}));var wt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:nn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ki.identity,cloner:null})(wt||(wt={}));var Mc;(r=>r.defaultData={type:"Empty",...wt.defaultData})(Mc||(Mc={}));var jg;(r=>r.defaultData={type:"ParticleCollider",...Ac.defaultData,...wt.defaultData})(jg||(jg={}));var Fg;(r=>r.defaultData={type:"Component",...wt.defaultData})(Fg||(Fg={}));var Ug;(r=>r.defaultData={type:"Particle",...wt.defaultData,...qi.defaultData})(Ug||(Ug={}));var jn;(r=>r.defaultData={type:"Mesh",...wt.defaultData,...vc.defaultData})(jn||(jn={}));var Fn;(r=>r.defaultData={...wt.defaultData,...Ki.identity,position:[0,0,on.DefaultTargetOffset],...on.defaultData})(Fn||(Fn={}));var Ic;(e=>{function n(t){return{...wt.defaultData,...bc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ic||(Ic={}));var Qi;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(Qi||(Qi={}));var Zr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...wt.defaultData,...s,component:a,overrides:new Qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Ki.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Zr||(Zr={}));var wo;(e=>{e.defaultData={type:"Page",...wt.defaultData,physics:{...nn.defaultData,fusedBody:!1},...Tc.defaultData,camera:Fn.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(wo||(wo={}));var Nc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:en.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:nn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...on.defaultData},i.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"]},i.defaultMeshObject={name:"Rectangle",...wt.defaultData,...jn.defaultData,geometry:an.defaultData("RectangleGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...wt.defaultData,...jn.defaultData,geometry:an.defaultData("BooleanGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...wt.defaultData,...jn.defaultData,geometry:an.defaultData("TextGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")}))(Nc||(Nc={}));var Un;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Qe})))):Ir.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Xo(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&xt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Xo(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 h=l[c]?.layers?.data(p);h&&xt.patch(h,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[h,f]of Object.entries(d.layers)){let{texture:m,...y}=f;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...p,"layers",h,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...p,"layers",h],props:y,type:0};l.push(g)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...gc.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[h,f]of Object.entries(d))u(["materials",h],f);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let h={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(h),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let h={path:[p],props:d,type:0};l.push(h)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ki.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})}),Ir.is(i.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(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Pc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(xc.is(i.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=St.clone(l.color))}return s}o.patch=t})(Un||(Un={}));var Zi;(r=>r.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})(Zi||(Zi={}));var Nr;(r=>r.defaultData={orbitControls:Zi.defaultData,playPage:rn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},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}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var Jd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Jd||(Jd={}));var ep;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(ep||(ep={}));var Po;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Jd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:ep.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Po||(Po={}));var kg;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ji.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(kg||(kg={}));var Oo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:Ic.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=Nc.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:h,children:[]})),d.push(...p);let f=new Ke;return f.push({fi:1,id:rn,data:{...wo.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Nr.defaultData,styles:Po.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Nr.defaultData,styles:Po.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Nr.defaultData,styles:Po.defaultData()}},c.emptyData=function(){return{objects:new Ke,publish:{...Nr.defaultData},styles:Po.defaultData()}};function s(u){return{...c.defaultData,objects:Ht(u,Ke.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Oo||(Oo={}));var ea;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ea||(ea={}));var Dc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.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():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Dc||(Dc={}));var tp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(tp||(tp={}));var Hg;(r=>r.all=[...tp.all,"components"])(Hg||(Hg={}));var Wg;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Wg||(Wg={}));var Co;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Co||(Co={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Ht(a,xe.prototype)}i.defaultColors=n;function r(){return Ht({},xe.prototype)}i.defaultImages=r;function e(){return{catelogs:new xe,materials:new xe,images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,variables:new ve,lib:Co.defaultData()}}i.emptyData=e;function t(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)}}i.defaultVariables=t;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}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Bc}from"three";var Ec;(r=>r.list=["idle","move","jump","run"])(Ec||(Ec={}));var _c;(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 ve,move:new ve,jump:new ve,run:new ve},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(_c||(_c={}));function qg(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(it(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...it(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function To(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ao(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Lt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==Qe.prototype&&r(o.material)})})}function VT(n){Object.assign(n.scene.publish,{orbitControls:{...Zi.defaultData,...it(n.scene.publish.orbitControls)}})}function zT(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...it(n.scene.publish.settings.video)}})}function GT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Vg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(zg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function jT(n){n.scene.publish.withBackground=!0}function FT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function UT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function kT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function HT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=it(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=it(e).booleanExclude!==!0)}})}function WT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function qT(n){function r(t){Object.setPrototypeOf(t,Qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,Qe.prototype)}function e(t){Object.setPrototypeOf(t,Qe.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=it(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=it(l).layers;e(c),l.layers=c}})})}function $g(n){n.layers===void 0&&Object.assign(n,Lt.defaultTwoLayerData("lambert"))}function rp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...it(r),colors:e,steps:t};Object.assign(r,o)}})}function $T(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Yg(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&rp(t)}):"material"in e&&typeof e.material!="string"&&rp(e.material)}),Object.values(n.shared.materials).forEach(r=>rp(r))}function YT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function XT(n){n.shared.audios=Ht({},xe.prototype)}function KT(n){n.shared.videos=Ht({},xe.prototype)}function QT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.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(r,{[e]:o})}})}function ZT(n){Object.entries(it(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(it(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function JT(n){n.scene.publish.settings.web.preload=!1}function Xg(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Kg(n){n.layers&&n.layers.forEach(r=>{Rg(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function eA(n){n.shared.fonts=Ht({},xe.prototype)}function tA(n){return n.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 rA(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Lt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=tA(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...wt.defaultData,...jn.defaultData,flatShading:!1,wireframe:!1,geometry:{...an.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:i,states:it(o.states),events:it(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=it(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function oA(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[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 ve,move:new ve,jump:new ve}});else{let i=new ve;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Bc.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,Mr(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},h={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ve({fi:0,id:Bc.generateUUID(),data:c},{fi:1,id:Bc.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function nA(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Mr(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={...Mr(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:Bc.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Qg(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=xt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Zg(n){To(n,Qg),Ao(n,Qg)}function iA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function aA(n){n.scene.objects.traverse((r,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 sA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Lt.defaultTwoLayerData("phong"))})}function lA(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,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 cA(n){n.scene.objects.traverse((r,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 uA(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function dA(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function pA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function fA(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function hA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=_c.defaultDataThirdPerson.navmesh)})})}function mA(n){n.scene.styles||(n.scene.styles=Po.defaultData())}function Jg(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function yA(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Ao(n,Jg),To(n,Jg)}function gA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function xA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function ex(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function tx(n,r){if(r<1&&(Ao(n,qg),To(n,qg),n.schema=1),r<2&&(VT(n),n.schema=2),r<3&&(GT(n),n.schema=3),r<4&&(jT(n),n.schema=4),r<5&&(FT(n),n.schema=5),r<6&&(UT(n),n.schema=6),r<7&&(kT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Yg(n),n.schema=9),r<10&&($T(n),n.schema=10),r<11&&(YT(n),n.schema=11),r<12&&(Yg(n),n.schema=12),r<13&&(XT(n),n.schema=13),r<14&&(QT(n),n.schema=14),r<15&&(ZT(n),n.schema=15),r<16&&(JT(n),n.schema=16),r<17&&(Ao(n,Xg),To(n,Xg),n.schema=17),r<18&&(Ao(n,$g),To(n,$g),n.schema=18),r<19&&(zT(n),n.schema=19),r<20&&(eA(n),rA(n),n.schema=20),r<21&&(oA(n),nA(n),n.schema=21),r<22&&(Zg(n),n.schema=22),r<23&&(iA(n),n.schema=23),r<24&&(aA(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(KT(n),r<25&&(n.schema=25)),r<26&&(HT(n),n.schema=26),r<27&&(WT(n),n.schema=27),r<28&&(Zg(n),n.schema=28),r<29&&(qT(n),n.schema=29),r<30&&(sA(n),n.schema=30),r<31&&(lA(n),n.schema=31),r<33&&(cA(n),n.schema=33),r<34&&(uA(n),n.schema=34),r<35&&(dA(n),n.schema=35),r<36&&(pA(n),n.schema=36),r<37&&(fA(n),n.schema=37),r<38&&(Ao(n,Kg),To(n,Kg),n.schema=38),r<39&&(hA(n),n.schema=39),r<40&&(mA(n),n.schema=40),r<41&&(yA(n),n.schema=41),r<42&&(gA(n),n.schema=42),r<43&&(xA(n),n.schema=43),r<99){Ao(n,ex),To(n,ex),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=tn);let e=it(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=rn,t.insertBefore(null,null,[{id:rn,data:{...wo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ts.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:it(n.scene.ownerCamera)??wo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Oo.TRASH_CAN_ID&&t.move(rn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,nn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function rx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function bA(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function vA(n){Array.isArray(it(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var ta=180/Math.PI;function ox(n){n.rotation=n.rotation.slice(0,3).map(r=>r*ta)}function nx(n){ox(n),n.type==="Page"&&ox(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*ta))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*ta),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*ta),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=ta,r.extrusion.twist*=ta),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(it(n.events))&&n.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 SA(n){n.shared.variables=Ht({},xe.prototype)}function wA(n){let r=it(n.shared.variables);n.shared.variables=Ht(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var Jr=113;function ix(n,r){r(n.data);for(let e of n.children)ix(e,r)}function PA(n){let r=n.schema??104;r!==Jr&&r<105&&(ix(n.asset,nx),n.schema=105)}function OA(n){n.shared.particles=Ht({},xe.prototype),n.shared.lib&&(n.shared.lib.particles=Co.defaultData().particles)}function CA(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function TA(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function AA(n){n.scene.objects.traverse((r,e)=>{Array.isArray(it(e.events))!==!1&&e.events?.forEach(t=>{let o=t.runMode;t.type==="MouseDown"||t.type==="MouseUp"||t.type==="KeyDown"||t.type==="KeyUp"||t.type==="Collision"||t.type==="Trigger"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode=o??"Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode=o==="Toggle"?"Toggle":"Normal")}):t.type==="MouseHover"||t.type==="MousePress"||t.type==="KeyPress"?t.actions?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}):t.type==="GameControl"?(delete t.actions,Object.keys(t.gameActions).forEach(a=>{t.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):t.type==="DragDrop"?(delete t.actions,t.dragDropActions?.drag?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}),t.dragDropActions?.drop?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")})):t.type==="Resize"?(delete t.actions,t.breakpoints?.forEach(i=>{i.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):t.type==="Start"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Once"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="VariableChange"||t.type==="Scroll"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="Conditional"&&(delete t.actions,t.inActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}),t.outActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}))})})}function Lc(n){let r=n.schema??0;if(r!==Jr){console.warn("updating from ",r,"to ",Jr),tx(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Ao(n,rx),To(n,rx),n.schema=101),r<102&&(bA(n),n.schema=102),r<104&&(n.shared.catelogs=new xe,n.shared.lib=Co.defaultData(),n.schema=104),r<105&&(SA(n),n.scene.objects.traverse((e,t)=>{nx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))PA(e);r<106&&(wA(n),n.schema=106),r<107&&(n.shared.lib.variables=Co.defaultData().variables,n.schema=107),r<109&&(OA(n),n.schema=109),r<110&&(CA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{vA(t)}),n.schema=111),r<112&&(TA(n),n.schema=112),r<113&&(AA(n),n.schema=113)}}var Ji;(l=>{l.defaultData={schema:Jr,scene:Oo.defaultData,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(){let c=Oo.emptyDataWithPage();return{schema:Jr,scene:c,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages()}}},l.emptyData=function(){return{schema:Jr,scene:Oo.emptyDataWithPage(),frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:Jr,scene:Oo.emptyData(),frames:new xe,shared:xr.emptyData()}},l.collabHelper={...vs,updateSchema(c){return(c.schema??0)<Jr?Xo(c,Lc):(c.schema??0)-Jr}};function i(c){let u=l.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}l.updateSchemaDirectly=i;function a(c){return{...c,shared:{...c.shared,lib:Co.defaultData()}}}l.withoutLib=a;function s(c,u){let p=c.scene.objects.get(u);if(p&&p.data.type==="Component")return p;{let d=c.shared.lib.components[u];if(d)return d.asset}}l.getComponentData=s})(Ji||(Ji={}));var Rc;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Rc||(Rc={}));var ax;(r=>{function n(e){return!0}r.is=n})(ax||(ax={}));var Vc;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return Tl({position:Wi.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Wi.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&Wi.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Vc||(Vc={}));var op;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(op||(op={}));var sx;(r=>r.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(sx||(sx={}));var zc;(r=>r.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(ht,1),enabled:!0},stroke:{color:Ie.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:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(zc||(zc={}));var kn;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(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 t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Vc.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;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}i.toOps=o})(kn||(kn={}));var As;(r=>r.defaultData={...Vc.defaultData,...op.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(As||(As={}));var ra;(r=>r.defaultData={...As.defaultData,...zc.defaultData})(ra||(ra={}));var Gc;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Gc||(Gc={}));var np;(r=>r.defaultData={...ra.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(np||(np={}));var oa;(r=>r.defaultData={...ra.defaultData,...Gc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(oa||(oa={}));var ip;(r=>r.defaultData={...ra.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"})(ip||(ip={}));var ap;(r=>r.defaultData={...ra.defaultData,type:"path2d",path:"",name:"Path"})(ap||(ap={}));var lx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(lx||(lx={}));var Ms;(r=>r.defaultData={...As.defaultData,name:"Group",type:"group2d"})(Ms||(Ms={}));var sp;(r=>r.defaultData=()=>({...As.defaultData,...Gc.defaultData,...zc.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(sp||(sp={}));var Mo;(i=>{function n(a){switch(a){case"rectangle2d":return{...oa.defaultData};case"ellipse2d":return{...np.defaultData};case"text2d":return{...ip.defaultData};case"vector2d":return{...oa.defaultData};case"path2d":return{...ap.defaultData};case"frame2d":return{...sp.defaultData()};case"group2d":return{...Ms.defaultData}}}i.defaultData=n;function r(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]}i.getPivot=r;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}i.isResizeable=e;function t(a){return a.type==="frame2d"&&a.autoLayout!==void 0}i.isAutoLayoutable=t;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}i.hasCorners=o})(Mo||(Mo={}));var jc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ke},e.emptyData=function(){return{type:"scene2d",objects:new Ke}}))(jc||(jc={}));var Ja=hi(ux());import{Object3D as T3,Vector3 as pr,Euler as Uf,MathUtils as Wb,Matrix4 as ai}from"three";var MA=.5*(Math.sqrt(3)-1),Is=(3-Math.sqrt(3))/6,IA=1/3,eo=1/6,eH=(Math.sqrt(5)-1)/4,tH=(5-Math.sqrt(5))/20,Ns=n=>Math.floor(n)|0,dx=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]),cp=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 Fc(n=Math.random){let r=fx(n),e=new Float64Array(r).map(o=>dx[o%12*2]),t=new Float64Array(r).map(o=>dx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*MA,p=Ns(i+u),d=Ns(a+u),h=(p+d)*Is,f=p-h,m=d-h,y=i-f,g=a-m,v,P;y>g?(v=1,P=0):(v=0,P=1);let O=y-v+Is,S=g-P+Is,T=y-1+2*Is,A=g-1+2*Is,x=p&255,E=d&255,N=.5-y*y-g*g;if(N>=0){let _=x+r[E],B=e[_],V=t[_];N*=N,s=N*N*(B*y+V*g)}let I=.5-O*O-S*S;if(I>=0){let _=x+v+r[E+P],B=e[_],V=t[_];I*=I,l=I*I*(B*O+V*S)}let D=.5-T*T-A*A;if(D>=0){let _=x+1+r[E+1],B=e[_],V=t[_];D*=D,c=D*D*(B*T+V*A)}return 70*(s+l+c)}}function px(n=Math.random){let r=fx(n),e=new Float64Array(r).map(i=>cp[i%12*3]),t=new Float64Array(r).map(i=>cp[i%12*3+1]),o=new Float64Array(r).map(i=>cp[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*IA,f=Ns(a+h),m=Ns(s+h),y=Ns(l+h),g=(f+m+y)*eo,v=f-g,P=m-g,O=y-g,S=a-v,T=s-P,A=l-O,x,E,N,I,D,_;S>=T?T>=A?(x=1,E=0,N=0,I=1,D=1,_=0):S>=A?(x=1,E=0,N=0,I=1,D=0,_=1):(x=0,E=0,N=1,I=1,D=0,_=1):T<A?(x=0,E=0,N=1,I=0,D=1,_=1):S<A?(x=0,E=1,N=0,I=0,D=1,_=1):(x=0,E=1,N=0,I=1,D=1,_=0);let B=S-x+eo,V=T-E+eo,U=A-N+eo,R=S-I+2*eo,W=T-D+2*eo,j=A-_+2*eo,F=S-1+3*eo,H=T-1+3*eo,q=A-1+3*eo,re=f&255,ee=m&255,X=y&255,te=.6-S*S-T*T-A*A;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*S+t[$]*T+o[$]*A)}let K=.6-B*B-V*V-U*U;if(K<0)u=0;else{let $=re+x+r[ee+E+r[X+N]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*U)}let Z=.6-R*R-W*W-j*j;if(Z<0)p=0;else{let $=re+I+r[ee+D+r[X+_]];Z*=Z,p=Z*Z*(e[$]*R+t[$]*W+o[$]*j)}let Q=.6-F*F-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*F+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function fx(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as NA}from"three";var Dr=new NA,Uc=class{constructor(r){this.weightAttribute=null;let e=r.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 r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Dr.a.fromBufferAttribute(r,o),Dr.b.fromBufferAttribute(r,o+1),Dr.c.fromBufferAttribute(r,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,r*3),Dr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(t),this}};import{Object3D as LA}from"three";var yx=hi(mx());import{Object3D as DA,Matrix4 as to}from"three";var EA=new to,_A=new to,BA=new to,na;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(na||(na={}));var ia=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new to;this.copyPreviousMatrix=!0;this.hiddenMatrix=new to;this.matrixWorldRigid=new to;this.shearScale=new to;this.shearScaleInv=new to}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof DA&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(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,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.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(t,o=0){for(let i of this.children)na.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)na.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,yx.SVD)(o),l=EA.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=_A.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=BA.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(t,o){this.updateWorldMatrix(!0,!1);let i=new to().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof to?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var up=class extends ia(LA){},RA=n=>n.type==="Mesh",Io=class extends up{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Io(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=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 RA(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}};import{Box3 as $I,BufferGeometry as YI,MeshBasicMaterial as XI}from"three";import{Matrix4 as WI,Mesh as qI}from"three";import{Matrix4 as Wc,Vector3 as bx,Euler as UA,MathUtils as Es}from"three";import{Box3 as VA,Line3 as zA,Matrix4 as dp,Vector3 as cr}from"three";var Hn=new cr,Wn=new cr,aa=new dp,xx=[new cr(-1,1,1),new cr(-1,-1,1),new cr(1,-1,1),new cr(1,1,1),new cr(-1,1,-1),new cr(-1,-1,-1),new cr(1,-1,-1),new cr(1,1,-1)],GA=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],jA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],gx=(n,r,e)=>{n.updateEntityBoxSize(Hn,Wn),aa.copy(r).multiply(n.matrixWorld),Wn.x===0&&Wn.y===0&&Wn.z===0?e.push(new cr(Hn.x,Hn.y,Hn.z).applyMatrix4(aa)):xx.forEach(t=>{e.push(t.clone().multiply(Wn).add(Hn).applyMatrix4(aa))})},Ds=class extends VA{constructor(){super(...arguments);this.matrix=new dp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new dp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new cr);return}gx(a,t,i)}}):gx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(aa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Wn).multiplyScalar(.5),this.getCenter(Hn),aa.copy(this.matrix).setPosition(Hn),this.vertices=xx.map(e=>e.clone().multiply(Wn).applyMatrix4(aa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=GA.map(([e,t])=>new zA(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new cr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=jA.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as FA,CubicBezierCurve3 as pp,Vector3 as _r}from"three";var hp=class extends FA{constructor(){super()}getPoints(r=12){let e=[],t,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(r*u/a),d=c.getPoints(p);for(let h=0;h<d.length;h++){let f=d[h];t&&t.equals(f)||(e.push(f),t=f)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var mp=.001;function yp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=mp}function fp(n,r){let e=new _r(...n.position),t=new _r(...n.controlNext.position),o=new _r(...r.controlPrevious.position),i=new _r(...r.position);return yp(e,t,i)&&yp(e,o,i)}function Hc(n){let r=n.points.map(u=>new _r(...u.data.position)),e=[n.points[0]],t=new _r(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)yp(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new _r(...p.position),h=new _r(...p.controlPrevious.position),f=new _r(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:h,controlNext:f};if(p.roundness===0||!n.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,g=o&&u==a-1?0:u+1,v=e[y].data,P=e[g].data,O=new _r(...v.position),S=new _r(...P.position),T=O.clone().sub(d).normalize(),A=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:A});let x=fp(v,p),E=fp(p,P);if(!x||!E)s[u]={...m,removedLength:0};else{let N=T.clone().add(A).normalize(),I=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d];if(h.removedLength!==0||f.removedLength!==0){let m=h.position.distanceTo(f.position);h.removedLength=Math.min(h.removedLength,m/2),f.removedLength=Math.min(f.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d],m=null;if(!fp(e[p].data,e[d].data))h.position.distanceTo(f.position)>mp&&(m=new pp(h.position,h.controlNext,f.controlPrevious,f.position));else{let y=h.position.clone(),g=f.position.clone();(h.removedLength!==0||f.removedLength!==0)&&(h.nextDir&&y.add(h.nextDir.clone().setLength(h.removedLength)),f.prevDir&&g.add(f.prevDir.clone().setLength(f.removedLength))),y.distanceTo(g)>mp&&(m=new pp(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}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,h=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),f=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),g=h.clone().lerp(f,.5),v=h.distanceTo(f)/2,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),O=y.clone().multiplyScalar(-m).add(P),S=d.distanceTo(O)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),A=T.clone().lerp(O,2),x=h.clone().lerp(T,4/3),E=f.clone().lerp(A,4/3);l[2*u]=new pp(h,x,E,f)}let c=new hp;return l.forEach(u=>{u&&c.add(u)}),c}var Re;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Re||(Re={}));var sa=n=>Re.is(n),kA={type:"completeState",isfromEntity:!0},HA=["x","y","z"],gp=new bx,WA=new bx().set(0,1,0),la=n=>class extends ia(n){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.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Ds;this._recursiveBBox=new Ds;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Re.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Re.is(this.children[t]))return t+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 t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Re.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Un.toOps(this.data,a.data).forEach(l=>{let c=Fi.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=Un.patch(this.data,a),Un.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,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(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{sa(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Re.is(o[i]))return o[i];if(Re.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Re.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)sa(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Re.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)sa(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>sa(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Es.RAD2DEG,this.rotation.y*Es.RAD2DEG,this.rotation.z*Es.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ri(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,HA[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(gp.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Es.DEG2RAD),this.rotation.setFromVector3(gp),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??en.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Re.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Re.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ri(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Le(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let h=ot.zoom(d,t.path.slice(2));if(h)for(let f in t.props)t.props[f]===void 0&&f in h&&(p[f]=h[f])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...h}=u;u=h}if(t.props.material!==void 0&&"material"in u){let{material:d,...h}=u;u=h}let p=ot.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Le(t.path,["overrides"])){let u=[],p=[...t.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(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let h=i.scene.findInstance([this.uuid,...u]);h&&(h.overrideData=t.props[d],h.updateState(qr.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=ot.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let f=t.props;if(h)for(let[m,y]of Object.entries(t.props))y===void 0&&(f===t.props&&(f={...t.props}),f[m]=h[m]);t={...t,props:f}}d.overrideData=Qi.resolve(o.overrides,u),d.updateByOp(t,nt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of Zr.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Zr.rootOverrideProps)if(Le(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=qr.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=qr.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=nt.applySimple(p.data,d),p.updateByOp(d,h,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Ir.is(t.props.type)&&Er.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Re.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Le(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(t.path,["cloner"])!==null){let a=nt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=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=t.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=Hc(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.curves.length?u.getPointAt(p):null;if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new Wc;l.updateMatrixWorld();let f=new Wc().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new Wc().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new Wc().lookAt(d,g,WA),P=gp.setFromEuler(new UA().setFromRotationMatrix(v)).multiplyScalar(Es.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(kA)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Er.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as YA,ConeGeometry as XA,Float32BufferAttribute as KA,MathUtils as QA}from"three";import{BufferGeometry as Sx,CylinderGeometry as qA,Float32BufferAttribute as $c,MathUtils as $A,Vector2 as Br,Vector3 as qc}from"three";var wx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=$A.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:h}=n.parameters,f;return l===0?(f=new Sx,f.setAttribute("position",new $c([],3))):p||h?f=new _s(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new qA(c,u,t,o,i,a,s,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function sn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function vx(n){return new Br(n.y,-n.x)}var _s=class extends Sx{constructor(r,e,t,o,i,a,s,l,c,u,p,d,h=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||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 f=[],m=[],y=[],g=[],v=0,P=t/2,O=new qc,S=new qc;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new Br(r,P),A=new Br(e,-P),x=null,E=null,N=null,I=null,D=T.clone().sub(A),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let U=T.clone();U.x-=_;let R=Math.PI-D.angle(),W=D.angle(),j=Math.tan(W/2),F=Math.tan(R/2),H=j+F,q=d?H:F,re=d?H:j;if(c=Math.min(c,(r-B)/q,D.length()/H),u=Math.min(u,(e-V)/re,D.length()/H),c>0){let Q=c/j;x=T.clone().sub(new Br(Q,c)),d&&(N=x.clone(),N.x-=_-H*c),T.sub(D.clone().setLength(Q))}if(u>0){let Q=u/F;E=A.clone().sub(new Br(Q,-u)),A.add(D.clone().setLength(Q)),d&&(I=E.clone(),I.x-=_-H*u,U.sub(D.clone().setLength(Q)))}D=T.clone().sub(A);let ee=D.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new Br(Math.sin(le),Math.cos(le));I&&E?(te($,ue,ne,R,u,I,-1,!0),te($,ue,ne,W,u,E,-1,!1)):E?(K($,ne,E.x,0,-1),te($,ue,ne,W,u,E,-1,!1)):a||K($,ne,e,V,-1);let ce=vx(D).normalize();if(sn(ce,ne,O),!ee)for(let ae=0;ae<=i;ae++){let he=ae/i,pe=D.clone().multiplyScalar(he).add(A);sn(pe,ne,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),g.push(ue,.5+S.y/t),$.push(v++)}if(N&&x?(te($,ue,ne,R,c,x,1,!1),te($,ue,ne,W,c,N,1,!0)):x?(te($,ue,ne,R,c,x,1,!1),K($,ne,x.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=vx(D).multiplyScalar(-1).normalize();sn(ae,ne,O);for(let he=0;he<=i;he++){let pe=he/i,fe=D.clone().multiplyScalar(-pe).add(U);sn(fe,ne,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),g.push(ue,.5+S.y/t),$.push(v++)}}d&&!a&&$.push($[0]),X.push($)}for(let Q=0;Q<X.length-1;Q++)for(let $=0;$<X[0].length-1;$++){if(a&&d&&$==i)continue;let ue=X[Q][$],le=X[Q+1][$],ne=X[Q+1][$+1],ce=X[Q][$+1],ae=m[ne*3+0],he=m[ne*3+2];f.push(ue,le,ce),(ae!=0||he!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new $c(m,3)),this.setAttribute("normal",new $c(y,3)),this.setAttribute("uv",new $c(g,2));function te(Q,$,ue,le,ne,ce,ae,he){for(let pe=0;pe<p+1;pe++){let fe=pe/p,ge=ae<0?fe:1-fe;he&&(ge-=1),ge*=le;let me=new Br(Math.sin(ge),Math.cos(ge)*ae),C=me.clone().multiplyScalar(ne).add(ce);sn(C,ue,S),m.push(S.x,S.y,S.z),sn(me,ue,O),y.push(O.x,O.y,O.z),g.push($,.5+S.y/t),Q.push(v++)}}function K(Q,$,ue,le,ne){let ce=new qc,ae=new Br,he=[ue,le];ne<0&&he.reverse();for(let pe of he)ae.set(pe,P*ne),sn(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),Q.push(v++)}function Z(Q,$,ue){let le=new Br(Math.sin(ue),Math.cos(ue)),ne=new Br(-Math.cos(ue),Math.sin(ue)),ce=new qc,ae=Q<0?(fe,ge,me)=>f.push(fe,ge,me):(fe,ge,me)=>f.push(fe,me,ge),he=new Br((r+e+B+V)/4,0);sn(he,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=v++;for(let fe of $){let ge=m.slice(fe*3,fe*3+3);m.push(...ge),y.push(ne.x,0,ne.y);let me=g.slice(fe*2,fe*2+2);g.push(...me),v++}for(let fe=pe+1;fe<v-1;fe++)ae(pe,fe,fe+1);ae(pe,v-1,pe+1)}}};var Px=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=QA.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(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new YA,d.setAttribute("position",new KA([],3))):c>0||u>0||l<360?d=new _s(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new XA(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as ZA,BufferGeometry as JA,Float32BufferAttribute as xp,Vector3 as Bs}from"three";var Ox=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s===0?c=new ZA(r,e,t,o,i,a):c=new vp(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},bp=Math.PI/2,vp=class extends JA{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let c=[],u=[],p=[],d=[],h=0;f("z","y","x",-1,-1,t,e,r,a,i),f("z","y","x",1,-1,t,e,-r,a,i),f("x","z","y",1,1,r,t,e,o,a),f("x","z","y",1,-1,r,t,-e,o,a),f("x","y","z",1,-1,r,e,t,o,i),f("x","y","z",-1,-1,r,e,-t,o,i),s>0&&(m("z","y","x",-1,-1,1,t,e,r,a),m("z","y","x",1,-1,-1,t,e,r,a),m("z","y","x",-1,1,-1,t,e,r,a),m("z","y","x",1,1,1,t,e,r,a),m("x","y","z",-1,-1,-1,r,e,t,o),m("x","y","z",1,-1,1,r,e,t,o),m("x","y","z",-1,1,1,r,e,t,o),m("x","y","z",1,1,-1,r,e,t,o),m("y","x","z",-1,-1,1,e,r,t,i),m("y","x","z",1,-1,-1,e,r,t,i),m("y","x","z",1,1,1,e,r,t,i),m("y","x","z",-1,1,-1,e,r,t,i),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 xp(u,3)),this.setAttribute("normal",new xp(p,3)),this.setAttribute("uv",new xp(d,2));function f(g,v,P,O,S,T,A,x,E,N){let I=(T-2*s)/E,D=(A-2*s)/N,_=T/2-s,B=A/2-s,V=x/2,U=E+1,R=N+1,W=0,j=new Bs;for(let F=0;F<R;F++){let H=F*D-B;for(let q=0;q<U;q++){let re=q*I-_;j[g]=re*O,j[v]=H*S,j[P]=V,u.push(j.x,j.y,j.z),j[g]=0,j[v]=0,j[P]=x>0?1:-1,p.push(j.x,j.y,j.z),d.push(q/E),d.push(1-F/N),W+=1}}for(let F=0;F<N;F++)for(let H=0;H<E;H++){let q=h+H+U*F,re=h+H+U*(F+1),ee=h+(H+1)+U*(F+1),X=h+(H+1)+U*F;c.push(q,re,X),c.push(re,ee,X)}h+=W}function m(g,v,P,O,S,T,A,x,E,N){let I=(A-2*s)/N,D=A/2-s,_=x/2-s,B=E/2,V=N+1,U=0,R=new Bs,W=new Bs;for(let j=0;j<l+1;j++){let F=j/l*bp,H=Math.sin(F)*s,q=(1-Math.cos(F))*s,re=Math.sin(F),ee=Math.cos(F);R[v]=(_+H)*S,R[P]=(B-q)*T,W[g]=0,W[v]=re*Math.sign(R[v]),W[P]=ee*Math.sign(R[P]);for(let X=0;X<V;X++){let te=X*I-D;R[g]=te*O,u.push(R.x,R.y,R.z),p.push(W.x,W.y,W.z),d.push(X/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=h+F+V*j,q=h+F+V*(j+1),re=h+(F+1)+V*(j+1),ee=h+(F+1)+V*j;c.push(H,q,ee),c.push(q,re,ee)}h+=U}function y(g,v,P){let O=new Bs,S=new Bs(r/2,e/2,t/2);S.subScalar(s);let T=[],A=g*v*P>0?(E,N,I)=>c.push(E,N,I):(E,N,I)=>c.push(E,I,N);for(let E=0;E<=l;E++){let N=[],I=bp*(1-E/l),D=Math.cos(I),_=Math.sin(I),B=0;for(let V=0;V<=E;V++){let U=Math.cos(B),R=Math.sin(B);O.x=D*U,O.y=_,O.z=D*R;let W=S.clone().addScaledVector(O,s);u.push(g*W.x,v*W.y,P*W.z),p.push(g*O.x,v*O.y,P*O.z),d.push(0,0),N.push(h++),B+=bp/E}T.push(N)}let x=T.length-1;for(let E=0;E<x;E++){let N=T[E],I=T[E+1],D=N.length-1;A(N[0],I[1],I[0]);for(let _=1;_<=D;_++)A(N[_-1],N[_],I[_]),A(N[_],I[_+1],I[_])}}}};import{BufferGeometry as eM,Float32BufferAttribute as Sp,Triangle as tM,Vector3 as No,Vector2 as wp}from"three";var ln=class extends eM{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Sp(s,3)),this.setAttribute("normal",new Sp(c,3)),this.setAttribute("uv",new Sp(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let h={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new No,m=f.clone(),y=new tM,g=i*o,v=o-g,P=a+1,O=new No,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),A=T(r.length/3,(j,F)=>new No().fromArray(r,F*3).setLength(o)),x=[],E=1e6;for(let j=0;j<A.length;j++){let F=A[j],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(j,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=F.distanceToSquared(A[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=x[q]?.includes(j)==!0;ee<=X&&K.push(q+ +ue*E),Z=H.findIndex(le=>le[0]==re)}x.push(K)}let N=[];{let j=0,F=0,H,q,re=h==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[j,F]=[H+X+ee+2,q+X+ee+3],N.push(H,q,...re?[F,H]:[j,q],F,j),[H,q]=[j,F];N.push(H,q,H+a+2)}}let I=f.clone(),D=f.clone(),_=f.clone(),B=f.clone(),V=f.clone(),U=[],R=T(A.length,()=>T(h,()=>f.clone()));for(let j=0;j<A.length;j++){f.copy(A[j]).normalize(),I.copy(f).multiplyScalar(v);let F=x[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%h];y.setFromPointsAndIndices(A,j,Z%E,Q%E),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,R[j][K])}let H=[],q=[],re=[],ee=new No;a==0&&[...R[j]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/h);for(let K=0;K<h;K++){let Z=[],Q=(K-1+h)%h,$=R[j][Q],ue=R[j][K];f.copy($).sub(I),m.copy(ue).sub(I);let le=I.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?D.copy(ee):D.copy(I).setLength(v+ce),q.push(ce);let ae=[D,$,ue];for(let he=0;he<2;he++){let pe=ae[he],fe=ae[he+1];B.subVectors(pe,I),V.subVectors(fe,I),_.crossVectors(B,V).normalize();for(let ge=0;ge<P;ge++){let me=[le,ne][he]*ge/P;f.copy(B).applyAxisAngle(_,me).add(I),H.push(f.clone()),he&&(S(f,I),Z.push([ge==0?pe:f.clone(),O.clone()]))}he&&(S(fe,I),Z.push([fe,O.clone()]))}re.push(Z)}U.push(re);let X=2*P,te=2;for(let K=0;K<h;K++){let Z=X*K,Q=X*((K+1)%h),$=[H[Z]];for(let le=1;le<P;le++){B=H[Z+le],V=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,V,ne/(ce+1)),f.sub(I).setLength(q[K]).add(I),$.push(f.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=N.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let W=[];for(let j=0;j<x.length;j++)for(let F=0;F<h;F++){let H=x[j][F];if(H<E){let q=x[H].findIndex(X=>X%E==j),re=U[j][F],ee=U[H][q];for(let X=0;X<P;X++){let te=re[X],K=ee[P-X],Z=re[X+1],Q=ee[P-(X+1)];[te,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}W.push(re[0][0],ee[P][0],re[P][0],ee[0][0])}}for(;W.length;){let j,F,H,q;[j,F]=W.splice(0,2);let re=[j];for(;j!=F;)re.push(F),H=W.indexOf(F),q=H%2,F=W.splice(H-q,2)[1-q];O.subVectors(re[0],re[1]).cross(f.subVectors(re[0],re[2])).normalize();let ee=O.dot(re[0])<0;ee&&O.negate();for(let X=1;X<=re.length-2;X++)[re[X+ +ee],re[X+1-+ee],re[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new No;for(let A=0;A<s.length;A+=3){d.x=s[A+0],d.y=s[A+1],d.z=s[A+2];let x=S(d)/2/Math.PI+.5,E=T(d)/Math.PI+.5;l.push(x,1-E)}let h=new No,f=new No,m=new No,y=new No,g=new wp,v=new wp,P=new wp,O=(A,x,E,N)=>{N<0&&A.x===1&&(l[x]=A.x-1),E.x===0&&E.z===0&&(l[x]=N/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){h.set(s[A+0],s[A+1],s[A+2]),f.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),P.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let E=S(y);O(g,x+0,h,E),O(v,x+2,f,E),O(P,x+4,m,E)}for(let A=0;A<l.length;A+=6){let x=l[A+0],E=l[A+2],N=l[A+4],I=Math.max(x,E,N),D=Math.min(x,E,N);I>.9&&D<.1&&(x<.2&&(l[A+0]+=1),E<.2&&(l[A+2]+=1),N<.2&&(l[A+4]+=1))}function S(A){return Math.atan2(A.z,-A.x)}function T(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(r){return new ln(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as rM}from"three";var Cx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ls(r*.5,i,a):new rM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Ls=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=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,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],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,r,e,t),this.type=l}static fromJSON(r){return new Ls(r.radius,r.corner,r.cornerSides)}};import{Plane as fM,Shape as jx,Vector2 as Do,Vector3 as hM,MathUtils as Ip,LineCurve as Np,QuadraticBezierCurve as Fx,CubicBezierCurve as Qc}from"three";import{CubicBezierCurve as Yc,EllipseCurve as oM,LineCurve as Xc,LineCurve3 as nM,MathUtils as iM,QuadraticBezierCurve as Op,SplineCurve as aM,Vector2 as Ut,Vector3 as Mx}from"three";var Rs=1e-12,ca=class{constructor(r){this.position=new Ut;this.startPosition=new Ut;this.uuid=iM.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new ca(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ua=class extends ca{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ua(this.parent).copy(this)}},Lr=class extends ca{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ua(this),new ua(this))}static create(e,t){let o=new Lr(e,new Ut(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?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 Lr(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),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ut,t=new Ut){let[o,i]=this.computeTangents();return o&&i&&(Tx(o,e),Tx(i,t)),[e,t]}computeTangent(e=new Ut){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ut){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Tx(n,r=new Ut){let e=n.length();return r.set(-n.y/e,n.x/e)}var Cp=n=>n,da=new Ut,Kc=new Ut,sM=new Ut,lM=new Ut,cM=new Ut,uM=new Ut,Ix=new Mx,Nx=new Mx;function Dx(n){let r=new Ut;r.addVectors(n.v0,da.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ut;return e.addVectors(n.v2,Kc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Yc(n.v0,r,e,n.v2)}function Vs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function dM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function pM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Tp(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Ex(n,r,e){return Ax(n,r)&&Ax(r,e)&&Pp(n.position,r.position,e.position)}function Pp(n,r,e){return da.copy(r).sub(n).cross(Kc.copy(e).sub(n))===0}function _x(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function Bx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Lx(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return Tp(r,n,e)>Math.PI&&(u*=-1),Vs(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function Ap(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Ax(n,r){return Pp(n.position,n.controls[1].position,r.position)&&Pp(n.position,r.controls[0].position,r.position)}function Rx(n,r,e,t,o=.5){let i=da.subVectors(r,n).multiplyScalar(o).add(n),a=Kc.subVectors(e,r).multiplyScalar(o).add(r),s=sM.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=lM.subVectors(a,i).multiplyScalar(o).add(i),u=cM.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=uM.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function Vx(n,r,e=12,t=!0){let o=Nx.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=Cp(r[l]),u=da,p=cn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Yc||c instanceof Op||c instanceof Xc){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&pM(i,o))continue;i===void 0&&(i=Ix),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function zx(n,r,e,t=12,o=!0){let i=Nx.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=Cp(r[l]),p=da,d=cn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Yc||u instanceof Op||u instanceof Xc){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=Ix:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Mp(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=cn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=cn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=cn(n[0].roundedCurveCorner,r)*.5),t}function cn(n,r=12){return n&&n instanceof oM?r*2:n&&(n instanceof Xc||n instanceof nM)?1:n&&n instanceof aM?r*n.points.length:r}function Gx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Cp(r[a]),l=cn(s,e),c=da;for(let u=0;u<=l;u++)if(s instanceof Yc||s instanceof Op||s instanceof Xc){if(s.getPoint(u/l,c),o!==void 0&&dM(o,c,Rs))continue;o===void 0&&(o=Kc),o.copy(c),n.push(c.x,c.y),i++}}return Vs(n[0],n[n.length-2],Rs)&&Vs(n[1],n[n.length-1],Rs)&&(n.pop(),n.pop()),t&&i>1&&!(Vs(n[i-1],n[1],Rs)&&Vs(n[i-2],n[0],Rs))&&(n.push(n[0],n[1]),i++),n}var Dp=new Do,mM=new Do,yM=new Do,gM=new Do,xM=new Do,bM=new Do,Fe=class extends jx{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new fM(new hM(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=Ip.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Fe;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Lr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Fe.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}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 t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;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)i+=c;else return u+i}}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 t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Dp.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ip.generateUUID()){let i;e instanceof Do?i=e:i=new Do(e,t);let a=new Lr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Vx(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Mp(this.points,e,!1),this.roundedCurveDivisions=Mp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return zx(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Gx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=cn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Ap(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Dp.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){Ap(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.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,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;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&&Ex(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 h=a.roundedCurveBefore,f=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),g=Math.min(c,m*.499),v=Math.min(c,y*.499),P=Math.min(g,v),O=1-P/m,S=P/y,T=p.getPointAt(O,Dp),A=d.getPointAt(S,mM);this._subSplitCurve(p,h,O,T,void 0),this._subSplitCurve(d,f,S,void 0,A);let x;if(this.useCubicForRoundedCorners){let E=Tp(T,a.position,A)/2,N=Math.tan(E)*T.distanceTo(a.position),[I,D]=_x(T,A,N,yM,gM),_=Bx(I,D,a.position),[B,V]=Lx(_,T,A,N,xM,bM);x=new Qc(T.clone(),B.clone(),V.clone(),A.clone())}else x=new Fx(T.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Np)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=Rx(s.v0,s.v1,s.v2,s.v3,c);return i!==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 t}clone(){let e=new Fe(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],h=new Lr(Ip.generateUUID(),new Do(a,s));h.controls[0].position.set(l,c),h.controls[1].position.set(u,p),h.roundness=d,this.points.push(h)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Fe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Qc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Fx&&(a[l]=Dx(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],h=l>0?a[l-1]:null,f;d instanceof Qc?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Np&&(f=this.createPoint(d.v1)),f!==void 0&&(h!==null&&o(f,h),s.push(f))}let u=a[a.length-1],p=!1;return u instanceof Qc?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Np&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof jx&&(this.shapeHoles=e.holes.map(a=>{let s=new Fe;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var _p=Math.PI*2;function Ep({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function vM(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function Ux(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function SM(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(a,2),h=Math.pow(s,2),f=u*p-u*h-p*d;f<0&&(f=0),f/=u*h+p*d,f=Math.sqrt(f)*(l===c?-1:1);let m=f*o/i*s,y=f*-i/o*a,g=m+(n+e)/2,v=y+(r+t)/2,P=(a-m)/o,O=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,A=Ux(1,0,P,O),x=Ux(P,O,S,T);return!c&&x>0&&(x-=_p),c&&x<0&&(x+=_p),{centerx:g,centery:v,ang1:A,ang2:x}}function kx({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=SM(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(_p/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let P=0;P<v;P++)l.push(vM(h,f)),h+=f;return l.map(P=>{let{x:O,y:S}=Ep(P[0],o,i,m,y),{x:T,y:A}=Ep(P[1],o,i,m,y),{x,y:E}=Ep(P[2],o,i,m,y);return{x1:O,y1:S,x2:T,y2:A,x,y:E}})}import{BufferAttribute as ru,BufferGeometry as _M}from"three";var Ge;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ge||(Ge={}));var at;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(at||(at={}));function we(n,r){if(!n)throw r||"Assertion Failed!"}var be=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),zs=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Zc=function(){function n(r){this.side=r,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(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),pa=function(){function n(){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 n}(),Hx=function(){function n(){var r=new pa,e=new zs,t=new Zc(0),o=new Zc(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Zc(0),t=new Zc(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;we(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;we(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new pa,e=new pa,t=new zs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new pa;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new zs;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new zs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new pa;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new zs;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&be.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&be.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){we(o.prev===i),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(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)},n}(),Wx=function(){function n(){this.handle=null}return n}(),qx=function(){function n(){this.key=null,this.node=0}return n}(),wM=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Wx,this.handles[t]=new qx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,we(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Wx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new qx}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;we(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Bp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),$x=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),PM=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new $x,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new $x;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),OM=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?be.vertLeq(i.Org,a.Org)?be.edgeSign(a.Dst,i.Org,a.Org)<=0:be.edgeSign(i.Dst,a.Org,i.Org)>=0:be.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return be.edgeSign(i.Dst,o,i.Org)>=0;var s=be.edgeEval(i.Dst,o,i.Org),l=be.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){we(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Bp;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ge.ODD:return(e&1)!==0;case Ge.NONZERO:return e!==0;case Ge.POSITIVE:return e>0;case Ge.NEGATIVE:return e<0;case Ge.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do we(be.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=be.vertL1dist(e,r),i=be.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(be.vertLeq(o.Org,i.Org)){if(be.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;be.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(be.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(we(!be.vertEq(o.Dst,i.Dst)),be.vertLeq(o.Dst,i.Dst)){if(be.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(be.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new pa,h,f;if(we(!be.vertEq(c,l)),we(be.edgeSign(l,r.event,a)<=0),we(be.edgeSign(c,r.event,s)>=0),we(a!==r.event&&s!==r.event),we(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(be.vertLeq(a,s)){if(be.edgeSign(c,a,s)>0)return!1}else if(be.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),be.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),be.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=be.vertLeq(a,s)?a:s,be.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),be.vertEq(d,a)||be.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!be.vertEq(l,r.event)&&be.edgeSign(l,r.event,d)>=0||!be.vertEq(c,r.event)&&be.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(be.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),be.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),be.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),be.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}be.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,be.vertEq(o.Org,t)){we(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!be.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}we(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(we(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),be.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Bp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,be.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=be.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);we(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new Bp,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new PM(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++t===1)),we(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,be.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new wM(i,be.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,we(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!be.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),CM=function(){function n(){this.mesh=new Hx,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=Ge.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 n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=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]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.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,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;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]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!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),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;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))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;be.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;be.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(be.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(be.edgeGoesLeft(o.Lnext)||be.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(be.edgeGoesRight(t.Lprev)||be.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===at.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.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=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1;if(e===at.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==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;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Hx),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=Ge.ODD),e===void 0&&(e=at.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),OM.computeInterior(this,a);var s=this.mesh;return e===at.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===at.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Rr(n){var r=n.windingRule,e=r===void 0?Ge.ODD:r,t=n.elementType,o=t===void 0?at.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,h=n.strict,f=h===void 0?!0:h,m=n.debug,y=m===void 0?!1:m;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var g=new CM;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)g.addContour(l||2,d[v]);return g.tesselate(e,o,a,l,u,f),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var IW=Ge.ODD,NW=Ge.NONZERO,DW=Ge.POSITIVE,EW=Ge.NEGATIVE,_W=Ge.ABS_GEQ_TWO,BW=at.POLYGONS,LW=at.CONNECTED_POLYGONS,RW=at.BOUNDARY_CONTOURS;import{Box2 as NM,BufferAttribute as tu,BufferGeometry as DM,Vector2 as EM}from"three";var Jc=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Jc.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Jc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Gs=Jc;Gs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Qx=hi(Kx()),js={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Gp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},jp={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},zp=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),dn=class extends DM{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(I=>{let D=I.extractShapePointsToFlatArray([],i),_=[];for(let B=D.length-1;B>=1;B-=2){let V=D[B-1],U=D[B-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 D=u[I],_=[];for(let B=0;B<D.length;B+=2)_.push([D[B],D[B+1]]);p.push(_)}let h;e.isText?h=new NM().setFromPoints(e.points.map(D=>D.position)).getSize(new EM).length()*.1:p[0].length===0?h=o:h=(0,Qx.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=Rr({windingRule:s,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=js}let m;try{m=Rr({windingRule:Ge.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Gp}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let D=m.elements[I],_=I%2===0?f.vertexCount:0;f.elements.push(D+_)}for(let I=0;I<m.vertexIndices.length;I++){let D=m.vertexIndices[I],_=f.vertexCount;f.vertexIndices.push(D+_)}for(let I=0;I<m.vertices.length;I++){let D=m.vertices[I];f.vertices.push(D)}}let g=1/0,v=-1/0,P=1/0,O=-1/0;for(let I=0,D=f.vertexCount;I<D;I++){let _=I*2,B=f.vertices[_+0],V=f.vertices[_+1];B<g&&(g=B),B>v&&(v=B),V<P&&(P=V),V>O&&(O=V)}this._minX=g,this._minY=P,this._width=v-g,this._height=O-P,this._buffer=new Gs(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let I=f.elementCount-1;I>=0;I--){let D=I>=y,_=I*2,B=f.elements[_+0],V=f.elements[_+1],U=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,j=U-1,F=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=f.vertices[j*2+0],Z=f.vertices[j*2+1],Q=f.vertices[W*2+0],$=f.vertices[W*2+1],ue=f.vertices[F*2+0],le=f.vertices[F*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let he=Q-ue,pe=$-le,fe=Math.sqrt(he*he+pe*pe);he/=fe,pe/=fe,R.normals[te*2+0]=-pe,R.normals[te*2+1]=he,R.concave[te]=ne*pe-ce*he>0;let ge=f.vertexIndices[W];if(Array.isArray(ge))R.continuous[te]=!1;else{let[me,C]=this._shape.getCurveIndexFromVertexId(ge-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?me+1:me-1;ie=(ie+H)%H;let Ee=C===1?0:1,Ve=this._shape.roundedCurves[me].getTangent(C),_e=this._shape.roundedCurves[ie].getTangent(Ee);R.continuous[te]=Ve.dot(_e)>.95}}D&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[j,W,F]=[W,F,F+1],F>=U&&(F-=V)}while(F!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,U*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let he=ae*2,pe=(ae-1+V)%V*2,fe=f.vertices[R.start*2+he+0],ge=f.vertices[R.start*2+he+1],me=-R.normals[pe+0]*Z,C=-R.normals[pe+1]*Z,ie=-R.normals[he+0]*Z,Ee=-R.normals[he+1]*Z;if(R.concave[ae]||!R.concave[ae]&&D){let Ve=Math.atan2(C,me),_e=Math.atan2(Ee,ie);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(R.continuous[ae]||D){let bt=Ve+Pe/2,Me=Math.cos(bt)*Z,yt=Math.sin(bt)*Z;Q[2*ne+0]=fe+Me*(D?-1:1),Q[2*ne+1]=ge+yt*(D?-1:1),le[ne]=ae,ne++}else{let bt=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=bt;Me++){let yt=Ve+Pe*(Me/bt),vt=Math.cos(yt)*Z,Mn=Math.sin(yt)*Z;Q[2*ne+0]=fe+vt,Q[2*ne+1]=ge+Mn,le[ne]=ae,ne++}}}else Q[2*ne+0]=fe+me,Q[2*ne+1]=ge+C,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=fe,Q[2*ne+1]=ge,le[ne]=ae,ne++,Q[2*ne+0]=fe+ie,Q[2*ne+1]=ge+Ee,le[ne]=ae,ue[ae]=ne,ne++}let ce=Rr({windingRule:Ge.POSITIVE,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let pe=ae.Org.idx,fe=le[pe],ge=le[(pe+1)%le.length];ae.idx=[fe,ge],ae.Sym.idx=[ge,fe]},vertexIdCallback:ae=>{let he=ae.Lprev.idx;return[he?he[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[he,pe]=ce.vertexIndices[ae];if(he===pe)continue;let fe=pe;pe<he&&(fe+=V);for(let ge=he;ge<fe;ge++){let me=ge%V,C=(ge+1)%V;if(!R.continuous[me]||!R.continuous[C]){ce.vertexIndices[ae]=[he,me],ce.vertexIndices.splice(ae+1,0,[C,pe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=S.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=R.concave.length,le=0,ne=zp(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=zp(le,V);let ce=K.boundary.vertexIndices.findIndex(ne),ae=Z.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%Q;while(ne(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ne(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let he=le,pe=0,fe=this._buildBevelVert(R,K,(ce-1+Q)%Q,void 0,pe),ge=this._buildBevelVert(R,Z,(ae-1+$)%$,void 0,pe),me=fe,C=ge,ie,Ee,Ve=!1;do{pe=(le||ue)/ue,ne=zp(le,V);let _e=ee(K,ce,ne),Pe=ee(Z,ae,ne),bt=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)Ee=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(C.topN,me.topP,Ee.topP),l===!1&&S.push(me.bottomP,C.bottomN,Ee.bottomP),C=Ee;else if(_e&&Pe)if(ie=this._buildBevelVert(R,K,ce,0,pe),Ee=this._buildBevelVert(R,Z,ae,0,pe),bt?(S.push(me.topN,Ee.topP,C.topN),S.push(me.topN,ie.topP,Ee.topP),l===!1&&(S.push(Ee.bottomP,me.bottomN,C.bottomN),S.push(Ee.bottomP,ie.bottomP,me.bottomN))):(S.push(C.topN,me.topN,ie.topP),S.push(C.topN,ie.topP,Ee.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Ee.bottomP))),me=ie,C=Ee,_e===Pe)for(let Me=1;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),Ee=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(me.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,Ee.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Ee.bottomP)),me=ie,C=Ee;else if(_e>Pe){let Me=_e/Pe,yt=0;for(let vt=1;vt<_e;vt++)ie=this._buildBevelVert(R,K,(ce+vt)%Q,vt/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie,vt>(yt+1)*Me&&(yt++,Ee=this._buildBevelVert(R,Z,(ae+yt)%$,yt/(Pe-1),pe),S.push(C.topN,ie.topP,Ee.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Ee.bottomP),C=Ee)}else{let Me=Pe/_e,yt=0;for(let vt=1;vt<Pe;vt++)Ee=this._buildBevelVert(R,Z,(ae+vt)%$,vt/(Pe-1),pe),S.push(C.topN,ie.topP,Ee.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Ee.bottomP),C=Ee,vt>(yt+1)*Me&&(yt++,ie=this._buildBevelVert(R,K,(ce+yt)%Q,yt/(_e-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%ue}while(le!==he)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,R,S),D){let te=[];for(let K=S.length-1;K>=X+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];te.push($,Q,Z)}S.splice(X,S.length-X,...te)}if(D){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}T.push(te)}if(!D){let te=q[q.length-1],K;try{K=Rr({windingRule:q.length>1?Ge.POSITIVE:Ge.ODD,elementType:at.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{K=jp}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<h&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],re),$=this._buildSurfaceVert(K,K.elements[Z+1],re),ue=this._buildSurfaceVert(K,K.elements[Z+2],re);S.push(Q.top,$.top,ue.top),l===!1&&S.push(ue.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new tu(Uint32Array.from(S),1),x=new tu(this._buffer.positions,3),E=new tu(this._buffer.normals,3),N=new tu(this._buffer.uvs,2);x.needsUpdate=!0,E.needsUpdate=!0,N.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",E),this.setAttribute("uv",N),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*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,h={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[i]=h,h}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,p,d,h;l!==c?(p=l,u=c,h=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,h=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||h);let f=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,g=u*2,v=p*2,P=t.boundary.vertices[y+0],O=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(P-this._minX)/this._width,A=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),A=1);let x=e.normals[g+0],E=e.normals[g+1],N=e.normals[v+0],I=e.normals[v+1];if(h){let U=N-x,R=I-E;x=x+U*(1-i),E=E+R*(1-i);let W=Math.sqrt(x*x+E*E);x/=W,E/=W}let D=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=D*3,B=D*2,V={i:o,fi:u,topP:D+0,topN:D+0,bottomP:D+1,bottomN:D+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=x*f,this._buffer.normals[_+1]=E*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=x*f,this._buffer.normals[_+4]=E*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=T),d||(this.forPathBevel?(D+=1,_+=3,B+=2):(D+=2,_+=6,B+=4),V.topP=D+0,V.bottomP=D+1,this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*f,this._buffer.normals[_+1]=I*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*f,this._buffer.normals[_+4]=I*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new dn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var fa=class extends _M{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ge.ODD;this.elementType=at.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ge.ODD,elementType:at.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let f=0,m=i.length/2;f<m;f++){let y=f*2,g=i[y+0],v=i[y+1];if(u!==void 0&&g!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=g,p=v,!l&&!c)break}if(!l&&!c)try{s=Rr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=js}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new ru(new Float32Array(d*3),3),this._normalAttribute=new ru(new Float32Array(d*3),3),this._uvAttribute=new ru(new Float32Array(d*2),2),this._indexAttribute=new ru(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let O=0,S=d;O<S;O++){let T=O*2,A=s.vertices[T+0],x=s.vertices[T+1];A<f&&(f=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let v=m-f,P=g-y;for(let O=0,S=d;O<S;O++){let T=O*2,A=s.vertices[T+0],x=s.vertices[T+1],E=(A-f)/v,N=(x-y)/P;this._positionAttribute.setXYZ(O,A,x,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,E,N)}for(let O=0,S=h;O<S;O++){let T=O*3,A=s.elements[T+0],x=s.elements[T+1],E=s.elements[T+2];this._indexAttribute.setX(T+0,A),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,E)}}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 fa(this._shape,this._curveSegments);return e.userData=vo(this.userData),e}};var ha=class extends dn{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new ha(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var Zt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ge.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Fe?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Fe(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Fe(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new fa(n.shape,o,{windingRule:a}):s=new ha(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as BM,Float32BufferAttribute as LM,MathUtils as Fp,Vector2 as Jx}from"three";var e0=Math.PI*2,ya=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Fp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=RM(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new BM,h.setAttribute("position",new LM([],3))):h=Zt.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function RM(n,r,e,t,o,i){if(t>=e0)return o>30||o%4===0?(zM(n,r,e,i),Math.round(o/4)):Zx(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=kx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?VM(n,a.x,a.y,c,o,r,e,i):Zx(n,t,o,r,e,i)}function VM(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ma(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ma(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?t0(n,i,a,s):n.addPoint(ma(0,0)),l}function Zx(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(ma(c,u))}return r<e0?i>0?t0(n,t,o,i):n.addPoint(ma(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&r0(n,t,o,i)),1}function zM(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(ou(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(ou(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ou(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(ou(o,i-e,o+s,i-e,o-s,i-e)),t>0&&r0(n,r,e,t)}function ma(n,r){return new Lr(Fp.generateUUID(),new Jx(n,r))}function ou(n,r,e,t,o,i){let a=ma(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function t0(n,r,e,t){o0(n,r,e,t).forEach(i=>n.addPoint(i))}function r0(n,r,e,t){let o=o0(n,r,e,t),i=new Fe;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function o0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Jx(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=Fp.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 GM,Float32BufferAttribute as Up,Uint32BufferAttribute as jM,Vector3 as n0}from"three";var i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new Fs(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},kp=new jM([0,0,0],1),Fs=class extends GM{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let h=r&&a===1;h&&(d=0),p>100&&(p=100),p===0&&(d=0);let f=()=>new n0,m=new n0,y=f(),g=f(),v=f(),P,O,S,T,A,x,E,N,I=f(),D=f(),_=f(),B=f(),V=f(),U=f(),R=f(),W=f(),j=t-2*l+.001,F=j/a,H=Math.ceil(s*a),q=H+1,re=j/H,ee=-j/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,he=Math.max(0,X*(q+ne)),[pe,fe,ge]=[3,3,2].map(rt=>Array(he*rt).fill(0)),me=[],C=i-l;function ie(rt,Xe){let Ar=Math.PI/2;x=Xe*re,N=2*Math.PI*(x%F)/F+Ar,x+=ee,E=Math.sin(N)*C,A=Math.cos(N)*C,r?rt.set(A,E,x):rt.set(A,x,E)}ie(m,-1e-10),ie(y,0),I.copy(m),ie(m,1);let Ee=m.distanceTo(y),Ve=h?0:$+Q,_e=Ee*H+2*Ve,Pe=Q,bt=_e-Ve;for(let rt=0;rt<=H;rt++){ie(g,rt),W.subVectors(g,I).normalize(),I.copy(g),U.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,U).normalize();let Xe=rt===0,Ar=rt===H,ud=Xe?3*Math.PI/2:K,dd=Xe?Pe:bt,vl=Xe?X:ae,In=Xe?0:he-X,ct=W.clone().multiplyScalar(Xe?-$:$).add(g),pd=W.clone().multiplyScalar(Xe?-1:1).normalize();for(let hr=0;hr<X;hr++){let fs=hr*te;if(D.addVectors(m.copy(U).multiplyScalar(l*Math.cos(fs)),y.copy(R).multiplyScalar(l*Math.sin(fs))),_.copy(D).normalize(),Xe||Ar){h||(ue=In+hr,[0,1,2].forEach(Ft=>{pe[ue*3+Ft]=ct.getComponent(Ft),fe[ue*3+Ft]=pd.getComponent(Ft)}),ge[ue*2]=+Ar,ge[ue*2+1]=hr/u),y.copy(_).multiplyScalar(Q),v.addVectors(g,y);for(let Ft=0;Ft<d;Ft++){let Nn=Ft*K+ud;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(Nn)),y.copy(_).multiplyScalar($*Math.cos(Nn))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=vl+Ft*X+hr,[0,1,2].forEach(ui=>{pe[ue*3+ui]=y.getComponent(ui),fe[ue*3+ui]=V.getComponent(ui)});let Sl=+Xe+Math.sin(Nn);ge[ue*2]=(dd+$*Sl)/_e,ge[ue*2+1]=hr/u}}y.addVectors(g,D),ue=ce+rt*X+hr,[0,1,2].forEach(Ft=>{pe[ue*3+Ft]=y.getComponent(Ft),fe[ue*3+Ft]=_.getComponent(Ft)}),ge[ue*2]=(Ve+rt*Ee)/_e,ge[ue*2+1]=hr/u}}let Me=q+2*d+le,yt=1,[vt,Mn]=[+h,Me-1];for(let rt=vt;rt<=Mn-1;rt++){let Xe=h&&rt===Mn-1;for(let Ar=0;Ar<X-1;Ar++)P=rt*X+Ar,O=P+1,S=(Xe?Ar:P)+X,T=(Xe?Ar+1:O)+X,rt===0?me.push(O,T,S):rt===Me-2?me.push(P,O,S):me.push(P,O,S,O,T,S)}this.setIndex(me),this.setAttribute("position",new Up(pe,3)),this.setAttribute("normal",new Up(fe,3)),this.setAttribute("uv",new Up(ge,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,kp.array=o,kp.count=o.length,kp}};import{IcosahedronGeometry as FM}from"three";var a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Us(r*.5,i,a):new FM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Us=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-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(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new Us(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as UM,Shape as kM}from"three";var s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.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}]},n.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(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new kM;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new UM(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as m0,BufferGeometryLoader as tI,Vector3 as rI,BoxGeometry as y0}from"three";import{BufferGeometry as QM,Vector2 as $p,Vector3 as h0}from"three";import{Box3 as HM,BufferAttribute as ks,BufferGeometry as l0,Color as qp,EventDispatcher as WM,Float32BufferAttribute as ga,Matrix3 as c0,Matrix4 as f0,MathUtils as qM,Object3D as $M,Sphere as YM,Vector2 as ur,Vector3 as Rt,Vector4 as XM}from"three";var ro=new f0,Hp=new $M,nu=new Rt,pn=class extends WM{constructor(){super(),this.uuid=qM.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(r){let e=new c0().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return ro.makeRotationX(r),this.applyMatrix4(ro),this}rotateY(r){return ro.makeRotationY(r),this.applyMatrix4(ro),this}rotateZ(r){return ro.makeRotationZ(r),this.applyMatrix4(ro),this}translate(r,e,t){return ro.makeTranslation(r,e,t),this.applyMatrix4(ro),this}scale(r,e,t){return ro.makeScale(r,e,t),this.applyMatrix4(ro),this}lookAt(r){return Hp.lookAt(r),Hp.updateMatrix(),this.applyMatrix4(Hp.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=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<i.count;d++)e.vertices.push(new Rt().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new qp().fromBufferAttribute(s,d));function u(d,h,f,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[h].clone(),e.colors[f].clone()],g=a===void 0?[]:[new Rt().fromBufferAttribute(a,d),new Rt().fromBufferAttribute(a,h),new Rt().fromBufferAttribute(a,f)],v=new xa(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new ur().fromBufferAttribute(l,d),new ur().fromBufferAttribute(l,h),new ur().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new ur().fromBufferAttribute(c,d),new ur().fromBufferAttribute(c,h),new ur().fromBufferAttribute(c,f)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let h=p[d],f=h.start,m=h.count;for(let y=f,g=f+m;y<g;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),h.materialIndex):u(y,y+1,y+2,h.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(nu).negate(),this.translate(nu.x,nu.y,nu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new f0;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new Rt,e=new Rt;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new Rt;if(r){let t=new Rt,o=new Rt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new pn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Rt,u={a:new Rt,b:new Rt,c:new Rt};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new HM),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new YM),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new c0().getNormalMatrix(e));for(let d=0,h=s.length;d<h;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,h=p.length;d<h;d++)u.push(p[d].clone());for(let d=0,h=c.length;d<h;d++){let f=c[d],m,y,g=f.vertexNormals,v=f.vertexColors,P=new xa(f.a+i,f.b+i,f.c+i);P.normal.copy(f.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let O=0,S=g.length;O<S;O++)m=g[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),P.vertexNormals.push(m);P.color.copy(f.color);for(let O=0,S=v.length;O<S;O++)y=v[O],P.vertexColors.push(y.clone());P.materialIndex=f.materialIndex+t,l.push(P)}for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let P=0,O=g.length;P<O;P++)v.push(g[P].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.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-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new Rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let m in f)f[m]!==void 0&&(r[m]=f[m]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let m=this.vertices[f];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let f=0;f<this.faces.length;f++){let m=this.faces[f],y=!0,g=!1,v=this.faceVertexUvs[0][f]!==void 0,P=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,A=0;if(A=u(A,0,0),A=u(A,1,y),A=u(A,2,g),A=u(A,3,v),A=u(A,4,P),A=u(A,5,O),A=u(A,6,S),A=u(A,7,T),t.push(A),t.push(m.a,m.b,m.c),t.push(m.materialIndex),v){let x=this.faceVertexUvs[0][f];t.push(h(x[0]),h(x[1]),h(x[2]))}if(P&&t.push(p(m.normal)),O){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new pn().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let d=0,h=e.length;d<h;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,h=t.length;d<h;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,h=o.length;d<h;d++)this.faces.push(o[d].clone());for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let P=0,O=g.length;P<O;P++){let S=g[P];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let i=r.morphTargets;for(let d=0,h=i.length;d<h;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)f.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){f.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)f.normals.push(i[d].normals[m].clone())}this.morphTargets.push(f)}let a=r.morphNormals;for(let d=0,h=a.length;d<h;d++){let f={};if(a[d].vertexNormals!==void 0){f.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let g=a[d].vertexNormals[m],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),f.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){f.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)f.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(f)}let s=r.skinWeights;for(let d=0,h=s.length;d<h;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,h=l.length;d<h;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,h=c.length;d<h;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Wp().fromGeometry(this),e=new l0,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",iu.call(new ks(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",iu.call(new ks(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",u0.call(new ks(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",d0.call(new ks(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",d0.call(new ks(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new ga(c.data.length*3,3);u.name=c.name,i.push(iu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ga(r.skinIndices.length*4,4);e.setAttribute("skinIndex",p0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ga(r.skinWeights.length*4,4);e.setAttribute("skinWeight",p0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.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(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new l0,t=r.geometry;if(r.isPoints||r.isLine){let o=new ga(t.vertices.length*3,3),i=new ga(t.colors.length*3,3);if(e.setAttribute("position",iu.call(o,t.vertices)),e.setAttribute("color",u0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new ga(t.lineDistances.length,1);e.setAttribute("lineDistance",KM.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};pn.prototype.isGeometry=!0;var Wp=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(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,l=s.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:s[g].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let g=0;g<p;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let h=r.skinIndices,f=r.skinWeights,m=h.length===t.length,y=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[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(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ur,new ur,new ur))}if(a===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ur,new ur,new ur))}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[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},xa=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new Rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new qp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function KM(n){return this.array.set(n),this}function u0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new qp),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function d0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new ur),r[e++]=i.x,r[e++]=i.y}return this}function iu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new Rt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function p0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new XM),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var ZM=["a","b","c"];function JM(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Yp(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Xp(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function eI(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],Xp(a.a,a.b,n,t,a,e),Xp(a.b,a.c,n,t,a,e),Xp(a.c,a.a,n,t,a,e)}function au(n,r,e,t,o){n.push(new xa(r,e,t,void 0,void 0,o))}function ba(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function su(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var lu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof QM?r=new pn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new h0,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],h=new Map;eI(l,c,d,h);let f=[],m,y,g,v,P,O,S;for(let Z of Array.from(h.keys())){for(y=h.get(Z),g=new h0,P=3/8,O=1/8,S=y.faces.length,S!=2&&(P=.5,O=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[JM(v,ZM[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),g.add(e),y.newEdge=f.length,f.push(g)}let T,A,x,E,N,I,D,_=[];for(o=0,i=l.length;o<i;o++){for(I=l[o],N=d[o].edges,t=N.length,t==3?T=3/16:t>3&&(T=3/(8*t)),A=1-t*Number(T),x=T,t<=2&&(t==2?(A=3/4,x=1/8):t==1||t==0),D=I.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<t;a++)E=N[a],m=E.a!==I?E.a:E.b,e.add(m);e.multiplyScalar(Number(x)),D.add(e),_.push(D)}let B=_.concat(f),V=_.length,U,R,W,j=[],F=[],H,q,re,ee,X=new $p,te=new $p,K=new $p;for(o=0,i=c.length;o<i;o++)v=c[o],U=Number(Yp(v.a,v.b,h).newEdge)+V,R=Number(Yp(v.b,v.c,h).newEdge)+V,W=Number(Yp(v.c,v.a,h).newEdge)+V,au(j,U,R,W,v.materialIndex),au(j,v.a,U,W,v.materialIndex),au(j,v.b,R,U,v.materialIndex),au(j,v.c,W,R,v.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(ba(q.x,re.x),ba(q.y,re.y)),te.set(ba(re.x,ee.x),ba(re.y,ee.y)),K.set(ba(q.x,ee.x),ba(q.y,ee.y)),su(F,X,te,K),su(F,q,X,K),su(F,re,te,X),su(F,ee,K,te));r.vertices=B,r.faces=j,p&&(r.faceVertexUvs[0]=F)}};var Pt=new rI,g0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new m0().copy(new y0(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Pt),t={width:Pt.x,height:Pt.y,depth:Pt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.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(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new m0().copy(new y0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Pt)):Pt.set(a.width,a.height,a.depth),(r!==Pt.x||e!==Pt.y||t!==Pt.z)&&i.scale(Pt.x===0?1:r/Pt.x,Pt.y===0?1:e/Pt.y,Pt.z===0?1:t/Pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new lu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new tI(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Pt);let a=100/Pt.x;Object.assign(i.parameters,{width:100,height:Pt.y*a,depth:Pt.z*a}),r(this.build(i))})}};var cu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,h=2*Math.PI/t;for(let m=0;m<t;m++){let y=h*m,g=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(g,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 f=Zt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as oI,Float32BufferAttribute as Kp,Vector2 as oo,Vector3 as It}from"three";var x0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.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(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new Zp(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function Hs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qp(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function nI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Zp=class extends oI{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,h=e/2,f=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,P=new It(0,-h,0),O=new It(0,h,0),S=new oo(r,-h),T=new oo(m,-h),A=new oo(0,O.y).sub(T),x=new oo(0,O.y).sub(S),E=new oo(A.y,-A.x).normalize(),N=new oo(x.y,-x.x).normalize(),D=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,D);let _;{let F=new It(E.x,E.y,0),H=new It(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let B=a/Math.tan((Math.PI-A.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new It;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],q=S.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+f,te=new oo(Math.sin(X),Math.cos(X));Hs(q,te,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],F,H[(ee+1)%H.length])}let R=[];{let F=new It,H=new It,q=new It,re=new It,ee=new It,X=new It;for(let te=0;te<t;te++){let K=te/t*Math.PI*2+f,Z=(te+.5)/t*Math.PI*2+f,Q=(te+1)/t*Math.PI*2+f,$=new oo(Math.sin(K),Math.cos(K)),ue=new oo(Math.sin(Z),Math.cos(Z)),le=new oo(Math.sin(Q),Math.cos(Q));Hs(S,$,H),Hs(S,le,q),Hs(E,ue,F),Qp(O,H,q,V,V,re),c.push(re.x,re.y,re.z),Qp(H,O,q,V,B,ee),c.push(ee.x,ee.y,ee.z),Qp(q,H,O,B,V,X),c.push(X.x,X.y,X.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 ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let fe=H.clone().add(q).multiplyScalar(.5),ge=O.clone().sub(fe).normalize(),C=P.clone().sub(fe).normalize().add(ge).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(fe,ie,C,A.angle())}let he,pe;{let fe=new It;Hs(N,le,fe);let ge=X.clone().add(re).multiplyScalar(.5);ge=nI(ge,q,O);let me=X.clone().sub(re);[he,pe]=W(ge,me,fe,_,re.y)}{let fe=he,ge=fe.clone().setY(0).normalize(),me=new It(0,-1,0),C=ge.clone().cross(me);j(fe,ge,me,C)}R.concat(pe);{let fe=A.angle(),ge=Math.PI-fe,me=O.clone();me.y-=a/Math.sin(fe-Math.PI/2);let C=new It,ie=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-ge*Ve/s,bt=Math.cos(Pe),Me=Math.sin(Pe),yt=Z;for(let vt=0;vt<=Ve;vt++){let Mn=Math.cos(yt),rt=Math.sin(yt);F.x=bt*rt,F.y=Me,F.z=bt*Mn,C.copy(me).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),_e.push(d++),yt+=Math.PI*2/Ve/t}ie.push(_e)}pe.reverse(),ie.push(pe);let Ee=ie.length-1;for(let Ve=0;Ve<Ee;Ve++){let _e=ie[Ve],Pe=ie[Ve+1],bt=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=bt;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Kp(c,3)),this.setAttribute("normal",new Kp(u,3)),this.setAttribute("uv",new Kp(p,2));function W(F,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);F.addScaledVector(q,-a/Math.sin(te));let Z=new It,Q=new It,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,Math.cos(ce));for(let ae=0;ae<=$;ae++){let he=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,he),Z.addScaledVector(Q,a),ee!=null){let pe=Math.max(0,Z.y-ee);Z.addScaledVector(H,-pe/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 ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,he=ae+($+1),pe=he+1,fe=ae+1;l.push(ae,he,fe),l.push(he,pe,fe)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,q,re){let ee=Math.PI/2,X=x.angle()-ee,te=[],K=new It,Z=new It;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*v,he=Math.cos(ae),pe=Math.sin(ae),fe=Math.atan(Math.tan(X)*he),ge=(ee+fe)*le,me=Math.cos(ge),C=Math.sin(ge);K.set(0,0,0),K.addScaledVector(H,C*he),K.addScaledVector(q,me),K.addScaledVector(re,C*pe),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),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,S,T){return S>e&&T>t?Math.min(O*e/S,O*t/T):S>e?O*e/S:T>t?O*t/T:O}let h=[];h[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),h[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),h[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),h[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,m=p.x,y=p.y,g=u.y;r.addPoint(r.createPoint(f,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,g)),r.addPoint(r.createPoint(f,g)),r.isClosed=!0;let v=!0;for(let O=0,S=r.points.length;O<S;O++)r.points[O].roundness=h[O],O>0&&h[O]!==h[O-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let P=Zt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as iI,Float32BufferAttribute as aI,MathUtils as b0,SphereGeometry as sI}from"three";var v0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=b0.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(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new iI,u.setAttribute("position",new aI([],3))):u=new sI(.5*r,o,i,a,s,l,c*b0.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as lI}from"three";var S0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new lI(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as cI,Float32BufferAttribute as Jp,Vector3 as uI}from"three";var w0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new ef(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},ef=class extends cI{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,h=(Z=0,Q=0,$=0)=>new uI(Z,Q,$),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],P=-g,O=+g,[S,T,A]=[h(P,-y,+v),h(P,-y,-v),h(P,+y,-v)],x=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),E=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));A.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(A.z=Math.min(N,I),A.z==I&&(A.y-=(N-I)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),f.subVectors(S,T),m.subVectors(A,T);let D=Math.min(f.length(),m.length())*i/100,_=D*Math.tan(o/2),B=D/Math.cos(o/2),V=f.clone().normalize().add(m.normalize()).setLength(B).add(T);f.set(0,x(o,!0),E(o,!0)),p.push([A,f.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;f.set(0,Math.sin(Q)*_,Math.cos(Q)*_),f.add(V),m.set(0,x(Q),E(Q)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(U/2)*_*2,W=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[W-1][0].distanceTo(p[W][0]),H=j+R*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*R)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(P,q.y,q.z,P,X.y,X.z,O,q.y,q.z,O,q.y,q.z,P,X.y,X.z,O,X.y,X.z),l.push(0,re.y,re.z,0,te.y,te.z,0,re.y,re.z,0,re.y,re.z,0,te.y,te.z,0,te.y,te.z),c.push(0,ee,0,K,1,ee,1,ee,0,K,1,K),[q,re,ee]=[X,te,K];this.setAttribute("position",new Jp(s,3)),this.setAttribute("normal",new Jp(l,3)),this.setAttribute("uv",new Jp(c,2))}};var uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,h=0,f=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=p*t/100,v=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=h+Math.sin(S)*p,A=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,A))}}else for(let O=0;O<o;O++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+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=i;u.roundness=i,u.update();let P=Zt.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as dI}from"three";var P0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.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(n){let{width:r,height:e}=n.parameters,t=new dI(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as pI,Float32BufferAttribute as fI,MathUtils as hI}from"three";var O0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=mI(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function mI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=hI.clamp(o/360,0,1);if(p===0){let d=new pI;return d.setAttribute("position",new fI([],3)),d}return p===1&&(c=0),new Fs(!0,n,r,e,t,p,i,a,s,l,c,u)}import{TorusKnotGeometry as yI}from"three";var C0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.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(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new yI(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var T0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,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(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.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,h=l.points.length;d<h;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=Zt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as M0,Vector3 as Nt,Matrix3 as gI,Matrix4 as qn,BufferGeometry as I0,BufferAttribute as Sa,MathUtils as du}from"three";function A0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var xI=new qn,bI=new qn;function vI(n,r,e){let t=[new Nt,new Nt,new Nt],o=[new Nt,new Nt,new Nt];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=du.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new qn().makeBasis(t[0],t[1],t[2])}var N0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ya.create({parameters:Yd}).userData.shape;return{path:n.path??Xi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...wc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new tf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new I0,{userData:{...n,type:"PathGeometry"}})}},tf=class extends I0{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)||!A0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*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(t[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=vI(p[j],p[F],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+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,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,P=g>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:A}=this._computeShapePoints(O),x=0,E;P==="round"&&(E=new dn(this.inputs.shapeData,2*g,g,O,v,void 0,!0),x=E.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,q)=>F+(q===0||!H?2:1),0),I+=j.verticesCount,N=I});let D=I*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=Rr({windingRule:Ge.ODD,elementType:at.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=jp}B=_.vertexCount}let V=D+2*B+x*2,U=D+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(T.forEach(j=>{this._extrudeRegion(j,A,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,W,R,p[0],u[0],!1),this._closeEnd(_,D+B,W,R,p[p.length-1],u[u.length-1],!0)),E){R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);for(let q=U;q<U+x;q++)R.uvs[q*2+1]=1e-4;let j=W.length;W.push(...E.getIndex().array.map(q=>q+U)),U+=x,R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);let F=W.length;W.push(...E.getIndex().array.map(q=>q+U)),this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W);let H=xI;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(bI.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-x,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Hc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.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 t=[],o=e.length,i=this.inputs.path.isClosed,a=new Nt,s=new Nt,l=new Nt,c=new Nt,u=new Nt(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let P;y===o-1?P=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let O=g.clone().sub(v).normalize(),S=P.clone().sub(g).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 A=u.clone().cross(T).normalize(),x=T.clone().cross(A).normalize();u.copy(x),c.copy(A),y===0&&(a.copy(x),s.copy(T));let E=new qn().makeBasis(A,x,T);t.push(E)}let p=i?s:l,d=i?a:new Nt(0,1,0),h=p.clone().cross(c).normalize(),f=Math.acos(d.dot(h));if(isNaN(f))return t;let m=d.clone().cross(h);p.dot(m)>0&&(f*=-1);for(let y=1;y<t.length;y++){let g=new qn().makeRotationZ(f*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new qn,p=new qn;return e.forEach((d,h)=>{let f=h===0?0:h===i-1?1:(h-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(du.lerp(a,a+s,f)*du.DEG2RAD);let m=du.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=Ge.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let P=y[v-1],O=y[v-0];g.push(P,O)}return g}),s;try{s=Rr({windingRule:t,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=js}let l;try{l=Rr({windingRule:Ge.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Gp}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],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}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,h=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,v=s.vertices[g+0],P=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),P<d&&(d=P),P>h&&(h=P)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],P=s.elements[g+1],O=v+P,S={start:v,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,A=O-1,x=v+1,E=o.roundedCurves.length;do{let N=T-v,I=s.vertices[A*2+0],D=s.vertices[A*2+1],_=s.vertices[T*2+0],B=s.vertices[T*2+1],V=s.vertices[x*2+0],U=s.vertices[x*2+1],R=_-I,W=B-D,j=Math.sqrt(R*R+W*W);R/=j,W/=j;let F=_-V,H=B-U,q=Math.sqrt(F*F+H*H);F/=q,H/=q,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let re=s.vertexIndices[T];if(Array.isArray(re))S.continuous[N]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)S.continuous[N]=!0;else{let te=X===1?ee+1:ee-1;te=(te+E)%E;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[A,T,x]=[T,x,x+1],x>=O&&(x-=P)}while(x!==v+1)}return{regions:[i,...a],infos:f,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Nt,u=new Nt,p=new Nt,d=new Nt,h=new M0;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let O=(e.start+P)*2;if(c.set(t[O+0],t[O+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let S=P===0?(e.start+e.count-1)*2:O-2;u.set(t[S+0],t[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),h.set(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),h.set(0,y/(o.length-1));else{let S=P===e.count-1?e.start*2:O+2;u.set(t[S+0],t[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,h),v++}}});let f=o.length-1;for(let m=0;m<f;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&v++;let O=P===e.count-1?0:v+1,S=y+v,T=y+O,A=g+O,x=g+v;e.isHole?s.push(S,A,T,S,x,A):s.push(S,T,A,S,A,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Nt(0,0,l?-1:1).applyMatrix4(a),p=new Nt,d=new M0;for(let f=0;f<c;f++){let m=2*f;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+f,p,u,d)}let h=e.elements;for(let f=0;f<e.elementCount;f++){let m=3*f,y=h[m+0]+t,g=h[m+(l?1:2)]+t,v=h[m+(l?2:1)]+t;o.push(y,g,v)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new gI().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let h=p.array,f=d.array,m=p.itemSize;for(let y=t*m,g=o*m;y<g;y+=m){if(y===t)debugger;s=h[y+0],l=h[y+1],c=h[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),h[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,h[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,h[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=f[y+0],l=f[y+1],c=f[y+2],f[y+0]=a[0]*s+a[3]*l+a[6]*c,f[y+1]=a[1]*s+a[4]*l+a[7]*c,f[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as D0,BufferGeometry as rf}from"three";import{mergeBufferGeometries as wI}from"three/examples/jsm/utils/BufferGeometryUtils.js";function E0(){let n=new rf;return n.setAttribute("position",new D0(new Float32Array([]),3)),n.setIndex(new D0(new Uint16Array([]),1)),n}var PI=E0().attributes,OI=12,CI=1,wa=class extends rf{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,PI),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=Dc.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=TI(e,t,d),{shapes:f,charWidths:m,charCoords:y}=t.generateShapes(h,e),g=(typeof o=="number"?o:1)*.5,v=(typeof i=="number"?i:1)*.5,P=f.map(T=>new Fe().fromShape(T,!0));this.vectorShapes=P;let O=P.map(T=>Zt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ge.NONZERO:Ge.ODD,subdivisions:this.isLowResolution&&a>0?CI:OI}})),S=O.length?wI(O):E0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,A])=>{this.setAttribute(T,A)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Ht(new rf,wa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function TI(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
3
3
  `?(t[t.length-1]+=o,o="",i===`
4
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as nf,BufferAttribute as R0,Uint32BufferAttribute as af,Float32BufferAttribute as sf,Matrix4 as DI,Vector3 as qs,Sphere as EI,Box3 as _I,BoxGeometry as BI}from"three";var B0,fu=new Promise(n=>{B0=n}),_0=!1;var pu;function L0(){if(_0)return;if(pu)return pu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.5.4/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});B0(l),_0=!0}return pu=n(),pu}import{BufferGeometryLoader as AI}from"three";var MI=["font"];function _o(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];Wd(p)&&!MI.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Wd(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=Fe.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry"){if(i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new AI().parse(i),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(i.type==="SubdivGeometry"){let c=new mt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new wa(i,r);if(i.type==="UIGeometry")return va.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=of(s)}catch(c){console.error(c)}if(!l){let c=Fe.createFromState(Yi.defaultData(),100,100);s.shape=c,l=of(s)}return l}import{Matrix4 as II}from"three";var NI=new II;function Ws(n,r,e,t){let o=n.position.array,i=n.normal.array,a=NI.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var hu=new _I,Pa=new qs,Se;fu.then(n=>{Se=n});var V0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),z0=new Uint32Array([0,1,2,3]),G0=new Uint8Array([4]),mt=class extends nf{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Jo.div(t,o);this.subdividedGeometry&&Ws(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ws(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Pa.fromArray(i));let s=Pa.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,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=mt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new BI(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(mt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new EI,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;hu.setFromBufferAttribute(t),hu.getCenter(o),e.boundingSphere.radius=o.distanceTo(hu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hu.getSize(Pa);let i={width:Pa.x,height:Pa.y,depth:Pa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(Se.free_bvh(t),Se.free_subdivision_surface(t));try{a=mt.allocate(e,i)}catch(u){console.error(u,e),a=mt.allocate({positionWASM:V0,indexWASM:z0,verticesPerFaceWASM:G0},i)}if(Se.set_destination_refinement_level(a,0),s=mt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=mt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=mt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,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 i=e.shape!==void 0||e.path!==void 0?t.geometry:_o(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=df(i.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,h=d+e.radialSegments*3;p=[d,h]}return{indices:l,verticesPerFace:c}=pf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=V0,i=z0,a=G0);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,h=i.length+a.length,f=d*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=h*Uint32Array.BYTES_PER_ELEMENT,g=Se._malloc(f),v=new Float32Array(Se.HEAPF32.buffer,g,d),P=new Uint32Array(Se.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new DI().makeScale(...e.scaleBaked)),t&&(O?O.premultiply(t):O=t);let S=O?Se.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):Se.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(g),S}static buildLevel(e,t,o,i,a){let s=a?Se.get_mesh_data2(e,t?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,t?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],h=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],g=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],P=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let O=new nf;if(O.setIndex(new af(P,1)),O.setAttribute("position",new sf(h,3)),O.setAttribute("normal",new sf(m,3)),t){O.setAttribute("faceMap",new af(g,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new R0(S,4))}return Se.free_mesh_data(s),O.userData.type="SubdivGeometry",O}i.getAttribute("position").copyArray(h),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],h=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new nf;f.setAttribute("position",new sf(p,3));let m=new Float32Array(p.length);for(let y=0,g=p.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return f.setAttribute("color",new R0(m,3)),f.setIndex(new af(h,1)),Se.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||Se.set_destination_refinement_level(e,t);let a=o?Se.get_topological_data2(e,i?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,i?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=Se.HEAPU32[l[u]>>2],f=new Uint32Array(Se.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var j0=["getX","getY","getZ"];function df(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[j0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[j0[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var mu=new qs,lf=new qs,cf=new qs,uf=new qs;function pf(n,r,e,t){let o=[],i=[];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((h,f)=>Math.floor(f/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]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){mu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),lf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),cf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),uf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),lf.sub(mu).normalize(),cf.sub(mu).normalize(),uf.sub(mu).normalize();let l=lf.cross(cf).dot(uf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[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),i.push(u,u)}return{indices:o,verticesPerFace:i}}var br={};s1(br,{calcBoolean:()=>GI,calcBooleanTopological:()=>zI,freeMeshSet:()=>kI,getMeshSet:()=>jI,hasOpenEdges:()=>FI,transformMeshSet:()=>UI});var LI,F0=new Promise(n=>{LI=n});import{Float32BufferAttribute as U0,Sphere as RI}from"three";var De,Oa;F0.then(n=>De=n);function VI(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=df(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=pf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function k0(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=De._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(De.HEAPU32.buffer,i,r):new Float32Array(De.HEAPF32.buffer,i,r)).set(n,0),i}function H0(n){switch(n){case 0:return De.OP.UNION;case 1:return De.OP.INTERSECTION;case 2:return De.OP.A_MINUS_B;case 3:return De.OP.B_MINUS_A;case 4:return De.OP.SYMMETRIC_DIFFERENCE;case 5:return De.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function zI(n,r){Oa===void 0&&(Oa=De.init_csg());let e=k0(n),t=De.csg_calc_topological(Oa,e,n.length,H0(r));De._free(e);let o=6,i=De.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=De.HEAPU32[i[s]>>2],c=new Float32Array(De.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=De.HEAPU32[i[s]>>2],p=new Uint32Array(De.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=De.HEAPU32[i[s]>>2],h=new Uint8Array(De.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return De.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function GI(n,r,e,t){Oa===void 0&&(Oa=De.init_csg());let o=k0(n),i=De.csg_calc(Oa,o,n.length,t,H0(r));De._free(o);let a=5,s=De.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=De.HEAPU32[s[c]>>2],p=De.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=De.HEAPU32[s[c]>>2],h=De.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new U0(p,3)),e.setAttribute("normal",new U0(h,3));let m=De.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new RI),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},De.free_mesh_data(i),f}function jI(n,r,e){if(De===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,t=g.positions,o=Array(g.verticesPerFace.reduce((v,P)=>v+P,0)+i);for(let v=0,P=0,O=0;v<g.verticesPerFace.length;v++){o[O++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[O++]=g.indices[P++]}}else({positions:t,faceIndices:o,nFaces:i}=VI(n,r,e));let a=t.length,s=o.length,l=t.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,h=De._malloc(u),f=new Float32Array(De.HEAPF32.buffer,h,l),m=new Uint32Array(De.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=De.get_csg_mesh(h,a,h+p,s,i);return De._free(h),y}function FI(n){return De.has_open_edges(n)}function UI(n,r){De.transform_csg_mesh(n,r.elements)}function kI(n){De.free_csg_mesh(n)}var HI={ConeGeometry:Px,CubeGeometry:Ox,CylinderGeometry:wx,DodecahedronGeometry:Cx,EllipseGeometry:ya,HelixGeometry:i0,IcosahedronGeometry:a0,LatheGeometry:s0,NonParametricGeometry:g0,PolygonGeometry:cu,PyramidGeometry:x0,RectangleGeometry:va,SphereGeometry:v0,PlaneGeometry:S0,BackdropGeometry:w0,StarGeometry:uu,TextFrameGeometry:P0,TorusGeometry:O0,TorusKnotGeometry:C0,TriangleGeometry:T0,PathGeometry:N0,VectorGeometry:Zt},of=n=>HI[n.type].create(n);function Ca(n){return n!==null&&"booleanOp"in n}var Ta=class extends la(qI){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new WI}updateVisible(e){super.updateVisible(e),this.visible=!Ca(this.parent)&&this.visible,Ca(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ca(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ta&&(e.freeBooleanPointer(),Ca(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var yu=new $I;function $s(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}yu.min.set(i,a,s),yu.max.set(l,c,u),yu.getCenter(t),yu.getSize(o).multiplyScalar(.5)}var KI=new YI,QI=new XI,Ot=class extends Ta{constructor(r,e){super(KI,QI),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?$s(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as f3,Matrix4 as h3,Sphere as Eb,Vector3 as m3}from"three";import{BufferAttribute as u3,Float32BufferAttribute as Db,MathUtils as zf,Vector3 as Gf}from"three";import{ShaderMaterial as YN}from"three";var Bo=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Bo.uuidContext===null)throw new Error("plz startContext");Bo.uuidContext===Bo.globalContext?this.uuid="_gid"+Bo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Bo.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===Bo.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},qe=Bo;qe.globalContext={nodeContextUuid:0},qe.uuidContext=Bo.globalContext;import{CubeReflectionMapping as lN,CubeRefractionMapping as cN,CubeUVReflectionMapping as uN,LinearEncoding as eb,sRGBEncoding as dN}from"three";var Ys=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var ff=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},Ct=new ff;import{Vector2 as W0}from"three";import{MathUtils as ZI}from"three";var ye=class extends qe{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=ZI.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,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var $e=class extends ye{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var st=class extends $e{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof W0?e:new W0(e,t)}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,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as q0}from"three";var Vt=class extends $e{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof q0?e:new q0(e,t,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,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as JI}from"three";var Tt=class extends JI{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}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,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 Jt=class extends $e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Tt?e:new Tt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var eN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,$0=/[a-z_0-9]+/gi,J=class extends ye{constructor(e,t,o,i,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,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,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=$0.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],h=d[0],f=this.isMethod?!this.getInputByName(h):!0,m=h;if(this.keywords[h]||this.useKeywords&&f&&Ct.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=Ct.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||Ct.getKeyword(h,e),g.cache&&(e.keywords[h]=y)}m=y.build(e)}h!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+h.length+l),l+=m.length-h.length),this.getIncludeByName(m)===void 0&&Ct.contains(m)&&e.include(Ct.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=eN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match($0);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 tN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,hf=class extends ye{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||hf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=tN.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,t){if(t==="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),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},je=hf;je.PI="PI",je.PI2="PI2",je.RECIPROCAL_PI="RECIPROCAL_PI",je.RECIPROCAL_PI2="RECIPROCAL_PI2",je.LOG2="LOG2",je.EPSILON="EPSILON";var rN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as nf,BufferAttribute as R0,Uint32BufferAttribute as af,Float32BufferAttribute as sf,Matrix4 as DI,Vector3 as qs,Sphere as EI,Box3 as _I,BoxGeometry as BI}from"three";var B0,fu=new Promise(n=>{B0=n}),_0=!1;var pu;function L0(){if(_0)return;if(pu)return pu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.5.6/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});B0(l),_0=!0}return pu=n(),pu}import{BufferGeometryLoader as AI}from"three";var MI=["font"];function _o(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];Wd(p)&&!MI.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Wd(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=Fe.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry"){if(i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new AI().parse(i),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(i.type==="SubdivGeometry"){let c=new mt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new wa(i,r);if(i.type==="UIGeometry")return va.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=of(s)}catch(c){console.error(c)}if(!l){let c=Fe.createFromState(Yi.defaultData(),100,100);s.shape=c,l=of(s)}return l}import{Matrix4 as II}from"three";var NI=new II;function Ws(n,r,e,t){let o=n.position.array,i=n.normal.array,a=NI.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var hu=new _I,Pa=new qs,Se;fu.then(n=>{Se=n});var V0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),z0=new Uint32Array([0,1,2,3]),G0=new Uint8Array([4]),mt=class extends nf{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Jo.div(t,o);this.subdividedGeometry&&Ws(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ws(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Pa.fromArray(i));let s=Pa.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,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=mt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new BI(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(mt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new EI,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;hu.setFromBufferAttribute(t),hu.getCenter(o),e.boundingSphere.radius=o.distanceTo(hu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hu.getSize(Pa);let i={width:Pa.x,height:Pa.y,depth:Pa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(Se.free_bvh(t),Se.free_subdivision_surface(t));try{a=mt.allocate(e,i)}catch(u){console.error(u,e),a=mt.allocate({positionWASM:V0,indexWASM:z0,verticesPerFaceWASM:G0},i)}if(Se.set_destination_refinement_level(a,0),s=mt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=mt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=mt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,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 i=e.shape!==void 0||e.path!==void 0?t.geometry:_o(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=df(i.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,h=d+e.radialSegments*3;p=[d,h]}return{indices:l,verticesPerFace:c}=pf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=V0,i=z0,a=G0);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,h=i.length+a.length,f=d*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=h*Uint32Array.BYTES_PER_ELEMENT,g=Se._malloc(f),v=new Float32Array(Se.HEAPF32.buffer,g,d),P=new Uint32Array(Se.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new DI().makeScale(...e.scaleBaked)),t&&(O?O.premultiply(t):O=t);let S=O?Se.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):Se.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(g),S}static buildLevel(e,t,o,i,a){let s=a?Se.get_mesh_data2(e,t?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,t?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],h=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],g=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],P=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let O=new nf;if(O.setIndex(new af(P,1)),O.setAttribute("position",new sf(h,3)),O.setAttribute("normal",new sf(m,3)),t){O.setAttribute("faceMap",new af(g,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new R0(S,4))}return Se.free_mesh_data(s),O.userData.type="SubdivGeometry",O}i.getAttribute("position").copyArray(h),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],h=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new nf;f.setAttribute("position",new sf(p,3));let m=new Float32Array(p.length);for(let y=0,g=p.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return f.setAttribute("color",new R0(m,3)),f.setIndex(new af(h,1)),Se.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||Se.set_destination_refinement_level(e,t);let a=o?Se.get_topological_data2(e,i?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,i?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=Se.HEAPU32[l[u]>>2],f=new Uint32Array(Se.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var j0=["getX","getY","getZ"];function df(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[j0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[j0[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var mu=new qs,lf=new qs,cf=new qs,uf=new qs;function pf(n,r,e,t){let o=[],i=[];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((h,f)=>Math.floor(f/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]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){mu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),lf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),cf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),uf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),lf.sub(mu).normalize(),cf.sub(mu).normalize(),uf.sub(mu).normalize();let l=lf.cross(cf).dot(uf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[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),i.push(u,u)}return{indices:o,verticesPerFace:i}}var br={};s1(br,{calcBoolean:()=>GI,calcBooleanTopological:()=>zI,freeMeshSet:()=>kI,getMeshSet:()=>jI,hasOpenEdges:()=>FI,transformMeshSet:()=>UI});var LI,F0=new Promise(n=>{LI=n});import{Float32BufferAttribute as U0,Sphere as RI}from"three";var De,Oa;F0.then(n=>De=n);function VI(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=df(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=pf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function k0(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=De._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(De.HEAPU32.buffer,i,r):new Float32Array(De.HEAPF32.buffer,i,r)).set(n,0),i}function H0(n){switch(n){case 0:return De.OP.UNION;case 1:return De.OP.INTERSECTION;case 2:return De.OP.A_MINUS_B;case 3:return De.OP.B_MINUS_A;case 4:return De.OP.SYMMETRIC_DIFFERENCE;case 5:return De.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function zI(n,r){Oa===void 0&&(Oa=De.init_csg());let e=k0(n),t=De.csg_calc_topological(Oa,e,n.length,H0(r));De._free(e);let o=6,i=De.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=De.HEAPU32[i[s]>>2],c=new Float32Array(De.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=De.HEAPU32[i[s]>>2],p=new Uint32Array(De.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=De.HEAPU32[i[s]>>2],h=new Uint8Array(De.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return De.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function GI(n,r,e,t){Oa===void 0&&(Oa=De.init_csg());let o=k0(n),i=De.csg_calc(Oa,o,n.length,t,H0(r));De._free(o);let a=5,s=De.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=De.HEAPU32[s[c]>>2],p=De.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=De.HEAPU32[s[c]>>2],h=De.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new U0(p,3)),e.setAttribute("normal",new U0(h,3));let m=De.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new RI),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},De.free_mesh_data(i),f}function jI(n,r,e){if(De===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,t=g.positions,o=Array(g.verticesPerFace.reduce((v,P)=>v+P,0)+i);for(let v=0,P=0,O=0;v<g.verticesPerFace.length;v++){o[O++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[O++]=g.indices[P++]}}else({positions:t,faceIndices:o,nFaces:i}=VI(n,r,e));let a=t.length,s=o.length,l=t.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,h=De._malloc(u),f=new Float32Array(De.HEAPF32.buffer,h,l),m=new Uint32Array(De.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=De.get_csg_mesh(h,a,h+p,s,i);return De._free(h),y}function FI(n){return De.has_open_edges(n)}function UI(n,r){De.transform_csg_mesh(n,r.elements)}function kI(n){De.free_csg_mesh(n)}var HI={ConeGeometry:Px,CubeGeometry:Ox,CylinderGeometry:wx,DodecahedronGeometry:Cx,EllipseGeometry:ya,HelixGeometry:i0,IcosahedronGeometry:a0,LatheGeometry:s0,NonParametricGeometry:g0,PolygonGeometry:cu,PyramidGeometry:x0,RectangleGeometry:va,SphereGeometry:v0,PlaneGeometry:S0,BackdropGeometry:w0,StarGeometry:uu,TextFrameGeometry:P0,TorusGeometry:O0,TorusKnotGeometry:C0,TriangleGeometry:T0,PathGeometry:N0,VectorGeometry:Zt},of=n=>HI[n.type].create(n);function Ca(n){return n!==null&&"booleanOp"in n}var Ta=class extends la(qI){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new WI}updateVisible(e){super.updateVisible(e),this.visible=!Ca(this.parent)&&this.visible,Ca(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ca(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ta&&(e.freeBooleanPointer(),Ca(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var yu=new $I;function $s(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}yu.min.set(i,a,s),yu.max.set(l,c,u),yu.getCenter(t),yu.getSize(o).multiplyScalar(.5)}var KI=new YI,QI=new XI,Ot=class extends Ta{constructor(r,e){super(KI,QI),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?$s(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as f3,Matrix4 as h3,Sphere as Eb,Vector3 as m3}from"three";import{BufferAttribute as u3,Float32BufferAttribute as Db,MathUtils as zf,Vector3 as Gf}from"three";import{ShaderMaterial as YN}from"three";var Bo=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Bo.uuidContext===null)throw new Error("plz startContext");Bo.uuidContext===Bo.globalContext?this.uuid="_gid"+Bo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Bo.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===Bo.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},qe=Bo;qe.globalContext={nodeContextUuid:0},qe.uuidContext=Bo.globalContext;import{CubeReflectionMapping as lN,CubeRefractionMapping as cN,CubeUVReflectionMapping as uN,LinearEncoding as eb,sRGBEncoding as dN}from"three";var Ys=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var ff=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},Ct=new ff;import{Vector2 as W0}from"three";import{MathUtils as ZI}from"three";var ye=class extends qe{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=ZI.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,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var $e=class extends ye{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var st=class extends $e{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof W0?e:new W0(e,t)}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,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as q0}from"three";var Vt=class extends $e{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof q0?e:new q0(e,t,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,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as JI}from"three";var Tt=class extends JI{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}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,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 Jt=class extends $e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Tt?e:new Tt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var eN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,$0=/[a-z_0-9]+/gi,J=class extends ye{constructor(e,t,o,i,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,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,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=$0.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],h=d[0],f=this.isMethod?!this.getInputByName(h):!0,m=h;if(this.keywords[h]||this.useKeywords&&f&&Ct.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=Ct.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||Ct.getKeyword(h,e),g.cache&&(e.keywords[h]=y)}m=y.build(e)}h!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+h.length+l),l+=m.length-h.length),this.getIncludeByName(m)===void 0&&Ct.contains(m)&&e.include(Ct.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=eN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match($0);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 tN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,hf=class extends ye{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||hf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=tN.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,t){if(t==="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),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},je=hf;je.PI="PI",je.PI2="PI2",je.RECIPROCAL_PI="RECIPROCAL_PI",je.RECIPROCAL_PI2="RECIPROCAL_PI2",je.LOG2="LOG2",je.EPSILON="EPSILON";var rN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
5
5
  )*?)}`,"gim"),oN=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Aa=class extends ye{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=rN.exec(e);if(t){let o=t[2],i;for(;i=oN.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ma=class extends ye{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};Ct.addKeyword("uv",function(){return new Ma});Ct.addKeyword("uv2",function(){return new Ma(1)});import{LinearEncoding as nN,sRGBEncoding as iN}from"three";var $n=class extends ye{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??$n.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case nN:return["Linear"];case iN:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=$n.Nodes[this.method],s=e.include(a);if(s===$n.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=$n.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=$n.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},qt=$n;qt.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
6
6
  `)),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(`
7
7
  `)),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(`
@@ -238,7 +238,7 @@ layout(location = 1) out vec4 gVelocity;
238
238
  `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",a=""){let s=this.getVars(o),l=s[r];if(!l){let c=s.length;l={name:t||"node"+i+c+(a?"_"+a:""),type:e},s.push(l),s[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
239
239
  `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let a=r[o],s=a.type,l=a.name,c=a.size,u=this.getFormatByType(s);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
240
240
  `:t+=e+" "+u+" "+l+`;
241
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof qe?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new Ys({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new Ys({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?Ct.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof je?o=this.includes.consts:r instanceof Aa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof J&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return pN[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case lN:case cN:return new xu(t);case uN:return new gu(new $t(t));default:return new $t(t)}else{if(t.isVector2)return new st(t);if(t.isVector3)return new Vt(t);if(t.isVector4)return new Jt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return fN[r]||r}getFormatByType(r){return hN[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return tb[r]}getIndexByElement(r){return tb.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=eb,e===eb&&this.context.gamma&&(e=dN),e}};import{Vector2 as Fr,Vector3 as lo,Vector4 as Ya}from"three";var He=class extends $e{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Tt?e:new Tt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var Be=class extends $e{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};import{UniformsLib as bN,UniformsUtils as vN}from"three";var pt=class extends $e{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var zr=class extends $e{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};import{Vector3 as mN}from"three";var fn=class extends $e{};var bu=class extends fn{constructor(e){super("v3");this.image=e;this._value=new mN}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Xn=class extends fn{constructor(e,t,o=1008){super("t");this.image=e;this.wrap=t;this.minFilter=o}get value(){return this.image.getTexture(this.wrap,this.minFilter)}};import{Matrix3 as yN}from"three";var Ea=class extends $e{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new yN}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as gN}from"three";var zt=class extends $e{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new gN}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{MathUtils as xN,Matrix3 as ob}from"three";function rb(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new ob().makeRotation(t*xN.DEG2RAD))}var vu=class extends Ea{constructor(e,t,o=0){super(new ob);this.repeat=e;this.offset=t;this.rotation=o;rb(this.value,e,t,o)}updateMatrix(){rb(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as nb}from"three";var Gr=class extends $e{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof nb?new Array(e).fill(t):new Array(e).fill(new nb(0))}};var _a=class extends ye{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var yf=class extends ye{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(yf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Kn=yf;Kn.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
241
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof qe?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new Ys({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new Ys({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?Ct.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof je?o=this.includes.consts:r instanceof Aa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof J&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return pN[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case lN:case cN:return new xu(t);case uN:return new gu(new $t(t));default:return new $t(t)}else{if(t.isVector2)return new st(t);if(t.isVector3)return new Vt(t);if(t.isVector4)return new Jt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return fN[r]||r}getFormatByType(r){return hN[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return tb[r]}getIndexByElement(r){return tb.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=eb,e===eb&&this.context.gamma&&(e=dN),e}};import{Vector2 as Fr,Vector3 as lo,Vector4 as Ya}from"three";var He=class extends $e{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Tt?e:new Tt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var Be=class extends $e{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};import{UniformsLib as bN,UniformsUtils as vN}from"three";var pt=class extends $e{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var zr=class extends $e{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};import{Vector3 as mN}from"three";var fn=class extends $e{};var bu=class extends fn{constructor(e){super("v3");this.image=e;this._value=new mN}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Xn=class extends fn{constructor(e,t,o=1008,i=1006){super("t");this.image=e;this.wrap=t;this.minFilter=o;this.magFilter=i}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};import{Matrix3 as yN}from"three";var Ea=class extends $e{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new yN}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as gN}from"three";var zt=class extends $e{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new gN}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{MathUtils as xN,Matrix3 as ob}from"three";function rb(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new ob().makeRotation(t*xN.DEG2RAD))}var vu=class extends Ea{constructor(e,t,o=0){super(new ob);this.repeat=e;this.offset=t;this.rotation=o;rb(this.value,e,t,o)}updateMatrix(){rb(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as nb}from"three";var Gr=class extends $e{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof nb?new Array(e).fill(t):new Array(e).fill(new nb(0))}};var _a=class extends ye{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var yf=class extends ye{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(yf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Kn=yf;Kn.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
242
242
  float lalpha = alpha * mask;
243
243
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
244
244
  accumAlpha += (1.0 - accumAlpha) * lalpha;
@@ -1820,7 +1820,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1820
1820
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1821
1821
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1822
1822
  return displaced_position;
1823
- }`,[e,t])}}();var Ae={normalRenderTarget:new $t,normalRenderTargetDepth:new $t,transmissionRenderTarget:new $t,aspectRatio:new st,transmissionSize:new st(2048,2048),transmissionRenderTargetDepth:new $t,aoRenderTarget:new $t,aoEnabled:new pt,pixelRatioNode:new se(1),resolution:new st,penumbraSize:new zr(5,.5),frameIndex:new Be(0),transmissionLod:new Be(2)};for(let n of Object.values(Ae))n.isRenderGlobal=!0;var lb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.5.4/build/ui.wasm"};var Lo=class extends qe{constructor(){super("basic");this.nodeType="Basic";this.color=new He(ht),this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(vN.merge([bN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1823
+ }`,[e,t])}}();var Ae={normalRenderTarget:new $t,normalRenderTargetDepth:new $t,transmissionRenderTarget:new $t,aspectRatio:new st,transmissionSize:new st(2048,2048),transmissionRenderTargetDepth:new $t,aoRenderTarget:new $t,aoEnabled:new pt,pixelRatioNode:new se(1),resolution:new st,penumbraSize:new zr(5,.5),frameIndex:new Be(0),transmissionLod:new Be(2)};for(let n of Object.values(Ae))n.isRenderGlobal=!0;var lb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.5.6/build/ui.wasm"};var Lo=class extends qe{constructor(){super("basic");this.nodeType="Basic";this.color=new He(ht),this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(vN.merge([bN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1824
1824
  `));let i=["#include <beginnormal_vertex>",`
1825
1825
  #if !defined( USE_LAYER_DISPLACE )
1826
1826
  #include <defaultnormal_vertex>
@@ -2227,7 +2227,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2227
2227
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${h}, ${l.result} );
2228
2228
  }
2229
2229
  `),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>"),t=d.join(`
2230
- `)}return t}};import{VideoTexture as CN,Texture as TN,CanvasTexture as AN}from"three";var Su=class{constructor(r=1e3*10){this.timeout=r;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(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),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 r=Date.now(),e=this.head.next;for(;e.time<r-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(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Mf=class extends Su{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Af;function pb(n){return typeof n=="string"?n:(Af||(Af=new Mf),Af.load(n))}var wu=class{constructor(r,e){this.data=r;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")}},Pu=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var $a=class extends wu{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))a&&(a.image=this.img,a.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)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 i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=pb(e),this.img.onload=t}getTexture(e,t=1008){let o=this._cache[e]?.[t];if(o)return o;{let i;return this.isCanvas&&(i=new AN(this.img,void 0,e,e,void 0,t)),this.isVideo?i=new CN(this.img,void 0,e,e):i=new TN(this.img,void 0,e,e,void 0,t),this.loaded&&(i.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]=i,i}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))o&&(o.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))i?.dispose(),this._cache[e][o]=void 0}dispose(){super.dispose(),this.disposeTextures()}};var dr=class extends $a{};import{Vector2 as Vo,Vector3 as so,Vector4 as Ou}from"three";function Gt(n,r){return r.color(n)}function fb(n,r){switch(n.type){case"fresnel":return NN(n,r);case"gradient":return DN(n,r);case"depth":return EN(n,r);case"normal":return _N(n,r);case"noise":return BN(n,r);case"rainbow":return LN(n,r);case"toon":return RN(n,r);case"outline":return VN(n,r);case"transmission":return zN(n,r);case"color":return IN(n,r);case"pattern":return GN(n,r)}}function MN(n){return{type:n.type}}function jr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...MN(n),alpha:i,mode:t,isMask:o}}function IN(n,r){return{...jr(n,r),color:Gt(n.color,r)}}function NN(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...jr(n,r),color:Gt(a,r),bias:e,scale:t,intensity:o,factor:i}}function DN(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...jr(n,r),gradientType:e,smooth:t,colors:o.map(c=>new Ou(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new Vo(...s),morph:new Vo(...l),angle:a}}function EN(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...jr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new so(...s),direction:l?new so(...l):new so(1,0,0),colors:c.map(d=>d!==void 0?new Ou(d[0],d[1],d[2],d[3]):new Ou(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function _N(n,r){let{cnormal:e}=n;return{...jr(n,r),cnormal:new so(e[0],e[1],e[2])}}function BN(n,r){return{...jr(n,r),scale:n.scale,move:n.move,fA:new Vo(...n.fA),fB:new Vo(...n.fB),size:new so(...n.size),distortion:new Vo(...n.distortion),colorA:Gt(n.colorA,r),colorB:Gt(n.colorB,r),colorC:Gt(n.colorC,r),colorD:Gt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function LN(n,r){return{...jr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new so(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new so(...n.offset)}}function RN(n,r){return{...jr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new Ou(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new so(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Gt(n.shadowColor,r),offset:new so(...n.offset)}}function VN(n,r){return{...jr(n,r),outlineColor:Gt(n.outlineColor,r),contourColor:Gt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new so(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function zN(n,r){return{...jr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function GN(n,r){return{...jr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Vo(...n.offset),colorA:Gt(n.colorA,r),colorB:Gt(n.colorB,r),frequency:new Vo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Vo(...n.vertical),horizontal:new Vo(...n.horizontal),sides:n.sides}}var mn=class extends Tt{};import{MathUtils as jN,Vector4 as FN}from"three";var UN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},kN={depth:["colors"]};function HN(n,r,e){if(r==="isMask")return!0;let t=UN[n.type],o=kN[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function If(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*jN.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function hb(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(Nf(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof fn))switch(o=o||HN(e,i,a),s.constructor){case He:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof mn?s.value=new Tt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Jt:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof mn?s.value=new Tt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case st:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case $t:{If(a,r,e);break}case Gr:{s.value=a.map(l=>new FN(...l));break}default:{s.value=a;break}}}return o}var yn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,gn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)Nf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Yt.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.canvas(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Xn(i,t.texture.wrapping,t.texture.minFilter??1008),s=new bu(i),l=new vu(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Be(t.projection??0),p=new Be(["x","y","z"].indexOf(t.axis)??0),d=new Be(t.side??0),h=new st(t.size?new Fr(t.size[0],t.size[1]):new Fr(100,100)),f=new se(t.blending??0),m=new se(yn(t.alpha,o)),y=new Be(t.mode??0),g=new pt(t.isMask??!1),v=new hn(a,s,c,u,p,d,h,f,l,m,y,g),P=new Ue(v.calpha,"f");return new tt(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:h,blending:f,mat:l,alpha:m,mode:y,isMask:g},v,y,P,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Xn(i,t.texture.wrapping,t.texture.minFilter??1008),s=new se(yn(t.alpha,o)),l=new Be(t.mode??0),c=new pt(t.isMask??!1),u=new se(t.texture.rotation??0),p=new Ga(a,s,l,c,u),d=new Ue(p.calpha,"f");return new tt(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Vt(new lo(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Be(t.noiseType??0),u=new Be(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),h=new se(t.highCut??1),f=new se(t.lowCut??0),m=new Be(t.quality??1),y=new qa(s,l,i,u,p,d,h,f,m,a,c);return new rl(r,e,t,{offset:i,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:h,lowCut:f,quality:m},y,o)}else throw new Error;else return $N(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):hb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?If(o.props,t.shared,this):!0;return!1}dispose(){if(WN(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof dr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},tt=class extends gn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},rl=class extends gn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},Yt=class extends gn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(yn(o.alpha,i)),l=new Be(o.mode),c=new se(o.bumpMapIntensity),u=new se(yn(o.alphaOverride,i)),p;if(!o.visible)a=new Lo,p={};else if(o.category==="lambert"){a=new Zs;let d=new He(i.color(o.emissive)??0),h=new pt(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new tl;let d=new se(o.shininess??30),h=new He(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new el;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new pt(o.occlusion??!0);p={roughness:d,metalness:h,reflectivity:f,occlusion:m},a.roughness=d,a.metalness=h,a.reflectivity=f,a.occlusion=m}else{a=new Js;let d=new se(o.shininess??30),h=new He(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new pt(o.occlusion??!0);p={shininess:d,specular:h,occlusion:f},a.shininess=d,a.specular=h,a.occlusion=f}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 Yt(e,t,o,a,p,i)}get category(){return this.node.category}};function WN(n){let r=n instanceof gn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function vr(n){return{alpha:new se(n.alpha??1),mode:new Be(n.mode??0),isMask:new pt(n.isMask??!1)}}function qN(n,r,e,t,o){switch(n.type){case"color":{let i=new He(t.color??ht),a=vr(t),s=new Kn(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new He(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=vr(t),p=new Ks(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Ue(p.calpha,"f");return new tt(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new Vt(t.wavelengths??new lo(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new Vt(t.offset??new lo(0,0,0)),p=vr(t),d=new ka(i,a,s,l,c,u,p.alpha,p.isMask),h=new Ue(d.calpha,"f");return new tt(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,h,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new st(d/p,1):new st(1,p/d),f=vr(t),m=new Wa(i,a,s,l,c,u,h,f.alpha),y=new Ue(m.calpha,"f");return new tt(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new Be(t.positioning??0),a;t.colors?a=new Gr(t.colors.length,t.colors):(a=new Gr(10,new Ya(0,0,0,1)),a.value[1]=new Ya(1,1,1,1));let s;t.steps?s=new zr(t.steps.length,t.steps):(s=new zr(10,1),s.value[0]=0);let l=new Vt(t.source??new lo(0,0,0)),c=new pt(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new Jt(t.shadowColor),h=new Vt(t.offset??new lo(0,0,0)),f=vr(t),m=new Ha(i,a,s,l,c,u,p,d,h,f.alpha),y=new Ue(m.calpha,"f");return new tt(r,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:h,...f},m,f.mode,y,f.isMask,o)}case"outline":{let i=new He(t.outlineColor??16777215),a=new He(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),h=new Vt(t.contourDirection??new lo(0,1,0)),f=new pt(t.positionalLines??!1),m=new pt(t.compensation??!0),y=Ae.normalRenderTarget,g=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,P=Ae.resolution,O=vr(t),S=new Fa(i,a,s,l,c,u,p,d,h,f,m,P,y,g,v,O.alpha),T=new Ue(S.calpha,"f");return new tt(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:h,positionalLines:f,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let i=new Be(t.gradientType??0),a=new pt(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new Vt(t.origin??new lo),d=new Vt(t.direction??new lo),h;t.colors?h=new Gr(t.colors.length,t.colors):(h=new Gr(2,new Ya(0,0,0,1)),h.value[1]=new Ya(1,1,1,1));let f;t.steps?f=new zr(t.steps.length,t.steps):(f=new zr(2,1),f.value[0]=0);let m=vr(t),y=new Va(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Ue(y.calpha,"f");return new tt(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:h,steps:f,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new Vt(t.size??new lo(100,100,100)),s=new se(t.move??1),l=new st(t.fA??new Fr(1.7,9.2)),c=new st(t.fB??new Fr(8.3,2.8)),u=new st(t.distortion??new Fr(1,1)),p=new Jt(t.colorA),d=new Jt(t.colorB),h=new Jt(t.colorC),f=new Jt(t.colorD),m=new Be(t.noiseType??0),y=new Be(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),P=new se(t.smoothness??.5),O=new se(t.seed??.5),S=new Be(t.quality??1),T=vr(t),A=new ja(i,a,s,l,c,u,p,d,h,f,T.alpha,m,T.isMask,y,g,v,P,O,S),x=new Ue(A.calpha,"f");return new tt(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:h,colorD:f,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:v,smoothness:P,seed:O,quality:S},A,T.mode,x,T.isMask,o)}case"normal":{let i=new Vt(t.cnormal??new lo(1,1,1)),a=vr(t),s=new Ba(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Be(t.gradientType??0),a=new pt(t.smooth??!1),s;t.colors?s=new Gr(t.colors.length,t.colors):(s=new Gr(10,new Ya(0,0,0,1)),s.value[1]=new Ya(1,1,1,1));let l;t.steps?l=new zr(t.steps.length,t.steps):(l=new zr(10,1),l.value[0]=0);let c=new st(t.offset??new Fr(0,0)),u=new st(t.morph??new Fr(0,0)),p=new se(t.angle??0),d=vr(t),h=new za(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Ue(h.calpha,"f");return new tt(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},h,d.mode,f,d.isMask,o)}case"pattern":{let i=new Be(t.style??0),a=new Be(t.projection??0),s=new Be(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new st(t.offset??new Fr(0,0)),u=new Jt(t.colorA),p=new Jt(t.colorB),d=new st(t.frequency??new Fr(10,10)),h=new se(t.size??.5),f=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),g=new se(t.rotation??0),v=new st(t.vertical??new Fr(0,1)),P=new st(t.horizontal??new Fr(0,1)),O=new Be(t.sides??6),S=vr(t),T=new Ua(i,a,s,l,c,u,p,d,h,f,m,y,g,v,P,O,S.alpha,S.isMask),A=new Ue(T.calpha,"f");return new tt(r,e,n,{style:i,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:h,variation:f,smoothness:m,zigzag:y,rotation:g,vertical:v,horizontal:P,sides:O,...S},T,S.mode,A,S.isMask,o)}default:{let i=new He(1,0,0,1),a=vr(t),s=new Kn(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function $N(n,r,e,t){let o=fb(e,t);return qN(e,n,r,o,t)}function Nf(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=yn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Cu(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.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 i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var tr=class extends YN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Tu=class extends tr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}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,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Zn=class extends tr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=t.shared.needsJitter,qe.startContext(this),this.reset0(e,t),qe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Tu(e,t,o,this),a.needsJitter=this.needsJitter,this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){qe.startContext(this),(this.data!==e||o)&&this.reset0(e,t),qe.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Lt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>gn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Cu(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Cu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Cu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.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"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof Yt),this.lightLayer===void 0&&(this.lightLayer=new Yt(0,"",{...xt.defaultData("light","phong"),visible:!1},new Lo,{},e)),this.dispose();for(let t of this.flavors)t&&t.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 Yt);if(!e)return;let t=e.data,o=t.bumpMap,i=t.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 tt&&s.color instanceof hn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(qe.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Cu(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,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=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:yn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:yn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);qe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof tt?t.color.mask=void 0:t instanceof Yt&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof tt&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Yt?i.node.mask=new Dt(t.color,t.alpha,Dt.MUL):i instanceof tt&&(i.isMask.value||(i.color.mask=new Dt(t.color,t.alpha,Dt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof tt),t=this.layers.findIndex(o=>o instanceof Yt);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof tt){if(a.isMask.value)continue;o=new _a(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Yt);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof tt){if(i.isMask.value)continue;e=new _a(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof rl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Dt(t,e[o].position,Dt.ADD),t=new Dt(t,new se(.5).setReadonly(!0),Dt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,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,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Da;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 t of this.flavors)t&&t.updateAfterBuild();return 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 tt){let t=e.params.texture;if(t instanceof Xn&&!t.image.loaded)return!1}return!0}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Jn=class extends Zn{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var mb=new Map;function yb(n){if(typeof n=="string")return n;let r=mb.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},mb.set(n,r)),r.url}var XN,gb=new Promise(n=>{XN=n});var xb;gb.then(n=>xb=n);var ei=class{constructor({src:r,volume:e,delay:t,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 i;typeof r=="string"?i={src:r}:i={src:yb(r),format:"wav"},this.sound=new xb.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}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(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as KN,Vector2 as ti,Path as bb,Shape as QN,ShapeUtils as ZN,Color as JN}from"three";var Au=class{constructor(){this.type="ShapePath";this.color=new JN;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new bb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,g,v){let P=m.x,O=y.x,S=g.x,T=v.x,A=m.y,x=y.y,E=g.y,N=v.y,I=(T-S)*(A-E)-(N-E)*(P-S),D=(O-P)*(A-E)-(x-A)*(P-S),_=(N-E)*(O-P)-(T-S)*(x-A),B=I/_,V=D/_;if(_===0&&I!==0||B<=0||B>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(i(U===0?g:v,m,y),t.loc===e.ORIGIN){let R=U===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(P+t.t*(O-P)).toPrecision(10),W=+(A+t.t*(x-A)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let j=W===0?g:v;return{x:j.x,y:j.y,t:t.t}}let U=+(P+B*(O-P)).toPrecision(10),R=+(A+B*(x-A)).toPrecision(10);return{x:U,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,P=g.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*P;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===g.x&&m.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*O<0||P*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+P*P)<Math.sqrt(O*O+S*S)){t.loc=e.BEYOND;return}let A;v!==0?A=O/v:A=S/P,t.loc=e.BETWEEN,t.t=A}function a(m,y){let g=[],v=[];for(let P=1;P<m.length;P++){let O=m[P-1],S=m[P];for(let T=1;T<y.length;T++){let A=y[T-1],x=y[T],E=o(O,S,A,x);E!==null&&g.find(N=>N.t<=E.t+Number.EPSILON&&N.t>=E.t-Number.EPSILON)===void 0&&(g.push(E),v.push(new ti(E.x,E.y)))}}return v}function s(m,y,g){let v=new ti;y.getCenter(v);let P=[];return g.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{P.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),P.sort((O,S)=>O.point.x-S.point.x),P}function l(m,y,g,v,P){(P==null||P==="")&&(P="nonzero");let O=new ti;m.boundingBox.getCenter(O);let S=[new ti(g,O.y),new ti(v,O.y)],T=s(S,m.boundingBox,y);T.sort((D,_)=>D.point.x-_.point.x);let A=[],x=[];T.forEach(D=>{D.identifier===m.identifier?A.push(D):x.push(D)});let E=A[0].point.x,N=[],I=0;for(;I<x.length&&x[I].point.x<E;)N.length>0&&N[N.length-1]===x[I].identifier?N.pop():N.push(x[I].identifier),I++;if(N.push(m.identifier),P==="evenodd"){let D=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(P==="nonzero"){let D=!0,_=null,B=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(D?(B=y[U].isCW,D=!1,_=U):B!==y[U].isCW&&(B=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,P=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>P&&(P=T.x),T.x<O&&(O=T.x)}p<=P&&(p=P+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:ZN.isClockWise(y),identifier:c++,boundingBox:new KN(new ti(O,v),new ti(P,g))})});let h=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),f=[];return d.forEach(m=>{let y=h[m.identifier];if(y&&!y.isHole){let g=new QN;g.curves=m.curves,h.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let O=d[P.identifier],S=new bb;S.curves=O.curves,g.holes.push(S)}}),f.push(g)}}),f}};var Df=!1,Sb,Ef=new Promise(n=>{Sb=n}),vb=!1;var Mu;function wb(){if(Df=!0,vb)return;if(Mu)return Mu;async function n(){let e=await import("./opentype.js");Sb(e),vb=!0}return Mu=n(),Mu}var ol=class{async load(r,e,t=()=>{}){let{load:o}=await Ef;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Ef;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function e3(n){return await(await fetch(n)).arrayBuffer()}var t3=new ol;async function _f(n){let r,e,t=!1;if(n.url?(r=await e3(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(Df){let o=await t3.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}import{CubicBezierCurve as r3,LineCurve as o3,QuadraticBezierCurve as n3}from"three";function i3(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Iu=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=_f(r).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(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=_f(r).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(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(i3(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
2230
+ `)}return t}};import{VideoTexture as CN,Texture as TN,CanvasTexture as AN}from"three";var Su=class{constructor(r=1e3*10){this.timeout=r;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(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),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 r=Date.now(),e=this.head.next;for(;e.time<r-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(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Mf=class extends Su{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Af;function pb(n){return typeof n=="string"?n:(Af||(Af=new Mf),Af.load(n))}var wu=class{constructor(r,e){this.data=r;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")}},Pu=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var $a=class extends wu{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)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 i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=pb(e),this.img.onload=t}getTexture(e,t=1008,o=1006){let i=this._cache[e]?.[t]?.[o];if(i)return i;{let a;return this.isCanvas&&(a=new AN(this.img,void 0,e,e,o,t)),this.isVideo?a=new CN(this.img,void 0,e,e):a=new TN(this.img,void 0,e,e,o,t),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]===void 0&&(this._cache[e][t]={}),this._cache[e][t][o]=a,a}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))for(let i of Object.values(o))i&&(i.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))for(let[a,s]of Object.entries(i))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 dr=class extends $a{};import{Vector2 as Vo,Vector3 as so,Vector4 as Ou}from"three";function Gt(n,r){return r.color(n)}function fb(n,r){switch(n.type){case"fresnel":return NN(n,r);case"gradient":return DN(n,r);case"depth":return EN(n,r);case"normal":return _N(n,r);case"noise":return BN(n,r);case"rainbow":return LN(n,r);case"toon":return RN(n,r);case"outline":return VN(n,r);case"transmission":return zN(n,r);case"color":return IN(n,r);case"pattern":return GN(n,r)}}function MN(n){return{type:n.type}}function jr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...MN(n),alpha:i,mode:t,isMask:o}}function IN(n,r){return{...jr(n,r),color:Gt(n.color,r)}}function NN(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...jr(n,r),color:Gt(a,r),bias:e,scale:t,intensity:o,factor:i}}function DN(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...jr(n,r),gradientType:e,smooth:t,colors:o.map(c=>new Ou(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new Vo(...s),morph:new Vo(...l),angle:a}}function EN(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...jr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new so(...s),direction:l?new so(...l):new so(1,0,0),colors:c.map(d=>d!==void 0?new Ou(d[0],d[1],d[2],d[3]):new Ou(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function _N(n,r){let{cnormal:e}=n;return{...jr(n,r),cnormal:new so(e[0],e[1],e[2])}}function BN(n,r){return{...jr(n,r),scale:n.scale,move:n.move,fA:new Vo(...n.fA),fB:new Vo(...n.fB),size:new so(...n.size),distortion:new Vo(...n.distortion),colorA:Gt(n.colorA,r),colorB:Gt(n.colorB,r),colorC:Gt(n.colorC,r),colorD:Gt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function LN(n,r){return{...jr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new so(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new so(...n.offset)}}function RN(n,r){return{...jr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new Ou(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new so(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Gt(n.shadowColor,r),offset:new so(...n.offset)}}function VN(n,r){return{...jr(n,r),outlineColor:Gt(n.outlineColor,r),contourColor:Gt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new so(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function zN(n,r){return{...jr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function GN(n,r){return{...jr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Vo(...n.offset),colorA:Gt(n.colorA,r),colorB:Gt(n.colorB,r),frequency:new Vo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Vo(...n.vertical),horizontal:new Vo(...n.horizontal),sides:n.sides}}var mn=class extends Tt{};import{MathUtils as jN,Vector4 as FN}from"three";var UN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},kN={depth:["colors"]};function HN(n,r,e){if(r==="isMask")return!0;let t=UN[n.type],o=kN[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function If(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("magFilter"in i){let a=t;a.magFilter=i.magFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*jN.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function hb(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(Nf(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof fn))switch(o=o||HN(e,i,a),s.constructor){case He:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof mn?s.value=new Tt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Jt:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof mn?s.value=new Tt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case st:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case $t:{If(a,r,e);break}case Gr:{s.value=a.map(l=>new FN(...l));break}default:{s.value=a;break}}}return o}var yn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,gn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)Nf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Yt.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.canvas(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Xn(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new bu(i),l=new vu(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Be(t.projection??0),p=new Be(["x","y","z"].indexOf(t.axis)??0),d=new Be(t.side??0),h=new st(t.size?new Fr(t.size[0],t.size[1]):new Fr(100,100)),f=new se(t.blending??0),m=new se(yn(t.alpha,o)),y=new Be(t.mode??0),g=new pt(t.isMask??!1),v=new hn(a,s,c,u,p,d,h,f,l,m,y,g),P=new Ue(v.calpha,"f");return new tt(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:h,blending:f,mat:l,alpha:m,mode:y,isMask:g},v,y,P,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Xn(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(yn(t.alpha,o)),l=new Be(t.mode??0),c=new pt(t.isMask??!1),u=new se(t.texture.rotation??0),p=new Ga(a,s,l,c,u),d=new Ue(p.calpha,"f");return new tt(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Vt(new lo(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Be(t.noiseType??0),u=new Be(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),h=new se(t.highCut??1),f=new se(t.lowCut??0),m=new Be(t.quality??1),y=new qa(s,l,i,u,p,d,h,f,m,a,c);return new rl(r,e,t,{offset:i,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:h,lowCut:f,quality:m},y,o)}else throw new Error;else return $N(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):hb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?If(o.props,t.shared,this):!0;return!1}dispose(){if(WN(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof dr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},tt=class extends gn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},rl=class extends gn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},Yt=class extends gn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(yn(o.alpha,i)),l=new Be(o.mode),c=new se(o.bumpMapIntensity),u=new se(yn(o.alphaOverride,i)),p;if(!o.visible)a=new Lo,p={};else if(o.category==="lambert"){a=new Zs;let d=new He(i.color(o.emissive)??0),h=new pt(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new tl;let d=new se(o.shininess??30),h=new He(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new el;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new pt(o.occlusion??!0);p={roughness:d,metalness:h,reflectivity:f,occlusion:m},a.roughness=d,a.metalness=h,a.reflectivity=f,a.occlusion=m}else{a=new Js;let d=new se(o.shininess??30),h=new He(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new pt(o.occlusion??!0);p={shininess:d,specular:h,occlusion:f},a.shininess=d,a.specular=h,a.occlusion=f}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 Yt(e,t,o,a,p,i)}get category(){return this.node.category}};function WN(n){let r=n instanceof gn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function vr(n){return{alpha:new se(n.alpha??1),mode:new Be(n.mode??0),isMask:new pt(n.isMask??!1)}}function qN(n,r,e,t,o){switch(n.type){case"color":{let i=new He(t.color??ht),a=vr(t),s=new Kn(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new He(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=vr(t),p=new Ks(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Ue(p.calpha,"f");return new tt(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new Vt(t.wavelengths??new lo(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new Vt(t.offset??new lo(0,0,0)),p=vr(t),d=new ka(i,a,s,l,c,u,p.alpha,p.isMask),h=new Ue(d.calpha,"f");return new tt(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,h,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new st(d/p,1):new st(1,p/d),f=vr(t),m=new Wa(i,a,s,l,c,u,h,f.alpha),y=new Ue(m.calpha,"f");return new tt(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new Be(t.positioning??0),a;t.colors?a=new Gr(t.colors.length,t.colors):(a=new Gr(10,new Ya(0,0,0,1)),a.value[1]=new Ya(1,1,1,1));let s;t.steps?s=new zr(t.steps.length,t.steps):(s=new zr(10,1),s.value[0]=0);let l=new Vt(t.source??new lo(0,0,0)),c=new pt(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new Jt(t.shadowColor),h=new Vt(t.offset??new lo(0,0,0)),f=vr(t),m=new Ha(i,a,s,l,c,u,p,d,h,f.alpha),y=new Ue(m.calpha,"f");return new tt(r,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:h,...f},m,f.mode,y,f.isMask,o)}case"outline":{let i=new He(t.outlineColor??16777215),a=new He(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),h=new Vt(t.contourDirection??new lo(0,1,0)),f=new pt(t.positionalLines??!1),m=new pt(t.compensation??!0),y=Ae.normalRenderTarget,g=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,P=Ae.resolution,O=vr(t),S=new Fa(i,a,s,l,c,u,p,d,h,f,m,P,y,g,v,O.alpha),T=new Ue(S.calpha,"f");return new tt(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:h,positionalLines:f,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let i=new Be(t.gradientType??0),a=new pt(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new Vt(t.origin??new lo),d=new Vt(t.direction??new lo),h;t.colors?h=new Gr(t.colors.length,t.colors):(h=new Gr(2,new Ya(0,0,0,1)),h.value[1]=new Ya(1,1,1,1));let f;t.steps?f=new zr(t.steps.length,t.steps):(f=new zr(2,1),f.value[0]=0);let m=vr(t),y=new Va(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Ue(y.calpha,"f");return new tt(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:h,steps:f,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new Vt(t.size??new lo(100,100,100)),s=new se(t.move??1),l=new st(t.fA??new Fr(1.7,9.2)),c=new st(t.fB??new Fr(8.3,2.8)),u=new st(t.distortion??new Fr(1,1)),p=new Jt(t.colorA),d=new Jt(t.colorB),h=new Jt(t.colorC),f=new Jt(t.colorD),m=new Be(t.noiseType??0),y=new Be(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),P=new se(t.smoothness??.5),O=new se(t.seed??.5),S=new Be(t.quality??1),T=vr(t),A=new ja(i,a,s,l,c,u,p,d,h,f,T.alpha,m,T.isMask,y,g,v,P,O,S),x=new Ue(A.calpha,"f");return new tt(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:h,colorD:f,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:v,smoothness:P,seed:O,quality:S},A,T.mode,x,T.isMask,o)}case"normal":{let i=new Vt(t.cnormal??new lo(1,1,1)),a=vr(t),s=new Ba(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Be(t.gradientType??0),a=new pt(t.smooth??!1),s;t.colors?s=new Gr(t.colors.length,t.colors):(s=new Gr(10,new Ya(0,0,0,1)),s.value[1]=new Ya(1,1,1,1));let l;t.steps?l=new zr(t.steps.length,t.steps):(l=new zr(10,1),l.value[0]=0);let c=new st(t.offset??new Fr(0,0)),u=new st(t.morph??new Fr(0,0)),p=new se(t.angle??0),d=vr(t),h=new za(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Ue(h.calpha,"f");return new tt(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},h,d.mode,f,d.isMask,o)}case"pattern":{let i=new Be(t.style??0),a=new Be(t.projection??0),s=new Be(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new st(t.offset??new Fr(0,0)),u=new Jt(t.colorA),p=new Jt(t.colorB),d=new st(t.frequency??new Fr(10,10)),h=new se(t.size??.5),f=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),g=new se(t.rotation??0),v=new st(t.vertical??new Fr(0,1)),P=new st(t.horizontal??new Fr(0,1)),O=new Be(t.sides??6),S=vr(t),T=new Ua(i,a,s,l,c,u,p,d,h,f,m,y,g,v,P,O,S.alpha,S.isMask),A=new Ue(T.calpha,"f");return new tt(r,e,n,{style:i,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:h,variation:f,smoothness:m,zigzag:y,rotation:g,vertical:v,horizontal:P,sides:O,...S},T,S.mode,A,S.isMask,o)}default:{let i=new He(1,0,0,1),a=vr(t),s=new Kn(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function $N(n,r,e,t){let o=fb(e,t);return qN(e,n,r,o,t)}function Nf(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=yn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Cu(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.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 i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var tr=class extends YN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Tu=class extends tr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}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,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Zn=class extends tr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=t.shared.needsJitter,qe.startContext(this),this.reset0(e,t),qe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Tu(e,t,o,this),a.needsJitter=this.needsJitter,this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){qe.startContext(this),(this.data!==e||o)&&this.reset0(e,t),qe.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Lt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>gn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Cu(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Cu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Cu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.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"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof Yt),this.lightLayer===void 0&&(this.lightLayer=new Yt(0,"",{...xt.defaultData("light","phong"),visible:!1},new Lo,{},e)),this.dispose();for(let t of this.flavors)t&&t.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 Yt);if(!e)return;let t=e.data,o=t.bumpMap,i=t.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 tt&&s.color instanceof hn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(qe.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Cu(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,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=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:yn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:yn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);qe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof tt?t.color.mask=void 0:t instanceof Yt&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof tt&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Yt?i.node.mask=new Dt(t.color,t.alpha,Dt.MUL):i instanceof tt&&(i.isMask.value||(i.color.mask=new Dt(t.color,t.alpha,Dt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof tt),t=this.layers.findIndex(o=>o instanceof Yt);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof tt){if(a.isMask.value)continue;o=new _a(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Yt);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof tt){if(i.isMask.value)continue;e=new _a(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof rl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Dt(t,e[o].position,Dt.ADD),t=new Dt(t,new se(.5).setReadonly(!0),Dt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,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,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Da;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 t of this.flavors)t&&t.updateAfterBuild();return 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 tt){let t=e.params.texture;if(t instanceof Xn&&!t.image.loaded)return!1}return!0}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Jn=class extends Zn{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var mb=new Map;function yb(n){if(typeof n=="string")return n;let r=mb.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},mb.set(n,r)),r.url}var XN,gb=new Promise(n=>{XN=n});var xb;gb.then(n=>xb=n);var ei=class{constructor({src:r,volume:e,delay:t,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 i;typeof r=="string"?i={src:r}:i={src:yb(r),format:"wav"},this.sound=new xb.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}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(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as KN,Vector2 as ti,Path as bb,Shape as QN,ShapeUtils as ZN,Color as JN}from"three";var Au=class{constructor(){this.type="ShapePath";this.color=new JN;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new bb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,g,v){let P=m.x,O=y.x,S=g.x,T=v.x,A=m.y,x=y.y,E=g.y,N=v.y,I=(T-S)*(A-E)-(N-E)*(P-S),D=(O-P)*(A-E)-(x-A)*(P-S),_=(N-E)*(O-P)-(T-S)*(x-A),B=I/_,V=D/_;if(_===0&&I!==0||B<=0||B>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(i(U===0?g:v,m,y),t.loc===e.ORIGIN){let R=U===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(P+t.t*(O-P)).toPrecision(10),W=+(A+t.t*(x-A)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let j=W===0?g:v;return{x:j.x,y:j.y,t:t.t}}let U=+(P+B*(O-P)).toPrecision(10),R=+(A+B*(x-A)).toPrecision(10);return{x:U,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,P=g.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*P;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===g.x&&m.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*O<0||P*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+P*P)<Math.sqrt(O*O+S*S)){t.loc=e.BEYOND;return}let A;v!==0?A=O/v:A=S/P,t.loc=e.BETWEEN,t.t=A}function a(m,y){let g=[],v=[];for(let P=1;P<m.length;P++){let O=m[P-1],S=m[P];for(let T=1;T<y.length;T++){let A=y[T-1],x=y[T],E=o(O,S,A,x);E!==null&&g.find(N=>N.t<=E.t+Number.EPSILON&&N.t>=E.t-Number.EPSILON)===void 0&&(g.push(E),v.push(new ti(E.x,E.y)))}}return v}function s(m,y,g){let v=new ti;y.getCenter(v);let P=[];return g.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{P.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),P.sort((O,S)=>O.point.x-S.point.x),P}function l(m,y,g,v,P){(P==null||P==="")&&(P="nonzero");let O=new ti;m.boundingBox.getCenter(O);let S=[new ti(g,O.y),new ti(v,O.y)],T=s(S,m.boundingBox,y);T.sort((D,_)=>D.point.x-_.point.x);let A=[],x=[];T.forEach(D=>{D.identifier===m.identifier?A.push(D):x.push(D)});let E=A[0].point.x,N=[],I=0;for(;I<x.length&&x[I].point.x<E;)N.length>0&&N[N.length-1]===x[I].identifier?N.pop():N.push(x[I].identifier),I++;if(N.push(m.identifier),P==="evenodd"){let D=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(P==="nonzero"){let D=!0,_=null,B=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(D?(B=y[U].isCW,D=!1,_=U):B!==y[U].isCW&&(B=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,P=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>P&&(P=T.x),T.x<O&&(O=T.x)}p<=P&&(p=P+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:ZN.isClockWise(y),identifier:c++,boundingBox:new KN(new ti(O,v),new ti(P,g))})});let h=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),f=[];return d.forEach(m=>{let y=h[m.identifier];if(y&&!y.isHole){let g=new QN;g.curves=m.curves,h.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let O=d[P.identifier],S=new bb;S.curves=O.curves,g.holes.push(S)}}),f.push(g)}}),f}};var Df=!1,Sb,Ef=new Promise(n=>{Sb=n}),vb=!1;var Mu;function wb(){if(Df=!0,vb)return;if(Mu)return Mu;async function n(){let e=await import("./opentype.js");Sb(e),vb=!0}return Mu=n(),Mu}var ol=class{async load(r,e,t=()=>{}){let{load:o}=await Ef;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Ef;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function e3(n){return await(await fetch(n)).arrayBuffer()}var t3=new ol;async function _f(n){let r,e,t=!1;if(n.url?(r=await e3(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(Df){let o=await t3.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}import{CubicBezierCurve as r3,LineCurve as o3,QuadraticBezierCurve as n3}from"three";function i3(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Iu=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=_f(r).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(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=_f(r).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(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(i3(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
2231
2231
  `,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),h=[],f=r.map(v=>[]),m=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let P=r[v],O={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(P,O)}catch(A){console.warn(A)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,P,l);let T=[];try{T=this.reverseLigaturesTable(t,P,S)}catch(A){console.warn(A)}u=this.computeSpaceWidthForLine(r,v,e);for(let A=0;A<S.length;A++){let x=S[A],E=x.index===0?`
2232
2232
  `:x.unicode?String.fromCharCode(x.unicode):void 0,N=T[A],I=0,D=0;A===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(D=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),p+=D+I;let _=0;if(E===`
2233
2233
  `)_=c;else if(E===" ")_=u;else{let B=this.createPath(x,o,p,d,e);B&&(_=B.offsetX-(I+D),h.push(B.path))}if(N.replacements.length===1)m[v].push([p,d]),f[v].push(_);else{let B=N.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),V=B.reduce((W,j)=>W+=j,0),U=B.map(W=>W/V),R=p;for(let W=0;W<U.length;W++){let j=_*U[W];m[v].push([R,d]),f[v].push(j),R+=j}}p+=_,y=x}d-=i}let g=[];for(let v=0,P=h.length;v<P;v++)g.push(...h[v].toShapes());return{shapes:g,charWidths:f,lineWidths:a,charCoords:m}}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(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
@@ -3632,4 +3632,4 @@ void main() {
3632
3632
  A = exp(A) * vColor.a;
3633
3633
  gl_FragColor = vec4(color.rgb, A);
3634
3634
  gVelocity = vec4(0.0); // so it is ignored by TAA
3635
- }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Cn},viewport:{type:"v2",value:new Cn},basisViewport:{type:"v2",value:new Cn},debugColor:{type:"v3",value:new vE},covariancesTextureSize:{type:"v2",value:new Cn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Cn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new DE({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:ME,depthTest:!0,depthWrite:!1,side:wE})}static buildGeomtery(e){let t=new bE;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new xE(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new TE().copy(t),s=new Uint32Array(e),l=new CE(s,1,!1);return l.setUsage(PE),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.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,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Cn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Cn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let f=0;f<this.covariances.length;f++)l[f]=SE.toHalfFloat(this.covariances[f]);s=new id(l,i.x,i.y,yS,OE)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new id(l,i.x,i.y,yS,mS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let c=new Uint32Array(a.x*a.y*4);for(let f=0;f<o;f++){let m=f*4,y=f*3,g=f*4;c[g]=hS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=nd(this.centers[y]),c[g+2]=nd(this.centers[y+1]),c[g+3]=nd(this.centers[y+2])}let u=new id(c,a.x,a.y,NE,EE);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 f=0;f<this.meshMatrixWorlds.length;f++)d.set(this.meshMatrixWorlds[f].elements,f*16);let h=new id(d,p,1,IE,mS);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(ad.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(ad),this.material.uniforms.basisViewport.value.set(2/ad.x,2/ad.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,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 xS,yh=new Promise(n=>{xS=n}),gS=!1;var ld;function gh(){if(gS)return;if(ld)return ld;async function n(){let e=await import("./gaussian-splat-compression.js");xS(e),gS=!0}return ld=n(),ld}var SS;yh.then(n=>SS=n);var bl=class{constructor(r={}){_n(this,"updateView",function(){let r=new bS,e=[],t=new ps(0,0,-1),o=new ps(0,0,-1),i=new ps,a=new ps;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,h=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(h=!0),!d&&!h&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.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=r.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 bS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new _E;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new ps().fromArray(r.position)),r.orientation&&(r.orientation=new vS().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.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 t=e.map(a=>new SS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new ps,o=new vS,i=!1,a=1,s,l){this.splatMesh=Tn.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),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(r){this.sortWorker=fS(r),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(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var jE=new zE;jE.wireframe=!0;var wS=new LE,cd=class extends BE{constructor(e,t){super();this.data=e;this.sharedAssets=t;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.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new od;this.invisibleObjects=new vn("jflkdsafjasdifjaslk",{...Mc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Cr("fdasfa",{...wo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=dS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=uS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Cr&&(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 t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Ml(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)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===tn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof ci&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Cr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.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(t=>{this.toExpandCloner.add(t)})}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,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){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 i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),bn(i)&&cl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),cl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),bn(o)&&(o.freeBooleanPointer(),i instanceof or&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof us&&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 i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),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()),bn(o)&&(o.invalidateUpstreamBooleanData(),cl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof or&&i.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 t of this.children)t instanceof Cr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{sS(a,t,o,{scene:this,shared:i}),a instanceof lt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof ci||l instanceof Cr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,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,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof jo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Re.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Re.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=Xo(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...Al(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=ot.zoom(d,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...t,l.id,"ifActions"],o,i,a,s),this.rewriteActions(l.data.elseActions,[...t,l.id,"elseActions"],o,i,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ko&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Xo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ec.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof ko&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Qu(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ko&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Re.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Re.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!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(bn(s)||ul(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),gl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Re.is(a)&&(a.visible||s?.object.data.visible)&&((bn(a)||ul(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),gl(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Re.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Re.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Re.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof lt&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();cl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)na.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Re.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=rd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof lt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof lt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new RE().fromArray(m)),f=new GE(d,h);u.bind(f,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new VE;return o.setFromPoints(t),o.getCenter(wS),wS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof tr&&e(t.material[o]);else t.material instanceof tr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof jo&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new bl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as FE}from"three/examples/jsm/loaders/DRACOLoader.js";var An;function PS(){return An||(An=new FE,An.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),An.decoderPending}async function UE(n){if(An){let r={attributeIDs:An.defaultAttributeIDs,attributeTypes:An.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await An.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function OS(n,r){let[e,t]=Ed(mc.deserialize(new Uint8Array(n)));return Lc(e),r&&r(e),t.result().data}function CS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function TS(n){for(let r of n){let e=await UE(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}import{Mesh as bde}from"three";import{mergeBufferGeometries as wde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function AS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as MS,ShaderLib as kE}from"three";function IS(n){let r=new Set;return n.traverse(e=>{if(e instanceof rr)if(ut(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(HE(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new MS,specularColor:new MS});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},kE.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=sb(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else WE(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function HE(n){return n.getLayersOfType("transmission").length>0}function WE(n){let r=0;for(let e of n.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&&(r+=(1-r)*o.value)}}return r<1}function NS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function DS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as qE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function ES(n){let r=[];return n.traverse(e=>{e instanceof es&&r.push(e)}),r.forEach(e=>{let t=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&&AS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ot&&a.unshift(t.geometry),a.length){let s=qE(a);t instanceof Ot&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Cb})}),n}function _S(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function BS(n){Object.values(n.shared.materials).forEach(r=>{xh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?xh(e.material):"materials"in e&&e.materials.forEach(t=>{xh(t)})})}function xh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var zS=hi(RS(),1);var VS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",bh=class extends YE{load(r,e,t,o=console.error){let i=new $E(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(VS+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(VS),i.load(r,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)}},t,o)}async parse(r){let e=await OS(r,BS),t=CS(e);e.version&&(0,zS.default)(e.version,"1.5.4")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&PS(),_b(e)&&L0(),Hb(e)&&wb(),Av(e)&&Ov(),sd(e)&&gh()].filter(Boolean)),t.length&&await TS(t);let o=!1,i=new ri(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new cd(e.scene,i);sd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=ES(a),a=IS(a),a=NS(a),a=DS(a),a=_S(a),a}};export{bh as default};
3635
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Cn},viewport:{type:"v2",value:new Cn},basisViewport:{type:"v2",value:new Cn},debugColor:{type:"v3",value:new vE},covariancesTextureSize:{type:"v2",value:new Cn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Cn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new DE({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:ME,depthTest:!0,depthWrite:!1,side:wE})}static buildGeomtery(e){let t=new bE;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new xE(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new TE().copy(t),s=new Uint32Array(e),l=new CE(s,1,!1);return l.setUsage(PE),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.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,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Cn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Cn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let f=0;f<this.covariances.length;f++)l[f]=SE.toHalfFloat(this.covariances[f]);s=new id(l,i.x,i.y,yS,OE)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new id(l,i.x,i.y,yS,mS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let c=new Uint32Array(a.x*a.y*4);for(let f=0;f<o;f++){let m=f*4,y=f*3,g=f*4;c[g]=hS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=nd(this.centers[y]),c[g+2]=nd(this.centers[y+1]),c[g+3]=nd(this.centers[y+2])}let u=new id(c,a.x,a.y,NE,EE);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 f=0;f<this.meshMatrixWorlds.length;f++)d.set(this.meshMatrixWorlds[f].elements,f*16);let h=new id(d,p,1,IE,mS);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(ad.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(ad),this.material.uniforms.basisViewport.value.set(2/ad.x,2/ad.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,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 xS,yh=new Promise(n=>{xS=n}),gS=!1;var ld;function gh(){if(gS)return;if(ld)return ld;async function n(){let e=await import("./gaussian-splat-compression.js");xS(e),gS=!0}return ld=n(),ld}var SS;yh.then(n=>SS=n);var bl=class{constructor(r={}){_n(this,"updateView",function(){let r=new bS,e=[],t=new ps(0,0,-1),o=new ps(0,0,-1),i=new ps,a=new ps;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,h=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(h=!0),!d&&!h&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.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=r.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 bS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new _E;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new ps().fromArray(r.position)),r.orientation&&(r.orientation=new vS().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.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 t=e.map(a=>new SS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new ps,o=new vS,i=!1,a=1,s,l){this.splatMesh=Tn.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),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(r){this.sortWorker=fS(r),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(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var jE=new zE;jE.wireframe=!0;var wS=new LE,cd=class extends BE{constructor(e,t){super();this.data=e;this.sharedAssets=t;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.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new od;this.invisibleObjects=new vn("jflkdsafjasdifjaslk",{...Mc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Cr("fdasfa",{...wo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=dS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=uS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Cr&&(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 t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Ml(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)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===tn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof ci&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Cr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.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(t=>{this.toExpandCloner.add(t)})}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,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){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 i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),bn(i)&&cl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),cl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),bn(o)&&(o.freeBooleanPointer(),i instanceof or&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof us&&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 i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),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()),bn(o)&&(o.invalidateUpstreamBooleanData(),cl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof or&&i.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 t of this.children)t instanceof Cr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{sS(a,t,o,{scene:this,shared:i}),a instanceof lt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof ci||l instanceof Cr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,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,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof jo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Re.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Re.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=Xo(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...Al(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=ot.zoom(d,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...t,l.id,"ifActions"],o,i,a,s),this.rewriteActions(l.data.elseActions,[...t,l.id,"elseActions"],o,i,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ko&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Xo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ec.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof ko&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Qu(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ko&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Re.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Re.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!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(bn(s)||ul(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),gl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Re.is(a)&&(a.visible||s?.object.data.visible)&&((bn(a)||ul(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),gl(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Re.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Re.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Re.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof lt&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();cl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)na.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Re.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=rd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof lt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof lt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new RE().fromArray(m)),f=new GE(d,h);u.bind(f,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new VE;return o.setFromPoints(t),o.getCenter(wS),wS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof tr&&e(t.material[o]);else t.material instanceof tr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof jo&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new bl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as FE}from"three/examples/jsm/loaders/DRACOLoader.js";var An;function PS(){return An||(An=new FE,An.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),An.decoderPending}async function UE(n){if(An){let r={attributeIDs:An.defaultAttributeIDs,attributeTypes:An.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await An.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function OS(n,r){let[e,t]=Ed(mc.deserialize(new Uint8Array(n)));return Lc(e),r&&r(e),t.result().data}function CS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function TS(n){for(let r of n){let e=await UE(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}import{Mesh as bde}from"three";import{mergeBufferGeometries as wde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function AS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as MS,ShaderLib as kE}from"three";function IS(n){let r=new Set;return n.traverse(e=>{if(e instanceof rr)if(ut(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(HE(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new MS,specularColor:new MS});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},kE.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=sb(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else WE(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function HE(n){return n.getLayersOfType("transmission").length>0}function WE(n){let r=0;for(let e of n.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&&(r+=(1-r)*o.value)}}return r<1}function NS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function DS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as qE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function ES(n){let r=[];return n.traverse(e=>{e instanceof es&&r.push(e)}),r.forEach(e=>{let t=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&&AS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ot&&a.unshift(t.geometry),a.length){let s=qE(a);t instanceof Ot&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Cb})}),n}function _S(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function BS(n){Object.values(n.shared.materials).forEach(r=>{xh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?xh(e.material):"materials"in e&&e.materials.forEach(t=>{xh(t)})})}function xh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var zS=hi(RS(),1);var VS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",bh=class extends YE{load(r,e,t,o=console.error){let i=new $E(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(VS+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(VS),i.load(r,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)}},t,o)}async parse(r){let e=await OS(r,BS),t=CS(e);e.version&&(0,zS.default)(e.version,"1.5.6")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&PS(),_b(e)&&L0(),Hb(e)&&wb(),Av(e)&&Ov(),sd(e)&&gh()].filter(Boolean)),t.length&&await TS(t);let o=!1,i=new ri(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new cd(e.scene,i);sd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=ES(a),a=IS(a),a=NS(a),a=DS(a),a=_S(a),a}};export{bh as default};