@splinetool/loader 0.9.42 → 0.9.45

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,14 +1,14 @@
1
- var lm=Object.create;var Bn=Object.defineProperty,cm=Object.defineProperties,pm=Object.getOwnPropertyDescriptor,hm=Object.getOwnPropertyDescriptors,dm=Object.getOwnPropertyNames,rc=Object.getOwnPropertySymbols,um=Object.getPrototypeOf,oc=Object.prototype.hasOwnProperty,mm=Object.prototype.propertyIsEnumerable;var ic=(n,t,e)=>t in n?Bn(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,P=(n,t)=>{for(var e in t||(t={}))oc.call(t,e)&&ic(n,e,t[e]);if(rc)for(var e of rc(t))mm.call(t,e)&&ic(n,e,t[e]);return n},W=(n,t)=>cm(n,hm(t));var fm=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),ym=(n,t)=>{for(var e in t)Bn(n,e,{get:t[e],enumerable:!0})},gm=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of dm(t))!oc.call(n,i)&&i!==e&&Bn(n,i,{get:()=>t[i],enumerable:!(r=pm(t,i))||r.enumerable});return n};var xm=(n,t,e)=>(e=n!=null?lm(um(n)):{},gm(t||!n||!n.__esModule?Bn(e,"default",{value:n,enumerable:!0}):e,n));var Vu=fm((wa,Ru)=>{(function(n,t){typeof wa=="object"&&typeof Ru<"u"?t(wa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(wa,function(n){"use strict";n.SVD=function(t,e,r,i,o){if(e=e===void 0||e,r=r===void 0||r,o=1e-64/(i=i||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,p,h,d,m,f,T,w,y,L=t[0].length,A=t.length;if(A<L)throw new TypeError("Invalid matrix: m < n");for(var I=[],b=[],V=[],x=e==="f"?A:L,u=T=d=0;u<A;u++)b[u]=new Array(x).fill(0);for(u=0;u<L;u++)V[u]=new Array(L).fill(0);var M,g=new Array(L).fill(0);for(u=0;u<A;u++)for(s=0;s<L;s++)b[u][s]=t[u][s];for(u=0;u<L;u++){for(I[u]=d,f=0,l=u+1,s=u;s<A;s++)f+=Math.pow(b[s][u],2);if(f<o)d=0;else for(m=(h=b[u][u])*(d=h<0?Math.sqrt(f):-Math.sqrt(f))-f,b[u][u]=h-d,s=l;s<L;s++){for(f=0,a=u;a<A;a++)f+=b[a][u]*b[a][s];for(h=f/m,a=u;a<A;a++)b[a][s]=b[a][s]+h*b[a][u]}for(g[u]=d,f=0,s=l;s<L;s++)f+=Math.pow(b[u][s],2);if(f<o)d=0;else{for(m=(h=b[u][u+1])*(d=h<0?Math.sqrt(f):-Math.sqrt(f))-f,b[u][u+1]=h-d,s=l;s<L;s++)I[s]=b[u][s]/m;for(s=l;s<A;s++){for(f=0,a=l;a<L;a++)f+=b[s][a]*b[u][a];for(a=l;a<L;a++)b[s][a]=b[s][a]+f*I[a]}}T<(w=Math.abs(g[u])+Math.abs(I[u]))&&(T=w)}if(r)for(u=L-1;0<=u;u--){if(d!==0){for(m=b[u][u+1]*d,s=l;s<L;s++)V[s][u]=b[u][s]/m;for(s=l;s<L;s++){for(f=0,a=l;a<L;a++)f+=b[u][a]*V[a][s];for(a=l;a<L;a++)V[a][s]=V[a][s]+f*V[a][u]}}for(s=l;s<L;s++)V[u][s]=0,V[s][u]=0;V[u][u]=1,d=I[u],l=u}if(e){if(e==="f")for(u=L;u<A;u++){for(s=L;s<A;s++)b[u][s]=0;b[u][u]=1}for(u=L-1;0<=u;u--){for(l=u+1,d=g[u],s=l;s<x;s++)b[u][s]=0;if(d!==0){for(m=b[u][u]*d,s=l;s<x;s++){for(f=0,a=l;a<A;a++)f+=b[a][u]*b[a][s];for(h=f/m,a=u;a<A;a++)b[a][s]=b[a][s]+h*b[a][u]}for(s=u;s<A;s++)b[s][u]=b[s][u]/d}else for(s=u;s<A;s++)b[s][u]=0;b[u][u]=b[u][u]+1}}for(i*=T,a=L-1;0<=a;a--)for(var N=0;N<50;N++){for(M=!1,l=a;0<=l;l--){if(Math.abs(I[l])<=i){M=!0;break}if(Math.abs(g[l-1])<=i)break}if(!M){for(p=0,c=l-(f=1),u=l;u<a+1&&(h=f*I[u],I[u]=p*I[u],!(Math.abs(h)<=i));u++)if(d=g[u],g[u]=Math.sqrt(h*h+d*d),p=d/(m=g[u]),f=-h/m,e)for(s=0;s<A;s++)w=b[s][c],y=b[s][u],b[s][c]=w*p+y*f,b[s][u]=-w*f+y*p}if(y=g[a],l===a){if(y<0&&(g[a]=-y,r))for(s=0;s<L;s++)V[s][a]=-V[s][a];break}for(T=g[l],h=(((w=g[a-1])-y)*(w+y)+((d=I[a-1])-(m=I[a]))*(d+m))/(2*m*w),d=Math.sqrt(h*h+1),h=((T-y)*(T+y)+m*(w/(h<0?h-d:h+d)-m))/T,u=l+(f=p=1);u<a+1;u++){if(d=I[u],w=g[u],m=f*d,d*=p,y=Math.sqrt(h*h+m*m),h=T*(p=h/(I[u-1]=y))+d*(f=m/y),d=-T*f+d*p,m=w*f,w*=p,r)for(s=0;s<L;s++)T=V[s][u-1],y=V[s][u],V[s][u-1]=T*p+y*f,V[s][u]=-T*f+y*p;if(y=Math.sqrt(h*h+m*m),h=(p=h/(g[u-1]=y))*d+(f=m/y)*w,T=-f*d+p*w,e)for(s=0;s<A;s++)w=b[s][u-1],y=b[s][u],b[s][u-1]=w*p+y*f,b[s][u]=-w*f+y*p}I[l]=0,I[a]=h,g[a]=T}for(u=0;u<L;u++)g[u]<i&&(g[u]=0);return{u:b,q:g,v:V}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as Rw,Loader as Vw}from"three";function nc(n){return Array.isArray(n)?n:[n]}var bm=typeof global=="object"&&global&&global.Object===Object&&global,En=bm;var vm=typeof self=="object"&&self&&self.Object===Object&&self,Sm=En||vm||Function("return this")(),Ze=Sm;var wm=Ze.Symbol,Lt=wm;var sc=Object.prototype,Lm=sc.hasOwnProperty,Cm=sc.toString,Ao=Lt?Lt.toStringTag:void 0;function Tm(n){var t=Lm.call(n,Ao),e=n[Ao];try{n[Ao]=void 0;var r=!0}catch{}var i=Cm.call(n);return r&&(t?n[Ao]=e:delete n[Ao]),i}var ac=Tm;var Nm=Object.prototype,Mm=Nm.toString;function Om(n){return Mm.call(n)}var lc=Om;var Im="[object Null]",Pm="[object Undefined]",cc=Lt?Lt.toStringTag:void 0;function Am(n){return n==null?n===void 0?Pm:Im:cc&&cc in Object(n)?ac(n):lc(n)}var _t=Am;function Dm(n){return n!=null&&typeof n=="object"}var gt=Dm;var Bm="[object Symbol]";function Em(n){return typeof n=="symbol"||gt(n)&&_t(n)==Bm}var Li=Em;function _m(n,t){for(var e=-1,r=n==null?0:n.length,i=Array(r);++e<r;)i[e]=t(n[e],e,n);return i}var _n=_m;var Gm=Array.isArray,Qe=Gm;var zm=1/0,pc=Lt?Lt.prototype:void 0,hc=pc?pc.toString:void 0;function dc(n){if(typeof n=="string")return n;if(Qe(n))return _n(n,dc)+"";if(Li(n))return hc?hc.call(n):"";var t=n+"";return t=="0"&&1/n==-zm?"-0":t}var uc=dc;function Rm(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var xt=Rm;function Vm(n){return n}var Gn=Vm;var Fm="[object AsyncFunction]",jm="[object Function]",Um="[object GeneratorFunction]",km="[object Proxy]";function Hm(n){if(!xt(n))return!1;var t=_t(n);return t==jm||t==Um||t==Fm||t==km}var Ci=Hm;var qm=Ze["__core-js_shared__"],zn=qm;var mc=function(){var n=/[^.]+$/.exec(zn&&zn.keys&&zn.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wm(n){return!!mc&&mc in n}var fc=Wm;var Jm=Function.prototype,$m=Jm.toString;function Km(n){if(n!=null){try{return $m.call(n)}catch{}try{return n+""}catch{}}return""}var Lr=Km;var Ym=/[\\^$.*+?()[\]{}|]/g,Xm=/^\[object .+?Constructor\]$/,Zm=Function.prototype,Qm=Object.prototype,ef=Zm.toString,tf=Qm.hasOwnProperty,rf=RegExp("^"+ef.call(tf).replace(Ym,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function of(n){if(!xt(n)||fc(n))return!1;var t=Ci(n)?rf:Xm;return t.test(Lr(n))}var yc=of;function nf(n,t){return n==null?void 0:n[t]}var gc=nf;function sf(n,t){var e=gc(n,t);return yc(e)?e:void 0}var Ot=sf;var af=Ot(Ze,"WeakMap"),Rn=af;var xc=Object.create,lf=function(){function n(){}return function(t){if(!xt(t))return{};if(xc)return xc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),bc=lf;function cf(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var vc=cf;function pf(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Vn=pf;var hf=800,df=16,uf=Date.now;function mf(n){var t=0,e=0;return function(){var r=uf(),i=df-(r-e);if(e=r,i>0){if(++t>=hf)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Sc=mf;function ff(n){return function(){return n}}var wc=ff;var yf=function(){try{var n=Ot(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Ti=yf;var gf=Ti?function(n,t){return Ti(n,"toString",{configurable:!0,enumerable:!1,value:wc(t),writable:!0})}:Gn,Lc=gf;var xf=Sc(Lc),Fn=xf;function bf(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Cc=bf;var vf=9007199254740991,Sf=/^(?:0|[1-9]\d*)$/;function wf(n,t){var e=typeof n;return t=t==null?vf:t,!!t&&(e=="number"||e!="symbol"&&Sf.test(n))&&n>-1&&n%1==0&&n<t}var jn=wf;function Lf(n,t,e){t=="__proto__"&&Ti?Ti(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Ni=Lf;function Cf(n,t){return n===t||n!==n&&t!==t}var Gr=Cf;var Tf=Object.prototype,Nf=Tf.hasOwnProperty;function Mf(n,t,e){var r=n[t];(!(Nf.call(n,t)&&Gr(r,e))||e===void 0&&!(t in n))&&Ni(n,t,e)}var Un=Mf;function Of(n,t,e,r){var i=!e;e||(e={});for(var o=-1,s=t.length;++o<s;){var a=t[o],l=r?r(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),i?Ni(e,a,l):Un(e,a,l)}return e}var kt=Of;var Tc=Math.max;function If(n,t,e){return t=Tc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,i=-1,o=Tc(r.length-t,0),s=Array(o);++i<o;)s[i]=r[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=r[i];return a[t]=e(s),vc(n,this,a)}}var kn=If;function Pf(n,t){return Fn(kn(n,t,Gn),n+"")}var Nc=Pf;var Af=9007199254740991;function Df(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Af}var Hn=Df;function Bf(n){return n!=null&&Hn(n.length)&&!Ci(n)}var zr=Bf;function Ef(n,t,e){if(!xt(e))return!1;var r=typeof t;return(r=="number"?zr(e)&&jn(t,e.length):r=="string"&&t in e)?Gr(e[t],n):!1}var Mc=Ef;function _f(n){return Nc(function(t,e){var r=-1,i=e.length,o=i>1?e[i-1]:void 0,s=i>2?e[2]:void 0;for(o=n.length>3&&typeof o=="function"?(i--,o):void 0,s&&Mc(e[0],e[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r<i;){var a=e[r];a&&n(t,a,r,o)}return t})}var Oc=_f;var Gf=Object.prototype;function zf(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Gf;return n===e}var Mi=zf;function Rf(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Ic=Rf;var Vf="[object Arguments]";function Ff(n){return gt(n)&&_t(n)==Vf}var Ta=Ff;var Pc=Object.prototype,jf=Pc.hasOwnProperty,Uf=Pc.propertyIsEnumerable,kf=Ta(function(){return arguments}())?Ta:function(n){return gt(n)&&jf.call(n,"callee")&&!Uf.call(n,"callee")},si=kf;function Hf(){return!1}var Ac=Hf;var Ec=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Dc=Ec&&typeof module=="object"&&module&&!module.nodeType&&module,qf=Dc&&Dc.exports===Ec,Bc=qf?Ze.Buffer:void 0,Wf=Bc?Bc.isBuffer:void 0,Jf=Wf||Ac,Oi=Jf;var $f="[object Arguments]",Kf="[object Array]",Yf="[object Boolean]",Xf="[object Date]",Zf="[object Error]",Qf="[object Function]",ey="[object Map]",ty="[object Number]",ry="[object Object]",iy="[object RegExp]",oy="[object Set]",ny="[object String]",sy="[object WeakMap]",ay="[object ArrayBuffer]",ly="[object DataView]",cy="[object Float32Array]",py="[object Float64Array]",hy="[object Int8Array]",dy="[object Int16Array]",uy="[object Int32Array]",my="[object Uint8Array]",fy="[object Uint8ClampedArray]",yy="[object Uint16Array]",gy="[object Uint32Array]",je={};je[cy]=je[py]=je[hy]=je[dy]=je[uy]=je[my]=je[fy]=je[yy]=je[gy]=!0;je[$f]=je[Kf]=je[ay]=je[Yf]=je[ly]=je[Xf]=je[Zf]=je[Qf]=je[ey]=je[ty]=je[ry]=je[iy]=je[oy]=je[ny]=je[sy]=!1;function xy(n){return gt(n)&&Hn(n.length)&&!!je[_t(n)]}var _c=xy;function by(n){return function(t){return n(t)}}var Ii=by;var Gc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Do=Gc&&typeof module=="object"&&module&&!module.nodeType&&module,vy=Do&&Do.exports===Gc,Na=vy&&En.process,Sy=function(){try{var n=Do&&Do.require&&Do.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),Cr=Sy;var zc=Cr&&Cr.isTypedArray,wy=zc?Ii(zc):_c,qn=wy;var Ly=Object.prototype,Cy=Ly.hasOwnProperty;function Ty(n,t){var e=Qe(n),r=!e&&si(n),i=!e&&!r&&Oi(n),o=!e&&!r&&!i&&qn(n),s=e||r||i||o,a=s?Ic(n.length,String):[],l=a.length;for(var c in n)(t||Cy.call(n,c))&&!(s&&(c=="length"||i&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||jn(c,l)))&&a.push(c);return a}var Wn=Ty;function Ny(n,t){return function(e){return n(t(e))}}var Jn=Ny;var My=Jn(Object.keys,Object),Rc=My;var Oy=Object.prototype,Iy=Oy.hasOwnProperty;function Py(n){if(!Mi(n))return Rc(n);var t=[];for(var e in Object(n))Iy.call(n,e)&&e!="constructor"&&t.push(e);return t}var Vc=Py;function Ay(n){return zr(n)?Wn(n):Vc(n)}var Pi=Ay;function Dy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Fc=Dy;var By=Object.prototype,Ey=By.hasOwnProperty;function _y(n){if(!xt(n))return Fc(n);var t=Mi(n),e=[];for(var r in n)r=="constructor"&&(t||!Ey.call(n,r))||e.push(r);return e}var jc=_y;function Gy(n){return zr(n)?Wn(n,!0):jc(n)}var sr=Gy;var zy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ry=/^\w*$/;function Vy(n,t){if(Qe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Li(n)?!0:Ry.test(n)||!zy.test(n)||t!=null&&n in Object(t)}var Uc=Vy;var Fy=Ot(Object,"create"),Tr=Fy;function jy(){this.__data__=Tr?Tr(null):{},this.size=0}var kc=jy;function Uy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Hc=Uy;var ky="__lodash_hash_undefined__",Hy=Object.prototype,qy=Hy.hasOwnProperty;function Wy(n){var t=this.__data__;if(Tr){var e=t[n];return e===ky?void 0:e}return qy.call(t,n)?t[n]:void 0}var qc=Wy;var Jy=Object.prototype,$y=Jy.hasOwnProperty;function Ky(n){var t=this.__data__;return Tr?t[n]!==void 0:$y.call(t,n)}var Wc=Ky;var Yy="__lodash_hash_undefined__";function Xy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Tr&&t===void 0?Yy:t,this}var Jc=Xy;function Ai(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ai.prototype.clear=kc;Ai.prototype.delete=Hc;Ai.prototype.get=qc;Ai.prototype.has=Wc;Ai.prototype.set=Jc;var Ma=Ai;function Zy(){this.__data__=[],this.size=0}var $c=Zy;function Qy(n,t){for(var e=n.length;e--;)if(Gr(n[e][0],t))return e;return-1}var Rr=Qy;var eg=Array.prototype,tg=eg.splice;function rg(n){var t=this.__data__,e=Rr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():tg.call(t,e,1),--this.size,!0}var Kc=rg;function ig(n){var t=this.__data__,e=Rr(t,n);return e<0?void 0:t[e][1]}var Yc=ig;function og(n){return Rr(this.__data__,n)>-1}var Xc=og;function ng(n,t){var e=this.__data__,r=Rr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Zc=ng;function Di(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Di.prototype.clear=$c;Di.prototype.delete=Kc;Di.prototype.get=Yc;Di.prototype.has=Xc;Di.prototype.set=Zc;var Vr=Di;var sg=Ot(Ze,"Map"),Fr=sg;function ag(){this.size=0,this.__data__={hash:new Ma,map:new(Fr||Vr),string:new Ma}}var Qc=ag;function lg(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var ep=lg;function cg(n,t){var e=n.__data__;return ep(t)?e[typeof t=="string"?"string":"hash"]:e.map}var jr=cg;function pg(n){var t=jr(this,n).delete(n);return this.size-=t?1:0,t}var tp=pg;function hg(n){return jr(this,n).get(n)}var rp=hg;function dg(n){return jr(this,n).has(n)}var ip=dg;function ug(n,t){var e=jr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var op=ug;function Bi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Bi.prototype.clear=Qc;Bi.prototype.delete=tp;Bi.prototype.get=rp;Bi.prototype.has=ip;Bi.prototype.set=op;var Bo=Bi;var mg="Expected a function";function Oa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(mg);var e=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=e.cache;if(o.has(i))return o.get(i);var s=n.apply(this,r);return e.cache=o.set(i,s)||o,s};return e.cache=new(Oa.Cache||Bo),e}Oa.Cache=Bo;var np=Oa;var fg=500;function yg(n){var t=np(n,function(r){return e.size===fg&&e.clear(),r}),e=t.cache;return t}var sp=yg;var gg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xg=/\\(\\)?/g,bg=sp(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(gg,function(e,r,i,o){t.push(i?o.replace(xg,"$1"):r||e)}),t}),ap=bg;function vg(n){return n==null?"":uc(n)}var lp=vg;function Sg(n,t){return Qe(n)?n:Uc(n,t)?[n]:ap(lp(n))}var Ei=Sg;var wg=1/0;function Lg(n){if(typeof n=="string"||Li(n))return n;var t=n+"";return t=="0"&&1/n==-wg?"-0":t}var $n=Lg;function Cg(n,t){t=Ei(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[$n(t[e++])];return e&&e==r?n:void 0}var cp=Cg;function Tg(n,t){for(var e=-1,r=t.length,i=n.length;++e<r;)n[i+e]=t[e];return n}var _i=Tg;var pp=Lt?Lt.isConcatSpreadable:void 0;function Ng(n){return Qe(n)||si(n)||!!(pp&&n&&n[pp])}var hp=Ng;function dp(n,t,e,r,i){var o=-1,s=n.length;for(e||(e=hp),i||(i=[]);++o<s;){var a=n[o];t>0&&e(a)?t>1?dp(a,t-1,e,r,i):_i(i,a):r||(i[i.length]=a)}return i}var up=dp;function Mg(n){var t=n==null?0:n.length;return t?up(n,1):[]}var mp=Mg;function Og(n){return Fn(kn(n,void 0,mp),n+"")}var fp=Og;var Ig=Jn(Object.getPrototypeOf,Object),Gi=Ig;var Pg="[object Object]",Ag=Function.prototype,Dg=Object.prototype,yp=Ag.toString,Bg=Dg.hasOwnProperty,Eg=yp.call(Object);function _g(n){if(!gt(n)||_t(n)!=Pg)return!1;var t=Gi(n);if(t===null)return!0;var e=Bg.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&yp.call(e)==Eg}var Kn=_g;function Gg(n,t,e){var r=-1,i=n.length;t<0&&(t=-t>i?0:i+t),e=e>i?i:e,e<0&&(e+=i),i=t>e?0:e-t>>>0,t>>>=0;for(var o=Array(i);++r<i;)o[r]=n[r+t];return o}var gp=Gg;function zg(){this.__data__=new Vr,this.size=0}var xp=zg;function Rg(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var bp=Rg;function Vg(n){return this.__data__.get(n)}var vp=Vg;function Fg(n){return this.__data__.has(n)}var Sp=Fg;var jg=200;function Ug(n,t){var e=this.__data__;if(e instanceof Vr){var r=e.__data__;if(!Fr||r.length<jg-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Bo(r)}return e.set(n,t),this.size=e.size,this}var wp=Ug;function zi(n){var t=this.__data__=new Vr(n);this.size=t.size}zi.prototype.clear=xp;zi.prototype.delete=bp;zi.prototype.get=vp;zi.prototype.has=Sp;zi.prototype.set=wp;var Yn=zi;function kg(n,t){return n&&kt(t,Pi(t),n)}var Lp=kg;function Hg(n,t){return n&&kt(t,sr(t),n)}var Cp=Hg;var Op=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Tp=Op&&typeof module=="object"&&module&&!module.nodeType&&module,qg=Tp&&Tp.exports===Op,Np=qg?Ze.Buffer:void 0,Mp=Np?Np.allocUnsafe:void 0;function Wg(n,t){if(t)return n.slice();var e=n.length,r=Mp?Mp(e):new n.constructor(e);return n.copy(r),r}var Xn=Wg;function Jg(n,t){for(var e=-1,r=n==null?0:n.length,i=0,o=[];++e<r;){var s=n[e];t(s,e,n)&&(o[i++]=s)}return o}var Ip=Jg;function $g(){return[]}var Zn=$g;var Kg=Object.prototype,Yg=Kg.propertyIsEnumerable,Pp=Object.getOwnPropertySymbols,Xg=Pp?function(n){return n==null?[]:(n=Object(n),Ip(Pp(n),function(t){return Yg.call(n,t)}))}:Zn,Ri=Xg;function Zg(n,t){return kt(n,Ri(n),t)}var Ap=Zg;var Qg=Object.getOwnPropertySymbols,ex=Qg?function(n){for(var t=[];n;)_i(t,Ri(n)),n=Gi(n);return t}:Zn,Qn=ex;function tx(n,t){return kt(n,Qn(n),t)}var Dp=tx;function rx(n,t,e){var r=t(n);return Qe(n)?r:_i(r,e(n))}var es=rx;function ix(n){return es(n,Pi,Ri)}var Bp=ix;function ox(n){return es(n,sr,Qn)}var ts=ox;var nx=Ot(Ze,"DataView"),rs=nx;var sx=Ot(Ze,"Promise"),is=sx;var ax=Ot(Ze,"Set"),os=ax;var Ep="[object Map]",lx="[object Object]",_p="[object Promise]",Gp="[object Set]",zp="[object WeakMap]",Rp="[object DataView]",cx=Lr(rs),px=Lr(Fr),hx=Lr(is),dx=Lr(os),ux=Lr(Rn),ai=_t;(rs&&ai(new rs(new ArrayBuffer(1)))!=Rp||Fr&&ai(new Fr)!=Ep||is&&ai(is.resolve())!=_p||os&&ai(new os)!=Gp||Rn&&ai(new Rn)!=zp)&&(ai=function(n){var t=_t(n),e=t==lx?n.constructor:void 0,r=e?Lr(e):"";if(r)switch(r){case cx:return Rp;case px:return Ep;case hx:return _p;case dx:return Gp;case ux:return zp}return t});var Vi=ai;var mx=Object.prototype,fx=mx.hasOwnProperty;function yx(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&fx.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Vp=yx;var gx=Ze.Uint8Array,Ia=gx;function xx(n){var t=new n.constructor(n.byteLength);return new Ia(t).set(new Ia(n)),t}var Fi=xx;function bx(n,t){var e=t?Fi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Fp=bx;var vx=/\w*$/;function Sx(n){var t=new n.constructor(n.source,vx.exec(n));return t.lastIndex=n.lastIndex,t}var jp=Sx;var Up=Lt?Lt.prototype:void 0,kp=Up?Up.valueOf:void 0;function wx(n){return kp?Object(kp.call(n)):{}}var Hp=wx;function Lx(n,t){var e=t?Fi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ns=Lx;var Cx="[object Boolean]",Tx="[object Date]",Nx="[object Map]",Mx="[object Number]",Ox="[object RegExp]",Ix="[object Set]",Px="[object String]",Ax="[object Symbol]",Dx="[object ArrayBuffer]",Bx="[object DataView]",Ex="[object Float32Array]",_x="[object Float64Array]",Gx="[object Int8Array]",zx="[object Int16Array]",Rx="[object Int32Array]",Vx="[object Uint8Array]",Fx="[object Uint8ClampedArray]",jx="[object Uint16Array]",Ux="[object Uint32Array]";function kx(n,t,e){var r=n.constructor;switch(t){case Dx:return Fi(n);case Cx:case Tx:return new r(+n);case Bx:return Fp(n,e);case Ex:case _x:case Gx:case zx:case Rx:case Vx:case Fx:case jx:case Ux:return ns(n,e);case Nx:return new r;case Mx:case Px:return new r(n);case Ox:return jp(n);case Ix:return new r;case Ax:return Hp(n)}}var qp=kx;function Hx(n){return typeof n.constructor=="function"&&!Mi(n)?bc(Gi(n)):{}}var ss=Hx;var qx="[object Map]";function Wx(n){return gt(n)&&Vi(n)==qx}var Wp=Wx;var Jp=Cr&&Cr.isMap,Jx=Jp?Ii(Jp):Wp,$p=Jx;var $x="[object Set]";function Kx(n){return gt(n)&&Vi(n)==$x}var Kp=Kx;var Yp=Cr&&Cr.isSet,Yx=Yp?Ii(Yp):Kp,Xp=Yx;var Xx=1,Zx=2,Qx=4,Zp="[object Arguments]",e0="[object Array]",t0="[object Boolean]",r0="[object Date]",i0="[object Error]",Qp="[object Function]",o0="[object GeneratorFunction]",n0="[object Map]",s0="[object Number]",eh="[object Object]",a0="[object RegExp]",l0="[object Set]",c0="[object String]",p0="[object Symbol]",h0="[object WeakMap]",d0="[object ArrayBuffer]",u0="[object DataView]",m0="[object Float32Array]",f0="[object Float64Array]",y0="[object Int8Array]",g0="[object Int16Array]",x0="[object Int32Array]",b0="[object Uint8Array]",v0="[object Uint8ClampedArray]",S0="[object Uint16Array]",w0="[object Uint32Array]",ze={};ze[Zp]=ze[e0]=ze[d0]=ze[u0]=ze[t0]=ze[r0]=ze[m0]=ze[f0]=ze[y0]=ze[g0]=ze[x0]=ze[n0]=ze[s0]=ze[eh]=ze[a0]=ze[l0]=ze[c0]=ze[p0]=ze[b0]=ze[v0]=ze[S0]=ze[w0]=!0;ze[i0]=ze[Qp]=ze[h0]=!1;function as(n,t,e,r,i,o){var s,a=t&Xx,l=t&Zx,c=t&Qx;if(e&&(s=i?e(n,r,i,o):e(n)),s!==void 0)return s;if(!xt(n))return n;var p=Qe(n);if(p){if(s=Vp(n),!a)return Vn(n,s)}else{var h=Vi(n),d=h==Qp||h==o0;if(Oi(n))return Xn(n,a);if(h==eh||h==Zp||d&&!i){if(s=l||d?{}:ss(n),!a)return l?Dp(n,Cp(s,n)):Ap(n,Lp(s,n))}else{if(!ze[h])return i?n:{};s=qp(n,h,a)}}o||(o=new Yn);var m=o.get(n);if(m)return m;o.set(n,s),Xp(n)?n.forEach(function(w){s.add(as(w,t,e,w,n,o))}):$p(n)&&n.forEach(function(w,y){s.set(y,as(w,t,e,y,n,o))});var f=c?l?ts:Bp:l?sr:Pi,T=p?void 0:f(n);return Cc(T||n,function(w,y){T&&(y=w,w=n[y]),Un(s,y,as(w,t,e,y,n,o))}),s}var ls=as;var L0=1,C0=4;function T0(n){return ls(n,L0|C0)}var Eo=T0;function N0(n){return function(t,e,r){for(var i=-1,o=Object(t),s=r(t),a=s.length;a--;){var l=s[n?a:++i];if(e(o[l],l,o)===!1)break}return t}}var th=N0;var M0=th(),rh=M0;function O0(n,t,e){(e!==void 0&&!Gr(n[t],e)||e===void 0&&!(t in n))&&Ni(n,t,e)}var _o=O0;function I0(n){return gt(n)&&zr(n)}var ih=I0;function P0(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Go=P0;function A0(n){return kt(n,sr(n))}var oh=A0;function D0(n,t,e,r,i,o,s){var a=Go(n,e),l=Go(t,e),c=s.get(l);if(c){_o(n,e,c);return}var p=o?o(a,l,e+"",n,t,s):void 0,h=p===void 0;if(h){var d=Qe(l),m=!d&&Oi(l),f=!d&&!m&&qn(l);p=l,d||m||f?Qe(a)?p=a:ih(a)?p=Vn(a):m?(h=!1,p=Xn(l,!0)):f?(h=!1,p=ns(l,!0)):p=[]:Kn(l)||si(l)?(p=a,si(a)?p=oh(a):(!xt(a)||Ci(a))&&(p=ss(l))):h=!1}h&&(s.set(l,p),i(p,l,r,o,s),s.delete(l)),_o(n,e,p)}var nh=D0;function sh(n,t,e,r,i){n!==t&&rh(t,function(o,s){if(i||(i=new Yn),xt(o))nh(n,t,s,e,sh,r,i);else{var a=r?r(Go(n,s),o,s+"",n,t,i):void 0;a===void 0&&(a=o),_o(n,s,a)}},sr)}var ah=sh;function B0(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var lh=B0;function E0(n,t){return t.length<2?n:cp(n,gp(t,0,-1))}var ch=E0;var _0=Oc(function(n,t,e){ah(n,t,e)}),li=_0;function G0(n,t){return t=Ei(t,n),n=ch(n,t),n==null||delete n[$n(lh(t))]}var ph=G0;function z0(n){return Kn(n)?void 0:n}var hh=z0;var R0=1,V0=2,F0=4,j0=fp(function(n,t){var e={};if(n==null)return e;var r=!1;t=_n(t,function(o){return o=Ei(o,n),r||(r=o.length>1),o}),kt(n,ts(n),e),r&&(e=ls(e,R0|V0|F0,hh));for(var i=t.length;i--;)ph(e,t[i]);return e}),ji=j0;var Ui;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Ui||(Ui={}));var ci;(i=>{i.DefaultUp=[0,1,0],i.DefaultTargetOffset=1e3,i.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:i.DefaultUp,isUpVectorFlipped:!1,targetOffset:i.DefaultTargetOffset};function r(o){return o.type==="PerspectiveCamera"?o.perspective.zoom:o.orthographic.zoom}i.getZoom=r})(ci||(ci={}));var dh;(e=>{function n(r,i){return r[0]===i[0]&&r[1]===i[1]}e.isEqual=n;function t(r,i,o){return[r[0]+(i[0]-r[0])*o,r[1]+(i[1]-r[1])*o]}e.lerp=t})(dh||(dh={}));var ki;(i=>{function n(o,s){return o[0]===s[0]&&o[1]===s[1]&&o[2]===s[2]}i.isEqual=n;function t(o,s){return[o[0]+s[0],o[1]+s[1],o[2]+s[2]]}i.add=t;function e(o,s){return[o[0]-s[0],o[1]-s[1],o[2]-s[2]]}i.sub=e;function r(o,s,a){return[o[0]+(s[0]-o[0])*a,o[1]+(s[1]-o[1])*a,o[2]+(s[2]-o[2])*a]}i.lerp=r})(ki||(ki={}));var uh;(e=>{function n(r,i){return r[0]===i[0]&&r[1]===i[1]&&r[2]===i[2]&&r[3]===i[3]}e.isEqual=n;function t(r,i,o){return[r[0]+(i[0]-r[0])*o,r[1]+(i[1]-r[1])*o,r[2]+(i[2]-r[2])*o,r[3]+(i[3]-r[3])*o]}e.lerp=t})(uh||(uh={}));var Ur;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(s,a){for(let l=0;l<16;l++)if(s[l]!==a[l])return!1;return!0}o.isEqual=t;function e(s){return s!=null?s:o.identity}o.simplify=e;function r(s,a){let l=a.slice(0);for(var c=0,p=a.length;c<p;c+=3){let h=1/(s[3]*a[c]+s[7]*a[c+1]+s[11]*a[c+2]+s[15]);l[c]=(s[0]*a[c]+s[4]*a[c+1]+s[8]*a[c+2]+s[12])*h,l[c+1]=(s[1]*a[c]+s[5]*a[c+1]+s[9]*a[c+2]+s[13])*h,l[c+2]=(s[2]*a[c]+s[6]*a[c+1]+s[10]*a[c+2]+s[14])*h}return l}o.applyMatrix4=r;function i(s,a){let l=a.slice(0);for(var c=0,p=a.length;c<p;c+=3)l[c]=s[0]*a[c]+s[4]*a[c+1]+s[8]*a[c+2],l[c+1]=s[1]*a[c]+s[5]*a[c+1]+s[9]*a[c+2],l[c+2]=s[2]*a[c]+s[6]*a[c+1]+s[10]*a[c+2];return l}o.applyMatrix3Components=i})(Ur||(Ur={}));var Gt;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function i(c){return{r:c.r,g:c.g,b:c.b}}l.clone=i;function o(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=o;function s(c,p){return c.r===p.r&&c.g===p.g&&c.b===p.b}l.equals=s;function a(c,p,h){return{r:c.r+(p.r-c.r)*h,g:c.g+(p.g-c.g)*h,b:c.b+(p.b-c.b)*h}}l.lerp=a})(Gt||(Gt={}));var ar;(s=>{s.white=W(P({},Gt.white),{a:1});function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return W(P({},Gt.fromHex(a)),{a:l})}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function i(a,l){return Gt.equals(a,l)&&a.a===l.a}s.equals=i;function o(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=o})(ar||(ar={}));var cs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(cs||(cs={}));var mh;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(mh||(mh={}));var fh;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(fh||(fh={}));var ps;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(i=>i*(1+r)),useCenter:!0}}}t.defaultData=n})(ps||(ps={}));var Ht=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let o=W(P({},r),{[t]:e});return Object.setPrototypeOf(o,Ht.prototype),o}}add(t,e){var i;let r=this.runOp({type:1,id:t,data:e});return(i=r==null?void 0:r.data)!=null?i:this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],i;r===void 0?i={type:2,id:t.id}:i={type:1,id:t.id,data:r};let{id:o,data:s}=t,a=W(P({},e),{[o]:s});return Object.setPrototypeOf(a,Ht.prototype),{data:a,actual:t,reverse:i}}else if(t.type===2){let{id:r}=t,i=e[r];if(i===void 0)return null;{let o=P({},e);return Object.setPrototypeOf(o,Ht.prototype),delete o[r],{data:o,actual:t,reverse:{type:1,id:r,data:i}}}}throw new Error("illegal arg")}};function zo(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&zo(r)}return Object.freeze(n)}function yh(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var hs=class extends Error{};function lr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let o=n;n=t,t=o}let r=[],i=1/(e+1);for(let o=0;o<e;o++){let s=n+(t-n)*(o+.75+Math.random()*.5)*i;r.push(s)}return r}function gh(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 xh(){return typeof process<"u"}function bh(n,t){for(let e of n)t(e.id,e.data),bh(e.children,t)}function vh(n,t){t(n.id,n.data);for(let e of n.children)vh(e,t)}var qt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)zo(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let i of e.children)this.fillCaches0(i,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)]}isDescendantOf(e,r){for(;e;){let i=this.parent(e);if(i===r)return!0;e=i}return!1}data(e){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let i=this.get(e);i&&vh(i,r)}}traverse(e){bh(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let o=this.parent(e),s=this.childrenArray(o),a=s.findIndex(p=>p.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]=W(P({},l),{data:r}),this.modifyArrayBy(o,s)}}modifyArrayBy(e,r){let i=e,o=r;for(;i!==null;){let a=o,l=i;if(i=this.parent(i),i===void 0)throw new Error;o=this.childrenArray(i);let c=o.findIndex(p=>p.id===l);if(c<0)throw new Error;o=[...o],o[c]=W(P({},o[c]),{children:a})}Object.setPrototypeOf(o,qt.prototype);let s=o;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let i of r)if(this.checkDuplicatedIdRec(i))return!0;return!1}addOp(e){let{parent:r,fi:i,id:o,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),p={fi:i,id:o,data:s,children:a};return c=[...c,p],c.sort((d,m)=>d.fi-m.fi),e.localIndex=c.indexOf(p),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:o}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let i=this.parent(r);if(i===void 0)return null;let o=this.childrenArray(i),s=o.findIndex(c=>c.id===r);e.localIndex=s,o=[...o];let a=o.splice(s,1)[0];return{data:this.modifyArrayBy(i,o),actual:e,reverse:W(P({type:7},a),{parent:i})}}}moveOp(e){let{parent:r,fi:i,id:o}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:o});if(r!==null){let m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===o)throw new hs("cyclic tree");m=this.parent(m)}}let s=this.parent(o);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(m=>m.id===o);l=[...l];let p=l.splice(c,1)[0],h=this.modifyArrayBy(s,l);s=r,l=h.childrenArray(s);let d=p.fi;return p=W(P({},p),{fi:i}),l=[...l,p],l.sort((m,f)=>m.fi-f.fi),e.localIndex=l.indexOf(p),h=h.modifyArrayBy(s,l),{data:h,actual:e,reverse:{type:9,parent:a,fi:d,id:o}}}previous(e,r){if(r===null){let o=this.childrenArray(e);return o.length===0?null:o[o.length-1].id}let i=null;for(let o of this.childrenArray(e)){if(o.id===r)return i;i=o.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let i=this.childrenArray(r),o=i.findIndex(s=>s.id===e)+1;if(o<i.length)return i[o].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let i=this.childrenArray(r),o=i.findIndex(s=>s.id===e)-1;return o>=0?this.traverseSortPrevious(i[o].id):r}}getAllSorted(e){let r=[];for(let i of e){let o=this.getWithSortKey(i.id);o!==void 0&&r.push(P(P({},i),o))}r.sort((i,o)=>yh(i.sortKey,o.sortKey));for(let i of r)delete i.sortKey;return r}getWithSortKey(e){var r=e;let i=[],o=this.get(r),s=o;if(o!==void 0){for(;r;)i.splice(0,0,o.fi),r=this.parent(r),r!==null&&(o=this.get(r));return W(P({},s),{sortKey:i})}}insertBeforeHelper(e,r,i){return this.insertAfterHelper(e,this.previous(e,r),i)}insertAfterHelper(e,r,i){let o=this.childrenArray(e);if(r===null){if(o.length===0)return lr(0,i,i);{let s=o[0].fi;return lr(s-i,s,i)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=o.find(l=>l.fi>s.fi);if(a===void 0){let l=o[o.length-1].fi;return lr(l,l+i,i)}else return lr(s.fi,a.fi,i)}}};var ds;(t=>{function n(e,r){if(Array.isArray(e)){let i=r.props,o={},s=[...e],a=!1;if(i)for(let l of Object.keys(i)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");o[l]=s[c],s[c]=i[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:o}}:null}else{let i=r.props,o={},s=P({},e),a=!1;if(i)for(let l of Object.keys(i)){o[l]=s[l];let c=i[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:o}}:null}}t.runOp=n})(ds||(ds={}));var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)zo(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){var r;return(r=this.get(e))==null?void 0:r.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let o=this,s=o.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=o[s];return o=[...o],o[s]=W(P({},a),{data:r}),this.modifyArrayBy(o)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return xh()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:i,data:o}=e,s=this,a={fi:r,id:i,data:o};return s=[...s,a],s.sort((c,p)=>c.fi-p.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:i}}}deleteOp(e){let{id:r}=e,i=this,o=i.findIndex(l=>l.id===r);if(o===-1)return null;e.localIndex=o,i=[...i];let s=i.splice(o,1)[0];return{data:this.modifyArrayBy(i),actual:e,reverse:P({type:4},s)}}moveOp(e){let{fi:r,id:i}=e,o=this;o=[...o];let s=o.findIndex(p=>p.id===i);if(s===-1)return null;let a=o[s].fi,l=W(P({},o[s]),{fi:r});return o[s]=l,o.sort((p,h)=>p.fi-h.fi),e.localIndex=o.indexOf(l),{data:this.modifyArrayBy(o),actual:e,reverse:{type:6,fi:a,id:i}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let i of this){if(i.id===e)return r;r=i.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let i=this;if(e===null){if(i.length===0)return lr(0,r,r);{let o=i[0].fi;return lr(o-r,o,r)}}else{let o=this.get(e);if(o===void 0)throw new Error("illegal args");let s=i.find(a=>a.fi>o.fi);if(s===void 0){let a=i[i.length-1].fi;return lr(a,a+r,r)}else return lr(o.fi,s.fi,r)}}};var Sh=Symbol(),ms=Symbol(),Hi=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let i=[];for(;!(r instanceof us);){let o=r._path,s=r._current;if(o!==""&&i.splice(0,0,o),r=r._parent,r===null)return;r.update(o,s)}r.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ms];r&&r(),delete this._children[t]}}}},Aa=class extends Hi{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current=W(P({},this._current),{[t]:e})}runOp(t){this.reportOp(t,ds.runOp(this._current,t))}},Da=class extends Hi{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=W(P({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Ht.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},wh={get(n,t){if(t===ms)return()=>{n._parent=null};if(t===Sh)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let i=r===void 0?void 0:r[t];if(i!==void 0)return i;let o=e[t],s=fs(n,t,o);return s!==o?(r===void 0&&(r={},n._children=r),r[t]=s,s):o},has(n,t){return t 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,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},U0=W(P({},wh),{set(n,t,e){var i;let r={type:0,props:{[t]:(i=_a(e))!=null?i:e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}}),k0=W(P({},wh),{set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}}),qi=class extends Hi{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ms]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){var a;let{_current:e,_children:r}=this,i=r===void 0?void 0:r[t];if(i!==void 0)return i;let o=(a=e.get(t))==null?void 0:a.data,s=fs(this,t,o);return s!==o?(r===void 0&&(r={},this._children=r),r[t]=s,s):o}add(t,e,r,i,o){this.runOp({type:7,parent:t,fi:e,id:r,data:i,children:o})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let i=this._current.insertAfterHelper(t,e,r.length);for(let o=0;o<r.length;o++){let s=r[o];this.add(t,i[o],s.id,s.data,s.children)}}insertBefore(t,e,r){let i=this._current.insertBeforeHelper(t,e,r.length);for(let o=0;o<r.length;o++){let s=r[o];this.add(t,i[o],s.id,s.data,s.children)}}moveAfter(t,e,r){let i=this._current.insertAfterHelper(t,e,r.length);for(let o=0;o<r.length;o++){let s=r[o];this.move(t,i[o],s)}}moveBefore(t,e,r){let i=this._current.insertBeforeHelper(t,e,r.length);for(let o=0;o<r.length;o++){let s=r[o];this.move(t,i[o],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Wi=class extends Hi{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ms]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let i=this._current[r].id;t(this.data(this._current[r].id),i)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return W(P({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,i=r===void 0?void 0:r[t];if(i!==void 0)return i;let o=(a=e.get(t))==null?void 0:a.data,s=fs(this,t,o);return s!==o?(r===void 0&&(r={},this._children=r),r[t]=s,s):o}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let i=0;i<e.length;i++){let o=e[i];this.add(r[i],o.id,o.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let i=0;i<e.length;i++){let o=e[i];this.add(r[i],o.id,o.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let i=0;i<e.length;i++){let o=e[i];this.move(r[i],o)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let i=0;i<e.length;i++){let o=e[i];this.move(r[i],o)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Pa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&ys.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push(W(P({},t),{path:e}))}var us=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,i){Pa(this.ts,e,t),Pa(this.actual,r,t),Pa(this.reverse,i,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function fs(n,t,e){return e instanceof qt?new qi(n,t,e):e instanceof Je?new Wi(n,t,e):e instanceof Ht?new Proxy(new Da(n,t,e),k0):e!==null&&typeof e=="object"?gh(e)?e:new Proxy(new Aa(n,t,e),U0):e}function Ba(n){let t=new us(n);return[fs(t,"",n),t]}function Ea(n,t){let[e,r]=Ba(n);return t(e),r.result()}function _a(n){return n instanceof qi||n instanceof Wi?n._current:n!==null&&typeof n=="object"?n[Sh]:n}var ys;(r=>{function n(i,o){if(o.length===i.length)for(var s=0;s<i.length;){if(i[s]!==o[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(i,o,s){let a=e(s,i);if(a!==void 0&&typeof a=="object"&&a!==null){let l=P({},o);return Object.keys(a).forEach(c=>{delete l[c]}),l}else return o}r.removeOverridden=t;function e(i,o,s=0){if(o.length<=s)return i;if((i instanceof qt||i instanceof qi)&&typeof o[s]=="string")return e(i.data(o[s]),o,s+1);if((i instanceof Je||i instanceof Wi)&&typeof o[s]=="string")return e(i.data(o[s]),o,s+1);if(typeof o[s]=="number"&&Array.isArray(i))return e(i[o[s]],o,s+1);if(typeof o[s]=="string"&&typeof i=="object")return e(i[o[s]],o,s+1)}r.zoom=e})(ys||(ys={}));var gs=class{},Ro=class extends gs{constructor(e){super();this.id=e}},Vo=class extends gs{constructor(e){super();this.data=e}};var za;try{za=new TextDecoder}catch{}var ee,Hr,S=0;var Ph=[],Ra=Ph,Va=0,It={},Oe,kr,Wt=0,cr=0,zt,Nr,Ct=[],Ie,Lh={useRecords:!1,mapsAsObjects:!0},Fo=class{},ja=new Fo;ja.name="MessagePack 0xC1";var Ji=!1,pr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(ee)return _h(()=>(bs(),this?this.unpack(t,e):pr.prototype.unpack.call(Lh,t,e)));Hr=e>-1?e:t.length,S=0,Va=0,cr=0,kr=null,Ra=Ph,zt=null,ee=t;try{Ie=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof pr){if(It=this,this.structures)return Oe=this.structures,xs();(!Oe||Oe.length>0)&&(Oe=[])}else It=Lh,(!Oe||Oe.length>0)&&(Oe=[]);return xs()}unpackMultiple(t,e){let r,i=0;try{Ji=!0;let o=t.length,s=this?this.unpack(t,o):ws.unpack(t,o);if(e){for(e(s);S<o;)if(i=S,e(xs())===!1)return}else{for(r=[s];S<o;)i=S,r.push(xs());return r}}catch(o){throw o.lastPosition=i,o.values=r,o}finally{Ji=!1,bs()}}_mergeStructures(t,e){t=t||[];for(let r=0,i=t.length;r<i;r++){let o=t[r];o&&(o.isShared=!0,r>=32&&(o.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let i=t[r],o=e[r];o&&(i&&((t.restoreStructures||(t.restoreStructures=[]))[r]=i),t[r]=o)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function xs(){try{if(!It.trusted&&!Ji){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let n=$e();if(S==Hr)Oe.restoreStructures&&Ch(),Oe=null,ee=null,Nr&&(Nr=null);else if(S>Hr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ji)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Oe.restoreStructures&&Ch(),bs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Ch(){for(let n in Oe.restoreStructures)Oe[n]=Oe.restoreStructures[n];Oe.restoreStructures=null}function $e(){let n=ee[S++];if(n<160)if(n<128){if(n<64)return n;{let t=Oe[n&63]||It.getStructures&&Ah()[n&63];return t?(t.read||(t.read=Ua(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,It.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Bh()]=$e();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set($e(),$e());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=$e();return t}else if(n<192){let t=n-160;if(cr>=S)return kr.slice(S-Wt,(S+=t)-Wt);if(cr==0&&Hr<140){let e=t<16?ka(t):Dh(t);if(e!=null)return e}return Fa(t)}else{let t;switch(n){case 192:return null;case 193:return zt?(t=$e(),t>0?zt[1].slice(zt.position1,zt.position1+=t):zt[0].slice(zt.position0,zt.position0-=t)):ja;case 194:return!1;case 195:return!0;case 196:return Ga(ee[S++]);case 197:return t=Ie.getUint16(S),S+=2,Ga(t);case 198:return t=Ie.getUint32(S),S+=4,Ga(t);case 199:return pi(ee[S++]);case 200:return t=Ie.getUint16(S),S+=2,pi(t);case 201:return t=Ie.getUint32(S),S+=4,pi(t);case 202:if(t=Ie.getFloat32(S),It.useFloat32>2){let e=Ss[(ee[S]&127)<<1|ee[S+1]>>7];return S+=4,(e*t+(t>0?.5:-.5)>>0)/e}return S+=4,t;case 203:return t=Ie.getFloat64(S),S+=8,t;case 204:return ee[S++];case 205:return t=Ie.getUint16(S),S+=2,t;case 206:return t=Ie.getUint32(S),S+=4,t;case 207:return It.int64AsNumber?(t=Ie.getUint32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigUint64(S),S+=8,t;case 208:return Ie.getInt8(S++);case 209:return t=Ie.getInt16(S),S+=2,t;case 210:return t=Ie.getInt32(S),S+=4,t;case 211:return It.int64AsNumber?(t=Ie.getInt32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigInt64(S),S+=8,t;case 212:if(t=ee[S++],t==114)return Ih(ee[S++]&63);{let e=Ct[t];if(e)return e.read?(S++,e.read($e())):e.noBuffer?(S++,e()):e(ee.subarray(S,++S));throw new Error("Unknown extension "+t)}case 213:return t=ee[S],t==114?(S++,Ih(ee[S++]&63,ee[S++])):pi(2);case 214:return pi(4);case 215:return pi(8);case 216:return pi(16);case 217:return t=ee[S++],cr>=S?kr.slice(S-Wt,(S+=t)-Wt):q0(t);case 218:return t=Ie.getUint16(S),S+=2,cr>=S?kr.slice(S-Wt,(S+=t)-Wt):W0(t);case 219:return t=Ie.getUint32(S),S+=4,cr>=S?kr.slice(S-Wt,(S+=t)-Wt):J0(t);case 220:return t=Ie.getUint16(S),S+=2,Nh(t);case 221:return t=Ie.getUint32(S),S+=4,Nh(t);case 222:return t=Ie.getUint16(S),S+=2,Mh(t);case 223:return t=Ie.getUint32(S),S+=4,Mh(t);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 H0=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Ua(n,t){function e(){if(e.count++>2){let i=n.read=new Function("r","return function(){return {"+n.map(o=>H0.test(o)?o+":r()":"["+JSON.stringify(o)+"]:r()").join(",")+"}}")($e);return n.highByte===0&&(n.read=Th(t,n.read)),i()}let r={};for(let i=0,o=n.length;i<o;i++){let s=n[i];r[s]=$e()}return r}return e.count=0,n.highByte===0?Th(t,e):e}var Th=(n,t)=>function(){let e=ee[S++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),i=Oe[r]||Ah()[r];if(!i)throw new Error("Record id is not defined for "+r);return i.read||(i.read=Ua(i,n)),i.read()};function Ah(){let n=_h(()=>(ee=null,It.getStructures()));return Oe=It._mergeStructures(n,Oe)}var Fa=vs,q0=vs,W0=vs,J0=vs;function vs(n){let t;if(n<16&&(t=ka(n)))return t;if(n>64&&za)return za.decode(ee.subarray(S,S+=n));let e=S+n,r=[];for(t="";S<e;){let i=ee[S++];if((i&128)===0)r.push(i);else if((i&224)===192){let o=ee[S++]&63;r.push((i&31)<<6|o)}else if((i&240)===224){let o=ee[S++]&63,s=ee[S++]&63;r.push((i&31)<<12|o<<6|s)}else if((i&248)===240){let o=ee[S++]&63,s=ee[S++]&63,a=ee[S++]&63,l=(i&7)<<18|o<<12|s<<6|a;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(i);r.length>=4096&&(t+=nt.apply(String,r),r.length=0)}return r.length>0&&(t+=nt.apply(String,r)),t}function Nh(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=$e();return t}function Mh(n){if(It.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Bh()]=$e();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set($e(),$e());return t}}var nt=String.fromCharCode;function Dh(n){let t=S,e=new Array(n);for(let r=0;r<n;r++){let i=ee[S++];if((i&128)>0){S=t;return}e[r]=i}return nt.apply(String,e)}function ka(n){if(n<4)if(n<2){if(n===0)return"";{let t=ee[S++];if((t&128)>1){S-=1;return}return nt(t)}}else{let t=ee[S++],e=ee[S++];if((t&128)>0||(e&128)>0){S-=2;return}if(n<3)return nt(t,e);let r=ee[S++];if((r&128)>0){S-=3;return}return nt(t,e,r)}else{let t=ee[S++],e=ee[S++],r=ee[S++],i=ee[S++];if((t&128)>0||(e&128)>0||(r&128)>0||(i&128)>0){S-=4;return}if(n<6){if(n===4)return nt(t,e,r,i);{let o=ee[S++];if((o&128)>0){S-=5;return}return nt(t,e,r,i,o)}}else if(n<8){let o=ee[S++],s=ee[S++];if((o&128)>0||(s&128)>0){S-=6;return}if(n<7)return nt(t,e,r,i,o,s);let a=ee[S++];if((a&128)>0){S-=7;return}return nt(t,e,r,i,o,s,a)}else{let o=ee[S++],s=ee[S++],a=ee[S++],l=ee[S++];if((o&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){S-=8;return}if(n<10){if(n===8)return nt(t,e,r,i,o,s,a,l);{let c=ee[S++];if((c&128)>0){S-=9;return}return nt(t,e,r,i,o,s,a,l,c)}}else if(n<12){let c=ee[S++],p=ee[S++];if((c&128)>0||(p&128)>0){S-=10;return}if(n<11)return nt(t,e,r,i,o,s,a,l,c,p);let h=ee[S++];if((h&128)>0){S-=11;return}return nt(t,e,r,i,o,s,a,l,c,p,h)}else{let c=ee[S++],p=ee[S++],h=ee[S++],d=ee[S++];if((c&128)>0||(p&128)>0||(h&128)>0||(d&128)>0){S-=12;return}if(n<14){if(n===12)return nt(t,e,r,i,o,s,a,l,c,p,h,d);{let m=ee[S++];if((m&128)>0){S-=13;return}return nt(t,e,r,i,o,s,a,l,c,p,h,d,m)}}else{let m=ee[S++],f=ee[S++];if((m&128)>0||(f&128)>0){S-=14;return}if(n<15)return nt(t,e,r,i,o,s,a,l,c,p,h,d,m,f);let T=ee[S++];if((T&128)>0){S-=15;return}return nt(t,e,r,i,o,s,a,l,c,p,h,d,m,f,T)}}}}}function Ga(n){return It.copyBuffers?Uint8Array.prototype.slice.call(ee,S,S+=n):ee.subarray(S,S+=n)}function pi(n){let t=ee[S++];if(Ct[t])return Ct[t](ee.subarray(S,S+=n));throw new Error("Unknown extension type "+t)}var Oh=new Array(4096);function Bh(){let n=ee[S++];if(n>=160&&n<192){if(n=n-160,cr>=S)return kr.slice(S-Wt,(S+=n)-Wt);if(!(cr==0&&Hr<180))return Fa(n)}else return S--,$e();let t=(n<<5^(n>1?Ie.getUint16(S):n>0?ee[S]:0))&4095,e=Oh[t],r=S,i=S+n-3,o,s=0;if(e&&e.bytes==n){for(;r<i;){if(o=Ie.getUint32(r),o!=e[s++]){r=1879048192;break}r+=4}for(i+=3;r<i;)if(o=ee[r++],o!=e[s++]){r=1879048192;break}if(r===i)return S=r,e.string;i-=3,r=S}for(e=[],Oh[t]=e,e.bytes=n;r<i;)o=Ie.getUint32(r),e.push(o),r+=4;for(i+=3;r<i;)o=ee[r++],e.push(o);let a=n<16?ka(n):Dh(n);return a!=null?e.string=a:e.string=Fa(n)}var Ih=(n,t)=>{var e=$e();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let i=Oe[n];return i&&i.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[n]=i),Oe[n]=e,e.read=Ua(e,r),e.read()},Eh=typeof self=="object"?self:global;Ct[0]=()=>{};Ct[0].noBuffer=!0;Ct[101]=()=>{let n=$e();return(Eh[n[0]]||Error)(n[1])};Ct[105]=n=>{let t=Ie.getUint32(S-4);Nr||(Nr=new Map);let e=ee[S],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let i={target:r};Nr.set(t,i);let o=$e();return i.used?Object.assign(r,o):(i.target=o,o)};Ct[112]=n=>{let t=Ie.getUint32(S-4),e=Nr.get(t);return e.used=!0,e.target};Ct[115]=()=>new Set($e());var Ha=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Ct[116]=n=>{let t=n[0],e=Ha[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Eh[e](Uint8Array.prototype.slice.call(n,1).buffer)};Ct[120]=()=>{let n=$e();return new RegExp(n[0],n[1])};Ct[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=S;S+=t-4,zt=[$e(),$e()],zt.position0=0,zt.position1=0;let r=S;S=e;try{return $e()}finally{S=r}};Ct[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 _h(n){let t=Hr,e=S,r=Va,i=Wt,o=cr,s=kr,a=Ra,l=Nr,c=zt,p=new Uint8Array(ee.slice(0,Hr)),h=Oe,d=Oe.slice(0,Oe.length),m=It,f=Ji,T=n();return Hr=t,S=e,Va=r,Wt=i,cr=o,kr=s,Ra=a,Nr=l,zt=c,ee=p,Ji=f,Oe=h,Oe.splice(0,Oe.length,...d),It=m,Ie=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),T}function bs(){ee=null,Nr=null,Oe=null}function Gh(n){n.unpack?Ct[n.type]=n.unpack:Ct[n.type]=n}var Ss=new Array(147);for(let n=0;n<256;n++)Ss[n]=+("1e"+Math.floor(45.15-n*.30103));var ws=new pr({useRecords:!1}),$0=ws.unpack,K0=ws.unpackMultiple,Y0=ws.unpack,Ls={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},X0=new Float32Array(1),fP=new Uint8Array(X0.buffer,0,4);var Cs;try{Cs=new TextEncoder}catch{}var Ts,Wa,Ns=typeof Buffer<"u",qa=Ns?Buffer.allocUnsafeSlow:Uint8Array,Fh=Ns?Buffer:Uint8Array,zh=Ns?4294967296:2144337920,_,Ke,O=0,hr,dr=null,Z0=/[\u0080-\uFFFF]/,jo=Symbol("record-id"),hi=class extends pr{constructor(t){super(t),this.offset=0;let e,r,i,o,s,a,l=0,c=Fh.prototype.utf8Write?function(u,M,g){return _.utf8Write(u,M,g)}:Cs&&Cs.encodeInto?function(u,M){return Cs.encodeInto(u,_.subarray(M)).written}:!1,p=this;t||(t={});let h=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),h&&!t.saveStructures&&(this.structures=[]);let T=m>32||f+m>64,w=m+64,y=m+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let L=[],A=0,I=0;this.pack=this.encode=function(u,M){if(_||(_=new qa(8192),Ke=new DataView(_.buffer,0,8192),O=0),hr=_.length-10,hr-O<2048?(_=new qa(_.length),Ke=new DataView(_.buffer,0,_.length),hr=_.length-10,O=0):O=O+7&2147483640,r=O,a=p.structuredClone?new Map:null,p.bundleStrings?(dr=["",""],_[O++]=214,_[O++]=98,dr.position=O-r,O+=4):dr=null,i=p.structures,i){i.uninitialized&&(i=p._mergeStructures(p.getStructures()));let g=i.sharedLength||0;if(g>m)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let N=0;N<g;N++){let v=i[N];if(!v)continue;let C,J=i.transitions;for(let H=0,ie=v.length;H<ie;H++){let pe=v[H];C=J[pe],C||(C=J[pe]=Object.create(null)),J=C}J[jo]=N+64}l=g}h||(i.nextId=g+64)}o&&(o=!1),s=i||[];try{if(b(u),dr){Ke.setUint32(dr.position+r,O-dr.position-r);let g=dr;dr=null,b(g[0]),b(g[1])}if(p.offset=O,a&&a.idsToInsert){O+=a.idsToInsert.length*6,O>hr&&x(O),p.offset=O;let g=eb(_.subarray(r,O),a.idsToInsert);return a=null,g}return M&Uh?(_.start=r,_.end=O,_):_.subarray(r,O)}finally{if(i){if(I<10&&I++,A>1e4)i.transitions=null,I=0,A=0,L.length>0&&(L=[]);else if(L.length>0&&!h){for(let g=0,N=L.length;g<N;g++)L[g][jo]=0;L=[]}if(o&&p.saveStructures){let g=i.sharedLength||m;i.length>g&&(i=i.slice(0,g));let N=_.subarray(r,O);return p.saveStructures(i,l)===!1?(p._mergeStructures(p.getStructures()),p.pack(u)):(l=g,N)}}M&ab&&(O=r)}};let b=u=>{O>hr&&(_=x(O));var M=typeof u,g;if(M==="string"){let N=u.length;if(dr&&N>=8&&N<4096){let J=Z0.test(u);dr[J?0:1]+=u,_[O++]=193,b(J?-N:N);return}let v;N<32?v=1:N<256?v=2:N<65536?v=3:v=5;let C=N*3;if(O+C>hr&&(_=x(O+C)),N<64||!c){let J,H,ie,pe=O+v;for(J=0;J<N;J++)H=u.charCodeAt(J),H<128?_[pe++]=H:H<2048?(_[pe++]=H>>6|192,_[pe++]=H&63|128):(H&64512)===55296&&((ie=u.charCodeAt(J+1))&64512)===56320?(H=65536+((H&1023)<<10)+(ie&1023),J++,_[pe++]=H>>18|240,_[pe++]=H>>12&63|128,_[pe++]=H>>6&63|128,_[pe++]=H&63|128):(_[pe++]=H>>12|224,_[pe++]=H>>6&63|128,_[pe++]=H&63|128);g=pe-O-v}else g=c(u,O+v,C);g<32?_[O++]=160|g:g<256?(v<2&&_.copyWithin(O+2,O+1,O+1+g),_[O++]=217,_[O++]=g):g<65536?(v<3&&_.copyWithin(O+3,O+2,O+2+g),_[O++]=218,_[O++]=g>>8,_[O++]=g&255):(v<5&&_.copyWithin(O+5,O+3,O+3+g),_[O++]=219,Ke.setUint32(O,g),O+=4),O+=g}else if(M==="number")if(u>>>0===u)u<64?_[O++]=u:u<256?(_[O++]=204,_[O++]=u):u<65536?(_[O++]=205,_[O++]=u>>8,_[O++]=u&255):(_[O++]=206,Ke.setUint32(O,u),O+=4);else if(u>>0===u)u>=-32?_[O++]=256+u:u>=-128?(_[O++]=208,_[O++]=u+256):u>=-32768?(_[O++]=209,Ke.setInt16(O,u),O+=2):(_[O++]=210,Ke.setInt32(O,u),O+=4);else{let N;if((N=this.useFloat32)>0&&u<4294967296&&u>=-2147483648){_[O++]=202,Ke.setFloat32(O,u);let v;if(N<4||(v=u*Ss[(_[O]&127)<<1|_[O+1]>>7])>>0===v){O+=4;return}else O--}_[O++]=203,Ke.setFloat64(O,u),O+=8}else if(M==="object")if(!u)_[O++]=192;else{if(a){let v=a.get(u);if(v){if(!v.id){let C=a.idsToInsert||(a.idsToInsert=[]);v.id=C.push(v)}_[O++]=214,_[O++]=112,Ke.setUint32(O,v.id),O+=4;return}else a.set(u,{offset:O-r})}let N=u.constructor;if(N===Object)V(u,!0);else if(N===Array){g=u.length,g<16?_[O++]=144|g:g<65536?(_[O++]=220,_[O++]=g>>8,_[O++]=g&255):(_[O++]=221,Ke.setUint32(O,g),O+=4);for(let v=0;v<g;v++)b(u[v])}else if(N===Map){g=u.size,g<16?_[O++]=128|g:g<65536?(_[O++]=222,_[O++]=g>>8,_[O++]=g&255):(_[O++]=223,Ke.setUint32(O,g),O+=4);for(let[v,C]of u)b(v),b(C)}else{for(let v=0,C=Ts.length;v<C;v++){let J=Wa[v];if(u instanceof J){let H=Ts[v];if(H.write){H.type&&(_[O++]=212,_[O++]=H.type,_[O++]=0),b(H.write.call(this,u));return}let ie=_,pe=Ke,ce=O;_=null;let ve;try{ve=H.pack.call(this,u,F=>(_=ie,ie=null,O+=F,O>hr&&x(O),{target:_,targetView:Ke,position:O-F}),b)}finally{ie&&(_=ie,Ke=pe,O=ce,hr=_.length-10)}ve&&(ve.length+O>hr&&x(ve.length+O),O=Q0(ve,_,O,H.type));return}}V(u,!u.hasOwnProperty)}}else if(M==="boolean")_[O++]=u?195:194;else if(M==="bigint"){if(u<BigInt(1)<<BigInt(63)&&u>=-(BigInt(1)<<BigInt(63)))_[O++]=211,Ke.setBigInt64(O,u);else if(u<BigInt(1)<<BigInt(64)&&u>0)_[O++]=207,Ke.setBigUint64(O,u);else if(this.largeBigIntToFloat)_[O++]=203,Ke.setFloat64(O,Number(u));else throw new RangeError(u+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");O+=8}else if(M==="undefined")this.encodeUndefinedAsNil?_[O++]=192:(_[O++]=212,_[O++]=0,_[O++]=0);else if(M==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},V=this.useRecords===!1?this.variableMapSize?u=>{let M=Object.keys(u),g=M.length;g<16?_[O++]=128|g:g<65536?(_[O++]=222,_[O++]=g>>8,_[O++]=g&255):(_[O++]=223,Ke.setUint32(O,g),O+=4);let N;for(let v=0;v<g;v++)b(N=M[v]),b(u[N])}:(u,M)=>{_[O++]=222;let g=O-r;O+=2;let N=0;for(let v in u)(M||u.hasOwnProperty(v))&&(b(v),b(u[v]),N++);_[g+++r]=N>>8,_[g+r]=N&255}:u=>{let M=Object.keys(u),g,N=s.transitions||(s.transitions=Object.create(null)),v=0;for(let J=0,H=M.length;J<H;J++){let ie=M[J];g=N[ie],g||(g=N[ie]=Object.create(null),v++),N=g}let C=N[jo];if(C)C>=96&&T?(_[O++]=((C-=96)&31)+96,_[O++]=C>>5):_[O++]=C;else{C=s.nextId,C||(C=64),C<w&&this.shouldShareStructure&&!this.shouldShareStructure(M)?(C=s.nextOwnId,C<y||(C=w),s.nextOwnId=C+1):(C>=y&&(C=w),s.nextId=C+1);let J=M.highByte=C>=96&&T?C-96>>5:-1;N[jo]=C,s[C-64]=M,C<w?(M.isShared=!0,s.sharedLength=C-63,o=!0,J>=0?(_[O++]=(C&31)+96,_[O++]=J):_[O++]=C):(J>=0?(_[O++]=213,_[O++]=114,_[O++]=(C&31)+96,_[O++]=J):(_[O++]=212,_[O++]=114,_[O++]=C),v&&(A+=I*v),L.length>=f&&(L.shift()[jo]=0),L.push(N),b(M))}for(let J=0,H=M.length;J<H;J++)b(u[M[J]])},x=u=>{let M;if(u>16777216){if(u-r>zh)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(zh,Math.round(Math.max((u-r)*(u>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(u-r<<2,_.length-1)>>12)+1<<12;let g=new qa(M);return Ke=new DataView(g.buffer,0,M),_.copy?_.copy(g,0,r,u):g.set(_.slice(r,u)),O-=r,r=0,hr=g.length-10,_=g}}useBuffer(t){_=t,Ke=new DataView(_.buffer,_.byteOffset,_.byteLength),O=0}};Wa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Fo];Ts=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:i,targetView:o,position:s}=t(6);i[s++]=214,i[s++]=255,o.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:i,targetView:o,position:s}=t(10);i[s++]=215,i[s++]=255,o.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),o.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:i,targetView:o,position:s}=t(3);i[s++]=212,i[s++]=255,i[s++]=255}else{let{target:i,targetView:o,position:s}=t(15);i[s++]=199,i[s++]=12,i[s++]=255,o.setUint32(s,n.getMilliseconds()*1e6),o.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:i,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(i[o++]=212,i[o++]=115,i[o++]=0),e(r)}},{pack(n,t,e){let{target:r,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(r[i++]=212,r[i++]=101,r[i++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(r[i++]=212,r[i++]=120,r[i++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Rh(n,16,t):Vh(Ns?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Fh&&this.structuredClone?Rh(n,Ha.indexOf(e.name),t):Vh(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Rh(n,t,e,r){let i=n.byteLength;if(i+1<256){var{target:o,position:s}=e(4+i);o[s++]=199,o[s++]=i+1}else if(i+1<65536){var{target:o,position:s}=e(5+i);o[s++]=200,o[s++]=i+1>>8,o[s++]=i+1&255}else{var{target:o,position:s,targetView:a}=e(7+i);o[s++]=201,a.setUint32(s,i+1),s+=4}o[s++]=116,o[s++]=t,o.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Vh(n,t){let e=n.byteLength;var r,i;if(e<256){var{target:r,position:i}=t(e+2);r[i++]=196,r[i++]=e}else if(e<65536){var{target:r,position:i}=t(e+3);r[i++]=197,r[i++]=e>>8,r[i++]=e&255}else{var{target:r,position:i,targetView:o}=t(e+5);r[i++]=198,o.setUint32(i,e),i+=4}r.set(n,i)}function Q0(n,t,e,r){let i=n.length;switch(i){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:i<256?(t[e++]=199,t[e++]=i):i<65536?(t[e++]=200,t[e++]=i>>8,t[e++]=i&255):(t[e++]=201,t[e++]=i>>24,t[e++]=i>>16&255,t[e++]=i>>8&255,t[e++]=i&255)}return t[e++]=r,t.set(n,e),e+=i,e}function eb(n,t){let e,r=t.length*6,i=n.length-r;for(t.sort((o,s)=>o.offset>s.offset?1:-1);e=t.pop();){let o=e.offset,s=e.id;n.copyWithin(o+r,o,i),r-=6;let a=o+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,i=o}return n}function di(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)");Wa.unshift(n.Class),Ts.unshift(n)}Gh(n)}var jh=new hi({useRecords:!1}),tb=jh.pack,rb=jh.pack;var{NEVER:ib,ALWAYS:ob,DECIMAL_ROUND:nb,DECIMAL_FIT:sb}=Ls,Uh=512,ab=1024;var kh=new hi({structuredClone:!0});di({Class:Ht.prototype.constructor,type:1,write(n){return P({},n)},read(n){return Object.setPrototypeOf(n,Ht.prototype),n}});di({Class:Je.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Je.prototype),n}});di({Class:qt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,qt.prototype),n}});di({Class:Ro.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ro(n)}});di({Class:Vo.prototype.constructor,type:5,write(n){return n.data},read(n){return new Vo(n)}});function lb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}var Ms;(r=>{function n(i){return kh.pack(i)}r.serialize=n;function t(i){return kh.unpack(i)}r.deserialize=t;function e(i){return lb(n(i)).toString()}r.checksum=e})(Ms||(Ms={}));var Os;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Os||(Os={}));var Is;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:ar.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:ar.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:ar.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(Is||(Is={}));var Ja;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,i){return r.castShadow===i.castShadow&&r.receiveShadow===i.receiveShadow}e.equals=t})(Ja||(Ja={}));var $a;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,i){return r.flatShading===i.flatShading&&r.side===i.side&&r.wireframe===i.wireframe}e.equals=t})($a||($a={}));var Ps;(t=>t.defaultData=W(P(P({},$a.defaultData),Ja.defaultData),{cloner:null}))(Ps||(Ps={}));var Ka=(i=>(i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Center=3]="Center",i[i.Justify=4]="Justify",i))(Ka||{}),Ya=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Ya||{}),Xa=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Xa||{}),As;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:ar.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(As||(As={}));var $i;(r=>{function n(i,o){return i==="light"&&o?t(o):e(i)}r.defaultData=n;function t(i){switch(i){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Gt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:W(P({},Gt.fromHex(6710886)),{a:1}),colorB:W(P({},Gt.fromHex(6710886)),{a:1}),colorC:W(P({},Gt.fromHex(16777215)),{a:1}),colorD:W(P({},Gt.fromHex(16777215)),{a:1}),distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:ar.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})($i||($i={}));var Ki;(a=>{function n(l){return!l.layers.some(p=>{if(p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")return!0})&&!e(l)}a.isMergable=n;function t(l){let c="";return l.layers.forEach(p=>{Object.entries(p.data).forEach(([h,d])=>{c+=`${h}${d}`,Array.isArray(d)?d.forEach(m=>c+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?c+=`${m.toFixed(4)}`:c+=`${m}`}):c+=`${d}`})}),c}a.getHash=t;function e(l){let c=0;for(let p of l.layers)"alpha"in p.data&&p.data.type!=="light"&&p.data.type!=="fresnel"&&(c+=(1-c)*p.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Je}}a.defaultEmptyData=r;function i(l="layer1",c="layer2"){return o("phong",l,c)}a.defaultData=i;function o(l,c="layer1",p="layer2"){let h=new Je;return h.push({fi:0,data:$i.defaultData("light",l),id:c}),h.push({fi:1,data:$i.defaultData("color"),id:p}),{layers:h}}a.defaultTwoLayerData=o;function s(l,c="basic",p="layer1",h="layer2"){let d=$i.defaultData("texture");Object.assign(d.texture,{image:l});let m=new Je;return m.push({fi:0,data:d,id:p}),m.push({fi:1,data:$i.defaultData("light",c),id:h}),{layers:m}}a.defaultTwoLayerTextureData=s})(Ki||(Ki={}));var Yi;(r=>{function n(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n;function t(i,o){let{points:s}=o;if(s){for(let a of s)if(a.data.position[0]===i[0]&&a.data.position[1]===i[1])return!0}return!1}r.isOverlappingExistingPoint=t;function e(i,o){let s=i.controlNext,a=o.controlPrevious;return i.position[0]===s.position[0]&&i.position[1]===s.position[1]&&o.position[0]===a.position[0]&&o.position[1]===a.position[1]}r.isStraightLine=e})(Yi||(Yi={}));var Ds;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ds||(Ds={}));var Bs;(t=>{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==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}t.defaultData=n})(Bs||(Bs={}));var Uo;(i=>{i.identity=W(P({},cs.identity),{hiddenMatrix:Ur.identity});function t(o){return{position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix}}i.fromObject=t;function e(o,s){return{position:(s==null?void 0:s.position)||o.position,rotation:(s==null?void 0:s.rotation)||o.rotation,scale:(s==null?void 0:s.scale)||o.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||o.hiddenMatrix}}i.merge=e;function r(o,s){return{position:ki.isEqual(o.position,s.position)?null:s.position,rotation:ki.isEqual(o.rotation,s.rotation)?null:s.rotation,scale:ki.isEqual(o.scale,s.scale)?null:s.scale,hiddenMatrix:Ur.isEqual(o.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}i.diff=r})(Uo||(Uo={}));var qr;(t=>t.defaultData=P({states:new Je,events:new Je,visible:!0,raycastLock:!1},Uo.identity))(qr||(qr={}));var Hh;(t=>t.defaultData=P({type:"Empty"},qr.defaultData))(Hh||(Hh={}));var Za;(t=>t.defaultData=P(P({type:"Mesh"},qr.defaultData),Ps.defaultData))(Za||(Za={}));var qh;(t=>t.defaultData=P(P({type:"TextFrame"},qr.defaultData),As.defaultData))(qh||(qh={}));var Es;(t=>t.defaultData=P(P(P({},qr.defaultData),Uo.identity),ci.defaultData))(Es||(Es={}));var Wh;(t=>{function n(e){return P(P({},qr.defaultData),Is.defaultData(e))}t.defaultData=n})(Wh||(Wh={}));var Jh;(e=>(e.defaultCamera=P({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Ur.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},ci.defaultData),e.defaultMeshObject=W(P(P({name:"Rectangle"},qr.defaultData),Za.defaultData),{geometry:Bs.defaultData("RectangleGeometry"),material:Ki.defaultTwoLayerData("basic","layer1","layer2")})))(Jh||(Jh={}));var $h;(e=>{function n(r,i){if(i===void 0)return r;let o=P({},r);return"material"in o&&"material"in i&&i.material&&(o.material=Ea(o.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(i.material.layers)){let c=s.layers.data(a);c&&li(c,l)}}).data),o.materials&&i.materials&&(o.materials=Ea(o.materials,s=>{var a,l;for(let c=0;c<o.materials.length;c++){let p=i.materials[c];if(typeof p!="string")for(let[h,d]of Object.entries(p.layers)){let m=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(h);m&&li(m,d)}}}).data),o}e.patchMaterialState=n;function t(r,i){var s,a;if(i===void 0)return r;let o=P({},r);if(Object.assign(o,Uo.merge(o,i)),Ui.is(r.type)){o.orthographic=P({},o.orthographic),o.perspective=P({},o.perspective);let l=i;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(o.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(o.perspective.zoom=l.perspective.zoom)}else if(r.type==="Mesh")o.geometry=P({},o.geometry),Object.assign(o.geometry,i.geometry),o=n(o,i);else if(Os.is(r.type)){let l=i;o.intensity!==void 0&&(o.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?o.color=l.color:o.color=Gt.clone(l.color))}return o}e.patch=t})($h||($h={}));import{BufferGeometry as PA,ConeBufferGeometry as hb,Float32BufferAttribute as AA,Vector2 as DA,Vector3 as BA}from"three";import{BufferGeometry as cb,CylinderBufferGeometry as pb,Float32BufferAttribute as Qa,Vector2 as Zt,Vector3 as _s}from"three";var Yh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l,c,p;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,i=(a=e.radiusTop)!=null?a:r,o=(l=e.radiusBottom)!=null?l:r;return i===o?(i=r,o=r):i>o?(i=r,o=o*r/i):(i=i*r/o,o=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((c=e.height)!=null?c:e.width),depth:Math.abs((p=e.depth)!=null?p:e.width),radiusTop:i,radiusBottom:o})}}static build(n){let{width:t,depth:e,height:r,radialSegments:i,heightSegments:o,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:p,cornerRadius:h,cornerSegments:d,hollow:m}=n.parameters,f;return h||m?f=new ko(c,p,r,i,o,s,a,l*Math.PI/180,h,h,d,m):f=new pb(c,p,r,i,o,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:W(P({},n),{type:"CylinderGeometry"})})}};function Wr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Kh(n){return new Zt(n.y,-n.x)}var ko=class extends cb{constructor(t,e,r,i,o,s,a,l,c,p,h,d,m=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,i=Math.floor(i)||8,o=Math.floor(o)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,p=0);let f=[],T=[],w=[],y=[],L=0,A=r/2,I=new _s,b=new _s;m&&t==0&&(t=c),m&&e==0&&(e=p);let V=new Zt(t,A),x=new Zt(e,-A),u=null,M=null,g=null,N=null,v=V.clone().sub(x),C=0,J=0,H=0;d>0&&(C=Math.min(t,e)*(1-d),J=t-C,H=e-C);let ie=V.clone();ie.x-=C;let pe=Math.PI-v.angle(),ce=v.angle(),ve=Math.tan(ce/2),F=Math.tan(pe/2),G=ve+F,B=d?G:F,z=d?G:ve;if(c=Math.min(c,(t-J)/B,v.length()/G),p=Math.min(p,(e-H)/z,v.length()/G),c>0){let j=c/ve;u=V.clone().sub(new Zt(j,c)),d&&(g=u.clone(),g.x-=C-G*c),V.sub(v.clone().setLength(j))}if(p>0){let j=p/F;M=x.clone().sub(new Zt(j,-p)),x.add(v.clone().setLength(j)),d&&(N=M.clone(),N.x-=C-G*p,ie.sub(v.clone().setLength(j)))}v=V.clone().sub(x);let D=v.length()<.5,R=[];for(let j=0;j<=i;j++){let E=[],k=j/i,ne=k*l+a,q=new Zt(Math.sin(ne),Math.cos(ne));N&&M?(K(E,k,q,pe,p,N,-1,!0),K(E,k,q,ce,p,M,-1,!1)):M?(Z(E,q,M.x,0,-1),K(E,k,q,ce,p,M,-1,!1)):s||Z(E,q,e,H,-1);let $=Kh(v).normalize();if(Wr($,q,I),!D)for(let Y=0;Y<=o;Y++){let X=Y/o,Q=v.clone().multiplyScalar(X).add(x);Wr(Q,q,b),T.push(b.x,b.y,b.z),w.push(I.x,I.y,I.z),y.push(k,.5+b.y/r),E.push(L++)}if(g&&u?(K(E,k,q,pe,c,u,1,!1),K(E,k,q,ce,c,g,1,!0)):u?(K(E,k,q,pe,c,u,1,!1),Z(E,q,u.x,0,1)):s||Z(E,q,t,J,1),d&&!D){let Y=Kh(v).multiplyScalar(-1).normalize();Wr(Y,q,I);for(let X=0;X<=o;X++){let Q=X/o,se=v.clone().multiplyScalar(-Q).add(ie);Wr(se,q,b),T.push(b.x,b.y,b.z),w.push(I.x,I.y,I.z),y.push(k,.5+b.y/r),E.push(L++)}}d&&!s&&E.push(E[0]),R.push(E)}for(let j=0;j<R.length-1;j++)for(let E=0;E<R[0].length-1;E++){if(s&&d&&E==o)continue;let k=R[j][E],ne=R[j+1][E],q=R[j+1][E+1],$=R[j][E+1],Y=T[q*3+0],X=T[q*3+2];f.push(k,ne,$),(Y!=0||X!=0)&&f.push(ne,q,$)}l<Math.PI*2&&(U(-1,R[0],a),U(1,R[R.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new Qa(T,3)),this.setAttribute("normal",new Qa(w,3)),this.setAttribute("uv",new Qa(y,2));function K(j,E,k,ne,q,$,Y,X){for(let Q=0;Q<h+1;Q++){let se=Q/h,oe=Y<0?se:1-se;X&&(oe-=1),oe*=ne;let he=new Zt(Math.sin(oe),Math.cos(oe)*Y),_e=he.clone().multiplyScalar(q).add($);Wr(_e,k,b),T.push(b.x,b.y,b.z),Wr(he,k,I),w.push(I.x,I.y,I.z),y.push(E,.5+b.y/r),j.push(L++)}}function Z(j,E,k,ne,q){let $=new _s,Y=new Zt,X=[k,ne];q<0&&X.reverse();for(let Q of X)Y.set(Q,A*q),Wr(Y,E,$),T.push($.x,$.y,$.z),w.push(0,q,0),y.push(.5,.5),j.push(L++)}function U(j,E,k){let ne=new Zt(Math.sin(k),Math.cos(k)),q=new Zt(-Math.cos(k),Math.sin(k)),$=new _s,Y=j<0?(se,oe,he)=>f.push(se,oe,he):(se,oe,he)=>f.push(se,he,oe),X=new Zt((t+e+J+H)/4,0);Wr(X,ne,$),T.push($.x,$.y,$.z),w.push(q.x,0,q.y),y.push(.5,.5);let Q=L++;for(let se of E){let oe=T.slice(se*3,se*3+3);T.push(...oe),w.push(q.x,0,q.y);let he=y.slice(se*2,se*2+2);y.push(...he),L++}for(let se=Q+1;se<L-1;se++)Y(Q,se,se+1);Y(Q,L-1,Q+1)}}};var Xh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:i,heightSegments:o,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:p,cornerSegments:h}=n.parameters,d;return c>0||p>0||l<360?d=new ko(0,t/2,r,i,o,s,a,l*Math.PI/180,c,p,h,0,!0):d=new hb(t/2,r,i,o,s),d.scale(1,1,e/t),Object.assign(d,{userData:W(P({},n),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as db,BufferGeometry as ub,Float32BufferAttribute as el,Vector3 as Ho}from"three";var Zh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:i,heightSegments:o,depthSegments:s,cornerRadius:a,cornerSegments:l}=n.parameters,c;return a==0?c=new db(t,e,r,i,o,s):c=new rl(t,e,r,i,o,s,a,l),Object.assign(c,{userData:W(P({},n),{type:"CubeGeometry"})})}},tl=Math.PI/2,rl=class extends ub{constructor(t=1,e=1,r=1,i=1,o=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;i=Math.floor(i),o=Math.floor(o),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let p=[],h=[],d=[],m=[],f=0,T=0;w("z","y","x",-1,-1,r,e,t,s,o,0),w("z","y","x",1,-1,r,e,-t,s,o,1),w("x","z","y",1,1,t,r,e,i,s,2),w("x","z","y",1,-1,t,r,-e,i,s,3),w("x","y","z",1,-1,t,e,r,i,o,4),w("x","y","z",-1,-1,t,e,-r,i,o,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,i,0),y("x","y","z",1,-1,1,t,e,r,i,1),y("x","y","z",-1,1,1,t,e,r,i,0),y("x","y","z",1,1,-1,t,e,r,i,1),y("y","x","z",-1,-1,1,e,t,r,o,0),y("y","x","z",1,-1,-1,e,t,r,o,1),y("y","x","z",1,1,1,e,t,r,o,1),y("y","x","z",-1,1,-1,e,t,r,o,0),L(1,1,1),L(-1,1,1),L(1,-1,1),L(-1,-1,1),L(1,1,-1),L(-1,1,-1),L(1,-1,-1),L(-1,-1,-1)),this.setIndex(p),this.setAttribute("position",new el(h,3)),this.setAttribute("normal",new el(d,3)),this.setAttribute("uv",new el(m,2));function w(A,I,b,V,x,u,M,g,N,v,C){let J=(u-2*a)/N,H=(M-2*a)/v,ie=u/2-a,pe=M/2-a,ce=g/2,ve=N+1,F=v+1,G=0,B=0,z=new Ho;for(let D=0;D<F;D++){let R=D*H-pe;for(let K=0;K<ve;K++){let Z=K*J-ie;z[A]=Z*V,z[I]=R*x,z[b]=ce,h.push(z.x,z.y,z.z),z[A]=0,z[I]=0,z[b]=g>0?1:-1,d.push(z.x,z.y,z.z),m.push(K/N),m.push(1-D/v),G+=1}}for(let D=0;D<v;D++)for(let R=0;R<N;R++){let K=f+R+ve*D,Z=f+R+ve*(D+1),U=f+(R+1)+ve*(D+1),j=f+(R+1)+ve*D;p.push(K,Z,j),p.push(Z,U,j),B+=6}c.addGroup(T,B,C),T+=B,f+=G}function y(A,I,b,V,x,u,M,g,N,v,C){let J=(M-2*a)/v,H=M/2-a,ie=g/2-a,pe=N/2,ce=v+1,ve=0,F=0,G=new Ho,B=new Ho;for(let z=0;z<l+1;z++){let D=z/l*tl,R=Math.sin(D)*a,K=(1-Math.cos(D))*a,Z=Math.sin(D),U=Math.cos(D);G[I]=(ie+R)*x,G[b]=(pe-K)*u,B[A]=0,B[I]=Z*Math.sign(G[I]),B[b]=U*Math.sign(G[b]);for(let j=0;j<ce;j++){let E=j*J-H;G[A]=E*V,h.push(G.x,G.y,G.z),d.push(B.x,B.y,B.z),m.push(j/v),m.push(0),ve+=1}}for(let z=0;z<l;z++)for(let D=0;D<v;D++){let R=f+D+ce*z,K=f+D+ce*(z+1),Z=f+(D+1)+ce*(z+1),U=f+(D+1)+ce*z;p.push(R,K,U),p.push(K,Z,U),F+=6}c.addGroup(T,F,C),T+=F,f+=ve}function L(A,I,b){let V=new Ho,x=new Ho(t/2,e/2,r/2);x.subScalar(a);let u=[],M=A*I*b>0?(N,v,C)=>p.push(N,v,C):(N,v,C)=>p.push(N,C,v);for(let N=0;N<=l;N++){let v=[],C=tl*(1-N/l),J=Math.cos(C),H=Math.sin(C),ie=0;for(let pe=0;pe<=N;pe++){let ce=Math.cos(ie),ve=Math.sin(ie);V.x=J*ce,V.y=H,V.z=J*ve;let F=x.clone().addScaledVector(V,a);h.push(A*F.x,I*F.y,b*F.z),d.push(A*V.x,I*V.y,b*V.z),m.push(0,0),v.push(f++),ie+=tl/N}u.push(v)}let g=u.length-1;for(let N=0;N<g;N++){let v=u[N],C=u[N+1],J=v.length-1;M(v[0],C[1],C[0]);for(let H=1;H<=J;H++)M(v[H-1],v[H],C[H]),M(v[H],C[H+1],C[H])}}}};import{BufferGeometry as mb,Float32BufferAttribute as il,Triangle as fb,Vector3 as Mr,Vector2 as ol}from"three";var Jr=class extends mb{constructor(t=[],e=[],r="",i=1,o=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];p(),h(),this.setAttribute("position",new il(a,3)),this.setAttribute("normal",new il(c,3)),this.setAttribute("uv",new il(l,2));return;function p(){var ve;o=Math.min(1-1e-5,o),o==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Mr,T=f.clone(),w=new fb,y=o*i,L=i-y,A=s+1,I=new Mr,b=(F,G)=>I.subVectors(F,G).normalize(),V=(F,G)=>Array(F).fill(void 0).map(G),x=V(t.length/3,(F,G)=>new Mr().fromArray(t,G*3).setLength(i)),u=[],M=1e6;for(let F=0;F<x.length;F++){let G=x[F],B=[],z,D,R,K=1e10,Z=-1;for(;(Z=e.indexOf(F,Z+1))!=-1;){let k=Z-Z%3;z=e[k+(Z+1)%3],D=e[k+(Z+2)%3],R=G.distanceToSquared(x[z]),K=Math.min(K,R),B.push([z,D,R])}K+=1e-6;let U=[],j=0,E=B.length;for(let k=0;k<E;k++){[z,D,R]=B[j];let ne=((ve=u[z])==null?void 0:ve.includes(F))==!0;R<=K&&U.push(z+ +ne*M),j=B.findIndex(q=>q[0]==D)}u.push(U)}let g=[];{let F=0,G=0,B,z,D=m==3;for(let R=0;R<=s;R++){B=R*(R+1)/2,z=(R+1)*(R+2)/2;for(let K=0;K<s-R;K++)[F,G]=[B+K+R+2,z+K+R+3],g.push(B,z,...D?[G,B]:[F,z],G,F),[B,z]=[F,G];g.push(B,z,B+s+2)}}let N=f.clone(),v=f.clone(),C=f.clone(),J=f.clone(),H=f.clone(),ie=[],pe=V(x.length,()=>V(m,()=>f.clone()));for(let F=0;F<x.length;F++){f.copy(x[F]).normalize(),N.copy(f).multiplyScalar(L);let G=u[F];for(let U=0;U<G.length;U++){let j=G[U],E=G[(U+1)%m];w.setFromPointsAndIndices(x,F,j%M,E%M),w.b.sub(w.a).setLength(1e10).add(w.a),w.c.sub(w.a).setLength(1e10).add(w.a),w.closestPointToPoint(N,pe[F][U])}let B=[],z=[],D=[],R=new Mr;s==0&&[...pe[F]].reduce((U,j)=>U.add(j),R).multiplyScalar(1/m);for(let U=0;U<m;U++){let j=[],E=(U-1+m)%m,k=pe[F][E],ne=pe[F][U];f.copy(k).sub(N),T.copy(ne).sub(N);let q=N.angleTo(f),$=f.angleTo(T),Y=Math.cos(q)*y;s==0?v.copy(R):v.copy(N).setLength(L+Y),z.push(Y);let X=[v,k,ne];for(let Q=0;Q<2;Q++){let se=X[Q],oe=X[Q+1];J.subVectors(se,N),H.subVectors(oe,N),C.crossVectors(J,H).normalize();for(let he=0;he<A;he++){let _e=[q,$][Q]*he/A;f.copy(J).applyAxisAngle(C,_e).add(N),B.push(f.clone()),Q&&(b(f,N),j.push([he==0?se:f.clone(),I.clone()]))}Q&&(b(oe,N),j.push([oe,I.clone()]))}D.push(j)}ie.push(D);let K=2*A,Z=2;for(let U=0;U<m;U++){let j=K*U,E=K*((U+1)%m),k=[B[j]];for(let q=1;q<A;q++){J=B[j+q],H=B[E+q],k.push(J);for(let $=1,Y=q-Z+1;$<=Y;$++)f.lerpVectors(J,H,$/(Y+1)),f.sub(N).setLength(z[U]).add(N),k.push(f.clone());k.push(H)}for(let q=0;q<A;q++)k.push(B[q+A+j]);k.push(B[E+A]);let ne=g.map(q=>k[q]);a.push(...ne.map(q=>[q.x,q.y,q.z]).flat()),c.push(...ne.map(q=>(b(q,N),[I.x,I.y,I.z])).flat())}}let ce=[];for(let F=0;F<u.length;F++)for(let G=0;G<m;G++){let B=u[F][G];if(B<M){let z=u[B].findIndex(K=>K%M==F),D=ie[F][G],R=ie[B][z];for(let K=0;K<A;K++){let Z=D[K],U=R[A-K],j=D[K+1],E=R[A-(K+1)];[Z,U,j,j,U,E].forEach(k=>{a.push(k[0].x,k[0].y,k[0].z),c.push(k[1].x,k[1].y,k[1].z)})}ce.push(D[0][0],R[A][0],D[A][0],R[0][0])}}for(;ce.length;){let F,G,B,z;[F,G]=ce.splice(0,2);let D=[F];for(;F!=G;)D.push(G),B=ce.indexOf(G),z=B%2,G=ce.splice(B-z,2)[1-z];I.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let R=I.dot(D[0])<0;R&&I.negate();for(let K=1;K<=D.length-2;K++)[D[K+ +R],D[K+1-+R],D[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),c.push(I.x,I.y,I.z)})}}function h(){let d=new Mr;for(let x=0;x<a.length;x+=3){d.x=a[x+0],d.y=a[x+1],d.z=a[x+2];let u=b(d)/2/Math.PI+.5,M=V(d)/Math.PI+.5;l.push(u,1-M)}let m=new Mr,f=new Mr,T=new Mr,w=new Mr,y=new ol,L=new ol,A=new ol,I=(x,u,M,g)=>{g<0&&x.x===1&&(l[u]=x.x-1),M.x===0&&M.z===0&&(l[u]=g/2/Math.PI+.5)};for(let x=0,u=0;x<a.length;x+=9,u+=6){m.set(a[x+0],a[x+1],a[x+2]),f.set(a[x+3],a[x+4],a[x+5]),T.set(a[x+6],a[x+7],a[x+8]),y.set(l[u+0],l[u+1]),L.set(l[u+2],l[u+3]),A.set(l[u+4],l[u+5]),w.copy(m).add(f).add(T).divideScalar(3);let M=b(w);I(y,u+0,m,M),I(L,u+2,f,M),I(A,u+4,T,M)}for(let x=0;x<l.length;x+=6){let u=l[x+0],M=l[x+2],g=l[x+4],N=Math.max(u,M,g),v=Math.min(u,M,g);N>.9&&v<.1&&(u<.2&&(l[x+0]+=1),M<.2&&(l[x+2]+=1),g<.2&&(l[x+4]+=1))}function b(x){return Math.atan2(x.z,-x.x)}function V(x){return Math.atan2(-x.y,Math.sqrt(x.x*x.x+x.z*x.z))}}}static fromJSON(t){return new Jr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as yb}from"three";var Qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:i,corner:o,cornerSides:s}=n.parameters,a=i===0&&o!==0?new qo(t*.5,o,s):new yb(t*.5,i);return a.scale(1,e/t,r/t),Object.assign(a,{userData:W(P({},n),{type:"DodecahedronGeometry"})})}},qo=class extends Jr{constructor(t=1,e=.2,r=4){let i=(1+Math.sqrt(5))/2,o=1/i,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-o,-i,0,-o,i,0,o,-i,0,o,i,-o,-i,0,-o,i,0,o,-i,0,o,i,0,-i,0,-o,i,0,-o,-i,0,o,i,0,o],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new qo(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Mb,Plane as Ob,Shape as hd,Vector2 as Or,Vector3 as Ib,MathUtils as hl,LineCurve as dl,QuadraticBezierCurve as dd,CubicBezierCurve as Rs}from"three";import{CubicBezierCurve as Gs,EllipseCurve as gb,LineCurve as zs,LineCurve3 as xb,MathUtils as bb,QuadraticBezierCurve as nl,SplineCurve as vb,Vector2 as Qt,Vector3 as ed}from"three";var Wo=1e-12,Xi=class{constructor(t){this.position=new Qt;this.startPosition=new Qt;this.uuid=bb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Xi(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Zi=class extends Xi{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Zi(this.parent).copy(this)}},er=class extends Xi{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Zi(this),new Zi(this))}static create(e,r){let i=new er(e,new Qt(...r.position));return i.controls[0].position.set(...r.controlPrevious.position),i.controls[1].position.set(...r.controlNext.position),i.roundness=r.roundness,i.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,i}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let i=0,o=this.controls.length;i<o;i++){let s=this.controls[i];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.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 er(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},sl=n=>n,$o=new Qt,al=new Qt,Sb=new Qt,wb=new Qt,Lb=new Qt,Cb=new Qt,td=new ed,rd=new ed;function id(n){let t=new Qt;t.addVectors(n.v0,$o.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Qt;return e.addVectors(n.v2,al.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Gs(n.v0,t,e,n.v2)}function Jo(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Tb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Nb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function ll(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((i*i+r*r-o*o)/(2*i*r))}function od(n,t,e,r,i){let o=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(o/2,2))*(n.y-t.y)/o,c=Math.sqrt(Math.pow(e,2)-Math.pow(o/2,2))*(t.x-n.x)/o;return r.set(a+l,s+c),i.set(a-l,s-c),[r,i]}function nd(n,t,e){let r=n.distanceTo(e),i=t.distanceTo(e);return r<i?t:n}function sd(n,t,e,r,i,o){let s=t.x-n.x,a=t.y-n.y,l=e.x-n.x,c=e.y-n.y,p=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),h;return ll(t,n,e)>Math.PI&&(p*=-1),Jo(c,a)?h=(a+c)*(r/p-.5)*8/3/(s-l):h=(s+l)*(r/p-.5)*8/3/(c-a),i.set(t.x-h*a,t.y+h*s),o.set(e.x+h*c,e.y-h*l),[i,o]}function cl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function ad(n,t,e,r,i=.5){let o=$o.subVectors(t,n).multiplyScalar(i).add(n),s=al.subVectors(e,t).multiplyScalar(i).add(t),a=Sb.subVectors(r,e).multiplyScalar(i).add(e),l=o,c=wb.subVectors(s,o).multiplyScalar(i).add(o),p=Lb.subVectors(a,s).multiplyScalar(i).add(s),h=a,d=Cb.subVectors(p,c).multiplyScalar(i).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,p.x,p.y,h.x,h.y,r.x,r.y]}function ld(n,t,e=12,r=!0){let i=rd.set(0,0,0),o,s=0,a=[];for(let l=0;l<t.length;l++){let c=sl(t[l]),p=$o,h=$r(c,e);a.push(h);for(let d=0;d<=h;d++)if(c instanceof Gs||c instanceof nl||c instanceof zs){if(c.getPoint(d/h,p),i.set(p.x,p.y,0),o!==void 0&&Nb(o,i))continue;o===void 0&&(o=td),o.copy(i),n.setXYZ(s,i.x,i.y,i.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function cd(n,t,e,r=12,i=!0){let o=rd.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,p=sl(t[l]),h=$o,d=$r(p,r);a.push(d);for(let m=0;m<=d;m++)if(p instanceof Gs||p instanceof nl||p instanceof zs){if(p.getPoint(m/d,h),o.set(h.x,h.y,0),c!=null&&c.equals(o))continue;c===void 0?c=td:(n.setXYZ(s,c.x,c.y,c.z),s++,n.setXYZ(s,o.x,o.y,o.z),s++),c.copy(o)}}return i&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function pl(n,t=12,e=!1){let r=[];for(let i=0,o=n.length;i<o;i++){let s=n[i],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=$r(s.roundedCurveCorner,t)*.5;i>0&&(r[i-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=$r(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=$r(n[0].roundedCurveCorner,t)*.5),r}function $r(n,t=12){return n&&n instanceof gb?t*2:n&&(n instanceof zs||n instanceof xb)?1:n&&n instanceof vb?t*n.points.length:t}function pd(n,t,e=12,r=!0){let i,o=0;for(let s=0;s<t.length;s++){let a=sl(t[s]),l=$r(a,e),c=$o;for(let p=0;p<=l;p++)if(a instanceof Gs||a instanceof nl||a instanceof zs){if(a.getPoint(p/l,c),i!==void 0&&Tb(i,c,Wo))continue;i===void 0&&(i=al),i.copy(c),n.push(c.x,c.y),o++}}return Jo(n[0],n[n.length-2],Wo)&&Jo(n[1],n[n.length-1],Wo)&&(n.pop(),n.pop()),r&&o>1&&!(Jo(n[o-1],n[1],Wo)&&Jo(n[o-2],n[0],Wo))&&(n.push(n[0],n[1]),o++),n}var ul=new Or,Pb=new Or,Ab=new Or,Db=new Or,Bb=new Or,Eb=new Or,Me=class extends hd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Mb;this.plane=new Ob(new Ib(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=hl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,i){let o=new Me;return o.isClosed=e.isClosed,o.points=e.points.map(s=>er.create(s.id,s.data)),typeof e.roundness=="number"&&(o.roundness=e.roundness),o.shapeHoles=e.shapeHoles.map(s=>Me.createFromState(s)),r!==void 0&&i!==void 0&&o.applySize(r,i),o.update(),o}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,i=this.points.length;r<i;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){return this.points.findIndex(r=>r.uuid===e)}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,i=this.shapeHoles.length;r<i;r++){let o=this.shapeHoles[r],s=e-this.points.length;if(s<=o.points.length-1)return o.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let i=0,o=this.shapeHoles.length;i<o;i++){let s=this.shapeHoles[i],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let i=ul.set(e,r);for(let o=0,s=this.points.length;o<s;o++){let a=this.points[o];a.position.multiply(i),a.controls[0].position.multiply(i),a.controls[1].position.multiply(i)}for(let o=0,s=this.shapeHoles.length;o<s;o++)this.shapeHoles[o].applyScale(e,r);this._update(!1)}createPoint(e,r=0,i=hl.generateUUID()){let o;e instanceof Or?o=e:o=new Or(e,r);let s=new er(i,o);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,i=this.points.length;r<i;r++){let o=this.points[r];if(o.uuid===e)return o}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(i=>i.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,i=this.shapeHoles.length;r<i;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,i=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let o=i?this.roundedCurveDivisions:this.curveDivisions;return ld(e,i?this.roundedCurves:this.curves,r,this.autoClose),o.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=pl(this.points,e,!1),this.roundedCurveDivisions=pl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,i=12){return cd(e,this.curves,r,i,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),pd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let i=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let o=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=$r(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=o.reduce((l,c)=>l+c,0));for(let l=0,c=o.length;l<c;l++){let p=o[l];if(a<i+p)return[l,(a-i+1)/p];i+=p}return[0,1]}getCurveT(e,r,i){let o=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(cl(o,s)){let h=o.position.distanceTo(s.position);return o.position.distanceTo(ul.set(i.x,i.y))/h}let c=0;for(let h=0;h<e;h++)c+=a[h];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){cl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let i=this.curves[this.curves.length-1];e.curveBefore=i,r.curveAfter=i;let o=i.clone();e.roundedCurveBefore=o,r.roundedCurveAfter=o,e.roundedCurveCorner=void 0,this.roundedCurves.push(o)}_update(e=!0){var i;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,s=this.points.length;o<s;o++){let a=this.points[o];if(o===0)this.moveTo(a.position.x,a.position.y);else{let l=this.points[o-1];this._applyCurveForPoint(a,l)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(o,s)}if(this.points.length>2){let o=0;for(let s=0,a=this.points.length;s<a;s++){let l=this.points[s],c=l.roundness;if(!l.controlsMoved()&&c>0){let p=l.curveBefore,h=l.curveAfter;if(p===void 0||h===void 0)continue;let d=l.roundedCurveBefore,m=l.roundedCurveAfter,f=p.getLength(),T=h.getLength(),w=Math.min(c,f*.499),y=Math.min(c,T*.499),L=Math.min(w,y),A=1-L/f,I=L/T,b=p.getPointAt(A,ul),V=h.getPointAt(I,Pb);this._subSplitCurve(p,d,A,b,void 0),this._subSplitCurve(h,m,I,void 0,V);let x;if(this.useCubicForRoundedCorners){let u=ll(b,l.position,V)/2,M=Math.tan(u)*b.distanceTo(l.position),[g,N]=od(b,V,M,Ab,Db),v=nd(g,N,l.position),[C,J]=sd(v,b,V,M,Bb,Eb);x=new Rs(b.clone(),C.clone(),J.clone(),V.clone())}else x=new dd(b.clone(),l.position.clone(),V.clone());l.roundedCurveCorner=x,this.roundedCurves.splice(s+o,0,x),o++}}}e&&((i=this.eventDispatcher)==null||i.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,i,o,s){if(e instanceof dl)o!==void 0&&r.v2.copy(o),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(i,0),p=ad(a.v0,a.v1,a.v2,a.v3,c);return o!==void 0&&(l.v0.set(p[0],p[1]),l.v1.set(p[2],p[3]),l.v2.set(p[4],p[5]),l.v3.set(p[6],p[7])),s!==void 0&&(l.v0.set(p[6],p[7]),l.v1.set(p[8],p[9]),l.v2.set(p[10],p[11]),l.v3.set(p[12],p[13])),l}return r}clone(){let e=new Me(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){var i;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let s=o*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],p=e.points[s+3],h=e.points[s+4],d=e.points[s+5],m=e.points[s+6],f=new er(hl.generateUUID(),new Or(a,l));f.controls[0].position.set(c,p),f.controls[1].position.set(h,d),f.roundness=m,this.points.push(f)}return this.shapeHoles=(i=e.shapeHoles)!=null&&i.length?e.shapeHoles.map(o=>{let s=new Me;return s.fromJSON(o),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(o,s)=>{s instanceof Rs&&s.v3.equals(o.position)&&o.controls[0].position.copy(s.v2)},i=o=>{let s=[],a,l;for(a=0,l=o.length;a<l;a++)o[a]instanceof dd&&(o[a]=id(o[a]));for(a=0,l=o.length;a<l;a++){let h=o[a],d=a>0?o[a-1]:null,m;h instanceof Rs?(m=this.createPoint(h.v0),m.controls[1].position.copy(h.v1)):h instanceof dl&&(m=this.createPoint(h.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let c=o[o.length-1],p=!1;return c instanceof Rs?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),p=!0):c instanceof dl&&c.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof hd&&(this.shapeHoles=e.holes.map(o=>{let s=new Me;return s.fromShape(o),s})),this.update(),this}};var fl=Math.PI*2;function ml({x:n,y:t},e,r,i,o){return{x:n*e+i,y:t*r+o}}function _b(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),i=Math.sin(n),o=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-i*e,y:i+r*e},{x:o+s*e,y:s-o*e},{x:o,y:s}]}function ud(n,t,e,r){let i=n*r-t*e<0?-1:1,o=Math.min(1,Math.max(-1,n*e+t*r));return i*Math.acos(o)}function Gb(n,t,e,r,i,o,s,a,l,c){let p=Math.pow(i,2),h=Math.pow(o,2),d=Math.pow(s,2),m=Math.pow(a,2),f=p*h-p*m-h*d;f<0&&(f=0),f/=p*m+h*d,f=Math.sqrt(f)*(l===c?-1:1);let T=f*i/o*a,w=f*-o/i*s,y=T+(n+e)/2,L=w+(t+r)/2,A=(s-T)/i,I=(a-w)/o,b=(-s-T)/i,V=(-a-w)/o,x=ud(1,0,A,I),u=ud(A,I,b,V);return!c&&u>0&&(u-=fl),c&&u<0&&(u+=fl),{centerx:y,centery:L,ang1:x,ang2:u}}function md({px:n,py:t,cx:e,cy:r,rx:i,ry:o,largeArcFlag:s,sweepFlag:a}){let l=[];if(i===0||o===0)return[];let c=(n-e)/2,p=(t-r)/2;if(c===0&&p===0)return[];i=Math.abs(i),o=Math.abs(o);let h=Math.pow(c,2)/Math.pow(i,2)+Math.pow(p,2)/Math.pow(o,2);h>1&&(i*=Math.sqrt(h),o*=Math.sqrt(h));let d=Gb(n,t,e,r,i,o,c,p,s,a),{ang1:m,ang2:f}=d,{centerx:T,centery:w}=d,y=Math.abs(f)/(fl/4);Math.abs(1-y)<1e-7&&(y=1);let L=Math.max(Math.ceil(y),1);f/=L;for(let A=0;A<L;A++)l.push(_b(m,f)),m+=f;return l.map(A=>{let{x:I,y:b}=ml(A[0],i,o,T,w),{x:V,y:x}=ml(A[1],i,o,T,w),{x:u,y:M}=ml(A[2],i,o,T,w);return{x1:I,y1:b,x2:V,y2:x,x:u,y:M}})}import{BufferAttribute as Fs,BufferGeometry as jb}from"three";var He;(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"})(He||(He={}));var tt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(tt||(tt={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var i=e.s-t.s,o=r.s-e.s;return i+o>0?i<o?e.t-t.t+(t.t-r.t)*(i/(i+o)):e.t-r.t+(r.t-t.t)*(o/(i+o)):0},n.edgeSign=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var i=e.s-t.s,o=r.s-e.s;return i+o>0?(e.t-r.t)*i+(e.t-t.t)*o:0},n.transEval=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var i=e.t-t.t,o=r.t-e.t;return i+o>0?i<o?e.s-t.s+(t.s-r.s)*(i/(i+o)):e.s-r.s+(r.s-t.s)*(o/(i+o)):0},n.transSign=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var i=e.t-t.t,o=r.t-e.t;return i+o>0?(e.s-r.s)*i+(e.s-t.s)*o:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,i){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+i)/2:e+(i-e)*(t/(t+r)):i+(e-i)*(r/(t+r))},n.intersect=function(t,e,r,i,o){var s,a,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,i)||(l=r,r=i,i=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=i,i=l),n.vertLeq(r,e)?n.vertLeq(e,i)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,i),s+a<0&&(s=-s,a=-a),o.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,i,e),s+a<0&&(s=-s,a=-a),o.s=n.interpolate(s,r.s,a,i.s)):o.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,i)||(l=r,r=i,i=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=i,i=l),n.transLeq(r,e)?n.transLeq(e,i)?(s=n.transEval(t,r,e),a=n.transEval(r,e,i),s+a<0&&(s=-s,a=-a),o.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,i,e),s+a<0&&(s=-s,a=-a),o.t=n.interpolate(s,r.t,a,i.t)):o.t=(r.t+e.t)/2},n}(),Ko=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}(),Vs=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Qi=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}(),fd=function(){function n(){var t=new Qi,e=new Ko,r=new Vs(0),i=new Vs(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=i,i.next=i,i.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=i}return n.prototype.makeEdge_=function(t){var e=new Vs(0),r=new Vs(1);t.Sym.side<t.side&&(t=t.Sym);var i=t.Sym.next;return r.next=i,i.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,i=e.Onext;r.Sym.Lnext=e,i.Sym.Lnext=t,t.Onext=i,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var i=t;ue(i,"Vertex can't be null!");var o=r.prev;i.prev=o,o.next=i,i.next=r,r.prev=i,i.anEdge=e;var s=e;do s.Org=i,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var i=t;ue(i,"Face can't be null");var o=r.prev;i.prev=o,o.next=i,i.next=r,r.prev=i,i.anEdge=e,i.trail=null,i.marked=!1,i.inside=r.inside;var s=e;do s.Lface=i,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,i=r;do i.Org=e,i=i.Onext;while(i!==r);var o=t.prev,s=t.next;s.prev=o,o.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,i=r;do i.Lface=e,i=i.Lnext;while(i!==r);var o=t.prev,s=t.next;s.prev=o,o.next=s},n.prototype.makeEdge=function(){var t=new Qi,e=new Qi,r=new Ko,i=this.makeEdge_(this.eHead);return this.makeVertex_(t,i,this.vHead),this.makeVertex_(e,i.Sym,this.vHead),this.makeFace_(r,i,this.fHead),i},n.prototype.splice=function(t,e){var r=!1,i=!1;if(t!==e){if(e.Org!==t.Org&&(i=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!i){var o=new Qi;this.makeVertex_(o,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Ko;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var i=new Ko;this.makeFace_(i,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var i=new Qi;return this.makeVertex_(i,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,i=this.makeEdge_(t),o=i.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(i,t.Lnext),this.splice_(o,e),i.Org=t.Dst,o.Org=e.Org,i.Lface=o.Lface=t.Lface,t.Lface.anEdge=o,!r){var s=new Ko;this.makeFace_(s,i,t.Lface)}return i},n.prototype.zapFace=function(t){var e=t.anEdge,r,i,o,s,a;i=e.Lnext;do r=i,i=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),o=r.Sym,o.Onext===o?this.killVertex_(o.Org,null):(o.Org.anEdge=o.Onext,this.splice_(o,o.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,i,o,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;i=r.Lnext,o=r.Sym,o&&o.Lface&&o.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(o.Lface),a+l-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,o.Lnext.Lnext.Org)&&ae.vertCCW(o.Lprev.Org,o.Org,r.Lnext.Lnext.Org)&&(i=o.Lnext,this.delete(o),r=null,o=null)),!(r&&r.Lnext.Org===s);)r=i;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,i,o,s,a,l,c;for(o=t,o=t;(i=o.next)!==t;o=i){ue(i.prev===o),l=i.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(ue(i.prev===o&&i.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),l=s.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(ue(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)ue(l.Sym.next===c.Sym),ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Org!==null),ue(l.Dst!==null),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l);ue(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}(),yd=function(){function n(){this.handle=null}return n}(),gd=function(){function n(){this.key=null,this.node=0}return n}(),zb=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new yd,this.handles[r]=new gd;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,i,o,s;for(i=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),o=e[s].handle,s>this.size||this.leq(r[i].key,r[o].key)){e[t].handle=i,r[i].node=t;break}e[t].handle=o,r[o].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,i,o,s;for(i=e[t].handle;;){if(s=t>>1,o=e[s].handle,s===0||this.leq(r[o].key,r[i].key)){e[t].handle=i,r[i].node=t;break}e[t].handle=o,r[o].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var i,o;for(o=this.nodes.length,this.nodes.length=this.max+1,i=o;i<this.nodes.length;i++)this.nodes[i]=new yd;for(o=this.handles.length,this.handles.length=this.max+1,i=o;i<this.handles.length;i++)this.handles[i]=new gd}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,i=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),i},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,i;ue(t>=1&&t<=this.max&&r[t].key!==null),i=r[t].node,e[i].handle=e[this.size].handle,r[e[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(r[e[i>>1].handle].key,r[e[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),yl=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}(),xd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Rb=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new xd,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(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new xd;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),Vb=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var i=t.event,o=e.eUp,s=r.eUp;if(o.Dst===i)return s.Dst===i?ae.vertLeq(o.Org,s.Org)?ae.edgeSign(s.Dst,o.Org,s.Org)<=0:ae.edgeSign(o.Dst,s.Org,o.Org)>=0:ae.edgeSign(s.Dst,i,s.Org)<=0;if(s.Dst===i)return ae.edgeSign(o.Dst,i,o.Org)>=0;var a=ae.edgeEval(o.Dst,i,o.Org),l=ae.edgeEval(s.Dst,i,s.Org);return a>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,i;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(i=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),i===null)return null;n.fixUpperEdge(t,e,i),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var i=new yl;return i.eUp=r,i.nodeUp=t.dict.insertBefore(e.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,r.activeRegion=i,i},n.isWindingInside=function(t,e){switch(t.windingRule){case He.ODD:return(e&1)!==0;case He.NONZERO:return e!==0;case He.POSITIVE:return e>0;case He.NEGATIVE:return e<0;case He.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,i=r.Lface;i.inside=e.inside,i.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var i,o=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,o=n.regionBelow(s),i=o.eUp,i.Org!=a.Org){if(!o.fixUpperEdge){n.finishRegion(t,s);break}i=t.mesh.connect(a.Lprev,i.Sym),n.fixUpperEdge(t,o,i)}a.Onext!==i&&(t.mesh.splice(i.Oprev,i),t.mesh.splice(a,i)),n.finishRegion(t,s),a=o.eUp,s=o}return a},n.addRightEdges=function(t,e,r,i,o,s){var a,l,c,p,h=!0;c=r;do ue(ae.vertLeq(c.Org,c.Dst)),n.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==i);for(o===null&&(o=n.regionBelow(e).eUp.Rprev),l=e,p=o;a=n.regionBelow(l),c=a.eUp.Sym,c.Org===p.Org;)c.Onext!==p&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(p.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=n.isWindingInside(t,a.windingNumber),l.dirty=!0,!h&&n.checkForRightSplice(t,l)&&(n.addWinding(c,p),n.deleteRegion(t,l),t.mesh.delete(p)),h=!1,l=a,p=c;l.dirty=!0,ue(l.windingNumber-c.winding===a.windingNumber),s&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var i=ae.vertL1dist(e,t),o=ae.vertL1dist(r,t),s=.5*o/(i+o),a=.5*i/(i+o);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,i,o,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,i),n.vertexWeights(e,o,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),i=e.eUp,o=r.eUp;if(ae.vertLeq(i.Org,o.Org)){if(ae.edgeSign(o.Dst,i.Org,o.Org)>0)return!1;ae.vertEq(i.Org,o.Org)?i.Org!==o.Org&&(t.pq.delete(i.Org.pqHandle),n.spliceMergeVertices(t,o.Oprev,i)):(t.mesh.splitEdge(o.Sym),t.mesh.splice(i,o.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(i.Dst,o.Org,i.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Oprev,i)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),i=e.eUp,o=r.eUp,s;if(ue(!ae.vertEq(i.Dst,o.Dst)),ae.vertLeq(i.Dst,o.Dst)){if(ae.edgeSign(i.Dst,o.Dst,i.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(o.Dst,i.Dst,o.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Lnext,o.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),i=e.eUp,o=r.eUp,s=i.Org,a=o.Org,l=i.Dst,c=o.Dst,p,h,d=new Qi,m,f;if(ue(!ae.vertEq(c,l)),ue(ae.edgeSign(l,t.event,s)<=0),ue(ae.edgeSign(c,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(p=Math.min(s.t,l.t),h=Math.max(a.t,c.t),p>h))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return n.debugEvent(t),ae.intersect(l,s,c,a,d),ue(Math.min(s.t,l.t)<=d.t),ue(d.t<=Math.max(a.t,c.t)),ue(Math.min(c.s,l.s)<=d.s),ue(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=ae.vertLeq(s,a)?s:a,ae.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(l,t.event)&&ae.edgeSign(l,t.event,d)>=0||!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)<=0?c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Sym,i),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,i.Oprev,i,i,!0),!0):l===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Lnext,o.Oprev),r=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,r.eUp=o.Oprev,o=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,o.Onext,i.Rprev,f,!0),!0):(ae.edgeSign(l,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),ae.edgeSign(c,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),!1):(t.mesh.splitEdge(i.Sym),t.mesh.splitEdge(o.Sym),t.mesh.splice(o.Oprev,i),i.Org.s=d.s,i.Org.t=d.t,i.Org.pqHandle=t.pq.insert(i.Org),n.getIntersectData(t,i.Org,s,l,a,c),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),i,o;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,i=e.eUp,o=r.eUp,i.Dst!==o.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(o),r=n.regionBelow(e),o=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(i),e=n.regionAbove(r),i=e.eUp)),i.Org!==o.Org)if(i.Dst!==o.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(i.Dst===t.event||o.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);i.Org===o.Org&&i.Dst===o.Dst&&(n.addWinding(o,i),n.deleteRegion(t,e),t.mesh.delete(i),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var i,o=r.Onext,s=n.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&n.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(o.Oprev,a),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),c=!0),ae.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,s,null),c=!0),c){n.addRightEdges(t,e,r.Onext,o,o,!0);return}ae.vertLeq(l.Org,a.Org)?i=l.Oprev:i=a,i=t.mesh.connect(r.Lprev,i),n.addRightEdges(t,e,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var i,o,s,a,l;if(i=e.eUp,ae.vertEq(i.Org,r)){ue(!1),n.spliceMergeVertices(t,i,r.anEdge);return}if(!ae.vertEq(i.Dst,r)){t.mesh.splitEdge(i.Sym),e.fixUpperEdge&&(t.mesh.delete(i.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,i),n.sweepEvent(t,r);return}ue(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,o=a=s.Onext,l.fixUpperEdge&&(ue(o!==s),n.deleteRegion(t,l),t.mesh.delete(s),s=o.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(o)||(o=null),n.addRightEdges(t,e,s.Onext,a,o,!0)},n.connectLeftVertex=function(t,e){var r,i,o,s,a,l,c=new yl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,i=n.regionBelow(r),!!i){if(s=r.eUp,a=i.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(o=ae.vertLeq(a.Dst,s.Dst)?r:i,r.inside||o.fixUpperEdge){if(o===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var p=t.mesh.connect(a.Dnext,e.anEdge);l=p.Sym}o.fixUpperEdge?n.fixUpperEdge(t,o,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var i=n.topLeftRegion(t,r.activeRegion);ue(i!==null);var o=n.regionBelow(i),s=o.eUp,a=n.finishLeftRegions(t,o,null);a.Onext===s?n.connectRightVertex(t,i,a):n.addRightEdges(t,i,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,i){var o=new yl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=i,s.Dst.s=e,s.Dst.t=i,t.event=s.Dst,o.eUp=s,o.windingNumber=0,o.inside=!1,o.fixUpperEdge=!1,o.sentinel=!0,o.dirty=!1,o.nodeUp=t.dict.insert(o)},n.initEdgeDict=function(t){t.dict=new Rb(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],i=t.bmin[0]-e,o=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,i,o,s),n.addSentinel(t,i,o,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,i,o=t.mesh.eHead;for(e=o.next;e!==o;e=r)r=e.next,i=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,i,e),t.mesh.delete(e),e=i,i=e.Lnext),i.Lnext===e&&(i!==e&&((i===r||i===r.Sym)&&(r=r.next),t.mesh.delete(i)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,i,o=0;for(i=t.mesh.vHead,r=i.next;r!==i;r=r.next)o++;for(o+=8,e=t.pq=new zb(o,ae.vertLeq),i=t.mesh.vHead,r=i.next;r!==i;r=r.next)r.pqHandle=e.insert(r);return r!==i?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,i,o;for(r=e.fHead.next;r!==e.fHead;r=i)i=r.next,o=r.anEdge,ue(o.Lnext!==o),o.Lnext.Lnext===o&&(n.addWinding(o.Onext,o),t.mesh.delete(o));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,i;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;i=t.pq.min(),!(i===null||!ae.vertEq(i,r));)i=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,i.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),Fb=function(){function n(){this.mesh=new fd,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=He.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(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,i,o,s,a,l=[0,0,0],c=[0,0,0],p=[0,0,0],h=[0,0,0],d=[0,0,0],m=[null,null,null],f=[null,null,null],T=this.mesh.vHead;e=T.next;for(var w=0;w<3;++w)o=e.coords[w],c[w]=o,f[w]=e,l[w]=o,m[w]=e;for(e=T.next;e!==T;e=e.next)for(var y=0;y<3;++y)o=e.coords[y],o<c[y]&&(c[y]=o,f[y]=e),o>l[y]&&(l[y]=o,m[y]=e);var L=0;if(l[1]-c[1]>l[0]-c[0]&&(L=1),l[2]-c[2]>l[L]-c[L]&&(L=2),c[L]>=l[L]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[L],i=m[L],p[0]=r.coords[0]-i.coords[0],p[1]=r.coords[1]-i.coords[1],p[2]=r.coords[2]-i.coords[2],e=T.next;e!==T;e=e.next)h[0]=e.coords[0]-i.coords[0],h[1]=e.coords[1]-i.coords[1],h[2]=e.coords[2]-i.coords[2],d[0]=p[1]*h[2]-p[2]*h[1],d[1]=p[2]*h[0]-p[0]*h[2],d[2]=p[0]*h[1]-p[1]*h[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(p)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,i,o=0,s=t.next;s!==t;s=s.next)if(i=s.anEdge,!(i.winding<=0))do o+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==s.anEdge);if(o<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,i,o=!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),o=!0),r=this.sUnit,i=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,i[s]=0,i[(s+1)%3]=0,i[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,i);o&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,i;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);i=r.Lprev;for(var o=void 0;r.Lnext!==i;)if(ae.vertLeq(r.Dst,i.Org)){for(;i.Lnext!==r&&(ae.edgeGoesLeft(i.Lnext)||ae.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)o=t.connect(i.Lnext,i),i=o.Sym;i=i.Lprev}else{for(;i.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)o=t.connect(r,r.Lprev),r=o.Sym;r=r.Lnext}if(i.Lnext===r)throw"Mono region invalid";for(;i.Lnext.Lnext!==r;)o=t.connect(i.Lnext,i),i=o.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var i,o=t.eHead.next;o!==t.eHead;o=i)i=o.next,o.Rface.inside!==o.Lface.inside?o.winding=o.Lface.inside?e:-e:r?t.delete(o):o.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,i){var o,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var p=t.fHead.next;p!==t.fHead;p=p.next)if(p.n=-1,!!p.inside){o=p.anEdge,l=0;do{var c=o.Org;c.n===-1&&(c.n=a,a++),l++,o=o.Lnext}while(o!==p.anEdge);if(l>r)throw"Face vertex greater that support polygon";p.n=s,++s}this.elementCount=s,e===tt.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*i,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var h=c.n*i;this.vertices[h+0]=c.coords[0],this.vertices[h+1]=c.coords[1],i>2&&(this.vertices[h+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,p=t.fHead.next;p!==t.fHead;p=p.next)if(!!p.inside){o=p.anEdge,l=0;do{var c=o.Org;this.elements[d++]=c.n,l++,o=o.Lnext}while(o!==p.anEdge);for(var m=l;m<r;++m)this.elements[d++]=-1;if(e===tt.CONNECTED_POLYGONS){o=p.anEdge;do this.elements[d++]=this.getNeighbourFace_(o),o=o.Lnext;while(o!==p.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,i,o=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==i);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,p=0;o=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,i=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==i);this.elements[p++]=o,this.elements[p++]=s,o+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new fd),t<2&&(t=2),t>3&&(t=3);for(var r=null,i=0;i<e.length;i+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[i+0],r.Org.coords[1]=e[i+1],t>2?r.Org.coords[2]=e[i+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,i,o,s){if(t===void 0&&(t=He.ODD),e===void 0&&(e=tt.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,o&&(this.normal[0]=o[0],this.normal[1]=o[1],this.normal[2]=o[2]),this.windingRule=t,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),Vb.computeInterior(this,s);var a=this.mesh;return e===tt.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===tt.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,e,r,i),!0},n}();function ui(n){var t=n.windingRule,e=t===void 0?He.ODD:t,r=n.elementType,i=r===void 0?tt.POLYGONS:r,o=n.polySize,s=o===void 0?3:o,a=n.vertexSize,l=a===void 0?2:a,c=n.normal,p=c===void 0?[0,0,1]:c,h=n.contours,d=h===void 0?[]:h,m=n.strict,f=m===void 0?!0:m,T=n.debug,w=T===void 0?!1:T;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var y=new Fb;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var L=0;L<d.length;L++)y.addContour(l||2,d[L]);return y.tesselate(e,i,s,l,p,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:w?y.mesh:void 0}}}var iD=He.ODD,oD=He.NONZERO,nD=He.POSITIVE,sD=He.NEGATIVE,aD=He.ABS_GEQ_TWO,lD=tt.POLYGONS,cD=tt.CONNECTED_POLYGONS,pD=tt.BOUNDARY_CONTOURS;var eo=class extends jb{constructor(e,r=12,i={}){var f,T,w;super();this.type="ShapeGeometry";this.windingRule=He.ODD;this.elementType=tt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:He.ODD,elementType:tt.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let o=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,p,h;for(let y=0,L=o.length/2;y<L;y++){let A=y*2,I=o[A+0],b=o[A+1];if(p!==void 0&&I!==p&&(l=!1),h!==void 0&&b!==h&&(c=!1),p=I,h=b,!l&&!c)break}!l&&!c&&(a=ui({contours:[o,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=(f=a==null?void 0:a.vertexCount)!=null?f:1,m=(T=a==null?void 0:a.elementCount)!=null?T:1;if(this._positionAttribute=new Fs(new Float32Array(d*3),3),this._normalAttribute=new Fs(new Float32Array(d*3),3),this._uvAttribute=new Fs(new Float32Array(d*2),2),this._indexAttribute=new Fs(new Uint32Array(m*3),1),a){let y=1/0,L=-1/0,A=1/0,I=-1/0;for(let x=0,u=d;x<u;x++){let M=x*2,g=a.vertices[M+0],N=a.vertices[M+1];g<y&&(y=g),g>L&&(L=g),N<A&&(A=N),N>I&&(I=N)}let b=L-y,V=I-A;for(let x=0,u=d;x<u;x++){let M=x*2,g=a.vertices[M+0],N=a.vertices[M+1],v=(g-y)/b,C=(N-A)/V;this._positionAttribute.setXYZ(x,g,N,0),this._normalAttribute.setXYZ(x,0,0,1),this._uvAttribute.setXY(x,v,C)}for(let x=0,u=m;x<u;x++){let M=x*3,g=a.elements[M+0],N=a.elements[M+1],v=a.elements[M+2];this._indexAttribute.setX(M+0,g),this._indexAttribute.setX(M+1,N),this._indexAttribute.setX(M+2,v)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((w=a==null?void 0:a.elementCount)!=null?w:1)*3)}clone(){let e=new eo(this._shape,this._curveSegments);return e.userData=Eo(this.userData),e}};import{BufferAttribute as Us,BufferGeometry as Ub}from"three";var js=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*js.eSize;this.buffer=new ArrayBuffer(r);let i=Float32Array.BYTES_PER_ELEMENT,o=0;this.positions=new Float32Array(this.buffer,o*i,3*t),o+=3*t,this.normals=new Float32Array(this.buffer,o*i,3*t),o+=3*t,this.uvs=new Float32Array(this.buffer,o*i,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*js.eSize,i=new ArrayBuffer(r),o=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(i,s*o,3*t);s+=3*t;let l=new Float32Array(i,s*o,3*t);s+=3*t;let c=new Float32Array(i,s*o,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=i,this.positions=a,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let i=this.capacity;for(;e>i;)i*=2;this.realloc(i)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Yo=js;Yo.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var gl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),to=class extends Ub{constructor(e,r,i=0,o=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=i,this._curveSegments=o,this._bevelSegmentsInput=s,i<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(i,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],o),l=this._shape.shapeHoles.map(x=>{let u=x.extractShapePointsToFlatArray([],o),M=[];for(let g=u.length-1;g>=1;g-=2){let N=u[g-1],v=u[g-0];M.push(N,v)}return M}),c=ui({windingRule:He.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),p=ui({windingRule:He.ODD,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let h=c.elementCount;if(p){c.elementCount+=p.elementCount;for(let x=0;x<p.elements.length;x++){let u=p.elements[x],M=x%2===0?c.vertexCount:0;c.elements.push(u+M)}for(let x=0;x<p.vertexIndices.length;x++){let u=p.vertexIndices[x],M=c.vertexCount;c.vertexIndices.push(u+M)}for(let x=0;x<p.vertices.length;x++){let u=p.vertices[x];c.vertices.push(u)}}let d=1/0,m=-1/0,f=1/0,T=-1/0;for(let x=0,u=c.vertexCount;x<u;x++){let M=x*2,g=c.vertices[M+0],N=c.vertices[M+1];g<d&&(d=g),g>m&&(m=g),N<f&&(f=N),N>T&&(T=N)}this._minX=d,this._minY=f,this._width=m-d,this._height=T-f;let w=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new Yo(w);let y=[],L=[];for(let x=c.elementCount-1;x>=0;x--){let u=x>=h,M=x*2,g=c.elements[M+0],N=c.elements[M+1],v=g+N,C={start:g,count:N,normals:[],continuous:[],concave:[]},J=g,H=v-1,ie=g+1,pe=this._shape.roundedCurves.length;do{let G=J-g,B=c.vertices[H*2+0],z=c.vertices[H*2+1],D=c.vertices[J*2+0],R=c.vertices[J*2+1],K=c.vertices[ie*2+0],Z=c.vertices[ie*2+1],U=D-B,j=R-z,E=Math.sqrt(U*U+j*j);U/=E,j/=E;let k=D-K,ne=R-Z,q=Math.sqrt(k*k+ne*ne);k/=q,ne/=q,C.normals[G*2+0]=-ne,C.normals[G*2+1]=k,C.concave[G]=U*ne-j*k>0;let $=c.vertexIndices[J];if(Array.isArray($))C.continuous[G]=!1;else{let[Y,X]=this._shape.getCurveIndexFromVertexId($-1,!0);if(X>0&&X<1)C.continuous[G]=!0;else{let Q=X===1?Y+1:Y-1;Q=(Q+pe)%pe;let se=X===1?0:1,oe=this._shape.roundedCurves[Y].getTangent(X),he=this._shape.roundedCurves[Q].getTangent(se);C.continuous[G]=oe.dot(he)>.95}}u&&(C.normals[G*2+0]*=-1,C.normals[G*2+1]*=-1),[H,J,ie]=[J,ie,ie+1],ie>=v&&(ie-=N)}while(ie!==g+1);let ce=[];ce.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(g*2,v*2),vertexCount:N,vertexIndices:new Array(N).fill(!0).map((G,B)=>[B,B]),elements:[0,N],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(g*2,v*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,z=(1-Math.cos(B))*this._bevelSize,D=[],R=[],K=[],Z=[],U=0;for(let E=0;E<N;E++){let k=E*2,ne=(E-1+N)%N*2,q=c.vertices[C.start*2+k+0],$=c.vertices[C.start*2+k+1],Y=-C.normals[ne+0]*z,X=-C.normals[ne+1]*z,Q=-C.normals[k+0]*z,se=-C.normals[k+1]*z;if(C.concave[E]||!C.concave[E]&&u){let oe=Math.atan2(X,Y),he=Math.atan2(se,Q);he>oe&&(he-=Math.PI*2);let _e=he-oe;if(C.continuous[E]||u){let ge=oe+_e/2,We=Math.cos(ge)*z,Ce=Math.sin(ge)*z;D[2*U+0]=q+We*(u?-1:1),D[2*U+1]=$+Ce*(u?-1:1),Z[U]=E,U++}else{let ge=Math.max(1,Math.floor(o/4*Math.abs(_e)/Math.PI));for(let We=0;We<=ge;We++){let Ce=oe+_e*(We/ge),ct=Math.cos(Ce)*z,wt=Math.sin(Ce)*z;D[2*U+0]=q+ct,D[2*U+1]=$+wt,Z[U]=E,U++}}}else D[2*U+0]=q+Y,D[2*U+1]=$+X,Z[U]=E,R[E]=U,U++,D[2*U+0]=q,D[2*U+1]=$,Z[U]=E,U++,D[2*U+0]=q+Q,D[2*U+1]=$+se,Z[U]=E,K[E]=U,U++}let j=ui({windingRule:He.POSITIVE,elementType:tt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:E=>{let ne=E.Org.idx,q=Z[ne],$=Z[(ne+1)%Z.length];E.idx=[q,$],E.Sym.idx=[$,q]},vertexIdCallback:E=>{let k=E.Lprev.idx;return[k?k[1]:0,E.idx[0]]}});if(!j)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!j.vertexCount)break;for(let E=0;E<j.vertexIndices.length;E++){let[k,ne]=j.vertexIndices[E];if(k===ne)continue;let q=ne;ne<k&&(q+=N);for(let $=k;$<q;$++){let Y=$%N,X=($+1)%N;if(!C.continuous[Y]||!C.continuous[X]){j.vertexIndices[E]=[k,Y],j.vertexIndices.splice(E+1,0,[X,ne]),j.vertices.splice((E+1)*2,0,j.vertices[E*2],j.vertices[E*2+1]);break}}}ce.push({bevelI:G,angle:B,size:z,boundary:j,reverseMap:Z,insetPoints:D})}let ve=(G,B,z)=>{let D=0,R=G.boundary.vertexIndices.length;for(;D<R&&z(G.boundary.vertexIndices[B]);)B=(B+1)%R,D++;return D},F=y.length;for(let G=1;G<ce.length;G++){let B=ce[G-1],z=ce[G],D=B.boundary.vertexIndices.length,R=z.boundary.vertexIndices.length;if(!D||!R)break;let K=C.concave.length,Z=0,U=gl(Z,N);for(;!B.boundary.vertexIndices.filter(U).length||!z.boundary.vertexIndices.filter(U).length;)Z++,U=gl(Z,N);let j=B.boundary.vertexIndices.findIndex(U),E=z.boundary.vertexIndices.findIndex(U);do j=(j+1)%D;while(U(B.boundary.vertexIndices[j]));do E=(E+1)%R;while(U(z.boundary.vertexIndices[E]));Z=(Z+1)%N;let k=Z,ne=this.buildBevelVert(C,B,(j-1+D)%D),q=this.buildBevelVert(C,z,(E-1+R)%R),$=ne,Y=q,X,Q,se=!1;do{U=gl(Z,N);let oe=ve(B,j,U),he=ve(z,E,U),_e=se;if(se=!1,oe&&!he){for(let ge=0;ge<oe;ge++)X=this.buildBevelVert(C,B,(j+ge)%D,ge/(oe-1)),y.push($.topN,X.topP,Y.topN),y.push(X.bottomP,$.bottomN,Y.bottomN),$=X;se=!0}else if(!oe&&he)for(let ge=0;ge<he;ge++)Q=this.buildBevelVert(C,z,(E+ge)%R,ge/(he-1)),y.push(Y.topN,$.topP,Q.topP),y.push($.bottomP,Y.bottomN,Q.bottomP),Y=Q;else if(oe&&he)if(X=this.buildBevelVert(C,B,j,0),Q=this.buildBevelVert(C,z,E,0),_e?(y.push($.topN,Q.topP,Y.topN),y.push($.topN,X.topP,Q.topP),y.push(Q.bottomP,$.bottomN,Y.bottomN),y.push(X.bottomP,$.bottomN,Q.bottomP)):(y.push($.topN,X.topP,Y.topN),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,$.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP)),$=X,Y=Q,oe===he)for(let ge=1;ge<oe;ge++)X=this.buildBevelVert(C,B,(j+ge)%D,ge/(oe-1)),Q=this.buildBevelVert(C,z,(E+ge)%R,ge/(he-1)),y.push($.topN,X.topP,Y.topN),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,$.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP),$=X,Y=Q;else if(oe>he){let ge=oe/he,We=0;for(let Ce=1;Ce<oe;Ce++)X=this.buildBevelVert(C,B,(j+Ce)%D,Ce/(oe-1)),y.push($.topN,X.topP,Y.topN),y.push(X.bottomP,$.bottomN,Y.bottomN),$=X,Ce>(We+1)*ge&&(We++,Q=this.buildBevelVert(C,z,(E+We)%R,We/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q)}else{let ge=he/oe,We=0;for(let Ce=1;Ce<he;Ce++)Q=this.buildBevelVert(C,z,(E+Ce)%R,Ce/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q,Ce>(We+1)*ge&&(We++,X=this.buildBevelVert(C,B,(j+We)%D,We/(oe-1)),y.push($.topN,X.topP,Y.topN),y.push(X.bottomP,$.bottomN,Y.bottomN),$=X)}j=(j+oe)%D,E=(E+he)%R,Z=(Z+1)%K}while(Z!==k)}{let G=ce[0];for(let B=0,z=G.boundary.vertexCount;B<z;B++){let D=this.buildBevelVert(C,G,B),R=this.buildBevelVert(C,G,(B+1)%z);y.push(R.topP,D.topN,D.bottomN),y.push(R.topP,D.bottomN,R.bottomP)}}if(u){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let z=y[B-2],D=y[B-1],R=y[B-0];G.push(R,D,z)}y.splice(F,y.length-F,...G)}if(u){let G=[];for(let B=ce[ce.length-1].boundary.vertices.length-1;B>=1;B-=2){let z=ce[ce.length-1].boundary.vertices[B-1],D=ce[ce.length-1].boundary.vertices[B-0];G.push(z,D)}L.push(G)}if(!u){let G=ce[ce.length-1],B=ui({windingRule:ce.length>1?He.POSITIVE:He.ODD,elementType:tt.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...L]});if(!B)throw new Error("Error generating geometry for surface");for(let z=0;z<B.elementCount*3;z+=3){let D=this.buildSurfaceVert(B,B.elements[z+0]),R=this.buildSurfaceVert(B,B.elements[z+1]),K=this.buildSurfaceVert(B,B.elements[z+2]);y.push(D.top,R.top,K.top),y.push(K.bottom,R.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Us(Uint32Array.from(y),1),I=new Us(this._buffer.positions,3),b=new Us(this._buffer.normals,3),V=new Us(this._buffer.uvs,2);I.needsUpdate=!0,b.needsUpdate=!0,V.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",I),this.setAttribute("normal",b),this.setAttribute("uv",V),this.setIndex(A)}buildSurfaceVert(e,r){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let o=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(o-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),p=c*3,h=c*2,d={top:c+0,bottom:c+1};return this._buffer.positions[p+0]=o,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this._depth,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[h+0]=a,this._buffer.uvs[h+1]=l,this._buffer.positions[p+3]=o,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=0,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[h+2]=a,this._buffer.uvs[h+3]=l,this.vertexCache[i]=d,d}buildBevelVert(e,r,i,o=1){let s=`${r.bevelI}:${i}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[i],c,p,h,d;a!==l?(p=a,c=l,d=!1,h=e.continuous[p]&&e.continuous[c]):(c=a,p=(c-1+e.count)%e.count,d=e.concave[c]&&r.bevelI>0,h=e.continuous[c]||d);let m=Math.cos(r.angle),f=Math.sin(r.angle),T=i*2,w=c*2,y=p*2,L=r.boundary.vertices[T+0],A=r.boundary.vertices[T+1],I=(1-f)*this._bevelSize,b=(L-this._minX)/this._width,V=(A-this._minY)/this._height,x=e.normals[w+0],u=e.normals[w+1],M=e.normals[y+0],g=e.normals[y+1];if(d){let H=M-x,ie=g-u;x=x+H*(1-o),u=u+ie*(1-o);let pe=Math.sqrt(x*x+u*u);x/=pe,u/=pe}let N=this._buffer.get(h?2:4),v=N*3,C=N*2,J={i,fi:c,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1};return this._buffer.positions[v+0]=L,this._buffer.positions[v+1]=A,this._buffer.positions[v+2]=this._depth-I,this._buffer.normals[v+0]=x*m,this._buffer.normals[v+1]=u*m,this._buffer.normals[v+2]=f,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=V,this._buffer.positions[v+3]=L,this._buffer.positions[v+4]=A,this._buffer.positions[v+5]=I,this._buffer.normals[v+3]=x*m,this._buffer.normals[v+4]=u*m,this._buffer.normals[v+5]=-f,this._buffer.uvs[C+2]=V,this._buffer.uvs[C+3]=b,h||(N+=2,v+=6,C+=4,J.topP=N+0,J.bottomP=N+1,this._buffer.positions[v+0]=L,this._buffer.positions[v+1]=A,this._buffer.positions[v+2]=this._depth-I,this._buffer.normals[v+0]=M*m,this._buffer.normals[v+1]=g*m,this._buffer.normals[v+2]=f,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=V,this._buffer.positions[v+3]=L,this._buffer.positions[v+4]=A,this._buffer.positions[v+5]=I,this._buffer.normals[v+3]=M*m,this._buffer.normals[v+4]=g*m,this._buffer.normals[v+5]=-f,this._buffer.uvs[C+2]=V,this._buffer.uvs[C+3]=b),this.vertexCache[s]=J,J}clone(){let e=new to(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Eo(this.userData),e}};var ht=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var c,p,h,d,m,f,T;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),i=Math.abs((p=e.height)!=null?p:e.width),o=Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(h=e.depth)!=null?h:0),s=(d=n.shape)!=null?d:t==null?void 0:t.shape,a=(m=s==null?void 0:s.roundness)!=null?m:e.roundness;s!==void 0&&(s instanceof Me?(s.width!==r||s.height!==i)&&s.applySize(r,i):s=new Me(r,i).fromJSON(s),((f=n.parameters)==null?void 0:f.roundness)!==void 0&&((T=n.parameters)==null?void 0:T.roundness)>0&&s.update(!1));let l=s!=null?s:new Me(r,i);return{parameters:Object.assign(e,{width:r,height:i,depth:o,extrudeDepth:o,roundness:a}),shape:l}}static build(n){let{extrudeDepth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:i,roundness:o}=n.parameters;n.shape.roundness=o;let s;return t<=0?s=new eo(n.shape,i):s=new to(n.shape,t,e,i,r),Object.assign(s,{userData:W(P({},n),{type:"VectorGeometry"})})}};import{MathUtils as vd,Vector2 as Sd}from"three";var wd=Math.PI*2,Ld=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,o,s;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Me?n.shape:new Me,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,angle:i,innerRadius:o,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c=n.shape,p=t*.5,h=e*.5,d=kb(c,p,h,i*Math.PI/180,r,o);c.isClosed=!0,c.update();let m=ht.create({shape:c,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(m,{userData:W(P({},n),{type:"EllipseGeometry"})})}};function kb(n,t,e,r,i,o){if(r>=wd)return i>30||i%4===0?(qb(n,t,e,o),Math.round(i/4)):bd(n,r,i,t,e,o);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=md({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return i>30||i%c.length===0?Hb(n,s.x,s.y,c,i,t,e,o):bd(n,r,i,t,e,o)}function Hb(n,t,e,r,i,o,s,a){let l=Math.round(i/r.length);n.addPoint(ro(t,e));for(let c=0,p=r.length;c<p;c++){let h=r[c],d=n.points[c],m=ro(h.x,h.y);d.controls[1].position.set(h.x1,h.y1),m.controls[0].position.set(h.x2,h.y2),n.addPoint(m)}return a>0?Cd(n,o,s,a):n.addPoint(ro(0,0)),l}function bd(n,t,e,r,i,o){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,p=Math.cos(l)*i;n.addPoint(ro(c,p))}return t<wd?o>0?Cd(n,r,i,o):n.addPoint(ro(0,0)):(n.removePoint(n.points[n.points.length-1]),o>0&&Td(n,r,i,o)),1}function qb(n,t,e,r=0,i=0,o=0){let s=.5522847498,a=t*s,l=e*s;n.addPoint(ks(i-t,o,i-t,o-l,i-t,o+l)),n.addPoint(ks(i,o+e,i-a,o+e,i+a,o+e)),n.addPoint(ks(i+t,o,i+t,o+l,i+t,o-l)),n.addPoint(ks(i,o-e,i+a,o-e,i-a,o-e)),r>0&&Td(n,t,e,r)}function ro(n,t){return new er(vd.generateUUID(),new Sd(n,t))}function ks(n,t,e,r,i,o){let s=ro(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(i,o),s}function Cd(n,t,e,r){Nd(n,t,e,r).forEach(o=>n.addPoint(o))}function Td(n,t,e,r){let i=Nd(n,t,e,r),o=new Me;i.forEach(s=>o.addPoint(s)),o.isClosed=!0,n.shapeHoles.push(o)}function Nd(n,t,e,r){let i=r*t/100,o=i*(Math.abs(e)/Math.abs(t)),s=new Sd(i/t,o/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=vd.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),p=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(p),l.controls[1].position.copy(c)}),a}import{BufferGeometry as Wb,Float32BufferAttribute as xl,Vector3 as Md}from"three";var Od=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),i=Math.abs((l=e.height)!=null?l:r),o=Math.abs((c=e.depth)!=null?c:r),s=Math.abs(Math.min(r,o))/2;return{parameters:Object.assign(e,{width:r,height:i,depth:o,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:i,revolutions:o,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:p,cornerSegments:h}=n.parameters,d=new Xo(!1,t,e,r,i,o,s,a,l,c,p,h);return Object.assign(d,{userData:W(P({},n),{type:"HelixGeometry"})})}},Xo=class extends Wb{constructor(t=!0,e=1,r=1,i=1,o=1,s=1,a=1,l=1,c=1,p=1,h=1,d=1){super();let m=t&&s===1;m&&(d=0),h>100&&(h=100);let f=()=>new Md,T=new Md,w=f(),y=f(),L=f(),A,I,b,V,x,u,M,g,N=f(),v=f(),C=f(),J=f(),H=f(),ie=f(),pe=f(),ce=f(),ve=r-2*l+.001,F=ve/s,G=Math.ceil(a*s),B=G+1,z=ve/G,D=-ve/2,R=p+1,K=2*Math.PI/p,Z=Math.PI/2/d,U=.01,j=Math.min((1-h/100)*l,l-U),E=l-j,k=0,ne=2,q=d*ne+ne,$=R*q/ne,Y=$+R*B,X=R*(B+q),[Q,se,oe]=[3,3,2].map(Ue=>Array(X*Ue).fill(0)),he=[],_e=o-l;function ge(Ue,yt){let Bt=Math.PI/2;u=yt*z,g=2*Math.PI*(u%F)/F+Bt,u+=D,M=Math.sin(g)*_e,x=Math.cos(g)*_e,t?Ue.set(x,M,u):Ue.set(x,u,M)}ge(T,-1e-10),ge(w,0),N.copy(T),ge(T,1);let We=T.distanceTo(w),Ce=E+j,ct=We*G+2*Ce,wt=j,vr=ct-Ce;for(let Ue=0;Ue<=G;Ue++){ge(y,Ue),ce.subVectors(y,N).normalize(),N.copy(y),ie.copy(y).setComponent(+t+1,0).normalize(),pe.crossVectors(ce,ie).normalize();let yt=Ue===0,Bt=Ue===G,Nn=yt?3*Math.PI/2:Z,Mn=yt?wt:vr,On=yt?R:Y,In=yt?0:X-R,Pn=ce.clone().multiplyScalar(yt?-E:E).add(y),An=ce.clone().multiplyScalar(yt?-1:1).normalize();for(let Ut=0;Ut<R;Ut++){let Po=Ut*K;if(v.addVectors(T.copy(ie).multiplyScalar(l*Math.cos(Po)),w.copy(pe).multiplyScalar(l*Math.sin(Po))),C.copy(v).normalize(),yt||Bt){m||(k=In+Ut,[0,1,2].forEach(pt=>{Q[k*3+pt]=Pn.getComponent(pt),se[k*3+pt]=An.getComponent(pt)}),oe[k*2]=+Bt,oe[k*2+1]=Ut/p),w.copy(C).multiplyScalar(j),L.addVectors(y,w);for(let pt=0;pt<d;pt++){let wi=pt*Z+Nn;J.addVectors(T.copy(ce).multiplyScalar(E*Math.sin(wi)),w.copy(C).multiplyScalar(E*Math.cos(wi))),H.copy(J).normalize(),w.addVectors(L,J),J.normalize(),k=On+pt*R+Ut,[0,1,2].forEach(ni=>{Q[k*3+ni]=w.getComponent(ni),se[k*3+ni]=H.getComponent(ni)});let Dn=+yt+Math.sin(wi);oe[k*2]=(Mn+E*Dn)/ct,oe[k*2+1]=Ut/p}}w.addVectors(y,v),k=$+Ue*R+Ut,[0,1,2].forEach(pt=>{Q[k*3+pt]=w.getComponent(pt),se[k*3+pt]=C.getComponent(pt)}),oe[k*2]=(Ce+Ue*We)/ct,oe[k*2+1]=Ut/p}}let ft=B+2*d+ne,Sr=1,[ii,oi]=m?[Sr,Sr+B-1]:[0,ft-1];for(let Ue=ii;Ue<=oi-1;Ue++){let yt=m&&Ue===oi-1;for(let Bt=0;Bt<R-1;Bt++)A=Ue*R+Bt,I=A+1,b=(yt?Bt:A)+R,V=(yt?Bt+1:I)+R,Ue===0?he.push(I,V,b):Ue===ft-2?he.push(A,I,b):he.push(A,I,b,I,V,b)}this.setIndex(he),this.setAttribute("position",new xl(Q,3)),this.setAttribute("normal",new xl(se,3)),this.setAttribute("uv",new xl(oe,2))}};import{IcosahedronBufferGeometry as Jb}from"three";var Id=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:i,corner:o,cornerSides:s}=n.parameters,a=i===0&&o!==0?new Zo(t*.5,o,s):new Jb(t*.5,i);return a.scale(1,e/t,r/t),Object.assign(a,{userData:W(P({},n),{type:"IcosahedronGeometry"})})}},Zo=class extends Jr{constructor(t=1,e=.2,r=4){let i=(1+Math.sqrt(5))/2,o=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(o,s,a,t,e,r),this.type=a}static fromJSON(t){return new Zo(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as $b,Shape as Kb}from"three";var Pd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o,s,a;((i=(r=n.parameters)==null?void 0:r.points)!=null?i:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,i=new Kb;i.moveTo(t[0].x,t[0].y),i.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let o=new $b(i.extractPoints(r).shape,e);return o.rotateZ(Math.PI),Object.assign(o,{userData:W(P({},n),{type:"LatheGeometry"})})}};import{BufferGeometry as Dd,BufferGeometryLoader as rv,Vector3 as iv,BoxBufferGeometry as Bd}from"three";import{BufferGeometry as Yb,Vector2 as bl,Vector3 as Ad}from"three";import{Geometry as Xb,Face3 as Zb}from"three/examples/jsm/deprecated/Geometry.js";var Qb=["a","b","c"];function ev(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function vl(n,t,e){let r=Math.min(n,t),i=Math.max(n,t),o=r+"_"+i;return e.get(o)}function Sl(n,t,e,r,i,o){let s=Math.min(n,t),a=Math.max(n,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let p=e[s],h=e[a];c={a:p,b:h,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(i),o[n].edges.push(c),o[t].edges.push(c)}function tv(n,t,e,r){let i,o,s;for(i=0,o=n.length;i<o;i++)e[i]={edges:[]};for(i=0,o=t.length;i<o;i++)s=t[i],Sl(s.a,s.b,n,r,s,e),Sl(s.b,s.c,n,r,s,e),Sl(s.c,s.a,n,r,s,e)}function Hs(n,t,e,r,i){n.push(new Zb(t,e,r,void 0,void 0,i))}function io(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function qs(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Ws=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Yb?t=new Xb().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new Ad,r,i,o,s,a,l=t.vertices,c=t.faces,p=t.faceVertexUvs[0],h=p!==void 0&&p.length>0,d=[],m=new Map;tv(l,c,d,m);let f=[],T,w,y,L,A,I,b;for(let U of Array.from(m.keys())){for(w=m.get(U),y=new Ad,A=3/8,I=1/8,b=w.faces.length,b!=2&&(A=.5,I=0,b!=1),y.addVectors(w.a,w.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(L=w.faces[s],a=0;a<3&&(T=l[ev(L,Qb[a])],!(T!==w.a&&T!==w.b));a++);T&&e.add(T)}e.multiplyScalar(I),y.add(e),w.newEdge=f.length,f.push(y)}let V,x,u,M,g,N,v,C=[];for(i=0,o=l.length;i<o;i++){for(N=l[i],g=d[i].edges,r=g.length,r==3?V=3/16:r>3&&(V=3/(8*r)),x=1-r*Number(V),u=V,r<=2&&(r==2?(x=3/4,u=1/8):r==1||r==0),v=N.clone().multiplyScalar(x),e.set(0,0,0),s=0;s<r;s++)M=g[s],T=M.a!==N?M.a:M.b,e.add(T);e.multiplyScalar(Number(u)),v.add(e),C.push(v)}let J=C.concat(f),H=C.length,ie,pe,ce,ve=[],F=[],G,B,z,D,R=new bl,K=new bl,Z=new bl;for(i=0,o=c.length;i<o;i++)L=c[i],ie=Number(vl(L.a,L.b,m).newEdge)+H,pe=Number(vl(L.b,L.c,m).newEdge)+H,ce=Number(vl(L.c,L.a,m).newEdge)+H,Hs(ve,ie,pe,ce,L.materialIndex),Hs(ve,L.a,ie,ce,L.materialIndex),Hs(ve,L.b,pe,ie,L.materialIndex),Hs(ve,L.c,ce,pe,L.materialIndex),h&&(G=p[i],B=G[0],z=G[1],D=G[2],R.set(io(B.x,z.x),io(B.y,z.y)),K.set(io(z.x,D.x),io(z.y,D.y)),Z.set(io(B.x,D.x),io(B.y,D.y)),qs(F,R,K,Z),qs(F,B,R,Z),qs(F,z,K,R),qs(F,D,Z,K));t.vertices=J,t.faces=ve,h&&(t.faceVertexUvs[0]=F)}};var rt=new iv,Ed=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,s;let e=(s=(o=n.geometry)!=null?o:t==null?void 0:t.geometry)!=null?s:new Dd().copy(new Bd(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(rt),r={width:rt.x,height:rt.y,depth:rt.z,subdivisions:0}):r=t.parameters;let i=P(P({},r),n.parameters);return{parameters:{width:Math.abs(i.width),height:Math.abs(i.height),depth:Math.abs(i.depth),subdivisions:Math.abs(i.subdivisions)},geometry:e}}static build(n){var l;let{width:t,height:e,depth:r,subdivisions:i}=n.parameters,o=(l=n.geometry)!=null?l:new Dd().copy(new Bd(100,100,100)),s=o.userData.parameters;s===void 0?(o.computeBoundingBox(),o.boundingBox.getSize(rt)):rt.set(s.width,s.height,s.depth),(t!==rt.x||e!==rt.y||r!==rt.z)&&o.scale(rt.x===0?1:t/rt.x,rt.y===0?1:e/rt.y,rt.z===0?1:r/rt.z);let a=o.originalGeometry;return i>0?(a===void 0||(s==null?void 0:s.subdivisions)!==i)&&(a===void 0&&(a=o),o=new Ws(i).modify(a).toBufferGeometry()):(a!==void 0&&(o=a),a=void 0,o.getAttribute("normal")===void 0&&o.computeVertexNormals()),a!==void 0&&Object.assign(o,{originalGeometry:a}),delete n.geometry,Object.assign(o,{userData:W(P({},n),{type:"NonParametricGeometry"})})}static loadFromUrl(n,t,e){new rv(e).load(n,i=>{let o=this.normalizeInputs({geometry:i});i.boundingBox.getSize(rt);let s=100/rt.x;Object.assign(o.parameters,{width:100,height:rt.y*s,depth:rt.z*s}),t(this.build(o))})}};var _d=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,o,s;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Me?n.shape:new Me,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:i,depth:o,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,l=n.shape,c=t*.5,p=e*.5,h=0,d=0,m=2*Math.PI/r;for(let T=0;T<r;T++){let w=m*T,y=h+Math.sin(w)*c,L=d+Math.cos(w)*p;l.addPoint(l.createPoint(y,L))}l.isClosed=!0;for(let T=0,w=l.points.length;T<w;T++)l.points[T].roundness=i;l.roundness=i,l.update();let f=ht.create({shape:l,parameters:{roundness:i,depth:o,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:W(P({},n),{type:"PolygonGeometry"})})}};import{BufferGeometry as ov,Float32BufferAttribute as wl,Vector2 as ur,Vector3 as st}from"three";var Gd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:i,heightSegments:o,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Cl(t*.5,e,i,o,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:W(P({},n),{type:"PyramidGeometry"})})}};function Qo(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Ll(n,t,e,r,i,o){let s=t.clone().sub(n),a=e.clone().sub(n),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===i){let c=s.add(a).normalize();o.copy(n).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);o.copy(n),o.addScaledVector(s,i/Math.sin(c)),o.addScaledVector(a,r/Math.sin(c))}}function nv(n,t,e){let r=n.clone().sub(t),i=e.clone().sub(t);return r.projectOnVector(i),r.add(t)}var Cl=class extends ov{constructor(t=.5,e=1,r=4,i=1,o=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),i=Math.floor(i),a=Math.floor(a);let l=[],c=[],p=[],h=[],d=0,m=e/2,f=Math.PI/r,T=t*Math.cos(Math.PI/r),w=2*Math.PI/r,y=(r-2)*Math.PI/r,L=Math.PI-y,A=new st(0,-m,0),I=new st(0,m,0),b=new ur(t,-m),V=new ur(T,-m),x=new ur(0,I.y).sub(V),u=new ur(0,I.y).sub(b),M=new ur(x.y,-x.x).normalize(),g=new ur(u.y,-u.x).normalize(),v=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-x.angle())/2)-1e-8;s=Math.min(s,v);let C;{let F=new st(M.x,M.y,0),G=new st(Math.cos(w)*F.x,F.y,Math.sin(w)*F.x);C=F.angleTo(G)}let J=s/Math.tan((Math.PI-x.angle())/2),H=s/Math.tan((Math.PI-C)/2),ie=new st;if(!o){c.push(A.x,A.y,A.z),p.push(0,-1,0),h.push(0,0);let F=d++,G=[],B=b.clone(),z=J/Math.cos(Math.PI/r);B.x-=z;for(let D=0;D<r;D++){let R=D/r*Math.PI*2+f,K=new ur(Math.sin(R),Math.cos(R));Qo(B,K,ie),c.push(ie.x,ie.y,ie.z),p.push(0,-1,0),h.push(0,0),G.push(d++)}for(let D=0;D<G.length;D++)l.push(G[D],F,G[(D+1)%G.length])}let pe=[];{let F=new st,G=new st,B=new st,z=new st,D=new st,R=new st;for(let K=0;K<r;K++){let Z=K/r*Math.PI*2+f,U=(K+.5)/r*Math.PI*2+f,j=(K+1)/r*Math.PI*2+f,E=new ur(Math.sin(Z),Math.cos(Z)),k=new ur(Math.sin(U),Math.cos(U)),ne=new ur(Math.sin(j),Math.cos(j));Qo(b,E,G),Qo(b,ne,B),Qo(M,k,F),Ll(I,G,B,H,H,z),c.push(z.x,z.y,z.z),Ll(G,I,B,H,J,D),c.push(D.x,D.y,D.z),Ll(B,G,I,J,H,R),c.push(R.x,R.y,R.z),p.push(F.x,F.y,F.z),p.push(F.x,F.y,F.z),p.push(F.x,F.y,F.z),h.push(0,0),h.push(0,0),h.push(0,0);let q=d++,$=d++,Y=d++;if(l.push(q,$,Y),s>0){{let se=G.clone().add(B).multiplyScalar(.5),oe=I.clone().sub(se).normalize(),_e=A.clone().sub(se).normalize().add(oe).normalize().multiplyScalar(-1),ge=R.clone().sub(D);ce(se,ge,_e,x.angle())}let X,Q;{let se=new st;Qo(g,ne,se);let oe=R.clone().add(z).multiplyScalar(.5);oe=nv(oe,B,I);let he=R.clone().sub(z);[X,Q]=ce(oe,he,se,C,z.y)}{let se=X,oe=se.clone().setY(0).normalize(),he=new st(0,-1,0),_e=oe.clone().cross(he);ve(se,oe,he,_e)}pe.concat(Q);{let se=x.angle(),oe=Math.PI-se,he=I.clone();he.y-=s/Math.sin(se-Math.PI/2);let _e=new st,ge=[];for(let Ce=0;Ce<a;Ce++){let ct=[],wt=Math.PI/2-oe*Ce/a,vr=Math.cos(wt),ft=Math.sin(wt),Sr=U;for(let ii=0;ii<=Ce;ii++){let oi=Math.cos(Sr),Ue=Math.sin(Sr);F.x=vr*Ue,F.y=ft,F.z=vr*oi,_e.copy(he).addScaledVector(F,s),c.push(_e.x,_e.y,_e.z),p.push(F.x,F.y,F.z),h.push(0,0),ct.push(d++),Sr+=Math.PI*2/Ce/r}ge.push(ct)}Q.reverse(),ge.push(Q);let We=ge.length-1;for(let Ce=0;Ce<We;Ce++){let ct=ge[Ce],wt=ge[Ce+1],vr=ct.length-1;l.push(wt[1],ct[0],wt[0]);for(let ft=1;ft<=vr;ft++)l.push(ct[ft],ct[ft-1],wt[ft]),l.push(wt[ft+1],ct[ft],wt[ft])}}}}}this.setIndex(l),this.setAttribute("position",new wl(c,3)),this.setAttribute("normal",new wl(p,3)),this.setAttribute("uv",new wl(h,2));function ce(F,G,B,z,D){let R=-z/2,K=(Math.PI-z)/2,Z=G.clone().normalize().cross(B);F.addScaledVector(B,-s/Math.sin(K));let U=new st,j=new st,E=1,k=d,ne=[];for(let q=0;q<=a;q++){let $=R+q/a*z;j.set(0,0,0),j.addScaledVector(Z,Math.sin($)),j.addScaledVector(B,Math.cos($));for(let Y=0;Y<=E;Y++){let X=Y/E-.5;if(U.copy(F),U.addScaledVector(G,X),U.addScaledVector(j,s),D!=null){let Q=Math.max(0,U.y-D);U.addScaledVector(G,-Q/G.y)}c.push(U.x,U.y,U.z),p.push(j.x,j.y,j.z),h.push(0,0),Y===0&&ne.push(d),d++}}for(let q=0;q<a;q++)for(let $=0;$<E;$++){let Y=k+$+(E+1)*q,X=Y+(E+1),Q=X+1,se=Y+1;l.push(Y,X,se),l.push(X,Q,se)}return[F.clone().addScaledVector(G,.5),ne]}function ve(F,G,B,z){let D=Math.PI/2,R=u.angle()-D,K=[],Z=new st,U=new st;for(let E=0;E<=a;E++){let k=[],ne=E/a;for(let q=0;q<=E;q++){let Y=((E?q/E:0)-.5)*L,X=Math.cos(Y),Q=Math.sin(Y),se=Math.atan(Math.tan(R)*X),oe=(D+se)*ne,he=Math.cos(oe),_e=Math.sin(oe);Z.set(0,0,0),Z.addScaledVector(G,_e*X),Z.addScaledVector(B,he),Z.addScaledVector(z,_e*Q),U.copy(F).addScaledVector(Z,s),c.push(U.x,U.y,U.z),p.push(Z.x,Z.y,Z.z),h.push(0,0),k.push(d++)}K.push(k)}let j=K.length-1;for(let E=0;E<j;E++){let k=K[E],ne=K[E+1],q=k.length-1;l.push(k[0],ne[1],ne[0]);for(let $=1;$<=q;$++)l.push(k[$-1],k[$],ne[$]),l.push(k[$],ne[$+1],ne[$])}}}};var Js=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,s,a,l;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Me?n.shape:new Me,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(l=e.depth)!=null?l:0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:i,cornerType:o,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:r*.5},p={x:-c.x,y:-c.y},h={x:c.x,y:c.y};function d(I,b,V){return b>e&&V>r?Math.min(I*e/b,I*r/V):b>e?I*e/b:V>r?I*r/V:I}let m=[];m[0]=i[0]===0?0:d(i[0],i[0]+i[3],i[0]+i[1]),m[1]=i[1]===0?0:d(i[1],i[1]+i[2],i[1]+i[0]),m[2]=i[2]===0?0:d(i[2],i[2]+i[1],i[2]+i[3]),m[3]=i[3]===0?0:d(i[3],i[3]+i[0],i[3]+i[2]);let f=p.x,T=h.x,w=h.y,y=p.y;t.addPoint(t.createPoint(f,w)),t.addPoint(t.createPoint(T,w)),t.addPoint(t.createPoint(T,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let L=!0;for(let I=0,b=t.points.length;I<b;I++)t.points[I].roundness=m[I],I>0&&m[I]!==m[I-1]&&(L=!1);L&&(t.roundness=m[0]),t.useCubicForRoundedCorners=o!==1,t.update();let A=ht.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:W(P({},n),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as sv}from"three";var zd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:i=64,heightSegments:o=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=n.parameters,p=new sv(.5*t,i,o,s,a,l,c);return p.scale(1,e/t,r/t),Object.assign(p,{userData:W(P({},n),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as av}from"three";var Rd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:i=8}=n.parameters,o=new av(t,e,r,i);return o.scale(1,1,1),Object.assign(o,{userData:W(P({},n),{type:"PlaneGeometry"})})}};var Vd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,o,s;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Me?n.shape:new Me,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:i,cornerRadius:o,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p=n.shape,h=t*.5,d=e*.5,m=0,f=0,T=s*Math.PI/360/i,w=Math.PI/2*3*-1,y=h*r/100,L=d*r/100;if(i===3&&r===50){T=2*Math.PI/i;for(let I=0;I<i;I++){let b=T*I,V=m+Math.sin(b)*h,x=f+Math.cos(b)*d;p.addPoint(p.createPoint(V,x))}}else for(let I=0;I<i;I++){let b=m+Math.cos(w)*h,V=f+Math.sin(w)*d;p.addPoint(p.createPoint(b,V)),w+=T,b=m+Math.cos(w)*y,V=f+Math.sin(w)*L,I<=i,p.addPoint(p.createPoint(b,V)),w+=T}p.isClosed=!0;for(let I=0,b=p.points.length;I<b;I++)p.points[I].roundness=o;p.roundness=o,p.update();let A=ht.create({shape:p,parameters:{roundness:o,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:W(P({},n),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as lv}from"three";var $s=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new lv(t,e);return Object.assign(r,{userData:W(P({},n),{type:"TextFrameGeometry"})})}};var Fd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),i=Math.abs((a=e.height)!=null?a:e.width),o=Math.abs((l=e.depth)!=null?l:e.width*.25);return{parameters:Object.assign(e,{width:r,height:i,depth:o})}}static build(n){let{width:t,height:e,depth:r,radialSegments:i,tubularSegments:o,arc:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=cv(t,e,r,t*.5,s,o,0,0,i,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:W(P({},n),{type:"TorusGeometry"})})}};function cv(n,t,e,r,i,o,s,a,l,c,p){return[t,e]=[e,t],s=t/2,i/=2*Math.PI,i==1&&(c=0),new Xo(!0,n,t,e,r,i,o,s,a,l,c,p)}import{TorusKnotBufferGeometry as pv}from"three";var jd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,i,o,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((i=e.height)!=null?i:e.width),depth:Math.abs((o=e.depth)!=null?o:e.width),tube:(s=e.tube)!=null?s:e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:i,p:o,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let l=new pv(a,e,r,i,o,s);return Object.assign(l,{userData:W(P({},n),{type:"TorusKnotGeometry"})})}};var Ud=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,o,s;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Me?n.shape:new Me,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:i,extrudeBevelSize:o,extrudeBevelSegments:s,isRect:a}=n.parameters,l=n.shape,c=t*.5,p=e*.5;a?(l.addPoint(l.createPoint(-c,p)),l.addPoint(l.createPoint(c,-p)),l.addPoint(l.createPoint(-c,-p))):(l.addPoint(l.createPoint(0,p)),l.addPoint(l.createPoint(c,-p)),l.addPoint(l.createPoint(-c,-p))),l.isClosed=!0;for(let d=0,m=l.points.length;d<m;d++)l.points[d].roundness=r;l.roundness=r,l.update();let h=ht.create({shape:l,parameters:{roundness:r,depth:i,extrudeBevelSize:o,extrudeBevelSegments:s}});return Object.assign(h,{userData:W(P({},n),{type:"TriangleGeometry"})})}};var en={};ym(en,{addBarycentricAttribute:()=>fv,fixUvs:()=>gv,loadFromUrl:()=>yv,resizeGeometry:()=>mv,roundShapePolygon:()=>uv});import{BufferGeometryLoader as hv,Float32BufferAttribute as dv,Vector3 as Tl}from"three";var kd=function(n,t){let e=t.x-n.x,r=t.y-n.y,i=Math.sqrt(e*e+r*r),o=e/i,s=r/i,a=Math.atan2(s,o);return{x:e,y:r,len:i,nx:o,ny:s,ang:a}},uv=(n,t,e)=>{let r,i,o,s,a,l,c,p,h,d,m,f,T,w,y=t.length;for(s=t[y-2],n.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let L=kd(a,s),A=kd(a,l);c=L.nx*A.ny-L.ny*A.nx,p=L.nx*A.nx-L.ny*-A.ny,m=Math.asin(c),h=1,d=!1,p<0?m<0?m=Math.PI+m:(m=Math.PI-m,h=-1,d=!0):m>0&&(h=-1,d=!0),f=m/2,w=Math.abs(Math.cos(f)*e/Math.sin(f)),w>Math.min(L.len/2,A.len/2)?(w=Math.min(L.len/2,A.len/2),T=Math.abs(w*Math.sin(f)/Math.cos(f))):T=e,i=a.x+A.nx*w,o=a.y+A.ny*w,i+=-A.ny*T*h,o+=A.nx*T*h,n.absarc(i,o,T,L.ang+Math.PI/2*h,A.ang-Math.PI/2*h,d),s=a,a=l}n.closePath()},mv=(n,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let i=n.userData.parameters,o,s,a;t===0?(t=i.width,o=1):o=t/i.width,e===0?(e=i.height,s=1):s=e/i.height,r===0?(r=i.depth,a=1):a=r/i.depth,n.scale(o,s,a),i.width=t,i.height=e,i.depth=r},fv=(n,t)=>{let e=[new Tl(1,0,0),new Tl(0,1,0),new Tl(0,0,1)],r=n.attributes.position,i=new Float32Array(r.count*3);for(let o=0,s=r.count;o<s;o++)e[o%3].toArray(i,o*3);n.setAttribute(t,new dv(i,3))},yv=n=>new Promise(t=>{new hv().load(n,r=>t(r))}),gv=(n,t,e)=>{let r=n.getAttribute("uv");if(r)for(let i=0;i<r.count;i++){let o=r.getX(i),s=r.getY(i);r.setXY(i,(o+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as Hd,BufferAttribute as qd,Uint32BufferAttribute as Nl,Float32BufferAttribute as Ml,Matrix4 as bv}from"three";import{mergeVertices as vv}from"three/examples/jsm/utils/BufferGeometryUtils.js";var xv,Ks=new Promise(n=>{xv=n});var me;Ks.then(n=>{me=n});var Wd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Jd=new Uint32Array([0,1,2,3]),$d=new Uint8Array([4]),Rt=class{static build(n,t,e,r,i){let o,s,a;if(n===void 0)o=Rt.allocate(i,e),me.set_destination_refinement_level(o,0),s=Rt.buildLevel(o,!0,r);else if(n.positionWASM!==void 0){t&&t!==0&&(me.free_bvh(t),me.free_subdivision_surface(t));try{o=Rt.allocate(i,void 0,n)}catch(l){console.error(l,n),o=Rt.allocate(i,void 0,{positionWASM:Wd,indexWASM:Jd,verticesPerFaceWASM:$d})}me.set_destination_refinement_level(o,0),s=Rt.buildLevel(o,!0,r)}else o=t;if(n!==void 0&&n.subdivisions!==void 0){let l=Sv(n.subdivisions,n.positionWASM.length);me.set_destination_refinement_level(o,l),l>0?a=Rt.buildLevel(o,!1,r):a=null}return{subdivPointer:o,originalGeometry:s,subdividedGeometry:a}}static allocate(n,t,e){var b;let r,i,o,s=[],a=[];if(e)e.positionWASM&&e.positionWASM.length>0?(r=e.positionWASM,i=e.indexWASM,o=e.verticesPerFaceWASM):(r=Wd,i=Jd,o=$d);else{t.deleteAttribute("normal"),t.deleteAttribute("uv");let V=vv(t);r=V.attributes.position.array;let x=V.getIndex().array,u=x.length;switch(t.userData.type==="TorusGeometry"&&(t==null?void 0:t.userData.parameters.arc)===Math.PI*2&&(t.userData.type="ClosedTorusGeometry"),t.userData.type){case"ClosedTorusGeometry":case"PlaneGeometry":case"TorusKnotGeometry":case"CubeGeometry":i=new Uint32Array(u/3*2),o=new Uint8Array(u/6).fill(4);for(let H=0,ie=0;H<u;H+=6)i[ie++]=x[H],i[ie++]=x[H+1],i[ie++]=x[H+4],i[ie++]=x[H+5];break;case"TorusGeometry":case"SphereGeometry":case"HelixGeometry":case"CylinderGeometry":case"ConeGeometry":let M,g,N;if(t.userData.type==="SphereGeometry")g=t.parameters.heightSegments,M=t.parameters.widthSegments,t.parameters.thetaLength!==Math.PI&&(N=!0);else if(t.userData.type==="CylinderGeometry")g=t.parameters.heightSegments+2,M=t.parameters.radialSegments;else if(t.userData.type==="ConeGeometry")g=t.parameters.heightSegments+1,M=t.parameters.radialSegments;else if(t.userData.type==="TorusGeometry"){let H=t.userData.parameters;g=Math.ceil(H.tubularSegments*H.arc/(2*Math.PI))+2,M=H.radialSegments}else{let{pathSegments:H,segments:ie,revolutions:pe}=t.userData.parameters;g=Math.ceil(ie*pe)+2,M=H}N?(i=new Uint32Array(1*M*3+(g-1)*M*4),o=new Uint8Array(1*M+(g-1)*M)):(i=new Uint32Array(2*M*3+(g-2)*M*4),o=new Uint8Array(2*M+(g-2)*M));let v=0,C=0,J=0;if(t.userData.type==="SphereGeometry"||t.userData.type==="HelixGeometry"||t.userData.type==="TorusGeometry"){for(;C<3*M;)i[C++]=x[v++],i[C++]=x[v++],i[C++]=x[v++],o[J++]=3;let H=N?i.length:3*M+4*(g-2)*M;for(;C<H;v+=6)i[C++]=x[v],i[C++]=x[v+1],i[C++]=x[v+4],i[C++]=x[v+5],o[J++]=4}else for(;C<4*(g-2)*M;v+=6)i[C++]=x[v],i[C++]=x[v+1],i[C++]=x[v+4],i[C++]=x[v+5],o[J++]=4;for(;C<i.length;)i[C++]=x[v++],i[C++]=x[v++],i[C++]=x[v++],o[J++]=3;break;default:i=x,o=new Uint8Array(u/3).fill(3);break}}let l=r.length,c=i.length,p=o.length,h=r.length+s.length+a.length,d=i.length+o.length,m=h*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,f=h*Float32Array.BYTES_PER_ELEMENT,T=d*Uint32Array.BYTES_PER_ELEMENT,w=me._malloc(m),y=new Float32Array(me.HEAPF32.buffer,w,h),L=new Uint32Array(me.HEAPU32.buffer,w+f,d);y.set(r,0),y.set(s,r.length),y.set(a,r.length+s.length),L.set(i,0),L.set(o,i.length);let A;(b=e==null?void 0:e.scaleBaked)!=null&&b.some(V=>V!==1)&&(A=new bv().makeScale(...e.scaleBaked)),n&&(A?A.premultiply(n):A=n);let I=A?me.alloc_subdivision_surface2(w,l,w+f,c,w+f+i.length*Uint32Array.BYTES_PER_ELEMENT,p,A.elements):me.alloc_subdivision_surface(w,l,w+f,c,w+f+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return me._free(w),I}static buildLevel(n,t,e,r,i){let o=i?me.get_mesh_data2(n,t?me.Level.CONTROL:me.Level.REFINED,e!=null?e:!t,i.elements):me.get_mesh_data(n,t?me.Level.CONTROL:me.Level.REFINED,e!=null?e:!t),s=8,a=me.HEAPU32.subarray(o>>2,(o>>2)+s),l=a.subarray(4,4+4),c=0,p=me.HEAPU32[a[c]>>2],h=me.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let d=me.HEAPU32[a[c]>>2],m=me.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=me.HEAPU32[a[c]>>2],T=me.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let w=me.HEAPU32[a[c]>>2],y=me.HEAPU32.subarray(w>>2,(w>>2)+l[c]);if(c++,r===void 0){let L=new Hd;if(L.setIndex(new Nl(y,1)),L.setAttribute("position",new Ml(h,3)),L.setAttribute("normal",new Ml(m,3)),t){L.setAttribute("faceMap",new Nl(T,1));let A=new Float32Array(m.length/3*4).fill(0);L.setAttribute("color",new qd(A,4))}return me.free_mesh_data(o),L.userData.type="SubdivGeometry",L}r.getAttribute("position").copyArray(h),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,me.free_mesh_data(o)}static buildControlCageWireframe(n,t,e){let r=me.get_wireframe_data_for_base_level(n),i=4,o=me.HEAPU32.subarray(r>>2,(r>>2)+i),s=o.subarray(2,2+2),a=0,l=me.HEAPU32[o[a]>>2],c=me.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let p=me.HEAPU32[o[a]>>2],h=me.HEAPU32.subarray(p>>2,(p>>2)+s[a]);if(t===void 0){let d=new Hd;d.setAttribute("position",new Ml(c,3));let m=new Float32Array(c.length);for(let f=0,T=c.length;f<T;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new qd(m,3)),d.setIndex(new Nl(h,1)),me.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||me.set_destination_refinement_level(n,1);let r=e?me.get_topological_data2(n,t?me.Level.CONTROL:me.Level.REFINED,e.elements):me.get_topological_data(n,t?me.Level.CONTROL:me.Level.REFINED),i=6,o=me.HEAPU32.subarray(r>>2,(r>>2)+i),s=o.subarray(3,3+3),a=0,l=me.HEAPU32[o[a]>>2],c=new Float32Array(me.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let p=me.HEAPU32[o[a]>>2],h=new Uint32Array(me.HEAPU32.subarray(p>>2,(p>>2)+s[a]));a++;let d=me.HEAPU32[o[a]>>2],m=new Uint8Array(me.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return me.free_topological_data(r),{positions:c,indices:h,verticesPerFace:m}}};function Sv(n,t){let e=n;return e=Math.min(e,3-Math.ceil(Math.log(t/172e3)/Math.log(4))),Math.max(e,0)}var Ol={ConeGeometry:Xh,CubeGeometry:Zh,CylinderGeometry:Yh,DodecahedronGeometry:Qh,EllipseGeometry:Ld,HelixGeometry:Od,IcosahedronGeometry:Id,LatheGeometry:Pd,NonParametricGeometry:Ed,PolygonGeometry:_d,PyramidGeometry:Gd,RectangleGeometry:Js,SphereGeometry:zd,PlaneGeometry:Rd,StarGeometry:Vd,TextFrameGeometry:$s,TorusGeometry:Fd,TorusKnotGeometry:jd,TriangleGeometry:Ud,VectorGeometry:ht},tn=n=>Ol[n.type].create(n);import{HemisphereLight as Kd}from"three";import{Color as wv}from"three";var Pt=class extends wv{constructor(e,r,i,o){super(e,r,i);this.isColorA=!0;this.a=o}setRGBA(e,r,i,o){super.setRGB(e,r,i),this.a=o}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)}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}};function Ye(n,t){let e;if(typeof n=="string"){let r=t==null?void 0:t.getColor(n);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Pt(0,0,0,0))}else return"a"in n?new Pt(n.r,n.g,n.b,n.a):new Pt(n.r,n.g,n.b,1);return e}var Ys=n=>"isEntity"in n,oo=n=>"isAbstractMesh"in n,Yd=n=>n.objectType==="CombinedCamera";var Ir=n=>"objectHelper"in n;function Lv(n,t){var r;let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray((r=t.hiddenMatrix)!=null?r:Ur.identity)),e&&n.updateMatrix(),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function Cv(n,t){Lv(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.isEntity?n.visibility=t.visible:n.visible=t.visible)}function Xd(n,t,e){Cv(n,t),t.color!==void 0&&(n.color=Ye(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Kd)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Kd)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0),t.helper!==void 0&&Ir(n)&&(n.enableHelper=t.helper,n.gizmos.shadowmap.visible=t.helper)}function Zd(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}import{VideoTexture as wS}from"three";import{Mesh as Av}from"three";import{Matrix4 as Pl}from"three";import{Box3 as eu,Line3 as Jt,Matrix4 as Il,Vector3 as Re}from"three";var no=new eu,dt=new Re,le=new Re,et=new Il;function Tv(n,t,e=0,r=t.count){let i=1/0,o=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let p=e;p<r;p++){let h=t.getX(p),d=t.getY(p),m=t.getZ(p);h<i&&(i=h),d<o&&(o=d),m<s&&(s=m),h>a&&(a=h),d>l&&(l=d),m>c&&(c=m)}return n.min.set(i,o,s),n.max.set(a,l,c),n}var Qd=(n,t,e,r)=>{var i;if(oo(n)){let o=n.geometry.userData.parameters,s=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?dt.copy(n.originalGeometry.boundingSphere.center):(Tv(no,s,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:s.count),no.getCenter(dt)),n.forceComputeSize?no.getSize(le).multiplyScalar(.5):le.set(o.width,o.height,(i=o.depth)!=null?i:0).multiplyScalar(.5)}else if(Ir(n)&&r===!0){let o=n.geometryHelper.getAttribute("position");no.setFromArray(o.array),no.getCenter(dt),no.getSize(le).multiplyScalar(.5)}else dt.setScalar(0),le.setScalar(0);et.copy(t).multiply(n.matrixWorld),le.x===0&&le.y===0&&le.z===0?e.push(new Re(dt.x,dt.y,dt.z).applyMatrix4(et)):e.push(new Re(-le.x,le.y,le.z).add(dt).applyMatrix4(et),new Re(-le.x,-le.y,le.z).add(dt).applyMatrix4(et),new Re(le.x,-le.y,le.z).add(dt).applyMatrix4(et),new Re(le.x,le.y,le.z).add(dt).applyMatrix4(et),new Re(-le.x,le.y,-le.z).add(dt).applyMatrix4(et),new Re(-le.x,-le.y,-le.z).add(dt).applyMatrix4(et),new Re(le.x,-le.y,-le.z).add(dt).applyMatrix4(et),new Re(le.x,le.y,-le.z).add(dt).applyMatrix4(et))},rn=class extends eu{constructor(){super(...arguments);this.matrix=new Il;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let i=new Il().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,i,r)}expandByObjectSize(e,r,i=!1){let o=[];return i===!0?e.traverseEntity(s=>{s.visible&&Qd(s,r,o,e.enableHelper===!0)}):Qd(e,r,o,e.enableHelper===!0),this.setFromPoints(o)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(et.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(le).multiplyScalar(.5),this.getCenter(dt),et.copy(this.matrix).setPosition(dt),this.vertices=[new Re(-le.x,le.y,le.z).applyMatrix4(et),new Re(-le.x,-le.y,le.z).applyMatrix4(et),new Re(le.x,-le.y,le.z).applyMatrix4(et),new Re(le.x,le.y,le.z).applyMatrix4(et),new Re(-le.x,le.y,-le.z).applyMatrix4(et),new Re(-le.x,-le.y,-le.z).applyMatrix4(et),new Re(le.x,-le.y,-le.z).applyMatrix4(et),new Re(le.x,le.y,-le.z).applyMatrix4(et)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Jt(this.vertices[0],this.vertices[3]),new Jt(this.vertices[1],this.vertices[2]),new Jt(this.vertices[5],this.vertices[6]),new Jt(this.vertices[4],this.vertices[7]),new Jt(this.vertices[0],this.vertices[1]),new Jt(this.vertices[3],this.vertices[2]),new Jt(this.vertices[7],this.vertices[6]),new Jt(this.vertices[4],this.vertices[5]),new Jt(this.vertices[0],this.vertices[4]),new Jt(this.vertices[1],this.vertices[5]),new Jt(this.vertices[2],this.vertices[6]),new Jt(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Re))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Re().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Re().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Re().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Re().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Re().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Re().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as Nv,Matrix4 as Mv,Light as Ov}from"three";function on(n){let t=[];for(let e in n){let r=n[e];delete r.metadata,t.push(r)}return t}function Iv(n){let t=[];for(let e in n)t.push(n[e]);return t}var Xs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Ys(e))}isDescendantOf(e){e instanceof Nv&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let i=new Mv().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),i.multiply(e.parent.matrixWorld)),Ys(e)?e.hiddenMatrix.premultiply(i):e.applyMatrix4(i),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let i=0;i<e.children.length;i++){let o=e.children[i];this.add(o.clone())}return this}toJSON(e){let r=e===void 0,i={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},i.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let o={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(o.name=this.name),o.matrix=this.matrix.toArray(),this.castShadow===!0&&(o.castShadow=!0),this.receiveShadow===!0&&(o.receiveShadow=!0),this.visible===!1&&(o.visible=!1),this.frustumCulled===!1&&(o.frustumCulled=!1),this.renderOrder!==0&&(o.renderOrder=this.renderOrder),o.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(o.userData=this.userData),this.children.length>0){o.children=[];for(let s of this.children)(Ys(s)||s instanceof Ov)&&o.children.push(s.toJSON(e).object)}if(r){let s=on(e.geometries),a=on(e.materials),l=on(e.textures),c=on(e.images),p=on(e.interactionStates),h=Iv(e.nodes);s.length>0&&(i.geometries=s),a.length>0&&(i.materials=a),l.length>0&&(i.textures=l),c.length>0&&(i.images=c),p.length>0&&(i.interactionStates=p),h.length>0&&(i.nodes=h)}return i.object=o,i}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var $t=n=>"isEntity"in n;var Kt=n=>class extends Xs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Pl;this._singleBBox=new rn;this._recursiveBBox=new rn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let i of this.children)$t(i)&&i.traverseEntity(o=>{Ir(o)&&o.visible&&(o.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{$t(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let i of this.children)$t(i)&&i.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let i of this.children)i.updateMatrixWorld(r)}updateWorldMatrix(r,i){let o=this.parent;if(r&&o!==null&&o.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),i)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,i=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),i===!0)for(let o of r.children)$t(o)&&this.add(o.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,i=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),i===!0)for(let o of r.children)$t(o)&&this.add(o.clone());return this}keepChildrenMatrixWorld(){let r=new Pl,i=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(i);for(let o of this.children)$t(o)&&o.hiddenMatrix.premultiply(r)}toJSON(r){let i=super.toJSON(r),o=i.object;return this.raycastLock===!0&&(o.raycastLock=!0),this.scaleLock===!0&&(o.scaleLock=!0),o.hiddenMatrix=this.hiddenMatrix.toArray(),i}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let i=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Pl}),this.copy(r),r.children=i,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let i={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ji(i,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let i=P({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return ji(i,r)}fromState(r,i){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as Pv,Vector3 as nn,Euler as tu,MathUtils as Kr}from"three";var mi=class extends Pv{constructor(e,r={}){super();this.object=e;let i=e.recursiveBBox.getSize(new nn),o=.1;this.parameters=ps.defaultData(i.toArray(),o),li(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(i=>i.clone());for(let i of this.children)i.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let i of this.children)i.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,i=e-this.children.length;r<i;++r){let o=this.object.shallowClone(!1);o.visible=!0,this.add(o),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,i=this.children.length-e;r<i;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,i=r.start*Kr.DEG2RAD,o=r.end*Kr.DEG2RAD,s=i-o,a=new tu(r.rotation[0]*Kr.DEG2RAD,r.rotation[1]*Kr.DEG2RAD,r.rotation[2]*Kr.DEG2RAD),l;switch(r.axis){case"z":l=new nn(0,0,1);break;case"y":l=new nn(0,1,0);break;default:case"x":l=new nn(1,0,0);break}for(let[c,p]of this.children.entries()){p.hiddenMatrix.identity(),p.scale.x=r.scale[0],p.scale.y=r.scale[1],p.scale.z=r.scale[2],p.position.setScalar(0);let h=s/e.count*c-i;switch(r.axis){case"x":p.rotation.set(0,h,0);break;case"y":p.rotation.set(0,0,h);break;case"z":p.rotation.set(h,0,0);break}p.translateOnAxis(l,r.radius),p.position.x+=r.position[0],p.position.y+=r.position[1],p.position.z+=r.position[2],r.alignment===!0?(p.rotation.x+=a.x,p.rotation.y+=a.y,p.rotation.z+=a.z):p.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,i=new tu(r.rotation[0]*Kr.DEG2RAD,r.rotation[1]*Kr.DEG2RAD,r.rotation[2]*Kr.DEG2RAD);for(let[o,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*o,s.scale.y=1+(r.scale[1]-1)*o,s.scale.z=1+(r.scale[2]-1)*o,s.rotation.x=i.x*o,s.rotation.y=i.y*o,s.rotation.z=i.z*o,s.position.x=r.position[0]*o,s.position.y=r.position[1]*o,s.position.z=r.position[2]*o}_updateGrid(e){let r=0,i=e.grid;if(i.useCenter===!0){let o={x:i.count[0]%2===0?2:1,y:i.count[1]%2===0?2:1,z:i.count[2]%2===0?2:1},s=new nn(i.size[0]*(i.count[0]-o.x)*.5,i.size[1]*(i.count[1]-o.y)*.5,i.size[2]*(i.count[2]-o.z)*.5);for(let a=0;a<i.count[0];a++)for(let l=0;l<i.count[1];l++)for(let c=0;c<i.count[2];c++){let p=this.children[r++];p.hiddenMatrix.identity(),p.scale.setScalar(1),p.rotation.set(0,0,0),p.position.x=i.size[0]*a-s.x,p.position.y=i.size[1]*l-s.y,p.position.z=i.size[2]*c-s.z}}else for(let o=0;o<i.count[0];o++)for(let s=0;s<i.count[1];s++)for(let a=0;a<i.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=i.size[0]*o,l.position.y=-i.size[1]*s,l.position.z=-i.size[2]*a}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),li(this.parameters,e),this.update(),this}};var at=class extends Kt(Av){constructor(e,r){super(e,r);this.isAbstractMesh=!0;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,i=Ol[r.userData.type],o=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=i.build(i.normalizeInputs(e,o)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,i){en.resizeGeometry(this.geometry,{width:e,height:r,depth:i})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,i=tn(r),o=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(i,o).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new mi(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new mi(this)),this.cloner.fromClonerState(e))}fromState(e,r){var i,o;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(i=e.castShadow)!=null?i:!0,this.receiveShadow=(o=e.receiveShadow)!=null?o:!0),this}};import{NormalBlending as Zv,ShaderMaterial as Qv,FrontSide as eS}from"three";import{CubeReflectionMapping as kv,CubeRefractionMapping as Hv,CubeUVReflectionMapping as qv,LinearEncoding as su,sRGBEncoding as Wv}from"three";var sn=class{constructor(t){t=t!=null?t:{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as Dv}from"three";var de=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Dv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?e:{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?r:{},t.addFlow(r.slot,r.cache,r.context);let i={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),i}build(t,e,r){e=e!=null?e:this.getType(t,e);let i=t.getNodeData(r!=null?r:this);return t.analyzing&&this.appendDepsNode(t,i,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,i,o,s){return""}generate(t,e,r,i,o){return""}parse(t,e,r,i){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let i=t.getTypeLength(r);(i>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=i,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof de&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let i=0;i<this.hashProperties.length;i++)e=this.hashProperties[i],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var Al=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},it=new Al;import{Vector2 as ru}from"three";import{MathUtils as Bv}from"three";var fe=class extends de{constructor(e,r){super(e);this.scope="";r=r!=null?r:{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,i,o){if(r=r!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Bv.generateUUID()),i=e.getUUID(i!=null?i:this.getUUID(),!s);let a=e.getNodeData(i),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,i)):super.build(e,r,i);if(s)return a.name=a.name||super.build(e,r,i),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,i);i=this.getUUID(!1);let c=this.getTemp(e,i);if(c)return e.format(c,l,r);{c=super.generate(e,r,i,a.output,o);let p=this.generate(e,l,i);return e.addNodeCode(c+" = "+p+";"),e.format(c,l,r)}}return super.build(e,r,i)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let i=e.getVars()[r];return i?i.name:void 0}generate(e,r,i,o,s){return this.getShared(e,r)||console.error("TempNode is not shared"),i=i!=null?i:this.uuid,e.getTempVar(i,o!=null?o:this.getType(e),s,this.getLabel()).name}};var Ve=class extends fe{constructor(e,r){r=r!=null?r:{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,i,o,s,a){i=e.getUUID(i!=null?i:this.getUUID()),o=o!=null?o:this.getType(e);let l=e.getNodeData(i);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,i,o,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(o,this,s,a,this.getLabel())),e.format(l.vertex.name,o,r)):(l.fragment||(l.fragment=e.createFragmentUniform(o,this,s,a,this.getLabel())),e.format(l.fragment.name,o,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var bt=class extends Ve{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof ru?e:new ru(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,i,o,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",o,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as iu}from"three";var vt=class extends Ve{constructor(e=0,r,i){super("v3");this.nodeType="Vector3";this.value=e instanceof iu?e:new iu(e,r,i)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,i,o,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",o,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Pr=class extends Ve{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Pt?e:new Pt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,i,o,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",o,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Ev=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,ou=/[a-z_0-9]+/gi,re=class extends fe{constructor(e,r,i,o,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,i,o)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,i,o,s){let a,l=0,c=this.src;if(this.includes)for(let h=0;h<this.includes.length;h++)e.include(this.includes[h],this);for(let h in this.extensions)e.extensions[h]=!0;let p=[];for(;a=ou.exec(this.src);)p.push(a);for(let h=0;h<p.length;h++){let d=p[h],m=d[0],f=this.isMethod?!this.getInputByName(m):!0,T=m;if(this.keywords[m]||this.useKeywords&&f&&it.containsKeyword(m)){let w=this.keywords[m];if(!w){let y=it.getKeywordData(m);y.cache&&(w=e.keywords[m]),w=w||it.getKeyword(m,e),y.cache&&(e.keywords[m]=w)}T=w.build(e)}m!==T&&(c=c.substring(0,d.index+l)+T+c.substring(d.index+m.length+l),l+=T.length-m.length),this.getIncludeByName(T)===void 0&&it.contains(T)&&e.include(it.get(T))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,i,o){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=i!=null?i:{},this.keywords=o!=null?o:{},this.isMethod){let s=Ev.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(ou);if(a){let l=0;for(;l<a.length;){let c=a[l++],p;c==="in"||c==="out"||c==="inout"?p=a[l++]:(p=c,c="");let h=a[l++];this.inputs.push({name:h,type:p,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){var i;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let o={};for(let s in this.keywords)o[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=o,(i=this.includes)!=null&&i.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let i in e.keywords)this.keywords[i]=r.getNode(e.keywords[i])}return e.includes&&r&&(this.includes=e.includes.map(i=>r.getNode(i))),this}};var _v=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Dl=class extends fe{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Dl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,i,o,s){this.src=e||"";let a,l,c="",p=_v.exec(e);this.useDefine=s!=null?s:this.src.charAt(0)==="#",p&&p.length>1?(l=p[1],a=p[2],c=p[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,i,o,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Te=Dl;Te.PI="PI",Te.PI2="PI2",Te.RECIPROCAL_PI="RECIPROCAL_PI",Te.RECIPROCAL_PI2="RECIPROCAL_PI2",Te.LOG2="LOG2",Te.EPSILON="EPSILON";var Gv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
- )*?)}`,"gim"),zv=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),so=class extends fe{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,i,o,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=Gv.exec(e);if(r){let i=r[2],o;for(;o=zv.exec(i);)this.inputs.push({type:o[1],name:o[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ao=class extends fe{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e!=null?e:0}generate(e,r){e.requires.uv[this.index]=!0;let i=this.index>0?this.index+1:"",o=e.isShader("vertex")?"uv"+i:"vUv"+i;return e.format(o,this.getType(e),r)}copy(e){return super.copy(e),this.index=e.index,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.index=this.index),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.index&&(this.index=e.index),this}};it.addKeyword("uv",function(){return new ao});it.addKeyword("uv2",function(){return new ao(1)});import{LinearEncoding as Rv,sRGBEncoding as Vv}from"three";var fi=class extends fe{constructor(e=new de,r){super("v4");this.nodeType="ColorSpace";this.factor=new de;this.input=e,this.method=r!=null?r:fi.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Rv:return["Linear"];case Vv:return["sRGB"];default:return[]}}generate(e,r){var l;let i=this.input.build(e,"v4"),o=this.getType(e),s=fi.Nodes[this.method],a=e.include(s);if(a===fi.LINEAR_TO_LINEAR)return e.format(i,o,r);if(((l=s.inputs)==null?void 0:l.length)===2){let c=this.factor.build(e,"f");return e.format(a+"( "+i+", "+c+" )",o,r)}else return e.format(a+"( "+i+" )",o,r)}fromEncoding(e){let r=fi.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=fi.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}copy(e){return super.copy(e),this.input.copy(e.input),this.method=e.method,this.factor.copy(e.factor),this}},Tt=fi;Tt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
1
+ var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=Object.getOwnPropertyDescriptor,Am=Object.getOwnPropertyDescriptors,Dm=Object.getOwnPropertyNames,fc=Object.getOwnPropertySymbols,Bm=Object.getPrototypeOf,gc=Object.prototype.hasOwnProperty,Em=Object.prototype.propertyIsEnumerable;var yc=(n,t,e)=>t in n?Rn(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,P=(n,t)=>{for(var e in t||(t={}))gc.call(t,e)&&yc(n,e,t[e]);if(fc)for(var e of fc(t))Em.call(t,e)&&yc(n,e,t[e]);return n},H=(n,t)=>Pm(n,Am(t));var _m=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),xc=(n,t)=>{for(var e in t)Rn(n,e,{get:t[e],enumerable:!0})},Gm=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Dm(t))!gc.call(n,o)&&o!==e&&Rn(n,o,{get:()=>t[o],enumerable:!(r=Im(t,o))||r.enumerable});return n};var zm=(n,t,e)=>(e=n!=null?Om(Bm(n)):{},Gm(t||!n||!n.__esModule?Rn(e,"default",{value:n,enumerable:!0}):e,n));var nm=_m((Aa,im)=>{(function(n,t){typeof Aa=="object"&&typeof im<"u"?t(Aa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Aa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,d,u,f,g,w,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],v=[],k=[],L=e==="f"?A:b,m=g=d=0;m<A;m++)v[m]=new Array(L).fill(0);for(m=0;m<b;m++)k[m]=new Array(b).fill(0);var I,x=new Array(b).fill(0);for(m=0;m<A;m++)for(s=0;s<b;s++)v[m][s]=t[m][s];for(m=0;m<b;m++){for(N[m]=d,f=0,l=m+1,s=m;s<A;s++)f+=Math.pow(v[s][m],2);if(f<i)d=0;else for(u=(p=v[m][m])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,v[m][m]=p-d,s=l;s<b;s++){for(f=0,a=m;a<A;a++)f+=v[a][m]*v[a][s];for(p=f/u,a=m;a<A;a++)v[a][s]=v[a][s]+p*v[a][m]}for(x[m]=d,f=0,s=l;s<b;s++)f+=Math.pow(v[m][s],2);if(f<i)d=0;else{for(u=(p=v[m][m+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,v[m][m+1]=p-d,s=l;s<b;s++)N[s]=v[m][s]/u;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=v[s][a]*v[m][a];for(a=l;a<b;a++)v[s][a]=v[s][a]+f*N[a]}}g<(w=Math.abs(x[m])+Math.abs(N[m]))&&(g=w)}if(r)for(m=b-1;0<=m;m--){if(d!==0){for(u=v[m][m+1]*d,s=l;s<b;s++)k[s][m]=v[m][s]/u;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=v[m][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][m]}}for(s=l;s<b;s++)k[m][s]=0,k[s][m]=0;k[m][m]=1,d=N[m],l=m}if(e){if(e==="f")for(m=b;m<A;m++){for(s=b;s<A;s++)v[m][s]=0;v[m][m]=1}for(m=b-1;0<=m;m--){for(l=m+1,d=x[m],s=l;s<L;s++)v[m][s]=0;if(d!==0){for(u=v[m][m]*d,s=l;s<L;s++){for(f=0,a=l;a<A;a++)f+=v[a][m]*v[a][s];for(p=f/u,a=m;a<A;a++)v[a][s]=v[a][s]+p*v[a][m]}for(s=m;s<A;s++)v[s][m]=v[s][m]/d}else for(s=m;s<A;s++)v[s][m]=0;v[m][m]=v[m][m]+1}}for(o*=g,a=b-1;0<=a;a--)for(var C=0;C<50;C++){for(I=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){I=!0;break}if(Math.abs(x[l-1])<=o)break}if(!I){for(h=0,c=l-(f=1),m=l;m<a+1&&(p=f*N[m],N[m]=h*N[m],!(Math.abs(p)<=o));m++)if(d=x[m],x[m]=Math.sqrt(p*p+d*d),h=d/(u=x[m]),f=-p/u,e)for(s=0;s<A;s++)w=v[s][c],y=v[s][m],v[s][c]=w*h+y*f,v[s][m]=-w*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<b;s++)k[s][a]=-k[s][a];break}for(g=x[l],p=(((w=x[a-1])-y)*(w+y)+((d=N[a-1])-(u=N[a]))*(d+u))/(2*u*w),d=Math.sqrt(p*p+1),p=((g-y)*(g+y)+u*(w/(p<0?p-d:p+d)-u))/g,m=l+(f=h=1);m<a+1;m++){if(d=N[m],w=x[m],u=f*d,d*=h,y=Math.sqrt(p*p+u*u),p=g*(h=p/(N[m-1]=y))+d*(f=u/y),d=-g*f+d*h,u=w*f,w*=h,r)for(s=0;s<b;s++)g=k[s][m-1],y=k[s][m],k[s][m-1]=g*h+y*f,k[s][m]=-g*f+y*h;if(y=Math.sqrt(p*p+u*u),p=(h=p/(x[m-1]=y))*d+(f=u/y)*w,g=-f*d+h*w,e)for(s=0;s<A;s++)w=v[s][m-1],y=v[s][m],v[s][m-1]=w*h+y*f,v[s][m]=-w*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(m=0;m<b;m++)x[m]<o&&(x[m]=0);return{u:v,q:x,v:k}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as m1,Loader as f1}from"three";function bc(n){return Array.isArray(n)?n:[n]}var Rm=typeof global=="object"&&global&&global.Object===Object&&global,Fn=Rm;var Fm=typeof self=="object"&&self&&self.Object===Object&&self,Vm=Fn||Fm||Function("return this")(),Qe=Vm;var jm=Qe.Symbol,Ct=jm;var vc=Object.prototype,Um=vc.hasOwnProperty,km=vc.toString,_i=Ct?Ct.toStringTag:void 0;function Hm(n){var t=Um.call(n,_i),e=n[_i];try{n[_i]=void 0;var r=!0}catch{}var o=km.call(n);return r&&(t?n[_i]=e:delete n[_i]),o}var Sc=Hm;var qm=Object.prototype,Wm=qm.toString;function $m(n){return Wm.call(n)}var wc=$m;var Jm="[object Null]",Km="[object Undefined]",Lc=Ct?Ct.toStringTag:void 0;function Ym(n){return n==null?n===void 0?Km:Jm:Lc&&Lc in Object(n)?Sc(n):wc(n)}var zt=Ym;function Xm(n){return n!=null&&typeof n=="object"}var xt=Xm;var Zm="[object Symbol]";function Qm(n){return typeof n=="symbol"||xt(n)&&zt(n)==Zm}var Po=Qm;function ef(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Vn=ef;var tf=Array.isArray,et=tf;var rf=1/0,Cc=Ct?Ct.prototype:void 0,Tc=Cc?Cc.toString:void 0;function Nc(n){if(typeof n=="string")return n;if(et(n))return Vn(n,Nc)+"";if(Po(n))return Tc?Tc.call(n):"";var t=n+"";return t=="0"&&1/n==-rf?"-0":t}var Mc=Nc;function of(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var bt=of;function nf(n){return n}var jn=nf;var sf="[object AsyncFunction]",af="[object Function]",lf="[object GeneratorFunction]",cf="[object Proxy]";function hf(n){if(!bt(n))return!1;var t=zt(n);return t==af||t==lf||t==sf||t==cf}var Io=hf;var pf=Qe["__core-js_shared__"],Un=pf;var Oc=function(){var n=/[^.]+$/.exec(Un&&Un.keys&&Un.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function df(n){return!!Oc&&Oc in n}var Pc=df;var uf=Function.prototype,mf=uf.toString;function ff(n){if(n!=null){try{return mf.call(n)}catch{}try{return n+""}catch{}}return""}var Nr=ff;var yf=/[\\^$.*+?()[\]{}|]/g,gf=/^\[object .+?Constructor\]$/,xf=Function.prototype,bf=Object.prototype,vf=xf.toString,Sf=bf.hasOwnProperty,wf=RegExp("^"+vf.call(Sf).replace(yf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Lf(n){if(!bt(n)||Pc(n))return!1;var t=Io(n)?wf:gf;return t.test(Nr(n))}var Ic=Lf;function Cf(n,t){return n==null?void 0:n[t]}var Ac=Cf;function Tf(n,t){var e=Ac(n,t);return Ic(e)?e:void 0}var It=Tf;var Nf=It(Qe,"WeakMap"),kn=Nf;var Dc=Object.create,Mf=function(){function n(){}return function(t){if(!bt(t))return{};if(Dc)return Dc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Bc=Mf;function Of(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Ec=Of;function Pf(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Hn=Pf;var If=800,Af=16,Df=Date.now;function Bf(n){var t=0,e=0;return function(){var r=Df(),o=Af-(r-e);if(e=r,o>0){if(++t>=If)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var _c=Bf;function Ef(n){return function(){return n}}var Gc=Ef;var _f=function(){try{var n=It(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Ao=_f;var Gf=Ao?function(n,t){return Ao(n,"toString",{configurable:!0,enumerable:!1,value:Gc(t),writable:!0})}:jn,zc=Gf;var zf=_c(zc),qn=zf;function Rf(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Rc=Rf;var Ff=9007199254740991,Vf=/^(?:0|[1-9]\d*)$/;function jf(n,t){var e=typeof n;return t=t==null?Ff:t,!!t&&(e=="number"||e!="symbol"&&Vf.test(n))&&n>-1&&n%1==0&&n<t}var Wn=jf;function Uf(n,t,e){t=="__proto__"&&Ao?Ao(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Do=Uf;function kf(n,t){return n===t||n!==n&&t!==t}var Vr=kf;var Hf=Object.prototype,qf=Hf.hasOwnProperty;function Wf(n,t,e){var r=n[t];(!(qf.call(n,t)&&Vr(r,e))||e===void 0&&!(t in n))&&Do(n,t,e)}var $n=Wf;function $f(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],l=r?r(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),o?Do(e,a,l):$n(e,a,l)}return e}var kt=$f;var Fc=Math.max;function Jf(n,t,e){return t=Fc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Fc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Ec(n,this,a)}}var Jn=Jf;function Kf(n,t){return qn(Jn(n,t,jn),n+"")}var Vc=Kf;var Yf=9007199254740991;function Xf(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Yf}var Kn=Xf;function Zf(n){return n!=null&&Kn(n.length)&&!Io(n)}var jr=Zf;function Qf(n,t,e){if(!bt(e))return!1;var r=typeof t;return(r=="number"?jr(e)&&Wn(t,e.length):r=="string"&&t in e)?Vr(e[t],n):!1}var jc=Qf;function ey(n){return Vc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&jc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Uc=ey;var ty=Object.prototype;function ry(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||ty;return n===e}var Bo=ry;function oy(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var kc=oy;var iy="[object Arguments]";function ny(n){return xt(n)&&zt(n)==iy}var Ea=ny;var Hc=Object.prototype,sy=Hc.hasOwnProperty,ay=Hc.propertyIsEnumerable,ly=Ea(function(){return arguments}())?Ea:function(n){return xt(n)&&sy.call(n,"callee")&&!ay.call(n,"callee")},co=ly;function cy(){return!1}var qc=cy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wc=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,hy=Wc&&Wc.exports===Jc,$c=hy?Qe.Buffer:void 0,py=$c?$c.isBuffer:void 0,dy=py||qc,Eo=dy;var uy="[object Arguments]",my="[object Array]",fy="[object Boolean]",yy="[object Date]",gy="[object Error]",xy="[object Function]",by="[object Map]",vy="[object Number]",Sy="[object Object]",wy="[object RegExp]",Ly="[object Set]",Cy="[object String]",Ty="[object WeakMap]",Ny="[object ArrayBuffer]",My="[object DataView]",Oy="[object Float32Array]",Py="[object Float64Array]",Iy="[object Int8Array]",Ay="[object Int16Array]",Dy="[object Int32Array]",By="[object Uint8Array]",Ey="[object Uint8ClampedArray]",_y="[object Uint16Array]",Gy="[object Uint32Array]",Ue={};Ue[Oy]=Ue[Py]=Ue[Iy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=Ue[Gy]=!0;Ue[uy]=Ue[my]=Ue[Ny]=Ue[fy]=Ue[My]=Ue[yy]=Ue[gy]=Ue[xy]=Ue[by]=Ue[vy]=Ue[Sy]=Ue[wy]=Ue[Ly]=Ue[Cy]=Ue[Ty]=!1;function zy(n){return xt(n)&&Kn(n.length)&&!!Ue[zt(n)]}var Kc=zy;function Ry(n){return function(t){return n(t)}}var _o=Ry;var Yc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gi=Yc&&typeof module=="object"&&module&&!module.nodeType&&module,Fy=Gi&&Gi.exports===Yc,_a=Fy&&Fn.process,Vy=function(){try{var n=Gi&&Gi.require&&Gi.require("util").types;return n||_a&&_a.binding&&_a.binding("util")}catch{}}(),Mr=Vy;var Xc=Mr&&Mr.isTypedArray,jy=Xc?_o(Xc):Kc,Yn=jy;var Uy=Object.prototype,ky=Uy.hasOwnProperty;function Hy(n,t){var e=et(n),r=!e&&co(n),o=!e&&!r&&Eo(n),i=!e&&!r&&!o&&Yn(n),s=e||r||o||i,a=s?kc(n.length,String):[],l=a.length;for(var c in n)(t||ky.call(n,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Wn(c,l)))&&a.push(c);return a}var Xn=Hy;function qy(n,t){return function(e){return n(t(e))}}var Zn=qy;var Wy=Zn(Object.keys,Object),Zc=Wy;var $y=Object.prototype,Jy=$y.hasOwnProperty;function Ky(n){if(!Bo(n))return Zc(n);var t=[];for(var e in Object(n))Jy.call(n,e)&&e!="constructor"&&t.push(e);return t}var Qc=Ky;function Yy(n){return jr(n)?Xn(n):Qc(n)}var Go=Yy;function Xy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var eh=Xy;var Zy=Object.prototype,Qy=Zy.hasOwnProperty;function eg(n){if(!bt(n))return eh(n);var t=Bo(n),e=[];for(var r in n)r=="constructor"&&(t||!Qy.call(n,r))||e.push(r);return e}var th=eg;function tg(n){return jr(n)?Xn(n,!0):th(n)}var lr=tg;var rg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,og=/^\w*$/;function ig(n,t){if(et(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Po(n)?!0:og.test(n)||!rg.test(n)||t!=null&&n in Object(t)}var rh=ig;var ng=It(Object,"create"),Or=ng;function sg(){this.__data__=Or?Or(null):{},this.size=0}var oh=sg;function ag(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var ih=ag;var lg="__lodash_hash_undefined__",cg=Object.prototype,hg=cg.hasOwnProperty;function pg(n){var t=this.__data__;if(Or){var e=t[n];return e===lg?void 0:e}return hg.call(t,n)?t[n]:void 0}var nh=pg;var dg=Object.prototype,ug=dg.hasOwnProperty;function mg(n){var t=this.__data__;return Or?t[n]!==void 0:ug.call(t,n)}var sh=mg;var fg="__lodash_hash_undefined__";function yg(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Or&&t===void 0?fg:t,this}var ah=yg;function zo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}zo.prototype.clear=oh;zo.prototype.delete=ih;zo.prototype.get=nh;zo.prototype.has=sh;zo.prototype.set=ah;var Ga=zo;function gg(){this.__data__=[],this.size=0}var lh=gg;function xg(n,t){for(var e=n.length;e--;)if(Vr(n[e][0],t))return e;return-1}var Ur=xg;var bg=Array.prototype,vg=bg.splice;function Sg(n){var t=this.__data__,e=Ur(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():vg.call(t,e,1),--this.size,!0}var ch=Sg;function wg(n){var t=this.__data__,e=Ur(t,n);return e<0?void 0:t[e][1]}var hh=wg;function Lg(n){return Ur(this.__data__,n)>-1}var ph=Lg;function Cg(n,t){var e=this.__data__,r=Ur(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var dh=Cg;function Ro(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ro.prototype.clear=lh;Ro.prototype.delete=ch;Ro.prototype.get=hh;Ro.prototype.has=ph;Ro.prototype.set=dh;var kr=Ro;var Tg=It(Qe,"Map"),Hr=Tg;function Ng(){this.size=0,this.__data__={hash:new Ga,map:new(Hr||kr),string:new Ga}}var uh=Ng;function Mg(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var mh=Mg;function Og(n,t){var e=n.__data__;return mh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var qr=Og;function Pg(n){var t=qr(this,n).delete(n);return this.size-=t?1:0,t}var fh=Pg;function Ig(n){return qr(this,n).get(n)}var yh=Ig;function Ag(n){return qr(this,n).has(n)}var gh=Ag;function Dg(n,t){var e=qr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var xh=Dg;function Fo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Fo.prototype.clear=uh;Fo.prototype.delete=fh;Fo.prototype.get=yh;Fo.prototype.has=gh;Fo.prototype.set=xh;var zi=Fo;var Bg="Expected a function";function za(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(Bg);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(za.Cache||zi),e}za.Cache=zi;var bh=za;var Eg=500;function _g(n){var t=bh(n,function(r){return e.size===Eg&&e.clear(),r}),e=t.cache;return t}var vh=_g;var Gg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zg=/\\(\\)?/g,Rg=vh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(Gg,function(e,r,o,i){t.push(o?i.replace(zg,"$1"):r||e)}),t}),Sh=Rg;function Fg(n){return n==null?"":Mc(n)}var wh=Fg;function Vg(n,t){return et(n)?n:rh(n,t)?[n]:Sh(wh(n))}var Vo=Vg;var jg=1/0;function Ug(n){if(typeof n=="string"||Po(n))return n;var t=n+"";return t=="0"&&1/n==-jg?"-0":t}var Qn=Ug;function kg(n,t){t=Vo(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Qn(t[e++])];return e&&e==r?n:void 0}var Lh=kg;function Hg(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var jo=Hg;var Ch=Ct?Ct.isConcatSpreadable:void 0;function qg(n){return et(n)||co(n)||!!(Ch&&n&&n[Ch])}var Th=qg;function Nh(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Th),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Nh(a,t-1,e,r,o):jo(o,a):r||(o[o.length]=a)}return o}var Mh=Nh;function Wg(n){var t=n==null?0:n.length;return t?Mh(n,1):[]}var Oh=Wg;function $g(n){return qn(Jn(n,void 0,Oh),n+"")}var Ph=$g;var Jg=Zn(Object.getPrototypeOf,Object),Uo=Jg;var Kg="[object Object]",Yg=Function.prototype,Xg=Object.prototype,Ih=Yg.toString,Zg=Xg.hasOwnProperty,Qg=Ih.call(Object);function ex(n){if(!xt(n)||zt(n)!=Kg)return!1;var t=Uo(n);if(t===null)return!0;var e=Zg.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ih.call(e)==Qg}var es=ex;function tx(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Ah=tx;function rx(){this.__data__=new kr,this.size=0}var Dh=rx;function ox(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bh=ox;function ix(n){return this.__data__.get(n)}var Eh=ix;function nx(n){return this.__data__.has(n)}var _h=nx;var sx=200;function ax(n,t){var e=this.__data__;if(e instanceof kr){var r=e.__data__;if(!Hr||r.length<sx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new zi(r)}return e.set(n,t),this.size=e.size,this}var Gh=ax;function ko(n){var t=this.__data__=new kr(n);this.size=t.size}ko.prototype.clear=Dh;ko.prototype.delete=Bh;ko.prototype.get=Eh;ko.prototype.has=_h;ko.prototype.set=Gh;var ts=ko;function lx(n,t){return n&&kt(t,Go(t),n)}var zh=lx;function cx(n,t){return n&&kt(t,lr(t),n)}var Rh=cx;var Uh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fh=Uh&&typeof module=="object"&&module&&!module.nodeType&&module,hx=Fh&&Fh.exports===Uh,Vh=hx?Qe.Buffer:void 0,jh=Vh?Vh.allocUnsafe:void 0;function px(n,t){if(t)return n.slice();var e=n.length,r=jh?jh(e):new n.constructor(e);return n.copy(r),r}var rs=px;function dx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var kh=dx;function ux(){return[]}var os=ux;var mx=Object.prototype,fx=mx.propertyIsEnumerable,Hh=Object.getOwnPropertySymbols,yx=Hh?function(n){return n==null?[]:(n=Object(n),kh(Hh(n),function(t){return fx.call(n,t)}))}:os,Ho=yx;function gx(n,t){return kt(n,Ho(n),t)}var qh=gx;var xx=Object.getOwnPropertySymbols,bx=xx?function(n){for(var t=[];n;)jo(t,Ho(n)),n=Uo(n);return t}:os,is=bx;function vx(n,t){return kt(n,is(n),t)}var Wh=vx;function Sx(n,t,e){var r=t(n);return et(n)?r:jo(r,e(n))}var ns=Sx;function wx(n){return ns(n,Go,Ho)}var $h=wx;function Lx(n){return ns(n,lr,is)}var ss=Lx;var Cx=It(Qe,"DataView"),as=Cx;var Tx=It(Qe,"Promise"),ls=Tx;var Nx=It(Qe,"Set"),cs=Nx;var Jh="[object Map]",Mx="[object Object]",Kh="[object Promise]",Yh="[object Set]",Xh="[object WeakMap]",Zh="[object DataView]",Ox=Nr(as),Px=Nr(Hr),Ix=Nr(ls),Ax=Nr(cs),Dx=Nr(kn),ho=zt;(as&&ho(new as(new ArrayBuffer(1)))!=Zh||Hr&&ho(new Hr)!=Jh||ls&&ho(ls.resolve())!=Kh||cs&&ho(new cs)!=Yh||kn&&ho(new kn)!=Xh)&&(ho=function(n){var t=zt(n),e=t==Mx?n.constructor:void 0,r=e?Nr(e):"";if(r)switch(r){case Ox:return Zh;case Px:return Jh;case Ix:return Kh;case Ax:return Yh;case Dx:return Xh}return t});var qo=ho;var Bx=Object.prototype,Ex=Bx.hasOwnProperty;function _x(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Ex.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Qh=_x;var Gx=Qe.Uint8Array,Ra=Gx;function zx(n){var t=new n.constructor(n.byteLength);return new Ra(t).set(new Ra(n)),t}var Wo=zx;function Rx(n,t){var e=t?Wo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ep=Rx;var Fx=/\w*$/;function Vx(n){var t=new n.constructor(n.source,Fx.exec(n));return t.lastIndex=n.lastIndex,t}var tp=Vx;var rp=Ct?Ct.prototype:void 0,op=rp?rp.valueOf:void 0;function jx(n){return op?Object(op.call(n)):{}}var ip=jx;function Ux(n,t){var e=t?Wo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var hs=Ux;var kx="[object Boolean]",Hx="[object Date]",qx="[object Map]",Wx="[object Number]",$x="[object RegExp]",Jx="[object Set]",Kx="[object String]",Yx="[object Symbol]",Xx="[object ArrayBuffer]",Zx="[object DataView]",Qx="[object Float32Array]",e0="[object Float64Array]",t0="[object Int8Array]",r0="[object Int16Array]",o0="[object Int32Array]",i0="[object Uint8Array]",n0="[object Uint8ClampedArray]",s0="[object Uint16Array]",a0="[object Uint32Array]";function l0(n,t,e){var r=n.constructor;switch(t){case Xx:return Wo(n);case kx:case Hx:return new r(+n);case Zx:return ep(n,e);case Qx:case e0:case t0:case r0:case o0:case i0:case n0:case s0:case a0:return hs(n,e);case qx:return new r;case Wx:case Kx:return new r(n);case $x:return tp(n);case Jx:return new r;case Yx:return ip(n)}}var np=l0;function c0(n){return typeof n.constructor=="function"&&!Bo(n)?Bc(Uo(n)):{}}var ps=c0;var h0="[object Map]";function p0(n){return xt(n)&&qo(n)==h0}var sp=p0;var ap=Mr&&Mr.isMap,d0=ap?_o(ap):sp,lp=d0;var u0="[object Set]";function m0(n){return xt(n)&&qo(n)==u0}var cp=m0;var hp=Mr&&Mr.isSet,f0=hp?_o(hp):cp,pp=f0;var y0=1,g0=2,x0=4,dp="[object Arguments]",b0="[object Array]",v0="[object Boolean]",S0="[object Date]",w0="[object Error]",up="[object Function]",L0="[object GeneratorFunction]",C0="[object Map]",T0="[object Number]",mp="[object Object]",N0="[object RegExp]",M0="[object Set]",O0="[object String]",P0="[object Symbol]",I0="[object WeakMap]",A0="[object ArrayBuffer]",D0="[object DataView]",B0="[object Float32Array]",E0="[object Float64Array]",_0="[object Int8Array]",G0="[object Int16Array]",z0="[object Int32Array]",R0="[object Uint8Array]",F0="[object Uint8ClampedArray]",V0="[object Uint16Array]",j0="[object Uint32Array]",Re={};Re[dp]=Re[b0]=Re[A0]=Re[D0]=Re[v0]=Re[S0]=Re[B0]=Re[E0]=Re[_0]=Re[G0]=Re[z0]=Re[C0]=Re[T0]=Re[mp]=Re[N0]=Re[M0]=Re[O0]=Re[P0]=Re[R0]=Re[F0]=Re[V0]=Re[j0]=!0;Re[w0]=Re[up]=Re[I0]=!1;function ds(n,t,e,r,o,i){var s,a=t&y0,l=t&g0,c=t&x0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!bt(n))return n;var h=et(n);if(h){if(s=Qh(n),!a)return Hn(n,s)}else{var p=qo(n),d=p==up||p==L0;if(Eo(n))return rs(n,a);if(p==mp||p==dp||d&&!o){if(s=l||d?{}:ps(n),!a)return l?Wh(n,Rh(s,n)):qh(n,zh(s,n))}else{if(!Re[p])return o?n:{};s=np(n,p,a)}}i||(i=new ts);var u=i.get(n);if(u)return u;i.set(n,s),pp(n)?n.forEach(function(w){s.add(ds(w,t,e,w,n,i))}):lp(n)&&n.forEach(function(w,y){s.set(y,ds(w,t,e,y,n,i))});var f=c?l?ss:$h:l?lr:Go,g=h?void 0:f(n);return Rc(g||n,function(w,y){g&&(y=w,w=n[y]),$n(s,y,ds(w,t,e,y,n,i))}),s}var us=ds;var U0=1,k0=4;function H0(n){return us(n,U0|k0)}var Ri=H0;function q0(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var l=s[n?a:++o];if(e(i[l],l,i)===!1)break}return t}}var fp=q0;var W0=fp(),yp=W0;function $0(n,t,e){(e!==void 0&&!Vr(n[t],e)||e===void 0&&!(t in n))&&Do(n,t,e)}var Fi=$0;function J0(n){return xt(n)&&jr(n)}var gp=J0;function K0(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Vi=K0;function Y0(n){return kt(n,lr(n))}var xp=Y0;function X0(n,t,e,r,o,i,s){var a=Vi(n,e),l=Vi(t,e),c=s.get(l);if(c){Fi(n,e,c);return}var h=i?i(a,l,e+"",n,t,s):void 0,p=h===void 0;if(p){var d=et(l),u=!d&&Eo(l),f=!d&&!u&&Yn(l);h=l,d||u||f?et(a)?h=a:gp(a)?h=Hn(a):u?(p=!1,h=rs(l,!0)):f?(p=!1,h=hs(l,!0)):h=[]:es(l)||co(l)?(h=a,co(a)?h=xp(a):(!bt(a)||Io(a))&&(h=ps(l))):p=!1}p&&(s.set(l,h),o(h,l,r,i,s),s.delete(l)),Fi(n,e,h)}var bp=X0;function vp(n,t,e,r,o){n!==t&&yp(t,function(i,s){if(o||(o=new ts),bt(i))bp(n,t,s,e,vp,r,o);else{var a=r?r(Vi(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Fi(n,s,a)}},lr)}var Sp=vp;function Z0(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var wp=Z0;function Q0(n,t){return t.length<2?n:Lh(n,Ah(t,0,-1))}var Lp=Q0;var eb=Uc(function(n,t,e){Sp(n,t,e)}),po=eb;function tb(n,t){return t=Vo(t,n),n=Lp(n,t),n==null||delete n[Qn(wp(t))]}var Cp=tb;function rb(n){return es(n)?void 0:n}var Tp=rb;var ob=1,ib=2,nb=4,sb=Ph(function(n,t){var e={};if(n==null)return e;var r=!1;t=Vn(t,function(i){return i=Vo(i,n),r||(r=i.length>1),i}),kt(n,ss(n),e),r&&(e=us(e,ob|ib|nb,Tp));for(var o=t.length;o--;)Cp(e,t[o]);return e}),$o=sb;var Jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Jo||(Jo={}));var uo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(uo||(uo={}));var Np;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(Np||(Np={}));var Ko;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(Ko||(Ko={}));var Mp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(Mp||(Mp={}));var Wr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i!=null?i:o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=i[3]*s[l]+i[7]*s[l+1]+i[11]*s[l+2]+i[15];a[l]=(i[0]*s[l]+i[4]*s[l+1]+i[8]*s[l+2]+i[12])/h,a[l+1]=(i[1]*s[l]+i[5]*s[l+1]+i[9]*s[l+2]+i[13])/h,a[l+2]=(i[2]*s[l]+i[6]*s[l+1]+i[10]*s[l+2]+i[14])/h}return a}o.applyMatrix4=r})(Wr||(Wr={}));var Rt;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function i(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=i;function s(c,h){return c.r===h.r&&c.g===h.g&&c.b===h.b}l.equals=s;function a(c,h,p){return{r:c.r+(h.r-c.r)*p,g:c.g+(h.g-c.g)*p,b:c.b+(h.b-c.b)*p}}l.lerp=a})(Rt||(Rt={}));var cr;(s=>{s.white=H(P({},Rt.white),{a:1});function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return H(P({},Rt.fromHex(a)),{a:l})}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,l){return Rt.equals(a,l)&&a.a===l.a}s.equals=o;function i(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=i})(cr||(cr={}));var ms;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ms||(ms={}));var Op;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Op||(Op={}));var Pp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Pp||(Pp={}));var fs;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(fs||(fs={}));var Ht=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i=H(P({},r),{[t]:e});return Object.setPrototypeOf(i,Ht.prototype),i}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o:this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,a=H(P({},e),{[i]:s});return Object.setPrototypeOf(a,Ht.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i=P({},e);return Object.setPrototypeOf(i,Ht.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function ji(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&ji(r)}return Object.freeze(n)}function Ip(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var ys=class extends Error{};function hr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function Ap(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 Dp(){return typeof process<"u"}function Bp(n,t){for(let e of n)t(e.id,e.data),Bp(e.children,t)}function Ep(n,t){t(n.id,n.data);for(let e of n.children)Ep(e,t)}var qt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Ep(o,r)}}traverse(e){Bp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]=H(P({},l),{data:r}),this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(h=>h.id===l);if(c<0)throw new Error;i=[...i],i[c]=H(P({},i[c]),{children:a})}Object.setPrototypeOf(i,qt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),h={fi:o,id:i,data:s,children:a};return c=[...c,h],c.sort((d,u)=>d.fi-u.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(c=>c.id===r);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:H(P({type:7},a),{parent:o})}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let u=r;for(;u!==null;){if(u===void 0)throw new Error;if(u===i)throw new ys("cyclic tree");u=this.parent(u)}}let s=this.parent(i);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(u=>u.id===i);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let d=h.fi;return h=H(P({},h),{fi:o}),l=[...l,h],l.sort((u,f)=>u.fi-f.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:d,id:i}}}previous(e,r){if(r===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===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(P(P({},o),i))}r.sort((o,i)=>Ip(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return H(P({},s),{sortKey:o})}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return hr(0,o,o);{let s=i[0].fi;return hr(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(l=>l.fi>s.fi);if(a===void 0){let l=i[i.length-1].fi;return hr(l,l+o,o)}else return hr(s.fi,a.fi,o)}}};var gs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s=P({},e),a=!1;if(o)for(let l of Object.keys(o)){i[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(gs||(gs={}));var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(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){var r;return(r=this.get(e))==null?void 0:r.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]=H(P({},a),{data:r}),this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return Dp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((c,h)=>c.fi-h.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:P({type:4},s)}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(h=>h.id===o);if(s===-1)return null;let a=i[s].fi,l=H(P({},i[s]),{fi:r});return i[s]=l,i.sort((h,p)=>h.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return hr(0,r,r);{let i=o[0].fi;return hr(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return hr(a,a+r,r)}else return hr(i.fi,s.fi,r)}}};var _p=Symbol(),bs=Symbol(),Yo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof xs);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[bs];r&&r(),delete this._children[t]}}}},Va=class extends Yo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current=H(P({},this._current),{[t]:e})}runOp(t){this.reportOp(t,gs.runOp(this._current,t))}},ja=class extends Yo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(P({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Ht.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Gp={get(n,t){if(t===bs)return()=>{n._parent=null};if(t===_p)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=vs(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t 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,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},ab=H(P({},Gp),{set(n,t,e){var o;let r={type:0,props:{[t]:(o=Ha(e))!=null?o:e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}}),lb=H(P({},Gp),{set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}}),Xo=class extends Yo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[bs]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=(a=e.get(t))==null?void 0:a.data,s=vs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Zo=class extends Yo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[bs]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return H(P({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=(a=e.get(t))==null?void 0:a.data,s=vs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Fa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ss.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push(H(P({},t),{path:e}))}var xs=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Fa(this.ts,e,t),Fa(this.actual,r,t),Fa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function vs(n,t,e){return e instanceof qt?new Xo(n,t,e):e instanceof Je?new Zo(n,t,e):e instanceof Ht?new Proxy(new ja(n,t,e),lb):e!==null&&typeof e=="object"?Ap(e)?e:new Proxy(new Va(n,t,e),ab):e}function Ua(n){let t=new xs(n);return[vs(t,"",n),t]}function ka(n,t){let[e,r]=Ua(n);return t(e),r.result()}function Ha(n){return n instanceof Xo||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[_p]:n}var Ss;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l=P({},i);return Object.keys(a).forEach(c=>{delete l[c]}),l}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof qt||o instanceof Xo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Je||o instanceof Zo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(Ss||(Ss={}));var ws=class{},Ui=class extends ws{constructor(e){super();this.id=e}},ki=class extends ws{constructor(e){super();this.data=e}};var Wa;try{Wa=new TextDecoder}catch{}var ee,Jr,S=0;var Hp=[],$a=Hp,Ja=0,At={},Pe,$r,Wt=0,pr=0,Ft,Pr,Tt=[],Ie,zp={useRecords:!1,mapsAsObjects:!0},Hi=class{},Ya=new Hi;Ya.name="MessagePack 0xC1";var Qo=!1,dr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(ee)return Kp(()=>(Cs(),this?this.unpack(t,e):dr.prototype.unpack.call(zp,t,e)));Jr=e>-1?e:t.length,S=0,Ja=0,pr=0,$r=null,$a=Hp,Ft=null,ee=t;try{Ie=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof dr){if(At=this,this.structures)return Pe=this.structures,Ls();(!Pe||Pe.length>0)&&(Pe=[])}else At=zp,(!Pe||Pe.length>0)&&(Pe=[]);return Ls()}unpackMultiple(t,e){let r,o=0;try{Qo=!0;let i=t.length,s=this?this.unpack(t,i):Ms.unpack(t,i);if(e){for(e(s);S<i;)if(o=S,e(Ls())===!1)return}else{for(r=[s];S<i;)o=S,r.push(Ls());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Qo=!1,Cs()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ls(){try{if(!At.trusted&&!Qo){let t=Pe.sharedLength||0;t<Pe.length&&(Pe.length=t)}let n=Ke();if(S==Jr)Pe.restoreStructures&&Rp(),Pe=null,ee=null,Pr&&(Pr=null);else if(S>Jr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Qo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Pe.restoreStructures&&Rp(),Cs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Rp(){for(let n in Pe.restoreStructures)Pe[n]=Pe.restoreStructures[n];Pe.restoreStructures=null}function Ke(){let n=ee[S++];if(n<160)if(n<128){if(n<64)return n;{let t=Pe[n&63]||At.getStructures&&qp()[n&63];return t?(t.read||(t.read=Xa(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[$p()]=Ke();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ke(),Ke());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ke();return t}else if(n<192){let t=n-160;if(pr>=S)return $r.slice(S-Wt,(S+=t)-Wt);if(pr==0&&Jr<140){let e=t<16?Za(t):Wp(t);if(e!=null)return e}return Ka(t)}else{let t;switch(n){case 192:return null;case 193:return Ft?(t=Ke(),t>0?Ft[1].slice(Ft.position1,Ft.position1+=t):Ft[0].slice(Ft.position0,Ft.position0-=t)):Ya;case 194:return!1;case 195:return!0;case 196:return qa(ee[S++]);case 197:return t=Ie.getUint16(S),S+=2,qa(t);case 198:return t=Ie.getUint32(S),S+=4,qa(t);case 199:return mo(ee[S++]);case 200:return t=Ie.getUint16(S),S+=2,mo(t);case 201:return t=Ie.getUint32(S),S+=4,mo(t);case 202:if(t=Ie.getFloat32(S),At.useFloat32>2){let e=Ns[(ee[S]&127)<<1|ee[S+1]>>7];return S+=4,(e*t+(t>0?.5:-.5)>>0)/e}return S+=4,t;case 203:return t=Ie.getFloat64(S),S+=8,t;case 204:return ee[S++];case 205:return t=Ie.getUint16(S),S+=2,t;case 206:return t=Ie.getUint32(S),S+=4,t;case 207:return At.int64AsNumber?(t=Ie.getUint32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigUint64(S),S+=8,t;case 208:return Ie.getInt8(S++);case 209:return t=Ie.getInt16(S),S+=2,t;case 210:return t=Ie.getInt32(S),S+=4,t;case 211:return At.int64AsNumber?(t=Ie.getInt32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigInt64(S),S+=8,t;case 212:if(t=ee[S++],t==114)return kp(ee[S++]&63);{let e=Tt[t];if(e)return e.read?(S++,e.read(Ke())):e.noBuffer?(S++,e()):e(ee.subarray(S,++S));throw new Error("Unknown extension "+t)}case 213:return t=ee[S],t==114?(S++,kp(ee[S++]&63,ee[S++])):mo(2);case 214:return mo(4);case 215:return mo(8);case 216:return mo(16);case 217:return t=ee[S++],pr>=S?$r.slice(S-Wt,(S+=t)-Wt):hb(t);case 218:return t=Ie.getUint16(S),S+=2,pr>=S?$r.slice(S-Wt,(S+=t)-Wt):pb(t);case 219:return t=Ie.getUint32(S),S+=4,pr>=S?$r.slice(S-Wt,(S+=t)-Wt):db(t);case 220:return t=Ie.getUint16(S),S+=2,Vp(t);case 221:return t=Ie.getUint32(S),S+=4,Vp(t);case 222:return t=Ie.getUint16(S),S+=2,jp(t);case 223:return t=Ie.getUint32(S),S+=4,jp(t);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 cb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Xa(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>cb.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ke);return n.highByte===0&&(n.read=Fp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Ke()}return r}return e.count=0,n.highByte===0?Fp(t,e):e}var Fp=(n,t)=>function(){let e=ee[S++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Pe[r]||qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Xa(o,n)),o.read()};function qp(){let n=Kp(()=>(ee=null,At.getStructures()));return Pe=At._mergeStructures(n,Pe)}var Ka=Ts,hb=Ts,pb=Ts,db=Ts;function Ts(n){let t;if(n<16&&(t=Za(n)))return t;if(n>64&&Wa)return Wa.decode(ee.subarray(S,S+=n));let e=S+n,r=[];for(t="";S<e;){let o=ee[S++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=ee[S++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=ee[S++]&63,s=ee[S++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ee[S++]&63,s=ee[S++]&63,a=ee[S++]&63,l=(o&7)<<18|i<<12|s<<6|a;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function Vp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ke();return t}function jp(n){if(At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[$p()]=Ke();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ke(),Ke());return t}}var at=String.fromCharCode;function Wp(n){let t=S,e=new Array(n);for(let r=0;r<n;r++){let o=ee[S++];if((o&128)>0){S=t;return}e[r]=o}return at.apply(String,e)}function Za(n){if(n<4)if(n<2){if(n===0)return"";{let t=ee[S++];if((t&128)>1){S-=1;return}return at(t)}}else{let t=ee[S++],e=ee[S++];if((t&128)>0||(e&128)>0){S-=2;return}if(n<3)return at(t,e);let r=ee[S++];if((r&128)>0){S-=3;return}return at(t,e,r)}else{let t=ee[S++],e=ee[S++],r=ee[S++],o=ee[S++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){S-=4;return}if(n<6){if(n===4)return at(t,e,r,o);{let i=ee[S++];if((i&128)>0){S-=5;return}return at(t,e,r,o,i)}}else if(n<8){let i=ee[S++],s=ee[S++];if((i&128)>0||(s&128)>0){S-=6;return}if(n<7)return at(t,e,r,o,i,s);let a=ee[S++];if((a&128)>0){S-=7;return}return at(t,e,r,o,i,s,a)}else{let i=ee[S++],s=ee[S++],a=ee[S++],l=ee[S++];if((i&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){S-=8;return}if(n<10){if(n===8)return at(t,e,r,o,i,s,a,l);{let c=ee[S++];if((c&128)>0){S-=9;return}return at(t,e,r,o,i,s,a,l,c)}}else if(n<12){let c=ee[S++],h=ee[S++];if((c&128)>0||(h&128)>0){S-=10;return}if(n<11)return at(t,e,r,o,i,s,a,l,c,h);let p=ee[S++];if((p&128)>0){S-=11;return}return at(t,e,r,o,i,s,a,l,c,h,p)}else{let c=ee[S++],h=ee[S++],p=ee[S++],d=ee[S++];if((c&128)>0||(h&128)>0||(p&128)>0||(d&128)>0){S-=12;return}if(n<14){if(n===12)return at(t,e,r,o,i,s,a,l,c,h,p,d);{let u=ee[S++];if((u&128)>0){S-=13;return}return at(t,e,r,o,i,s,a,l,c,h,p,d,u)}}else{let u=ee[S++],f=ee[S++];if((u&128)>0||(f&128)>0){S-=14;return}if(n<15)return at(t,e,r,o,i,s,a,l,c,h,p,d,u,f);let g=ee[S++];if((g&128)>0){S-=15;return}return at(t,e,r,o,i,s,a,l,c,h,p,d,u,f,g)}}}}}function qa(n){return At.copyBuffers?Uint8Array.prototype.slice.call(ee,S,S+=n):ee.subarray(S,S+=n)}function mo(n){let t=ee[S++];if(Tt[t])return Tt[t](ee.subarray(S,S+=n));throw new Error("Unknown extension type "+t)}var Up=new Array(4096);function $p(){let n=ee[S++];if(n>=160&&n<192){if(n=n-160,pr>=S)return $r.slice(S-Wt,(S+=n)-Wt);if(!(pr==0&&Jr<180))return Ka(n)}else return S--,Ke();let t=(n<<5^(n>1?Ie.getUint16(S):n>0?ee[S]:0))&4095,e=Up[t],r=S,o=S+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ie.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=ee[r++],i!=e[s++]){r=1879048192;break}if(r===o)return S=r,e.string;o-=3,r=S}for(e=[],Up[t]=e,e.bytes=n;r<o;)i=Ie.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=ee[r++],e.push(i);let a=n<16?Za(n):Wp(n);return a!=null?e.string=a:e.string=Ka(n)}var kp=(n,t)=>{var e=Ke();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Pe[n];return o&&o.isShared&&((Pe.restoreStructures||(Pe.restoreStructures=[]))[n]=o),Pe[n]=e,e.read=Xa(e,r),e.read()},Jp=typeof self=="object"?self:global;Tt[0]=()=>{};Tt[0].noBuffer=!0;Tt[101]=()=>{let n=Ke();return(Jp[n[0]]||Error)(n[1])};Tt[105]=n=>{let t=Ie.getUint32(S-4);Pr||(Pr=new Map);let e=ee[S],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Pr.set(t,o);let i=Ke();return o.used?Object.assign(r,i):(o.target=i,i)};Tt[112]=n=>{let t=Ie.getUint32(S-4),e=Pr.get(t);return e.used=!0,e.target};Tt[115]=()=>new Set(Ke());var Qa=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Tt[116]=n=>{let t=n[0],e=Qa[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Jp[e](Uint8Array.prototype.slice.call(n,1).buffer)};Tt[120]=()=>{let n=Ke();return new RegExp(n[0],n[1])};Tt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=S;S+=t-4,Ft=[Ke(),Ke()],Ft.position0=0,Ft.position1=0;let r=S;S=e;try{return Ke()}finally{S=r}};Tt[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 Kp(n){let t=Jr,e=S,r=Ja,o=Wt,i=pr,s=$r,a=$a,l=Pr,c=Ft,h=new Uint8Array(ee.slice(0,Jr)),p=Pe,d=Pe.slice(0,Pe.length),u=At,f=Qo,g=n();return Jr=t,S=e,Ja=r,Wt=o,pr=i,$r=s,$a=a,Pr=l,Ft=c,ee=h,Qo=f,Pe=p,Pe.splice(0,Pe.length,...d),At=u,Ie=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Cs(){ee=null,Pr=null,Pe=null}function Yp(n){n.unpack?Tt[n.type]=n.unpack:Tt[n.type]=n}var Ns=new Array(147);for(let n=0;n<256;n++)Ns[n]=+("1e"+Math.floor(45.15-n*.30103));var Ms=new dr({useRecords:!1}),ub=Ms.unpack,mb=Ms.unpackMultiple,fb=Ms.unpack,Os={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},yb=new Float32Array(1),qI=new Uint8Array(yb.buffer,0,4);var Ps;try{Ps=new TextEncoder}catch{}var Is,tl,As=typeof Buffer<"u",el=As?Buffer.allocUnsafeSlow:Uint8Array,ed=As?Buffer:Uint8Array,Xp=As?4294967296:2144337920,_,Ye,M=0,ur,mr=null,gb=/[\u0080-\uFFFF]/,qi=Symbol("record-id"),fo=class extends dr{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,l=0,c=ed.prototype.utf8Write?function(m,I,x){return _.utf8Write(m,I,x)}:Ps&&Ps.encodeInto?function(m,I){return Ps.encodeInto(m,_.subarray(I)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,u=t.maxSharedStructures;if(u==null&&(u=d?32:0),u>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=u>32||f+u>64,w=u+64,y=u+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(m,I){if(_||(_=new el(8192),Ye=new DataView(_.buffer,0,8192),M=0),ur=_.length-10,ur-M<2048?(_=new el(_.length),Ye=new DataView(_.buffer,0,_.length),ur=_.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(mr=["",""],_[M++]=214,_[M++]=98,mr.position=M-r,M+=4):mr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>u)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 C=0;C<x;C++){let T=o[C];if(!T)continue;let O,$=o.transitions;for(let J=0,ie=T.length;J<ie;J++){let de=T[J];O=$[de],O||(O=$[de]=Object.create(null)),$=O}$[qi]=C+64}l=x}p||(o.nextId=x+64)}i&&(i=!1),s=o||[];try{if(v(m),mr){Ye.setUint32(mr.position+r,M-mr.position-r);let x=mr;mr=null,v(x[0]),v(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>ur&&L(M),h.offset=M;let x=bb(_.subarray(r,M),a.idsToInsert);return a=null,x}return I&rd?(_.start=r,_.end=M,_):_.subarray(r,M)}finally{if(o){if(N<10&&N++,A>1e4)o.transitions=null,N=0,A=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let x=0,C=b.length;x<C;x++)b[x][qi]=0;b=[]}if(i&&h.saveStructures){let x=o.sharedLength||u;o.length>x&&(o=o.slice(0,x));let C=_.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(m)):(l=x,C)}}I&Nb&&(M=r)}};let v=m=>{M>ur&&(_=L(M));var I=typeof m,x;if(I==="string"){let C=m.length;if(mr&&C>=8&&C<4096){let $=gb.test(m);mr[$?0:1]+=m,_[M++]=193,v($?-C:C);return}let T;C<32?T=1:C<256?T=2:C<65536?T=3:T=5;let O=C*3;if(M+O>ur&&(_=L(M+O)),C<64||!c){let $,J,ie,de=M+T;for($=0;$<C;$++)J=m.charCodeAt($),J<128?_[de++]=J:J<2048?(_[de++]=J>>6|192,_[de++]=J&63|128):(J&64512)===55296&&((ie=m.charCodeAt($+1))&64512)===56320?(J=65536+((J&1023)<<10)+(ie&1023),$++,_[de++]=J>>18|240,_[de++]=J>>12&63|128,_[de++]=J>>6&63|128,_[de++]=J&63|128):(_[de++]=J>>12|224,_[de++]=J>>6&63|128,_[de++]=J&63|128);x=de-M-T}else x=c(m,M+T,O);x<32?_[M++]=160|x:x<256?(T<2&&_.copyWithin(M+2,M+1,M+1+x),_[M++]=217,_[M++]=x):x<65536?(T<3&&_.copyWithin(M+3,M+2,M+2+x),_[M++]=218,_[M++]=x>>8,_[M++]=x&255):(T<5&&_.copyWithin(M+5,M+3,M+3+x),_[M++]=219,Ye.setUint32(M,x),M+=4),M+=x}else if(I==="number")if(m>>>0===m)m<64?_[M++]=m:m<256?(_[M++]=204,_[M++]=m):m<65536?(_[M++]=205,_[M++]=m>>8,_[M++]=m&255):(_[M++]=206,Ye.setUint32(M,m),M+=4);else if(m>>0===m)m>=-32?_[M++]=256+m:m>=-128?(_[M++]=208,_[M++]=m+256):m>=-32768?(_[M++]=209,Ye.setInt16(M,m),M+=2):(_[M++]=210,Ye.setInt32(M,m),M+=4);else{let C;if((C=this.useFloat32)>0&&m<4294967296&&m>=-2147483648){_[M++]=202,Ye.setFloat32(M,m);let T;if(C<4||(T=m*Ns[(_[M]&127)<<1|_[M+1]>>7])>>0===T){M+=4;return}else M--}_[M++]=203,Ye.setFloat64(M,m),M+=8}else if(I==="object")if(!m)_[M++]=192;else{if(a){let T=a.get(m);if(T){if(!T.id){let O=a.idsToInsert||(a.idsToInsert=[]);T.id=O.push(T)}_[M++]=214,_[M++]=112,Ye.setUint32(M,T.id),M+=4;return}else a.set(m,{offset:M-r})}let C=m.constructor;if(C===Object)k(m,!0);else if(C===Array){x=m.length,x<16?_[M++]=144|x:x<65536?(_[M++]=220,_[M++]=x>>8,_[M++]=x&255):(_[M++]=221,Ye.setUint32(M,x),M+=4);for(let T=0;T<x;T++)v(m[T])}else if(C===Map){x=m.size,x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ye.setUint32(M,x),M+=4);for(let[T,O]of m)v(T),v(O)}else{for(let T=0,O=Is.length;T<O;T++){let $=tl[T];if(m instanceof $){let J=Is[T];if(J.write){J.type&&(_[M++]=212,_[M++]=J.type,_[M++]=0),v(J.write.call(this,m));return}let ie=_,de=Ye,ce=M;_=null;let ve;try{ve=J.pack.call(this,m,F=>(_=ie,ie=null,M+=F,M>ur&&L(M),{target:_,targetView:Ye,position:M-F}),v)}finally{ie&&(_=ie,Ye=de,M=ce,ur=_.length-10)}ve&&(ve.length+M>ur&&L(ve.length+M),M=xb(ve,_,M,J.type));return}}k(m,!m.hasOwnProperty)}}else if(I==="boolean")_[M++]=m?195:194;else if(I==="bigint"){if(m<BigInt(1)<<BigInt(63)&&m>=-(BigInt(1)<<BigInt(63)))_[M++]=211,Ye.setBigInt64(M,m);else if(m<BigInt(1)<<BigInt(64)&&m>0)_[M++]=207,Ye.setBigUint64(M,m);else if(this.largeBigIntToFloat)_[M++]=203,Ye.setFloat64(M,Number(m));else throw new RangeError(m+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?_[M++]=192:(_[M++]=212,_[M++]=0,_[M++]=0);else if(I==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},k=this.useRecords===!1?this.variableMapSize?m=>{let I=Object.keys(m),x=I.length;x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ye.setUint32(M,x),M+=4);let C;for(let T=0;T<x;T++)v(C=I[T]),v(m[C])}:(m,I)=>{_[M++]=222;let x=M-r;M+=2;let C=0;for(let T in m)(I||m.hasOwnProperty(T))&&(v(T),v(m[T]),C++);_[x+++r]=C>>8,_[x+r]=C&255}:m=>{let I=Object.keys(m),x,C=s.transitions||(s.transitions=Object.create(null)),T=0;for(let $=0,J=I.length;$<J;$++){let ie=I[$];x=C[ie],x||(x=C[ie]=Object.create(null),T++),C=x}let O=C[qi];if(O)O>=96&&g?(_[M++]=((O-=96)&31)+96,_[M++]=O>>5):_[M++]=O;else{O=s.nextId,O||(O=64),O<w&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(O=s.nextOwnId,O<y||(O=w),s.nextOwnId=O+1):(O>=y&&(O=w),s.nextId=O+1);let $=I.highByte=O>=96&&g?O-96>>5:-1;C[qi]=O,s[O-64]=I,O<w?(I.isShared=!0,s.sharedLength=O-63,i=!0,$>=0?(_[M++]=(O&31)+96,_[M++]=$):_[M++]=O):($>=0?(_[M++]=213,_[M++]=114,_[M++]=(O&31)+96,_[M++]=$):(_[M++]=212,_[M++]=114,_[M++]=O),T&&(A+=N*T),b.length>=f&&(b.shift()[qi]=0),b.push(C),v(I))}for(let $=0,J=I.length;$<J;$++)v(m[I[$]])},L=m=>{let I;if(m>16777216){if(m-r>Xp)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Xp,Math.round(Math.max((m-r)*(m>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(m-r<<2,_.length-1)>>12)+1<<12;let x=new el(I);return Ye=new DataView(x.buffer,0,I),_.copy?_.copy(x,0,r,m):x.set(_.slice(r,m)),M-=r,r=0,ur=x.length-10,_=x}}useBuffer(t){_=t,Ye=new DataView(_.buffer,_.byteOffset,_.byteLength),M=0}};tl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Hi];Is=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Zp(n,16,t):Qp(As?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==ed&&this.structuredClone?Zp(n,Qa.indexOf(e.name),t):Qp(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Zp(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Qp(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function xb(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function bb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function yo(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)");tl.unshift(n.Class),Is.unshift(n)}Yp(n)}var td=new fo({useRecords:!1}),vb=td.pack,Sb=td.pack;var{NEVER:wb,ALWAYS:Lb,DECIMAL_ROUND:Cb,DECIMAL_FIT:Tb}=Os,rd=512,Nb=1024;var od=new fo({structuredClone:!0});yo({Class:Ht.prototype.constructor,type:1,write(n){return P({},n)},read(n){return Object.setPrototypeOf(n,Ht.prototype),n}});yo({Class:Je.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Je.prototype),n}});yo({Class:qt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,qt.prototype),n}});yo({Class:Ui.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ui(n)}});yo({Class:ki.prototype.constructor,type:5,write(n){return n.data},read(n){return new ki(n)}});function Mb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}var Ds;(r=>{function n(o){return od.pack(o)}r.serialize=n;function t(o){return od.unpack(o)}r.deserialize=t;function e(o){return Mb(n(o)).toString()}r.checksum=e})(Ds||(Ds={}));var Bs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Bs||(Bs={}));var Es;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:cr.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(Es||(Es={}));var rl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(rl||(rl={}));var ol;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(ol||(ol={}));var _s;(t=>t.defaultData=H(P(P({},ol.defaultData),rl.defaultData),{cloner:null,booleanExclude:null}))(_s||(_s={}));var il=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(il||{}),nl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(nl||{}),sl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(sl||{}),Gs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:cr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Gs||(Gs={}));var ei;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Rt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:H(P({},Rt.fromHex(6710886)),{a:1}),colorB:H(P({},Rt.fromHex(6710886)),{a:1}),colorC:H(P({},Rt.fromHex(16777215)),{a:1}),colorD:H(P({},Rt.fromHex(16777215)),{a:1}),distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:cr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(ei||(ei={}));var go;(a=>{function n(l){return!l.layers.some(h=>{if(h.data.type==="texture"&&h.data.projection!==0||h.data.type==="depth"&&!h.data.isWorldSpace||h.data.type==="noise"||h.data.type==="displace")return!0})&&!e(l)}a.isMergable=n;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,d])=>{c+=`${p}${d}`,Array.isArray(d)?d.forEach(u=>c+=`${u}`):typeof d=="object"?Object.values(d).forEach(u=>{typeof u=="number"?c+=`${u.toFixed(4)}`:c+=`${u}`}):c+=`${d}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Je}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return i("phong",l,c)}a.defaultData=o;function i(l,c="layer1",h="layer2"){let p=new Je;return p.push({fi:0,data:ei.defaultData("light",l),id:c}),p.push({fi:1,data:ei.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=i;function s(l,c="basic",h="layer1",p="layer2"){let d=ei.defaultData("texture");Object.assign(d.texture,{image:l});let u=new Je;return u.push({fi:0,data:d,id:h}),u.push({fi:1,data:ei.defaultData("light",c),id:p}),{layers:u}}a.defaultTwoLayerTextureData=s})(go||(go={}));var ti;(r=>{function n(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n;function t(o,i){let{points:s}=i;if(s){for(let a of s)if(a.data.position[0]===o[0]&&a.data.position[1]===o[1])return!0}return!1}r.isOverlappingExistingPoint=t;function e(o,i){let s=o.controlNext,a=i.controlPrevious;return o.position[0]===s.position[0]&&o.position[1]===s.position[1]&&i.position[0]===a.position[0]&&i.position[1]===a.position[1]}r.isStraightLine=e})(ti||(ti={}));var zs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(zs||(zs={}));var Wi;(t=>{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==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ti.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0};throw new Error("not implemented")}t.defaultData=n})(Wi||(Wi={}));var $i;(o=>{o.identity=H(P({},ms.identity),{hiddenMatrix:Wr.identity});function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:(s==null?void 0:s.position)||i.position,rotation:(s==null?void 0:s.rotation)||i.rotation,scale:(s==null?void 0:s.scale)||i.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Ko.isEqual(i.position,s.position)?null:s.position,rotation:Ko.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Ko.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})($i||($i={}));var Ir;(t=>t.defaultData=P({states:new Je,events:new Je,visible:!0,raycastLock:!1},$i.identity))(Ir||(Ir={}));var id;(t=>t.defaultData=P({type:"Empty"},Ir.defaultData))(id||(id={}));var Rs;(t=>t.defaultData=P(P({type:"Mesh"},Ir.defaultData),_s.defaultData))(Rs||(Rs={}));var nd;(t=>t.defaultData=P(P({type:"TextFrame"},Ir.defaultData),Gs.defaultData))(nd||(nd={}));var Fs;(t=>t.defaultData=P(P(P({},Ir.defaultData),$i.identity),uo.defaultData))(Fs||(Fs={}));var sd;(t=>{function n(e){return P(P({},Ir.defaultData),Es.defaultData(e))}t.defaultData=n})(sd||(sd={}));var ad;(r=>(r.defaultCamera=P({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},uo.defaultData),r.defaultMeshObject=H(P(P({name:"Rectangle"},Ir.defaultData),Rs.defaultData),{geometry:Wi.defaultData("RectangleGeometry"),material:go.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(P(P({name:"Boolean"},Ir.defaultData),Rs.defaultData),{geometry:Wi.defaultData("BooleanGeometry"),material:go.defaultTwoLayerData("phong","layer1","layer2")})))(ad||(ad={}));var ld;(e=>{function n(r,o){if(o===void 0)return r;let i=P({},r);return"material"in i&&"material"in o&&o.material&&(i.material=ka(i.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&po(c,l)}}).data),i.materials&&o.materials&&(i.materials=ka(i.materials,s=>{var a,l;for(let c=0;c<i.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,d]of Object.entries(h.layers)){let u=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);u&&po(u,d)}}}).data),i}e.patchMaterialState=n;function t(r,o){var s,a;if(o===void 0)return r;let i=P({},r);if(Object.assign(i,$i.merge(i,o)),Jo.is(r.type)){i.orthographic=P({},i.orthographic),i.perspective=P({},i.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(i.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(i.perspective.zoom=l.perspective.zoom)}else if(r.type==="Mesh")i.geometry=P({},i.geometry),Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Bs.is(r.type)){let l=o;i.intensity!==void 0&&(i.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?i.color=l.color:i.color=Rt.clone(l.color))}return i}e.patch=t})(ld||(ld={}));import{ConeBufferGeometry as Ib}from"three";import{BufferGeometry as Ob,CylinderBufferGeometry as Pb,Float32BufferAttribute as al,Vector2 as Qt,Vector3 as Vs}from"three";var hd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=(a=e.radiusTop)!=null?a:r,i=(l=e.radiusBottom)!=null?l:r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h:e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:d,hollow:u}=n.parameters,f;return p||u?f=new Ji(c,h,r,o,i,s,a,l*Math.PI/180,p,p,d,u):f=new Pb(c,h,r,o,i,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(P({},n),{type:"CylinderGeometry"})})}};function Kr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function cd(n){return new Qt(n.y,-n.x)}var Ji=class extends Ob{constructor(t,e,r,o,i,s,a,l,c,h,p,d,u=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,h=0);let f=[],g=[],w=[],y=[],b=0,A=r/2,N=new Vs,v=new Vs;u&&t==0&&(t=c),u&&e==0&&(e=h);let k=new Qt(t,A),L=new Qt(e,-A),m=null,I=null,x=null,C=null,T=k.clone().sub(L),O=0,$=0,J=0;d>0&&(O=Math.min(t,e)*(1-d),$=t-O,J=e-O);let ie=k.clone();ie.x-=O;let de=Math.PI-T.angle(),ce=T.angle(),ve=Math.tan(ce/2),F=Math.tan(de/2),G=ve+F,B=d?G:F,z=d?G:ve;if(c=Math.min(c,(t-$)/B,T.length()/G),h=Math.min(h,(e-J)/z,T.length()/G),c>0){let V=c/ve;m=k.clone().sub(new Qt(V,c)),d&&(x=m.clone(),x.x-=O-G*c),k.sub(T.clone().setLength(V))}if(h>0){let V=h/F;I=L.clone().sub(new Qt(V,-h)),L.add(T.clone().setLength(V)),d&&(C=I.clone(),C.x-=O-G*h,ie.sub(T.clone().setLength(V)))}T=k.clone().sub(L);let D=T.length()<.5,R=[];for(let V=0;V<=o;V++){let E=[],U=V/o,ne=U*l+a,q=new Qt(Math.sin(ne),Math.cos(ne));C&&I?(K(E,U,q,de,h,C,-1,!0),K(E,U,q,ce,h,I,-1,!1)):I?(Z(E,q,I.x,0,-1),K(E,U,q,ce,h,I,-1,!1)):s||Z(E,q,e,J,-1);let W=cd(T).normalize();if(Kr(W,q,N),!D)for(let Y=0;Y<=i;Y++){let X=Y/i,Q=T.clone().multiplyScalar(X).add(L);Kr(Q,q,v),g.push(v.x,v.y,v.z),w.push(N.x,N.y,N.z),y.push(U,.5+v.y/r),E.push(b++)}if(x&&m?(K(E,U,q,de,c,m,1,!1),K(E,U,q,ce,c,x,1,!0)):m?(K(E,U,q,de,c,m,1,!1),Z(E,q,m.x,0,1)):s||Z(E,q,t,$,1),d&&!D){let Y=cd(T).multiplyScalar(-1).normalize();Kr(Y,q,N);for(let X=0;X<=i;X++){let Q=X/i,se=T.clone().multiplyScalar(-Q).add(ie);Kr(se,q,v),g.push(v.x,v.y,v.z),w.push(N.x,N.y,N.z),y.push(U,.5+v.y/r),E.push(b++)}}d&&!s&&E.push(E[0]),R.push(E)}for(let V=0;V<R.length-1;V++)for(let E=0;E<R[0].length-1;E++){if(s&&d&&E==i)continue;let U=R[V][E],ne=R[V+1][E],q=R[V+1][E+1],W=R[V][E+1],Y=g[q*3+0],X=g[q*3+2];f.push(U,ne,W),(Y!=0||X!=0)&&f.push(ne,q,W)}l<Math.PI*2&&(j(-1,R[0],a),j(1,R[R.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new al(g,3)),this.setAttribute("normal",new al(w,3)),this.setAttribute("uv",new al(y,2));function K(V,E,U,ne,q,W,Y,X){for(let Q=0;Q<p+1;Q++){let se=Q/p,oe=Y<0?se:1-se;X&&(oe-=1),oe*=ne;let he=new Qt(Math.sin(oe),Math.cos(oe)*Y),Ge=he.clone().multiplyScalar(q).add(W);Kr(Ge,U,v),g.push(v.x,v.y,v.z),Kr(he,U,N),w.push(N.x,N.y,N.z),y.push(E,.5+v.y/r),V.push(b++)}}function Z(V,E,U,ne,q){let W=new Vs,Y=new Qt,X=[U,ne];q<0&&X.reverse();for(let Q of X)Y.set(Q,A*q),Kr(Y,E,W),g.push(W.x,W.y,W.z),w.push(0,q,0),y.push(.5,.5),V.push(b++)}function j(V,E,U){let ne=new Qt(Math.sin(U),Math.cos(U)),q=new Qt(-Math.cos(U),Math.sin(U)),W=new Vs,Y=V<0?(se,oe,he)=>f.push(se,oe,he):(se,oe,he)=>f.push(se,he,oe),X=new Qt((t+e+$+J)/4,0);Kr(X,ne,W),g.push(W.x,W.y,W.z),w.push(q.x,0,q.y),y.push(.5,.5);let Q=b++;for(let se of E){let oe=g.slice(se*3,se*3+3);g.push(...oe),w.push(q.x,0,q.y);let he=y.slice(se*2,se*2+2);y.push(...he),b++}for(let se=Q+1;se<b-1;se++)Y(Q,se,se+1);Y(Q,b-1,Q+1)}}};var pd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=n.parameters,d;return c>0||h>0||l<360?d=new Ji(0,t/2,r,o,i,s,a,l*Math.PI/180,c,h,p,0,!0):d=new Ib(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:H(P({},n),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as Ab,BufferGeometry as Db,Float32BufferAttribute as ll,Vector3 as Ki}from"three";var dd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:l}=n.parameters,c;return a==0?c=new Ab(t,e,r,o,i,s):c=new hl(t,e,r,o,i,s,a,l),Object.assign(c,{userData:H(P({},n),{type:"CubeGeometry"})})}},cl=Math.PI/2,hl=class extends Db{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],d=[],u=[],f=0,g=0;w("z","y","x",-1,-1,r,e,t,s,i,0),w("z","y","x",1,-1,r,e,-t,s,i,1),w("x","z","y",1,1,t,r,e,o,s,2),w("x","z","y",1,-1,t,r,-e,o,s,3),w("x","y","z",1,-1,t,e,r,o,i,4),w("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,o,0),y("x","y","z",1,-1,1,t,e,r,o,1),y("x","y","z",-1,1,1,t,e,r,o,0),y("x","y","z",1,1,-1,t,e,r,o,1),y("y","x","z",-1,-1,1,e,t,r,i,0),y("y","x","z",1,-1,-1,e,t,r,i,1),y("y","x","z",1,1,1,e,t,r,i,1),y("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new ll(p,3)),this.setAttribute("normal",new ll(d,3)),this.setAttribute("uv",new ll(u,2));function w(A,N,v,k,L,m,I,x,C,T,O){let $=(m-2*a)/C,J=(I-2*a)/T,ie=m/2-a,de=I/2-a,ce=x/2,ve=C+1,F=T+1,G=0,B=0,z=new Ki;for(let D=0;D<F;D++){let R=D*J-de;for(let K=0;K<ve;K++){let Z=K*$-ie;z[A]=Z*k,z[N]=R*L,z[v]=ce,p.push(z.x,z.y,z.z),z[A]=0,z[N]=0,z[v]=x>0?1:-1,d.push(z.x,z.y,z.z),u.push(K/C),u.push(1-D/T),G+=1}}for(let D=0;D<T;D++)for(let R=0;R<C;R++){let K=f+R+ve*D,Z=f+R+ve*(D+1),j=f+(R+1)+ve*(D+1),V=f+(R+1)+ve*D;h.push(K,Z,V),h.push(Z,j,V),B+=6}c.addGroup(g,B,O),g+=B,f+=G}function y(A,N,v,k,L,m,I,x,C,T,O){let $=(I-2*a)/T,J=I/2-a,ie=x/2-a,de=C/2,ce=T+1,ve=0,F=0,G=new Ki,B=new Ki;for(let z=0;z<l+1;z++){let D=z/l*cl,R=Math.sin(D)*a,K=(1-Math.cos(D))*a,Z=Math.sin(D),j=Math.cos(D);G[N]=(ie+R)*L,G[v]=(de-K)*m,B[A]=0,B[N]=Z*Math.sign(G[N]),B[v]=j*Math.sign(G[v]);for(let V=0;V<ce;V++){let E=V*$-J;G[A]=E*k,p.push(G.x,G.y,G.z),d.push(B.x,B.y,B.z),u.push(V/T),u.push(0),ve+=1}}for(let z=0;z<l;z++)for(let D=0;D<T;D++){let R=f+D+ce*z,K=f+D+ce*(z+1),Z=f+(D+1)+ce*(z+1),j=f+(D+1)+ce*z;h.push(R,K,j),h.push(K,Z,j),F+=6}c.addGroup(g,F,O),g+=F,f+=ve}function b(A,N,v){let k=new Ki,L=new Ki(t/2,e/2,r/2);L.subScalar(a);let m=[],I=A*N*v>0?(C,T,O)=>h.push(C,T,O):(C,T,O)=>h.push(C,O,T);for(let C=0;C<=l;C++){let T=[],O=cl*(1-C/l),$=Math.cos(O),J=Math.sin(O),ie=0;for(let de=0;de<=C;de++){let ce=Math.cos(ie),ve=Math.sin(ie);k.x=$*ce,k.y=J,k.z=$*ve;let F=L.clone().addScaledVector(k,a);p.push(A*F.x,N*F.y,v*F.z),d.push(A*k.x,N*k.y,v*k.z),u.push(0,0),T.push(f++),ie+=cl/C}m.push(T)}let x=m.length-1;for(let C=0;C<x;C++){let T=m[C],O=m[C+1],$=T.length-1;I(T[0],O[1],O[0]);for(let J=1;J<=$;J++)I(T[J-1],T[J],O[J]),I(T[J],O[J+1],O[J])}}}};import{BufferGeometry as Bb,Float32BufferAttribute as pl,Triangle as Eb,Vector3 as Ar,Vector2 as dl}from"three";var Yr=class extends Bb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new pl(a,3)),this.setAttribute("normal",new pl(c,3)),this.setAttribute("uv",new pl(l,2));return;function h(){var ve;i=Math.min(1-1e-5,i),i==0&&(s=0);let u={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Ar,g=f.clone(),w=new Eb,y=i*o,b=o-y,A=s+1,N=new Ar,v=(F,G)=>N.subVectors(F,G).normalize(),k=(F,G)=>Array(F).fill(void 0).map(G),L=k(t.length/3,(F,G)=>new Ar().fromArray(t,G*3).setLength(o)),m=[],I=1e6;for(let F=0;F<L.length;F++){let G=L[F],B=[],z,D,R,K=1e10,Z=-1;for(;(Z=e.indexOf(F,Z+1))!=-1;){let U=Z-Z%3;z=e[U+(Z+1)%3],D=e[U+(Z+2)%3],R=G.distanceToSquared(L[z]),K=Math.min(K,R),B.push([z,D,R])}K+=1e-6;let j=[],V=0,E=B.length;for(let U=0;U<E;U++){[z,D,R]=B[V];let ne=((ve=m[z])==null?void 0:ve.includes(F))==!0;R<=K&&j.push(z+ +ne*I),V=B.findIndex(q=>q[0]==D)}m.push(j)}let x=[];{let F=0,G=0,B,z,D=u==3;for(let R=0;R<=s;R++){B=R*(R+1)/2,z=(R+1)*(R+2)/2;for(let K=0;K<s-R;K++)[F,G]=[B+K+R+2,z+K+R+3],x.push(B,z,...D?[G,B]:[F,z],G,F),[B,z]=[F,G];x.push(B,z,B+s+2)}}let C=f.clone(),T=f.clone(),O=f.clone(),$=f.clone(),J=f.clone(),ie=[],de=k(L.length,()=>k(u,()=>f.clone()));for(let F=0;F<L.length;F++){f.copy(L[F]).normalize(),C.copy(f).multiplyScalar(b);let G=m[F];for(let j=0;j<G.length;j++){let V=G[j],E=G[(j+1)%u];w.setFromPointsAndIndices(L,F,V%I,E%I),w.b.sub(w.a).setLength(1e10).add(w.a),w.c.sub(w.a).setLength(1e10).add(w.a),w.closestPointToPoint(C,de[F][j])}let B=[],z=[],D=[],R=new Ar;s==0&&[...de[F]].reduce((j,V)=>j.add(V),R).multiplyScalar(1/u);for(let j=0;j<u;j++){let V=[],E=(j-1+u)%u,U=de[F][E],ne=de[F][j];f.copy(U).sub(C),g.copy(ne).sub(C);let q=C.angleTo(f),W=f.angleTo(g),Y=Math.cos(q)*y;s==0?T.copy(R):T.copy(C).setLength(b+Y),z.push(Y);let X=[T,U,ne];for(let Q=0;Q<2;Q++){let se=X[Q],oe=X[Q+1];$.subVectors(se,C),J.subVectors(oe,C),O.crossVectors($,J).normalize();for(let he=0;he<A;he++){let Ge=[q,W][Q]*he/A;f.copy($).applyAxisAngle(O,Ge).add(C),B.push(f.clone()),Q&&(v(f,C),V.push([he==0?se:f.clone(),N.clone()]))}Q&&(v(oe,C),V.push([oe,N.clone()]))}D.push(V)}ie.push(D);let K=2*A,Z=2;for(let j=0;j<u;j++){let V=K*j,E=K*((j+1)%u),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],J=B[E+q],U.push($);for(let W=1,Y=q-Z+1;W<=Y;W++)f.lerpVectors($,J,W/(Y+1)),f.sub(C).setLength(z[j]).add(C),U.push(f.clone());U.push(J)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[E+A]);let ne=x.map(q=>U[q]);a.push(...ne.map(q=>[q.x,q.y,q.z]).flat()),c.push(...ne.map(q=>(v(q,C),[N.x,N.y,N.z])).flat())}}let ce=[];for(let F=0;F<m.length;F++)for(let G=0;G<u;G++){let B=m[F][G];if(B<I){let z=m[B].findIndex(K=>K%I==F),D=ie[F][G],R=ie[B][z];for(let K=0;K<A;K++){let Z=D[K],j=R[A-K],V=D[K+1],E=R[A-(K+1)];[Z,j,V,V,j,E].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}ce.push(D[0][0],R[A][0],D[A][0],R[0][0])}}for(;ce.length;){let F,G,B,z;[F,G]=ce.splice(0,2);let D=[F];for(;F!=G;)D.push(G),B=ce.indexOf(G),z=B%2,G=ce.splice(B-z,2)[1-z];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let R=N.dot(D[0])<0;R&&N.negate();for(let K=1;K<=D.length-2;K++)[D[K+ +R],D[K+1-+R],D[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),c.push(N.x,N.y,N.z)})}}function p(){let d=new Ar;for(let L=0;L<a.length;L+=3){d.x=a[L+0],d.y=a[L+1],d.z=a[L+2];let m=v(d)/2/Math.PI+.5,I=k(d)/Math.PI+.5;l.push(m,1-I)}let u=new Ar,f=new Ar,g=new Ar,w=new Ar,y=new dl,b=new dl,A=new dl,N=(L,m,I,x)=>{x<0&&L.x===1&&(l[m]=L.x-1),I.x===0&&I.z===0&&(l[m]=x/2/Math.PI+.5)};for(let L=0,m=0;L<a.length;L+=9,m+=6){u.set(a[L+0],a[L+1],a[L+2]),f.set(a[L+3],a[L+4],a[L+5]),g.set(a[L+6],a[L+7],a[L+8]),y.set(l[m+0],l[m+1]),b.set(l[m+2],l[m+3]),A.set(l[m+4],l[m+5]),w.copy(u).add(f).add(g).divideScalar(3);let I=v(w);N(y,m+0,u,I),N(b,m+2,f,I),N(A,m+4,g,I)}for(let L=0;L<l.length;L+=6){let m=l[L+0],I=l[L+2],x=l[L+4],C=Math.max(m,I,x),T=Math.min(m,I,x);C>.9&&T<.1&&(m<.2&&(l[L+0]+=1),I<.2&&(l[L+2]+=1),x<.2&&(l[L+4]+=1))}function v(L){return Math.atan2(L.z,-L.x)}function k(L){return Math.atan2(-L.y,Math.sqrt(L.x*L.x+L.z*L.z))}}}static fromJSON(t){return new Yr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as _b}from"three";var ud=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Yi(t*.5,i,s):new _b(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(P({},n),{type:"DodecahedronGeometry"})})}},Yi=class extends Yr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-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],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new Yi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Wb,Plane as $b,Shape as Td,Vector2 as Dr,Vector3 as Jb,MathUtils as bl,LineCurve as vl,QuadraticBezierCurve as Nd,CubicBezierCurve as ks}from"three";import{CubicBezierCurve as js,EllipseCurve as Gb,LineCurve as Us,LineCurve3 as zb,MathUtils as Rb,QuadraticBezierCurve as ul,SplineCurve as Fb,Vector2 as er,Vector3 as md}from"three";var Xi=1e-12,ri=class{constructor(t){this.position=new er;this.startPosition=new er;this.uuid=Rb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},tr=class extends ri{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,r){let o=new tr(e,new er(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.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 tr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},ml=n=>n,Qi=new er,fl=new er,Vb=new er,jb=new er,Ub=new er,kb=new er,fd=new md,yd=new md;function gd(n){let t=new er;t.addVectors(n.v0,Qi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new er;return e.addVectors(n.v2,fl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new js(n.v0,t,e,n.v2)}function Zi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Hb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function qb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function yl(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.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+r*r-i*i)/(2*o*r))}function xd(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function bd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function vd(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,l=e.x-n.x,c=e.y-n.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return yl(t,n,e)>Math.PI&&(h*=-1),Zi(c,a)?p=(a+c)*(r/h-.5)*8/3/(s-l):p=(s+l)*(r/h-.5)*8/3/(c-a),o.set(t.x-p*a,t.y+p*s),i.set(e.x+p*c,e.y-p*l),[o,i]}function gl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Sd(n,t,e,r,o=.5){let i=Qi.subVectors(t,n).multiplyScalar(o).add(n),s=fl.subVectors(e,t).multiplyScalar(o).add(t),a=Vb.subVectors(r,e).multiplyScalar(o).add(e),l=i,c=jb.subVectors(s,i).multiplyScalar(o).add(i),h=Ub.subVectors(a,s).multiplyScalar(o).add(s),p=a,d=kb.subVectors(h,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,h.x,h.y,p.x,p.y,r.x,r.y]}function wd(n,t,e=12,r=!0){let o=yd.set(0,0,0),i,s=0,a=[];for(let l=0;l<t.length;l++){let c=ml(t[l]),h=Qi,p=Xr(c,e);a.push(p);for(let d=0;d<=p;d++)if(c instanceof js||c instanceof ul||c instanceof Us){if(c.getPoint(d/p,h),o.set(h.x,h.y,0),i!==void 0&&qb(i,o))continue;i===void 0&&(i=fd),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Ld(n,t,e,r=12,o=!0){let i=yd.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=ml(t[l]),p=Qi,d=Xr(h,r);a.push(d);for(let u=0;u<=d;u++)if(h instanceof js||h instanceof ul||h instanceof Us){if(h.getPoint(u/d,p),i.set(p.x,p.y,0),c!=null&&c.equals(i))continue;c===void 0?c=fd:(n.setXYZ(s,c.x,c.y,c.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),c.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function xl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Xr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Xr(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Xr(n[0].roundedCurveCorner,t)*.5),r}function Xr(n,t=12){return n&&n instanceof Gb?t*2:n&&(n instanceof Us||n instanceof zb)?1:n&&n instanceof Fb?t*n.points.length:t}function Cd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=ml(t[s]),l=Xr(a,e),c=Qi;for(let h=0;h<=l;h++)if(a instanceof js||a instanceof ul||a instanceof Us){if(a.getPoint(h/l,c),o!==void 0&&Hb(o,c,Xi))continue;o===void 0&&(o=fl),o.copy(c),n.push(c.x,c.y),i++}}return Zi(n[0],n[n.length-2],Xi)&&Zi(n[1],n[n.length-1],Xi)&&(n.pop(),n.pop()),r&&i>1&&!(Zi(n[i-1],n[1],Xi)&&Zi(n[i-2],n[0],Xi))&&(n.push(n[0],n[1]),i++),n}var Sl=new Dr,Kb=new Dr,Yb=new Dr,Xb=new Dr,Zb=new Dr,Qb=new Dr,Oe=class extends Td{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Wb;this.plane=new $b(new Jb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=bl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Oe;return i.isClosed=e.isClosed,i.points=e.points.map(s=>tr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Oe.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,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 r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){return this.points.findIndex(r=>r.uuid===e)}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=Sl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=bl.generateUUID()){let i;e instanceof Dr?i=e:i=new Dr(e,r);let s=new tr(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return wd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xl(this.points,e,!1),this.roundedCurveDivisions=xl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Ld(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Cd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Xr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let h=i[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(gl(i,s)){let p=i.position.distanceTo(s.position);return i.position.distanceTo(Sl.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=a[p];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){gl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){var o;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];if(i===0)this.moveTo(a.position.x,a.position.y);else{let l=this.points[i-1];this._applyCurveForPoint(a,l)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,a=this.points.length;s<a;s++){let l=this.points[s],c=l.roundness;if(!l.controlsMoved()&&c>0){let h=l.curveBefore,p=l.curveAfter;if(h===void 0||p===void 0)continue;let d=l.roundedCurveBefore,u=l.roundedCurveAfter,f=h.getLength(),g=p.getLength(),w=Math.min(c,f*.499),y=Math.min(c,g*.499),b=Math.min(w,y),A=1-b/f,N=b/g,v=h.getPointAt(A,Sl),k=p.getPointAt(N,Kb);this._subSplitCurve(h,d,A,v,void 0),this._subSplitCurve(p,u,N,void 0,k);let L;if(this.useCubicForRoundedCorners){let m=yl(v,l.position,k)/2,I=Math.tan(m)*v.distanceTo(l.position),[x,C]=xd(v,k,I,Yb,Xb),T=bd(x,C,l.position),[O,$]=vd(T,v,k,I,Zb,Qb);L=new ks(v.clone(),O.clone(),$.clone(),k.clone())}else L=new Nd(v.clone(),l.position.clone(),k.clone());l.roundedCurveCorner=L,this.roundedCurves.splice(s+i,0,L),i++}}}e&&((o=this.eventDispatcher)==null||o.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,i,s){if(e instanceof vl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=Sd(a.v0,a.v1,a.v2,a.v3,c);return i!==void 0&&(l.v0.set(h[0],h[1]),l.v1.set(h[2],h[3]),l.v2.set(h[4],h[5]),l.v3.set(h[6],h[7])),s!==void 0&&(l.v0.set(h[6],h[7]),l.v1.set(h[8],h[9]),l.v2.set(h[10],h[11]),l.v3.set(h[12],h[13])),l}return r}clone(){let e=new Oe(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let i=0;i<r;i++){let s=i*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],d=e.points[s+5],u=e.points[s+6],f=new tr(bl.generateUUID(),new Dr(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,d),f.roundness=u,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(i=>{let s=new Oe;return s.fromJSON(i),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof ks&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,l;for(a=0,l=i.length;a<l;a++)i[a]instanceof Nd&&(i[a]=gd(i[a]));for(a=0,l=i.length;a<l;a++){let p=i[a],d=a>0?i[a-1]:null,u;p instanceof ks?(u=this.createPoint(p.v0),u.controls[1].position.copy(p.v1)):p instanceof vl&&(u=this.createPoint(p.v1)),u!==void 0&&(d!==null&&r(u,d),s.push(u))}let c=i[i.length-1],h=!1;return c instanceof ks?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof vl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Td&&(this.shapeHoles=e.holes.map(i=>{let s=new Oe;return s.fromShape(i),s})),this.update(),this}};var Ll=Math.PI*2;function wl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function ev(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Md(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function tv(n,t,e,r,o,i,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(s,2),u=Math.pow(a,2),f=h*p-h*u-p*d;f<0&&(f=0),f/=h*u+p*d,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/i*a,w=f*-i/o*s,y=g+(n+e)/2,b=w+(t+r)/2,A=(s-g)/o,N=(a-w)/i,v=(-s-g)/o,k=(-a-w)/i,L=Md(1,0,A,N),m=Md(A,N,v,k);return!c&&m>0&&(m-=Ll),c&&m<0&&(m+=Ll),{centerx:y,centery:b,ang1:L,ang2:m}}function Od({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=tv(n,t,e,r,o,i,c,h,s,a),{ang1:u,ang2:f}=d,{centerx:g,centery:w}=d,y=Math.abs(f)/(Ll/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);f/=b;for(let A=0;A<b;A++)l.push(ev(u,f)),u+=f;return l.map(A=>{let{x:N,y:v}=wl(A[0],o,i,g,w),{x:k,y:L}=wl(A[1],o,i,g,w),{x:m,y:I}=wl(A[2],o,i,g,w);return{x1:N,y1:v,x2:k,y2:L,x:m,y:I}})}import{BufferAttribute as qs,BufferGeometry as sv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,a,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),en=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}(),Hs=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),ii=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}(),Pd=function(){function n(){var t=new ii,e=new en,r=new Hs(0),o=new Hs(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new Hs(0),r=new Hs(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new ii,e=new ii,r=new en,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new ii;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new en;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new en;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new ii;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new en;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),a+l-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,l,c;for(i=t,i=t;(o=i.next)!==t;i=o){ue(o.prev===i),l=o.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),l=s.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(ue(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)ue(l.Sym.next===c.Sym),ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Org!==null),ue(l.Dst!==null),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l);ue(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}(),Id=function(){function n(){this.handle=null}return n}(),Ad=function(){function n(){this.key=null,this.node=0}return n}(),rv=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Id,this.handles[r]=new Ad;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;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 Id;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ad}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ue(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),Cl=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}(),Dd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),ov=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Dd,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(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Dd;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),iv=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var a=ae.edgeEval(i.Dst,o,i.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new Cl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,l,c,h,p=!0;c=r;do ue(ae.vertLeq(c.Org,c.Dst)),n.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,h=i;a=n.regionBelow(l),c=a.eUp.Sym,c.Org===h.Org;)c.Onext!==h&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(h.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=n.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(t,l)&&(n.addWinding(c,h),n.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,ue(l.windingNumber-c.winding===a.windingNumber),s&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),i=ae.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,l=o.Dst,c=i.Dst,h,p,d=new ii,u,f;if(ue(!ae.vertEq(c,l)),ue(ae.edgeSign(l,t.event,s)<=0),ue(ae.edgeSign(c,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(h=Math.min(s.t,l.t),p=Math.max(a.t,c.t),h>p))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return n.debugEvent(t),ae.intersect(l,s,c,a,d),ue(Math.min(s.t,l.t)<=d.t),ue(d.t<=Math.max(a.t,c.t)),ue(Math.min(c.s,l.s)<=d.s),ue(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),u=ae.vertLeq(s,a)?s:a,ae.vertLeq(u,d)&&(d.s=u.s,d.t=u.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(l,t.event)&&ae.edgeSign(l,t.event,d)>=0||!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(ae.edgeSign(l,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(c,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,l,a,c),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&n.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),c=!0),ae.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,s,null),c=!0),c){n.addRightEdges(t,e,r.Onext,i,i,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ue(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,i=a=s.Onext,l.fixUpperEdge&&(ue(i!==s),n.deleteRegion(t,l),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,l,c=new Cl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new Cl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new ov(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new rv(i,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),nv=function(){function n(){this.mesh=new Pd,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=qe.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(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],d=[0,0,0],u=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var w=0;w<3;++w)i=e.coords[w],c[w]=i,f[w]=e,l[w]=i,u[w]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)i=e.coords[y],i<c[y]&&(c[y]=i,f[y]=e),i>l[y]&&(l[y]=i,u[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[b],o=u[b],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;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]=h[1]*p[2]-h[2]*p[1],d[1]=h[2]*p[0]-h[0]*p[2],d[2]=h[0]*p[1]-h[1]*p[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,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),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var h=t.fHead.next;h!==t.fHead;h=h.next)if(h.n=-1,!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=a,a++),l++,i=i.Lnext}while(i!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===ot.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==h.anEdge);for(var u=l;u<r;++u)this.elements[d++]=-1;if(e===ot.CONNECTED_POLYGONS){i=h.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==h.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,h=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[h++]=i,this.elements[h++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Pd),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=qe.ODD),e===void 0&&(e=ot.POLYGONS),s===void 0&&(s=!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=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),iv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function xo(n){var t=n.windingRule,e=t===void 0?qe.ODD:t,r=n.elementType,o=r===void 0?ot.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,l=a===void 0?2:a,c=n.normal,h=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,u=n.strict,f=u===void 0?!0:u,g=n.debug,w=g===void 0?!1:g;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var y=new nv;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<d.length;b++)y.addContour(l||2,d[b]);return y.tesselate(e,o,s,l,h,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:w?y.mesh:void 0}}}var BD=qe.ODD,ED=qe.NONZERO,_D=qe.POSITIVE,GD=qe.NEGATIVE,zD=qe.ABS_GEQ_TWO,RD=ot.POLYGONS,FD=ot.CONNECTED_POLYGONS,VD=ot.BOUNDARY_CONTOURS;var ni=class extends sv{constructor(e,r=12,o={}){var f,g,w;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,b=i.length/2;y<b;y++){let A=y*2,N=i[A+0],v=i[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&v!==p&&(c=!1),h=N,p=v,!l&&!c)break}!l&&!c&&(a=xo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=(f=a==null?void 0:a.vertexCount)!=null?f:1,u=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new qs(new Float32Array(d*3),3),this._normalAttribute=new qs(new Float32Array(d*3),3),this._uvAttribute=new qs(new Float32Array(d*2),2),this._indexAttribute=new qs(new Uint32Array(u*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let L=0,m=d;L<m;L++){let I=L*2,x=a.vertices[I+0],C=a.vertices[I+1];x<y&&(y=x),x>b&&(b=x),C<A&&(A=C),C>N&&(N=C)}let v=b-y,k=N-A;for(let L=0,m=d;L<m;L++){let I=L*2,x=a.vertices[I+0],C=a.vertices[I+1],T=(x-y)/v,O=(C-A)/k;this._positionAttribute.setXYZ(L,x,C,0),this._normalAttribute.setXYZ(L,0,0,1),this._uvAttribute.setXY(L,T,O)}for(let L=0,m=u;L<m;L++){let I=L*3,x=a.elements[I+0],C=a.elements[I+1],T=a.elements[I+2];this._indexAttribute.setX(I+0,x),this._indexAttribute.setX(I+1,C),this._indexAttribute.setX(I+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((w=a==null?void 0:a.elementCount)!=null?w:1)*3)}clone(){let e=new ni(this._shape,this._curveSegments);return e.userData=Ri(this.userData),e}};import{BufferAttribute as $s,BufferGeometry as av}from"three";var Ws=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Ws.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Ws.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},tn=Ws;tn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Tl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),si=class extends av{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(L=>{let m=L.extractShapePointsToFlatArray([],i),I=[];for(let x=m.length-1;x>=1;x-=2){let C=m[x-1],T=m[x-0];I.push(C,T)}return I}),c=xo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=xo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let L=0;L<h.elements.length;L++){let m=h.elements[L],I=L%2===0?c.vertexCount:0;c.elements.push(m+I)}for(let L=0;L<h.vertexIndices.length;L++){let m=h.vertexIndices[L],I=c.vertexCount;c.vertexIndices.push(m+I)}for(let L=0;L<h.vertices.length;L++){let m=h.vertices[L];c.vertices.push(m)}}let d=1/0,u=-1/0,f=1/0,g=-1/0;for(let L=0,m=c.vertexCount;L<m;L++){let I=L*2,x=c.vertices[I+0],C=c.vertices[I+1];x<d&&(d=x),x>u&&(u=x),C<f&&(f=C),C>g&&(g=C)}this._minX=d,this._minY=f,this._width=u-d,this._height=g-f;let w=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new tn(w);let y=[],b=[];for(let L=c.elementCount-1;L>=0;L--){let m=L>=p,I=L*2,x=c.elements[I+0],C=c.elements[I+1],T=x+C,O={start:x,count:C,normals:[],continuous:[],concave:[]},$=x,J=T-1,ie=x+1,de=this._shape.roundedCurves.length;do{let G=$-x,B=c.vertices[J*2+0],z=c.vertices[J*2+1],D=c.vertices[$*2+0],R=c.vertices[$*2+1],K=c.vertices[ie*2+0],Z=c.vertices[ie*2+1],j=D-B,V=R-z,E=Math.sqrt(j*j+V*V);j/=E,V/=E;let U=D-K,ne=R-Z,q=Math.sqrt(U*U+ne*ne);U/=q,ne/=q,O.normals[G*2+0]=-ne,O.normals[G*2+1]=U,O.concave[G]=j*ne-V*U>0;let W=c.vertexIndices[$];if(Array.isArray(W))O.continuous[G]=!1;else{let[Y,X]=this._shape.getCurveIndexFromVertexId(W-1,!0);if(X>0&&X<1)O.continuous[G]=!0;else{let Q=X===1?Y+1:Y-1;Q=(Q+de)%de;let se=X===1?0:1,oe=this._shape.roundedCurves[Y].getTangent(X),he=this._shape.roundedCurves[Q].getTangent(se);O.continuous[G]=oe.dot(he)>.95}}m&&(O.normals[G*2+0]*=-1,O.normals[G*2+1]*=-1),[J,$,ie]=[$,ie,ie+1],ie>=T&&(ie-=C)}while(ie!==x+1);let ce=[];ce.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,T*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((G,B)=>[B,B]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,T*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,z=(1-Math.cos(B))*this._bevelSize,D=[],R=[],K=[],Z=[],j=0;for(let E=0;E<C;E++){let U=E*2,ne=(E-1+C)%C*2,q=c.vertices[O.start*2+U+0],W=c.vertices[O.start*2+U+1],Y=-O.normals[ne+0]*z,X=-O.normals[ne+1]*z,Q=-O.normals[U+0]*z,se=-O.normals[U+1]*z;if(O.concave[E]||!O.concave[E]&&m){let oe=Math.atan2(X,Y),he=Math.atan2(se,Q);he>oe&&(he-=Math.PI*2);let Ge=he-oe;if(O.continuous[E]||m){let ge=oe+Ge/2,$e=Math.cos(ge)*z,Te=Math.sin(ge)*z;D[2*j+0]=q+$e*(m?-1:1),D[2*j+1]=W+Te*(m?-1:1),Z[j]=E,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=ge;$e++){let Te=oe+Ge*($e/ge),ht=Math.cos(Te)*z,Lt=Math.sin(Te)*z;D[2*j+0]=q+ht,D[2*j+1]=W+Lt,Z[j]=E,j++}}}else D[2*j+0]=q+Y,D[2*j+1]=W+X,Z[j]=E,R[E]=j,j++,D[2*j+0]=q,D[2*j+1]=W,Z[j]=E,j++,D[2*j+0]=q+Q,D[2*j+1]=W+se,Z[j]=E,K[E]=j,j++}let V=xo({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:E=>{let ne=E.Org.idx,q=Z[ne],W=Z[(ne+1)%Z.length];E.idx=[q,W],E.Sym.idx=[W,q]},vertexIdCallback:E=>{let U=E.Lprev.idx;return[U?U[1]:0,E.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!V.vertexCount)break;for(let E=0;E<V.vertexIndices.length;E++){let[U,ne]=V.vertexIndices[E];if(U===ne)continue;let q=ne;ne<U&&(q+=C);for(let W=U;W<q;W++){let Y=W%C,X=(W+1)%C;if(!O.continuous[Y]||!O.continuous[X]){V.vertexIndices[E]=[U,Y],V.vertexIndices.splice(E+1,0,[X,ne]),V.vertices.splice((E+1)*2,0,V.vertices[E*2],V.vertices[E*2+1]);break}}}ce.push({bevelI:G,angle:B,size:z,boundary:V,reverseMap:Z,insetPoints:D})}let ve=(G,B,z)=>{let D=0,R=G.boundary.vertexIndices.length;for(;D<R&&z(G.boundary.vertexIndices[B]);)B=(B+1)%R,D++;return D},F=y.length;for(let G=1;G<ce.length;G++){let B=ce[G-1],z=ce[G],D=B.boundary.vertexIndices.length,R=z.boundary.vertexIndices.length;if(!D||!R)break;let K=O.concave.length,Z=0,j=Tl(Z,C);for(;!B.boundary.vertexIndices.filter(j).length||!z.boundary.vertexIndices.filter(j).length;)Z++,j=Tl(Z,C);let V=B.boundary.vertexIndices.findIndex(j),E=z.boundary.vertexIndices.findIndex(j);do V=(V+1)%D;while(j(B.boundary.vertexIndices[V]));do E=(E+1)%R;while(j(z.boundary.vertexIndices[E]));Z=(Z+1)%C;let U=Z,ne=this.buildBevelVert(O,B,(V-1+D)%D),q=this.buildBevelVert(O,z,(E-1+R)%R),W=ne,Y=q,X,Q,se=!1;do{j=Tl(Z,C);let oe=ve(B,V,j),he=ve(z,E,j),Ge=se;if(se=!1,oe&&!he){for(let ge=0;ge<oe;ge++)X=this.buildBevelVert(O,B,(V+ge)%D,ge/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X;se=!0}else if(!oe&&he)for(let ge=0;ge<he;ge++)Q=this.buildBevelVert(O,z,(E+ge)%R,ge/(he-1)),y.push(Y.topN,W.topP,Q.topP),y.push(W.bottomP,Y.bottomN,Q.bottomP),Y=Q;else if(oe&&he)if(X=this.buildBevelVert(O,B,V,0),Q=this.buildBevelVert(O,z,E,0),Ge?(y.push(W.topN,Q.topP,Y.topN),y.push(W.topN,X.topP,Q.topP),y.push(Q.bottomP,W.bottomN,Y.bottomN),y.push(Q.bottomP,X.bottomP,W.bottomN)):(y.push(Y.topN,W.topN,X.topP),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP)),W=X,Y=Q,oe===he)for(let ge=1;ge<oe;ge++)X=this.buildBevelVert(O,B,(V+ge)%D,ge/(oe-1)),Q=this.buildBevelVert(O,z,(E+ge)%R,ge/(he-1)),y.push(W.topN,X.topP,Y.topN),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP),W=X,Y=Q;else if(oe>he){let ge=oe/he,$e=0;for(let Te=1;Te<oe;Te++)X=this.buildBevelVert(O,B,(V+Te)%D,Te/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X,Te>($e+1)*ge&&($e++,Q=this.buildBevelVert(O,z,(E+$e)%R,$e/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q)}else{let ge=he/oe,$e=0;for(let Te=1;Te<he;Te++)Q=this.buildBevelVert(O,z,(E+Te)%R,Te/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q,Te>($e+1)*ge&&($e++,X=this.buildBevelVert(O,B,(V+$e)%D,$e/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X)}V=(V+oe)%D,E=(E+he)%R,Z=(Z+1)%K}while(Z!==U)}{let G=ce[0];for(let B=0,z=G.boundary.vertexCount;B<z;B++){let D=this.buildBevelVert(O,G,B),R=this.buildBevelVert(O,G,(B+1)%z);y.push(R.topP,D.topN,D.bottomN),y.push(R.topP,D.bottomN,R.bottomP)}}if(m){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let z=y[B-2],D=y[B-1],R=y[B-0];G.push(R,D,z)}y.splice(F,y.length-F,...G)}if(m){let G=[];for(let B=ce[ce.length-1].boundary.vertices.length-1;B>=1;B-=2){let z=ce[ce.length-1].boundary.vertices[B-1],D=ce[ce.length-1].boundary.vertices[B-0];G.push(z,D)}b.push(G)}if(!m){let G=ce[ce.length-1],B=xo({windingRule:ce.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let z=0;z<B.elementCount*3;z+=3){let D=this.buildSurfaceVert(B,B.elements[z+0]),R=this.buildSurfaceVert(B,B.elements[z+1]),K=this.buildSurfaceVert(B,B.elements[z+2]);y.push(D.top,R.top,K.top),y.push(K.bottom,R.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new $s(Uint32Array.from(y),1),N=new $s(this._buffer.positions,3),v=new $s(this._buffer.normals,3),k=new $s(this._buffer.uvs,2);N.needsUpdate=!0,v.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",v),this.setAttribute("uv",k),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,d={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=i,this._buffer.positions[h+1]=s,this._buffer.positions[h+2]=this._depth,this._buffer.normals[h+0]=0,this._buffer.normals[h+1]=0,this._buffer.normals[h+2]=1,this._buffer.uvs[p+0]=a,this._buffer.uvs[p+1]=l,this._buffer.positions[h+3]=i,this._buffer.positions[h+4]=s,this._buffer.positions[h+5]=0,this._buffer.normals[h+3]=0,this._buffer.normals[h+4]=0,this._buffer.normals[h+5]=-1,this._buffer.uvs[p+2]=a,this._buffer.uvs[p+3]=l,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[o],c,h,p,d;a!==l?(h=a,c=l,d=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,d=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||d);let u=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,w=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,v=(b-this._minX)/this._width,k=(A-this._minY)/this._height,L=e.normals[w+0],m=e.normals[w+1],I=e.normals[y+0],x=e.normals[y+1];if(d){let J=I-L,ie=x-m;L=L+J*(1-i),m=m+ie*(1-i);let de=Math.sqrt(L*L+m*m);L/=de,m/=de}let C=this._buffer.get(p?2:4),T=C*3,O=C*2,$={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[T+0]=b,this._buffer.positions[T+1]=A,this._buffer.positions[T+2]=this._depth-N,this._buffer.normals[T+0]=L*u,this._buffer.normals[T+1]=m*u,this._buffer.normals[T+2]=f,this._buffer.uvs[O+0]=v,this._buffer.uvs[O+1]=k,this._buffer.positions[T+3]=b,this._buffer.positions[T+4]=A,this._buffer.positions[T+5]=N,this._buffer.normals[T+3]=L*u,this._buffer.normals[T+4]=m*u,this._buffer.normals[T+5]=-f,this._buffer.uvs[O+2]=k,this._buffer.uvs[O+3]=v,p||(C+=2,T+=6,O+=4,$.topP=C+0,$.bottomP=C+1,this._buffer.positions[T+0]=b,this._buffer.positions[T+1]=A,this._buffer.positions[T+2]=this._depth-N,this._buffer.normals[T+0]=I*u,this._buffer.normals[T+1]=x*u,this._buffer.normals[T+2]=f,this._buffer.uvs[O+0]=v,this._buffer.uvs[O+1]=k,this._buffer.positions[T+3]=b,this._buffer.positions[T+4]=A,this._buffer.positions[T+5]=N,this._buffer.normals[T+3]=I*u,this._buffer.normals[T+4]=x*u,this._buffer.normals[T+5]=-f,this._buffer.uvs[O+2]=k,this._buffer.uvs[O+3]=v),this.vertexCache[s]=$,$}clone(){let e=new si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ri(this.userData),e}};var dt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var c,h,p,d,u,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),i=Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(p=e.depth)!=null?p:0),s=(d=n.shape)!=null?d:t==null?void 0:t.shape,a=(u=s==null?void 0:s.roundness)!=null?u:e.roundness;s!==void 0&&(s instanceof Oe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Oe(r,o).fromJSON(s),((f=n.parameters)==null?void 0:f.roundness)!==void 0&&((g=n.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Oe(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,extrudeDepth:i,roundness:a}),shape:l}}static build(n){let{extrudeDepth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new ni(n.shape,o):s=new si(n.shape,t,e,o,r),Object.assign(s,{userData:H(P({},n),{type:"VectorGeometry"})})}};import{MathUtils as Ed,Vector2 as _d}from"three";var Gd=Math.PI*2,zd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c=n.shape,h=t*.5,p=e*.5,d=lv(c,h,p,o*Math.PI/180,r,i);c.isClosed=!0,c.update();let u=dt.create({shape:c,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(u,{userData:H(P({},n),{type:"EllipseGeometry"})})}};function lv(n,t,e,r,o,i){if(r>=Gd)return o>30||o%4===0?(hv(n,t,e,i),Math.round(o/4)):Bd(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Od({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?cv(n,s.x,s.y,c,o,t,e,i):Bd(n,r,o,t,e,i)}function cv(n,t,e,r,o,i,s,a){let l=Math.round(o/r.length);n.addPoint(ai(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],d=n.points[c],u=ai(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),u.controls[0].position.set(p.x2,p.y2),n.addPoint(u)}return a>0?Rd(n,i,s,a):n.addPoint(ai(0,0)),l}function Bd(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,h=Math.cos(l)*o;n.addPoint(ai(c,h))}return t<Gd?i>0?Rd(n,r,o,i):n.addPoint(ai(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Fd(n,r,o,i)),1}function hv(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,l=e*s;n.addPoint(Js(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Js(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Js(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Js(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Fd(n,t,e,r)}function ai(n,t){return new tr(Ed.generateUUID(),new _d(n,t))}function Js(n,t,e,r,o,i){let s=ai(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Rd(n,t,e,r){Vd(n,t,e,r).forEach(i=>n.addPoint(i))}function Fd(n,t,e,r){let o=Vd(n,t,e,r),i=new Oe;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Vd(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new _d(o/t,i/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=Ed.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as pv,Float32BufferAttribute as Nl,Vector3 as jd}from"three";var Ud=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs((l=e.height)!=null?l:r),i=Math.abs((c=e.depth)!=null?c:r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=n.parameters,d=new rn(!1,t,e,r,o,i,s,a,l,c,h,p);return Object.assign(d,{userData:H(P({},n),{type:"HelixGeometry"})})}},rn=class extends pv{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,l=1,c=1,h=1,p=1,d=1){super();let u=t&&s===1;u&&(d=0),p>100&&(p=100);let f=()=>new jd,g=new jd,w=f(),y=f(),b=f(),A,N,v,k,L,m,I,x,C=f(),T=f(),O=f(),$=f(),J=f(),ie=f(),de=f(),ce=f(),ve=r-2*l+.001,F=ve/s,G=Math.ceil(a*s),B=G+1,z=ve/G,D=-ve/2,R=h+1,K=2*Math.PI/h,Z=Math.PI/2/d,j=.01,V=Math.min((1-p/100)*l,l-j),E=l-V,U=0,ne=2,q=d*ne+ne,W=R*q/ne,Y=W+R*B,X=R*(B+q),[Q,se,oe]=[3,3,2].map(ke=>Array(X*ke).fill(0)),he=[],Ge=i-l;function ge(ke,gt){let _t=Math.PI/2;m=gt*z,x=2*Math.PI*(m%F)/F+_t,m+=D,I=Math.sin(x)*Ge,L=Math.cos(x)*Ge,t?ke.set(L,I,m):ke.set(L,m,I)}ge(g,-1e-10),ge(w,0),C.copy(g),ge(g,1);let $e=g.distanceTo(w),Te=E+V,ht=$e*G+2*Te,Lt=V,Lr=ht-Te;for(let ke=0;ke<=G;ke++){ge(y,ke),ce.subVectors(y,C).normalize(),C.copy(y),ie.copy(y).setComponent(+t+1,0).normalize(),de.crossVectors(ce,ie).normalize();let gt=ke===0,_t=ke===G,An=gt?3*Math.PI/2:Z,Dn=gt?Lt:Lr,Bn=gt?R:Y,En=gt?0:X-R,_n=ce.clone().multiplyScalar(gt?-E:E).add(y),Gn=ce.clone().multiplyScalar(gt?-1:1).normalize();for(let Ut=0;Ut<R;Ut++){let Ei=Ut*K;if(T.addVectors(g.copy(ie).multiplyScalar(l*Math.cos(Ei)),w.copy(de).multiplyScalar(l*Math.sin(Ei))),O.copy(T).normalize(),gt||_t){u||(U=En+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=_n.getComponent(pt),se[U*3+pt]=Gn.getComponent(pt)}),oe[U*2]=+_t,oe[U*2+1]=Ut/h),w.copy(O).multiplyScalar(V),b.addVectors(y,w);for(let pt=0;pt<d;pt++){let Oo=pt*Z+An;$.addVectors(g.copy(ce).multiplyScalar(E*Math.sin(Oo)),w.copy(O).multiplyScalar(E*Math.cos(Oo))),J.copy($).normalize(),w.addVectors(b,$),$.normalize(),U=Bn+pt*R+Ut,[0,1,2].forEach(lo=>{Q[U*3+lo]=w.getComponent(lo),se[U*3+lo]=J.getComponent(lo)});let zn=+gt+Math.sin(Oo);oe[U*2]=(Dn+E*zn)/ht,oe[U*2+1]=Ut/h}}w.addVectors(y,T),U=W+ke*R+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=w.getComponent(pt),se[U*3+pt]=O.getComponent(pt)}),oe[U*2]=(Te+ke*$e)/ht,oe[U*2+1]=Ut/h}}let yt=B+2*d+ne,Cr=1,[so,ao]=u?[Cr,Cr+B-1]:[0,yt-1];for(let ke=so;ke<=ao-1;ke++){let gt=u&&ke===ao-1;for(let _t=0;_t<R-1;_t++)A=ke*R+_t,N=A+1,v=(gt?_t:A)+R,k=(gt?_t+1:N)+R,ke===0?he.push(N,k,v):ke===yt-2?he.push(A,N,v):he.push(A,N,v,N,k,v)}this.setIndex(he),this.setAttribute("position",new Nl(Q,3)),this.setAttribute("normal",new Nl(se,3)),this.setAttribute("uv",new Nl(oe,2))}};import{IcosahedronBufferGeometry as dv}from"three";var kd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new on(t*.5,i,s):new dv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(P({},n),{type:"IcosahedronGeometry"})})}},on=class extends Yr{constructor(t=1,e=.2,r=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],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new on(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as uv,Shape as mv}from"three";var Hd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i,s,a;((o=(r=n.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new mv;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new uv(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:H(P({},n),{type:"LatheGeometry"})})}};import{BufferGeometry as Wd,BufferGeometryLoader as Sv,Vector3 as wv,BoxBufferGeometry as $d}from"three";import{BufferGeometry as fv,Vector2 as Ml,Vector3 as qd}from"three";import{Geometry as yv,Face3 as gv}from"three/examples/jsm/deprecated/Geometry.js";var xv=["a","b","c"];function bv(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ol(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Pl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let h=e[s],p=e[a];c={a:h,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[t].edges.push(c)}function vv(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Pl(s.a,s.b,n,r,s,e),Pl(s.b,s.c,n,r,s,e),Pl(s.c,s.a,n,r,s,e)}function Ks(n,t,e,r,o){n.push(new gv(t,e,r,void 0,void 0,o))}function li(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Ys(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Xs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof fv?t=new yv().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new qd,r,o,i,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,d=[],u=new Map;vv(l,c,d,u);let f=[],g,w,y,b,A,N,v;for(let j of Array.from(u.keys())){for(w=u.get(j),y=new qd,A=3/8,N=1/8,v=w.faces.length,v!=2&&(A=.5,N=0,v!=1),y.addVectors(w.a,w.b).multiplyScalar(A),e.set(0,0,0),s=0;s<v;s++){for(b=w.faces[s],a=0;a<3&&(g=l[bv(b,xv[a])],!(g!==w.a&&g!==w.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),w.newEdge=f.length,f.push(y)}let k,L,m,I,x,C,T,O=[];for(o=0,i=l.length;o<i;o++){for(C=l[o],x=d[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),L=1-r*Number(k),m=k,r<=2&&(r==2?(L=3/4,m=1/8):r==1||r==0),T=C.clone().multiplyScalar(L),e.set(0,0,0),s=0;s<r;s++)I=x[s],g=I.a!==C?I.a:I.b,e.add(g);e.multiplyScalar(Number(m)),T.add(e),O.push(T)}let $=O.concat(f),J=O.length,ie,de,ce,ve=[],F=[],G,B,z,D,R=new Ml,K=new Ml,Z=new Ml;for(o=0,i=c.length;o<i;o++)b=c[o],ie=Number(Ol(b.a,b.b,u).newEdge)+J,de=Number(Ol(b.b,b.c,u).newEdge)+J,ce=Number(Ol(b.c,b.a,u).newEdge)+J,Ks(ve,ie,de,ce,b.materialIndex),Ks(ve,b.a,ie,ce,b.materialIndex),Ks(ve,b.b,de,ie,b.materialIndex),Ks(ve,b.c,ce,de,b.materialIndex),p&&(G=h[o],B=G[0],z=G[1],D=G[2],R.set(li(B.x,z.x),li(B.y,z.y)),K.set(li(z.x,D.x),li(z.y,D.y)),Z.set(li(B.x,D.x),li(B.y,D.y)),Ys(F,R,K,Z),Ys(F,B,R,Z),Ys(F,z,K,R),Ys(F,D,Z,K));t.vertices=$,t.faces=ve,p&&(t.faceVertexUvs[0]=F)}};var it=new wv,Jd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,s;let e=(s=(i=n.geometry)!=null?i:t==null?void 0:t.geometry)!=null?s:new Wd().copy(new $d(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=P(P({},r),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){var l;let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=(l=n.geometry)!=null?l:new Wd().copy(new $d(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&i.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=i.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=i),i=new Xs(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:H(P({},n),{type:"NonParametricGeometry"})})}static loadFromUrl(n,t,e){new Sv(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(i.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(i))})}};var Kd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5,p=0,d=0,u=2*Math.PI/r;for(let g=0;g<r;g++){let w=u*g,y=p+Math.sin(w)*c,b=d+Math.cos(w)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,w=l.points.length;g<w;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=dt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(P({},n),{type:"PolygonGeometry"})})}};import{BufferGeometry as Lv,Float32BufferAttribute as Il,Vector2 as fr,Vector3 as lt}from"three";var Yd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Dl(t*.5,e,o,i,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(P({},n),{type:"PyramidGeometry"})})}};function nn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Al(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();i.copy(n).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(c)),i.addScaledVector(a,r/Math.sin(c))}}function Cv(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Dl=class extends Lv{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],h=[],p=[],d=0,u=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),w=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-u,0),N=new lt(0,u,0),v=new fr(t,-u),k=new fr(g,-u),L=new fr(0,N.y).sub(k),m=new fr(0,N.y).sub(v),I=new fr(L.y,-L.x).normalize(),x=new fr(m.y,-m.x).normalize(),T=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-L.angle())/2)-1e-8;s=Math.min(s,T);let O;{let F=new lt(I.x,I.y,0),G=new lt(Math.cos(w)*F.x,F.y,Math.sin(w)*F.x);O=F.angleTo(G)}let $=s/Math.tan((Math.PI-L.angle())/2),J=s/Math.tan((Math.PI-O)/2),ie=new lt;if(!i){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let F=d++,G=[],B=v.clone(),z=$/Math.cos(Math.PI/r);B.x-=z;for(let D=0;D<r;D++){let R=D/r*Math.PI*2+f,K=new fr(Math.sin(R),Math.cos(R));nn(B,K,ie),c.push(ie.x,ie.y,ie.z),h.push(0,-1,0),p.push(0,0),G.push(d++)}for(let D=0;D<G.length;D++)l.push(G[D],F,G[(D+1)%G.length])}let de=[];{let F=new lt,G=new lt,B=new lt,z=new lt,D=new lt,R=new lt;for(let K=0;K<r;K++){let Z=K/r*Math.PI*2+f,j=(K+.5)/r*Math.PI*2+f,V=(K+1)/r*Math.PI*2+f,E=new fr(Math.sin(Z),Math.cos(Z)),U=new fr(Math.sin(j),Math.cos(j)),ne=new fr(Math.sin(V),Math.cos(V));nn(v,E,G),nn(v,ne,B),nn(I,U,F),Al(N,G,B,J,J,z),c.push(z.x,z.y,z.z),Al(G,N,B,J,$,D),c.push(D.x,D.y,D.z),Al(B,G,N,$,J,R),c.push(R.x,R.y,R.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=d++,W=d++,Y=d++;if(l.push(q,W,Y),s>0){{let se=G.clone().add(B).multiplyScalar(.5),oe=N.clone().sub(se).normalize(),Ge=A.clone().sub(se).normalize().add(oe).normalize().multiplyScalar(-1),ge=R.clone().sub(D);ce(se,ge,Ge,L.angle())}let X,Q;{let se=new lt;nn(x,ne,se);let oe=R.clone().add(z).multiplyScalar(.5);oe=Cv(oe,B,N);let he=R.clone().sub(z);[X,Q]=ce(oe,he,se,O,z.y)}{let se=X,oe=se.clone().setY(0).normalize(),he=new lt(0,-1,0),Ge=oe.clone().cross(he);ve(se,oe,he,Ge)}de.concat(Q);{let se=L.angle(),oe=Math.PI-se,he=N.clone();he.y-=s/Math.sin(se-Math.PI/2);let Ge=new lt,ge=[];for(let Te=0;Te<a;Te++){let ht=[],Lt=Math.PI/2-oe*Te/a,Lr=Math.cos(Lt),yt=Math.sin(Lt),Cr=j;for(let so=0;so<=Te;so++){let ao=Math.cos(Cr),ke=Math.sin(Cr);F.x=Lr*ke,F.y=yt,F.z=Lr*ao,Ge.copy(he).addScaledVector(F,s),c.push(Ge.x,Ge.y,Ge.z),h.push(F.x,F.y,F.z),p.push(0,0),ht.push(d++),Cr+=Math.PI*2/Te/r}ge.push(ht)}Q.reverse(),ge.push(Q);let $e=ge.length-1;for(let Te=0;Te<$e;Te++){let ht=ge[Te],Lt=ge[Te+1],Lr=ht.length-1;l.push(Lt[1],ht[0],Lt[0]);for(let yt=1;yt<=Lr;yt++)l.push(ht[yt],ht[yt-1],Lt[yt]),l.push(Lt[yt+1],ht[yt],Lt[yt])}}}}}this.setIndex(l),this.setAttribute("position",new Il(c,3)),this.setAttribute("normal",new Il(h,3)),this.setAttribute("uv",new Il(p,2));function ce(F,G,B,z,D){let R=-z/2,K=(Math.PI-z)/2,Z=G.clone().normalize().cross(B);F.addScaledVector(B,-s/Math.sin(K));let j=new lt,V=new lt,E=1,U=d,ne=[];for(let q=0;q<=a;q++){let W=R+q/a*z;V.set(0,0,0),V.addScaledVector(Z,Math.sin(W)),V.addScaledVector(B,Math.cos(W));for(let Y=0;Y<=E;Y++){let X=Y/E-.5;if(j.copy(F),j.addScaledVector(G,X),j.addScaledVector(V,s),D!=null){let Q=Math.max(0,j.y-D);j.addScaledVector(G,-Q/G.y)}c.push(j.x,j.y,j.z),h.push(V.x,V.y,V.z),p.push(0,0),Y===0&&ne.push(d),d++}}for(let q=0;q<a;q++)for(let W=0;W<E;W++){let Y=U+W+(E+1)*q,X=Y+(E+1),Q=X+1,se=Y+1;l.push(Y,X,se),l.push(X,Q,se)}return[F.clone().addScaledVector(G,.5),ne]}function ve(F,G,B,z){let D=Math.PI/2,R=m.angle()-D,K=[],Z=new lt,j=new lt;for(let E=0;E<=a;E++){let U=[],ne=E/a;for(let q=0;q<=E;q++){let Y=((E?q/E:0)-.5)*b,X=Math.cos(Y),Q=Math.sin(Y),se=Math.atan(Math.tan(R)*X),oe=(D+se)*ne,he=Math.cos(oe),Ge=Math.sin(oe);Z.set(0,0,0),Z.addScaledVector(G,Ge*X),Z.addScaledVector(B,he),Z.addScaledVector(z,Ge*Q),j.copy(F).addScaledVector(Z,s),c.push(j.x,j.y,j.z),h.push(Z.x,Z.y,Z.z),p.push(0,0),U.push(d++)}K.push(U)}let V=K.length-1;for(let E=0;E<V;E++){let U=K[E],ne=K[E+1],q=U.length-1;l.push(U[0],ne[1],ne[0]);for(let W=1;W<=q;W++)l.push(U[W-1],U[W],ne[W]),l.push(U[W],ne[W+1],ne[W])}}}};var Zs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,s,a,l;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(l=e.depth)!=null?l:0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(N,v,k){return v>e&&k>r?Math.min(N*e/v,N*r/k):v>e?N*e/v:k>r?N*r/k:N}let u=[];u[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),u[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),u[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),u[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=h.x,g=p.x,w=p.y,y=h.y;t.addPoint(t.createPoint(f,w)),t.addPoint(t.createPoint(g,w)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,v=t.points.length;N<v;N++)t.points[N].roundness=u[N],N>0&&u[N]!==u[N-1]&&(b=!1);b&&(t.roundness=u[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=dt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(P({},n),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as Tv}from"three";var Xd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=n.parameters,h=new Tv(.5*t,o,i,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(P({},n),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as Nv}from"three";var Zd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Nv(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:H(P({},n),{type:"PlaneGeometry"})})}};var Qd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,h=n.shape,p=t*.5,d=e*.5,u=0,f=0,g=s*Math.PI/360/o,w=Math.PI/2*3*-1,y=p*r/100,b=d*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let v=g*N,k=u+Math.sin(v)*p,L=f+Math.cos(v)*d;h.addPoint(h.createPoint(k,L))}}else for(let N=0;N<o;N++){let v=u+Math.cos(w)*p,k=f+Math.sin(w)*d;h.addPoint(h.createPoint(v,k)),w+=g,v=u+Math.cos(w)*y,k=f+Math.sin(w)*b,N<=o,h.addPoint(h.createPoint(v,k)),w+=g}h.isClosed=!0;for(let N=0,v=h.points.length;N<v;N++)h.points[N].roundness=i;h.roundness=i,h.update();let A=dt.create({shape:h,parameters:{roundness:i,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(P({},n),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as Mv}from"three";var Qs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new Mv(t,e);return Object.assign(r,{userData:H(P({},n),{type:"TextFrameGeometry"})})}};var eu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),i=Math.abs((l=e.depth)!=null?l:e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=Ov(t,e,r,t*.5,s,i,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(P({},n),{type:"TorusGeometry"})})}};function Ov(n,t,e,r,o,i,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new rn(!0,n,t,e,r,o,i,s,a,l,c,h)}import{TorusKnotBufferGeometry as Pv}from"three";var tu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width),tube:(s=e.tube)!=null?s:e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let l=new Pv(a,e,r,o,i,s);return Object.assign(l,{userData:H(P({},n),{type:"TorusKnotGeometry"})})}};var ru=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5;a?(l.addPoint(l.createPoint(-c,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))):(l.addPoint(l.createPoint(0,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))),l.isClosed=!0;for(let d=0,u=l.points.length;d<u;d++)l.points[d].roundness=r;l.roundness=r,l.update();let p=dt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(P({},n),{type:"TriangleGeometry"})})}};var sn={};xc(sn,{addBarycentricAttribute:()=>Ev,fixUvs:()=>Gv,loadFromUrl:()=>_v,resizeGeometry:()=>Bv,roundShapePolygon:()=>Dv});import{BufferGeometryLoader as Iv,Float32BufferAttribute as Av,Vector3 as Bl}from"three";var ou=function(n,t){let e=t.x-n.x,r=t.y-n.y,o=Math.sqrt(e*e+r*r),i=e/o,s=r/o,a=Math.atan2(s,i);return{x:e,y:r,len:o,nx:i,ny:s,ang:a}},Dv=(n,t,e)=>{let r,o,i,s,a,l,c,h,p,d,u,f,g,w,y=t.length;for(s=t[y-2],n.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=ou(a,s),A=ou(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,u=Math.asin(c),p=1,d=!1,h<0?u<0?u=Math.PI+u:(u=Math.PI-u,p=-1,d=!0):u>0&&(p=-1,d=!0),f=u/2,w=Math.abs(Math.cos(f)*e/Math.sin(f)),w>Math.min(b.len/2,A.len/2)?(w=Math.min(b.len/2,A.len/2),g=Math.abs(w*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*w,i=a.y+A.ny*w,o+=-A.ny*g*p,i+=A.nx*g*p,n.absarc(o,i,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,d),s=a,a=l}n.closePath()},Bv=(n,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=n.userData.parameters,i,s,a;t===0?(t=o.width,i=1):i=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,n.scale(i,s,a),o.width=t,o.height=e,o.depth=r},Ev=(n,t)=>{let e=[new Bl(1,0,0),new Bl(0,1,0),new Bl(0,0,1)],r=n.attributes.position,o=new Float32Array(r.count*3);for(let i=0,s=r.count;i<s;i++)e[i%3].toArray(o,i*3);n.setAttribute(t,new Av(o,3))},_v=n=>new Promise(t=>{new Iv().load(n,r=>t(r))}),Gv=(n,t,e)=>{let r=n.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let i=r.getX(o),s=r.getY(o);r.setXY(o,(i+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as Gu,BufferAttribute as zu,Uint32BufferAttribute as Ql,Float32BufferAttribute as ec,Matrix4 as qS,Vector3 as ba}from"three";var zv,ea=new Promise(n=>{zv=n});import{BufferGeometryLoader as kS}from"three";import{DoubleSide as FS,EventDispatcher as VS,Matrix3 as jS,Vector3 as Zl}from"three";import{NormalBlending as nS,ShaderMaterial as sS,FrontSide as aS}from"three";import{CubeReflectionMapping as Yv,CubeRefractionMapping as Xv,CubeUVReflectionMapping as Zv,LinearEncoding as lu,sRGBEncoding as Qv}from"three";var an=class{constructor(t){t=t!=null?t:{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as Rv}from"three";var pe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Rv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?e:{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?r:{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?r:this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof pe&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var El=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},nt=new El;import{Vector2 as iu}from"three";import{MathUtils as Fv}from"three";var me=class extends pe{constructor(e,r){super(e);this.scope="";r=r!=null?r:{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Fv.generateUUID()),o=e.getUUID(o!=null?o:this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,i);let h=this.generate(e,l,o);return e.addNodeCode(c+" = "+h+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o!=null?o:this.uuid,e.getTempVar(o,i!=null?i:this.getType(e),s,this.getLabel()).name}};var Fe=class extends me{constructor(e,r){r=r!=null?r:{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,i,s,a){o=e.getUUID(o!=null?o:this.getUUID()),i=i!=null?i:this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var vt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof iu?e:new iu(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as nu}from"three";var St=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof nu?e:new nu(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Color as Vv}from"three";var Dt=class extends Vv{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,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)}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 Br=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Dt?e:new Dt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var jv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,su=/[a-z_0-9]+/gi,re=class extends me{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let a,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 h=[];for(;a=su.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let d=h[p],u=d[0],f=this.isMethod?!this.getInputByName(u):!0,g=u;if(this.keywords[u]||this.useKeywords&&f&&nt.containsKeyword(u)){let w=this.keywords[u];if(!w){let y=nt.getKeywordData(u);y.cache&&(w=e.keywords[u]),w=w||nt.getKeyword(u,e),y.cache&&(e.keywords[u]=w)}g=w.build(e)}u!==g&&(c=c.substring(0,d.index+l)+g+c.substring(d.index+u.length+l),l+=g.length-u.length),this.getIncludeByName(g)===void 0&&nt.contains(g)&&e.include(nt.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=o!=null?o:{},this.keywords=i!=null?i:{},this.isMethod){let s=jv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(su);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let i={};for(let s in this.keywords)i[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=i,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var Uv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,_l=class extends me{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||_l.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,l,c="",h=Uv.exec(e);this.useDefine=s!=null?s:this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Ne=_l;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var kv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
+ )*?)}`,"gim"),Hv=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),ci=class extends me{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=kv.exec(e);if(r){let o=r[2],i;for(;i=Hv.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var hi=class extends me{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e!=null?e:0}generate(e,r){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),r)}copy(e){return super.copy(e),this.index=e.index,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.index=this.index),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.index&&(this.index=e.index),this}};nt.addKeyword("uv",function(){return new hi});nt.addKeyword("uv2",function(){return new hi(1)});import{LinearEncoding as qv,sRGBEncoding as Wv}from"three";var bo=class extends me{constructor(e=new pe,r){super("v4");this.nodeType="ColorSpace";this.factor=new pe;this.input=e,this.method=r!=null?r:bo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case qv:return["Linear"];case Wv:return["sRGB"];default:return[]}}generate(e,r){var l;let o=this.input.build(e,"v4"),i=this.getType(e),s=bo.Nodes[this.method],a=e.include(s);if(a===bo.LINEAR_TO_LINEAR)return e.format(o,i,r);if(((l=s.inputs)==null?void 0:l.length)===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,r)}else return e.format(a+"( "+o+" )",i,r)}fromEncoding(e){let r=bo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=bo.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}copy(e){return super.copy(e),this.input.copy(e.input),this.method=e.method,this.factor.copy(e.factor),this}},Nt=bo;Nt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
3
  `)),sRGBToLinear:new re(["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(`
4
4
  `)),LinearTosRGB:new re(["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(`
5
- `))},Tt.LINEAR_TO_LINEAR="LinearToLinear",Tt.SRGB_TO_LINEAR="sRGBToLinear",Tt.LINEAR_TO_SRGB="LinearTosRGB";var Be=class extends re{constructor(e="",r,i,o,s){super(e,s,o,i,r);this.nodeType="Expression"}};import{Texture as Fv}from"three";var mr=class extends Fv{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let i=this.image;if(Array.isArray(i)){t.images[i.uuid].url=[];for(let o=0;o<i.length;o++)t.images[i.uuid].url[o]=nu(i[o])}else t.images[i.uuid].url=nu(i)}return e}};function nu(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?jv(n):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var lo;function jv(n){if(/^data:/i.test(n.src))return n.src;let t;if(n instanceof HTMLCanvasElement)t=n;else{lo===void 0&&(lo=document.createElement("canvas")),lo.width=n.width,lo.height=n.height;let r=lo.getContext("2d");n instanceof ImageData?r.putImageData(n,0,0):r.drawImage(n,0,0,n.width,n.height),t=lo}let e=n.src.startsWith("blob:")?n.fileName:n.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Nt=class extends Ve{constructor(e=new mr,r,i,o){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new ao,this.bias=i,this.project=o!==void 0?o:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){var h;if(r==="sampler2D")return this.getTexture(e,r);let i=this.getTexture(e,r),o=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+i+", "+o+", "+s+" )":l=a+"( "+i+", "+o+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=(h=this.colorSpace)!=null?h:new Tt(new Be("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,p),e.removeContext(),e.format(l,p,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var te=class extends Ve{constructor(e){super("f");this.nodeType="Float";this.value=e!=null?e:0}generateReadonly(e,r,i,o,s,a){return e.format(this.value+(this.value%1?"":".0"),o,r)}copy(e){return super.copy(e),this.value=e.value,this}};var an=class extends fe{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r!=null?r:[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,i,o,s){o=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let p=0;p<a.inputs.length;p++){let h=a.inputs[p],d=this.inputs[p]||this.inputs[h.name];c.push(d.build(e,e.getTypeByFormat(h.type)))}l+=c.join(", ")+" )"}return e.format(l,o,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}toJSON(e){var i;let r=this.getJSONNode(e);if(!r){let o=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(i=o.inputs)!=null&&i.length){r.inputs={};for(let s=0;s<o.inputs.length;s++){let a=o.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var Bl=class extends fe{constructor(e=new de,r=new de,i=Bl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=i}getType(e){let r=this.a.getType(e),i=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(i)>e.getTypeLength(r)?i:r}generate(e,r){let i=this.getType(e);this.type=i;let o=this.a.build(e,i),s=this.b.build(e,i);return e.format("( "+o+" "+this.op+" "+s+" )",i,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},At=Bl;At.ADD="+",At.SUB="-",At.MUL="*",At.DIV="/";var Pe=class extends fe{constructor(e=new de,r=Pe.ABS,i,o){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:o=r,typeof i!="string"?this.c=i:o=i,this.method=o,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Pe.MIX:case Pe.CLAMP:case Pe.REFRACT:case Pe.SMOOTHSTEP:case Pe.FACEFORWARD:return 3;case Pe.MIN:case Pe.MAX:case Pe.MOD:case Pe.STEP:case Pe.REFLECT:case Pe.DISTANCE:case Pe.DOT:case Pe.CROSS:case Pe.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),i=this.b?e.getTypeLength(this.b.getType(e)):0,o=this.c?e.getTypeLength(this.c.getType(e)):0;return r>i&&r>o?this.a.getType(e):i>o?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Pe.LENGTH:case Pe.DISTANCE:case Pe.DOT:return"f";case Pe.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let i,o,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,p=this.getInputType(e),h=this.getType(e);switch(this.type=h,this.method){case Pe.NEGATE:return e.format("( -"+this.a.build(e,p)+" )",p,r);case Pe.INVERT:return e.format("( 1.0 - "+this.a.build(e,p)+" )",p,r);case Pe.CROSS:i=this.a.build(e,"v3"),o=this.b.build(e,"v3");break;case Pe.STEP:i=this.a.build(e,a===1?"f":p),o=this.b.build(e,p);break;case Pe.MIN:case Pe.MAX:case Pe.MOD:i=this.a.build(e,p),o=this.b.build(e,l===1?"f":p);break;case Pe.REFRACT:i=this.a.build(e,p),o=this.b.build(e,p),s=this.c.build(e,"f");break;case Pe.MIX:i=this.a.build(e,p),o=this.b.build(e,p),s=this.c.build(e,c===1?"f":p);break;default:i=this.a.build(e,p),this.b&&(o=this.b.build(e,p)),this.c&&(s=this.c.build(e,p));break}let d=[];d.push(i),o&&d.push(o),s&&d.push(s);let m=this.getNumInputs(e);if(d.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",h,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof de?e.b.clone():e.b,this.c=e.c instanceof de?e.c.clone():e.c,this.method=e.method,this}},ye=Pe;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var co=class extends fe{constructor(e=new de,r=new de,i=new de){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=i}bilinearCubeUV(e,r,i,o){var c,p,h,d;let s=new an(co.Nodes.bilinearCubeUV,[r,i,o]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Tt(new Be("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=(p=this.colorSpaceTR)!=null?p:new Tt(new Be("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=(h=this.colorSpaceBL)!=null?h:new Tt(new Be("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(d=this.colorSpaceBR)!=null?d:new Tt(new Be("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Be(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Be(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Be(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Be(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Be("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let i=this.uv,o=this.bias||e.context.roughness,s=new an(co.Nodes.roughnessToMip,[o]),a=new ye(s,co.Nodes.m0,co.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(a,ye.FLOOR),c=new ye(a,ye.FRACT),p=this.bilinearCubeUV(e,this.value,i,l),h=this.bilinearCubeUV(e,this.value,i,new At(l,new te(1).setReadonly(!0),At.ADD)),d=new ye(p,h,c,ye.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},po=co;po.Nodes=function(){let e=new so(`struct TextureCubeUVData {
5
+ `))},Nt.LINEAR_TO_LINEAR="LinearToLinear",Nt.SRGB_TO_LINEAR="sRGBToLinear",Nt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends re{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as $v}from"three";var yr=class extends $v{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let i=0;i<o.length;i++)t.images[o.uuid].url[i]=au(o[i])}else t.images[o.uuid].url=au(o)}return e}};function au(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?Jv(n):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var pi;function Jv(n){if(/^data:/i.test(n.src))return n.src;let t;if(n instanceof HTMLCanvasElement)t=n;else{pi===void 0&&(pi=document.createElement("canvas")),pi.width=n.width,pi.height=n.height;let r=pi.getContext("2d");n instanceof ImageData?r.putImageData(n,0,0):r.drawImage(n,0,0,n.width,n.height),t=pi}let e=n.src.startsWith("blob:")?n.fileName:n.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Mt=class extends Fe{constructor(e=new yr,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new hi,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){var p;if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+i+", "+s+" )":l=a+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=(p=this.colorSpace)!=null?p:new Nt(new Ee("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var te=class extends Fe{constructor(e){super("f");this.nodeType="Float";this.value=e!=null?e:0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var ln=class extends me{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r!=null?r:[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let h=0;h<a.inputs.length;h++){let p=a.inputs[h],d=this.inputs[h]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){let i=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(o=i.inputs)!=null&&o.length){r.inputs={};for(let s=0;s<i.inputs.length;s++){let a=i.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var Gl=class extends me{constructor(e=new pe,r=new pe,o=Gl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},Bt=Gl;Bt.ADD="+",Bt.SUB="-",Bt.MUL="*",Bt.DIV="/";var Ae=class extends me{constructor(e=new pe,r=Ae.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,h=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,a===1?"f":h),i=this.b.build(e,h);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,h),i=this.b.build(e,l===1?"f":h);break;case Ae.REFRACT:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(i=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let d=[];d.push(o),i&&d.push(i),s&&d.push(s);let u=this.getNumInputs(e);if(d.length!==u)throw Error(`Arguments not match used in "${this.method}". Require ${u}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof pe?e.b.clone():e.b,this.c=e.c instanceof pe?e.c.clone():e.c,this.method=e.method,this}},ye=Ae;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var di=class extends me{constructor(e=new pe,r=new pe,o=new pe){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){var c,h,p,d;let s=new ln(di.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Nt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=(h=this.colorSpaceTR)!=null?h:new Nt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=(p=this.colorSpaceBL)!=null?p:new Nt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(d=this.colorSpaceBR)!=null?d:new Nt(new Ee("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ln(di.Nodes.roughnessToMip,[i]),a=new ye(s,di.Nodes.m0,di.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(a,ye.FLOOR),c=new ye(a,ye.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Bt(l,new te(1).setReadonly(!0),Bt.ADD)),d=new ye(h,p,c,ye.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},ui=di;ui.Nodes=function(){let e=new ci(`struct TextureCubeUVData {
6
6
  vec4 tl;
7
7
  vec4 tr;
8
8
  vec4 br;
9
9
  vec4 bl;
10
10
  vec2 f;
11
- }`),r=new Te("float cubeUV_maxMipLevel 8.0",!0),i=new Te("float cubeUV_minMipLevel 4.0",!0),o=new Te("float cubeUV_maxTileSize 256.0",!0),s=new Te("float cubeUV_minTileSize 16.0",!0),a=new re(`float getFace(vec3 direction) {
11
+ }`),r=new Ne("float cubeUV_maxMipLevel 8.0",!0),o=new Ne("float cubeUV_minMipLevel 4.0",!0),i=new Ne("float cubeUV_maxTileSize 256.0",!0),s=new Ne("float cubeUV_minTileSize 16.0",!0),a=new re(`float getFace(vec3 direction) {
12
12
  vec3 absDirection = abs(direction);
13
13
  float face = -1.0;
14
14
  if (absDirection.x > absDirection.z) {
@@ -67,7 +67,7 @@ var lm=Object.create;var Bn=Object.defineProperty,cm=Object.defineProperties,pm=
67
67
  uv.x -= texelSize;
68
68
  vec4 bl = texture2D(envMap, uv);
69
69
  return TextureCubeUVData( tl, tr, br, bl, f );
70
- }`,[e,a,l,r,i,o,s]);c.useKeywords=!1;let p=new Te("float r0 1.0",!0),h=new Te("float v0 0.339",!0),d=new Te("float m0 -2.0",!0),m=new Te("float r1 0.8",!0),f=new Te("float v1 0.276",!0),T=new Te("float m1 -1.0",!0),w=new Te("float r4 0.4",!0),y=new Te("float v4 0.046",!0),L=new Te("float m4 2.0",!0),A=new Te("float r5 0.305",!0),I=new Te("float v5 0.016",!0),b=new Te("float m5 3.0",!0),V=new Te("float r6 0.21",!0),x=new Te("float v6 0.0038",!0),u=new Te("float m6 4.0",!0),M=[p,h,d,m,f,T,w,y,L,A,I,b,V,x,u],g=new re(`float roughnessToMip(float roughness) {
70
+ }`,[e,a,l,r,o,i,s]);c.useKeywords=!1;let h=new Ne("float r0 1.0",!0),p=new Ne("float v0 0.339",!0),d=new Ne("float m0 -2.0",!0),u=new Ne("float r1 0.8",!0),f=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),w=new Ne("float r4 0.4",!0),y=new Ne("float v4 0.046",!0),b=new Ne("float m4 2.0",!0),A=new Ne("float r5 0.305",!0),N=new Ne("float v5 0.016",!0),v=new Ne("float m5 3.0",!0),k=new Ne("float r6 0.21",!0),L=new Ne("float v6 0.0038",!0),m=new Ne("float m6 4.0",!0),I=[h,p,d,u,f,g,w,y,b,A,N,v,k,L,m],x=new re(`float roughnessToMip(float roughness) {
71
71
  float mip = 0.0;
72
72
  if (roughness >= r1) {
73
73
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -81,7 +81,7 @@ var lm=Object.create;var Bn=Object.defineProperty,cm=Object.defineProperties,pm=
81
81
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
82
  }
83
83
  return mip;
84
- }`,M);return{bilinearCubeUV:c,roughnessToMip:g,m0:d,cubeUV_maxMipLevel:r}}();var yi=class extends fe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:yi.VIEW}getShared(){return this.scope===yi.WORLD}build(e,r,i,o){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,i,o):super.build(e,r,i)}generate(e,r,i,o,s){let a;switch(this.scope){case yi.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case yi.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case yi.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},lt=yi;lt.LOCAL="local",lt.WORLD="world",lt.VIEW="view",lt.NORMAL="normal";it.addKeyword("viewNormal",function(){return new lt(lt.VIEW)});it.addKeyword("localNormal",function(){return new lt(lt.NORMAL)});it.addKeyword("worldNormal",function(){return new lt(lt.WORLD)});var fr=class extends fe{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:fr.LOCAL}getType(){switch(this.scope){case fr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case fr.LOCAL:case fr.WORLD:return!1}return!0}generate(e,r,i,o,s){let a;switch(this.scope){case fr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case fr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case fr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case fr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ut=fr;ut.LOCAL="local",ut.WORLD="world",ut.VIEW="view",ut.PROJECTION="projection";it.addKeyword("position",function(){return new ut});it.addKeyword("worldPosition",function(){return new ut(ut.WORLD)});it.addKeyword("viewPosition",function(){return new ut(ut.VIEW)});var tr=class extends fe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:tr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case tr.SPHERE:return"v2"}return this.type}generate(e,r){let i=this.getUnique(e);if(e.isShader("fragment")){let o;switch(this.scope){case tr.VECTOR:{let s=new lt(lt.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new ut(ut.VIEW).build(e,"v3"),p=a?a.build(e,"f"):void 0,h=`reflect( -normalize( ${c} ), ${l} )`;p&&(h=`normalize( mix( ${h}, ${l}, ${p} * ${p} ) )`);let d=`inverseTransformDirection( ${h}, viewMatrix )`;i?(e.addNodeCode(`vec3 reflectVec = ${d};`),o="reflectVec"):o=d;break}case tr.CUBE:{let s=new tr(tr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";i?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),o="reflectCubeVec"):o=a;break}case tr.SPHERE:{let s=new tr(tr.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";i?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),o="reflectSphereVec"):o=a;break}}return e.format(o,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},yr=tr;yr.CUBE="cube",yr.SPHERE="sphere",yr.VECTOR="vector";var Zs=class extends fe{constructor(e=new Nt,r,i){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new po(this.value,r!=null?r:new yr(yr.VECTOR),i),this.irradianceNode=new po(this.value,new lt(lt.WORLD),new te(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};import{CubeTexture as Uv}from"three";var Qs=class extends Ve{constructor(e=new Uv,r,i){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new yr,this.bias=i}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){var p,h;if(r==="samplerCube")return this.getTexture(e,r);let i=this.getTexture(e,r),o=(p=this.uv)==null?void 0:p.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+i+", "+o+", "+s+" )":a="texCube( "+i+", "+o+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=(h=this.colorSpace)!=null?h:new Tt(new Be("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var au=["x","y","z","w"],Jv=["float","vec2","vec3","vec4"],$v={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},Kv={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},ea=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,i){let o=this.getIncludes(r,i);if(!o)return"";let s="";o=o.sort(t);for(let a=0;a<o.length;a++)o[a].src&&(s+=o[a].src+`
84
+ }`,I);return{bilinearCubeUV:c,roughnessToMip:x,m0:d,cubeUV_maxMipLevel:r}}();var vo=class extends me{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:vo.VIEW}getShared(){return this.scope===vo.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case vo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case vo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case vo.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ct=vo;ct.LOCAL="local",ct.WORLD="world",ct.VIEW="view",ct.NORMAL="normal";nt.addKeyword("viewNormal",function(){return new ct(ct.VIEW)});nt.addKeyword("localNormal",function(){return new ct(ct.NORMAL)});nt.addKeyword("worldNormal",function(){return new ct(ct.WORLD)});var gr=class extends me{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:gr.LOCAL}getType(){switch(this.scope){case gr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case gr.LOCAL:case gr.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case gr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case gr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case gr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case gr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ut=gr;ut.LOCAL="local",ut.WORLD="world",ut.VIEW="view",ut.PROJECTION="projection";nt.addKeyword("position",function(){return new ut});nt.addKeyword("worldPosition",function(){return new ut(ut.WORLD)});nt.addKeyword("viewPosition",function(){return new ut(ut.VIEW)});var rr=class extends me{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:rr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case rr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case rr.VECTOR:{let s=new ct(ct.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new ut(ut.VIEW).build(e,"v3"),h=a?a.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;h&&(p=`normalize( mix( ${p}, ${l}, ${h} * ${h} ) )`);let d=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case rr.CUBE:{let s=new rr(rr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case rr.SPHERE:{let s=new rr(rr.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},xr=rr;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var ta=class extends me{constructor(e=new Mt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ui(this.value,r!=null?r:new xr(xr.VECTOR),o),this.irradianceNode=new ui(this.value,new ct(ct.WORLD),new te(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};import{CubeTexture as Kv}from"three";var ra=class extends Fe{constructor(e=new Kv,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new xr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){var h,p;if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=(h=this.uv)==null?void 0:h.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=(p=this.colorSpace)!=null?p:new Nt(new Ee("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var cu=["x","y","z","w"],eS=["float","vec2","vec3","vec4"],tS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},rS={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},oa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
85
85
  `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
86
86
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
87
87
  #define SPE_BLENDING_NORMAL 0
@@ -119,18 +119,18 @@ var lm=Object.create;var Bn=Object.defineProperty,cm=Object.defineProperties,pm=
119
119
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
120
120
  accumAlpha += (1.0 - accumAlpha) * alpha;
121
121
  }`,""].join(`
122
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let i=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+i+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+i+";"),this.addVertexFinalCode("vUv"+i+" = uv"+i+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition&&(this.addVaryCode("varying vec3 vWPosition;"),this.addVertexFinalCode("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;")),this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.requires.lights=t.lights,this.requires.fog=t.fog,this.mergeDefines(t.defines),this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t!=null?t:"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e!=null?e:this.shader]+=t+`
122
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition&&(this.addVaryCode("varying vec3 vWPosition;"),this.addVertexFinalCode("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;")),this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.requires.lights=t.lights,this.requires.fog=t.fog,this.mergeDefines(t.defines),this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t!=null?t:"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e!=null?e:this.shader]+=t+`
123
123
  `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e!=null?e:this.shader]+=t+`
124
124
  `}clearNodeCode(t){t=t!=null?t:this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e!=null?e:this.shader]+=t+`
125
125
  `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e!=null?e:this.shader]+=t+`
126
- `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,i="varying",o="V",s=""){let a=this.getVars(i),l=a[t];if(!l){let c=a.length;l={name:r||"node"+o+c+(s?"_"+s:""),type:e},a.push(l),a[t]=l}return l}getTempVar(t,e,r,i){return this.getVar(t,e,r,this.shader,"T",i)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
127
- `)}getVarListCode(t,e){e=e!=null?e:"";let r="";for(let i=0,o=t.length;i<o;++i){let s=t[i],a=s.type,l=s.name,c=s.size,p=this.getFormatByType(a);if(p===void 0)throw new Error("Node pars "+p+" not found.");p.includes("[]")?r+=e+" "+p.substring(0,p.length-2)+" "+l+`[${c}];
128
- `:r+=e+" "+p+" "+l+`;
129
- `}return r}getVars(t){return this.inputs.vars[t!=null?t:this.shader]}getNodeData(t){let e=t instanceof de?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,i,o,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new sn({type:e,size:r.size,name:i||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:o});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new sn({type:e,name:i||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:o});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,i,o){return this.createUniform("vertex",t,e,r,i,o)}createFragmentUniform(t,e,r,i,o){return this.createUniform("fragment",t,e,r,i,o)}include(t,e,r){var s;let i;if(t=typeof t=="string"?it.get(t):t,this.context.include===!1)return t.name;t instanceof re?i=this.includes.functions:t instanceof Te?i=this.includes.consts:t instanceof so&&(i=this.includes.structs);let o=i[this.shader]=i[this.shader]||[];if(t){let a=o[t.name];if(a||(a=o[t.name]={node:t,deps:[]},o.push(a),a.src=t.build(this,"source")),t instanceof re&&e&&o[e.name]&&o[e.name].deps.indexOf(t)===-1&&(o[e.name].deps.push(t),(s=t.includes)!=null&&s.length)){let l=0;do this.include(t.includes[l++],e);while(l<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return Jv[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!=null&&r.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case kv:case Hv:return new Qs(r);case qv:return new Zs(new Nt(r));default:return new Nt(r)}else{if(r.isVector2)return new bt(r);if(r.isVector3)return new vt(r);if(r.isVector4)return new Pr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return $v[t]||t}getFormatByType(t){return Kv[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return au[t]}getIndexByElement(t){return au.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=su,e===su&&this.context.gamma&&(e=Wv),e}};var ln=class extends de{constructor(e=new de){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),i=r.code+`
130
- `;return e.isShader("vertex")?i+="gl_Position = "+r.result+";":i+="gl_FragColor = "+r.result+";",i}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Ee=class extends Ve{constructor(e=0,r,i,o){super("c");this.nodeType="Color";this.value=e instanceof Pt?e:new Pt(e||0,r,i,o)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,i,o,s,a){i=e.getUUID(i!=null?i:this.getUUID()),o=o!=null?o:this.getType(e);let l=e.getNodeData(i),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let p=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${p};`)}return c?this.generateReadonly(e,r,i,o,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(o,this,s,a,this.getLabel())),e.format(l.vertex.name,o,r)):(l.fragment||(l.fragment=e.createFragmentUniform(o,this,s,a,this.getLabel())),e.format(l.fragment.name,o,r))}generateReadonly(e,r,i,o,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",o,r)}};import{MathUtils as Ar,Vector2 as Yr,Vector3 as Xr,Vector4 as ta}from"three";import{Texture as Yv}from"three";var be=class extends Ve{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e!=null?e:0)}generateReadonly(e,r,i,o,s,a){return e.format(this.value.toString(),o,r)}copy(e){return super.copy(e),this.value=e.value,this}};var qe=class{constructor(t,e,r,i){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let o in r)o!=="type"&&o!=="calpha"&&(this.uniforms[`f${this.id}_${o}`]=r[o]);for(let o in i)this.defines[o]=i[o]}}copy(t){this.id=t.id,this.type=t.type,this.defines=P({},t.defines);for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new qe(this.id).copy(this)}fromJSON(t,e){this.id=t.id,this.defines=P({},t.defines);for(let r in t.uniforms)this.uniforms[r]=e.getNode(t.uniforms[r]);if(t.type==="texture"){if(!(`f${this.id}_textureSize`in this.uniforms)){let r=this.uniforms[`f${this.id}_texture`].value.image;this.uniforms[`f${t.id}_textureSize`]=new vt(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new bt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new be(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new be(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new be(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new be(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new vt(-1,-1,-1))):t.type==="depth"&&(`f${t.id}_isWorldSpace`in this.uniforms||(this.uniforms[`f${t.id}_isWorldSpace`]=new te(1)));return this}toJSON(t){let e={};for(let i in this.uniforms)e[i]=this.uniforms[i].toJSON(t).uuid;return{id:this.id,type:this.type,defines:JSON.parse(JSON.stringify(this.defines)),uniforms:e,next:this.next==null?void 0:this.next.toJSON(t)}}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let o=this.uniforms[`f${this.id}_${r}`].value;o!==void 0&&(Array.isArray(o)?t[r]=o.map(s=>s.clone?s.clone():s):t[r]=o.clone?o.clone():o)}return t}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}isEqual(t){for(let e in t.uniforms){let r=t.getName(e);if(!r)return!1;let i=this.getValue(r),o=t.uniforms[e].value;if(o.value instanceof Yv){if(i.image!==o.image)return!1}else if(Array.isArray(o)){let s=i;for(let a=0,l=s.length;a<l;++a)if(s[a]!==o[a])return!1}else{let s=i;if(s.equals){if(!s.equals(o))return!1}else if(i!==o)return!1}}return!0}dispose(){}};function lu(n){let t=n instanceof qe?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}var cn=class extends Ve{constructor(e){super("b");this.nodeType="Bool";this.value=e!=null?e:!1}generateReadonly(e,r,i,o){return e.format(this.value?"true":"false",o,r)}copy(e){return super.copy(e),this.value=e.value,this}};import{Vector4 as cu}from"three";var gi=class extends Ve{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof cu?new Array(e).fill(r):new Array(e).fill(new cu(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var xi=class extends Ve{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};import{Matrix3 as Xv}from"three";var ho=class extends Ve{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e!=null?e:new Xv}generateReadonly(e,r,i,o,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",o,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var hn=class extends fe{constructor(e=new Nt,r,i,o,s,a,l,c,p){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=i,this.projection=o,this.axis=s,this.side=a,this.size=l,this.mat=new ho(this.texture.value.matrix),this.alpha=c,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let i=`g${this.uuid.toString().replace(/-/g,"")}`,o;switch(this.projection.value){case 3:o=e.include(hn.Nodes.cylindrical);break;case 2:o=e.include(hn.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new re(`
131
- vec3 ${i}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
126
+ `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+i+c+(s?"_"+s:""),type:e},a.push(l),a[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
127
+ `)}getVarListCode(t,e){e=e!=null?e:"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],a=s.type,l=s.name,c=s.size,h=this.getFormatByType(a);if(h===void 0)throw new Error("Node pars "+h+" not found.");h.includes("[]")?r+=e+" "+h.substring(0,h.length-2)+" "+l+`[${c}];
128
+ `:r+=e+" "+h+" "+l+`;
129
+ `}return r}getVars(t){return this.inputs.vars[t!=null?t:this.shader]}getNodeData(t){let e=t instanceof pe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new an({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new an({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){var s;let o;if(t=typeof t=="string"?nt.get(t):t,this.context.include===!1)return t.name;t instanceof re?o=this.includes.functions:t instanceof Ne?o=this.includes.consts:t instanceof ci&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let a=i[t.name];if(a||(a=i[t.name]={node:t,deps:[]},i.push(a),a.src=t.build(this,"source")),t instanceof re&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),(s=t.includes)!=null&&s.length)){let l=0;do this.include(t.includes[l++],e);while(l<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return eS[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!=null&&r.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case Yv:case Xv:return new ra(r);case Zv:return new ta(new Mt(r));default:return new Mt(r)}else{if(r.isVector2)return new vt(r);if(r.isVector3)return new St(r);if(r.isVector4)return new Br(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return tS[t]||t}getFormatByType(t){return rS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return cu[t]}getIndexByElement(t){return cu.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=lu,e===lu&&this.context.gamma&&(e=Qv),e}};var cn=class extends pe{constructor(e=new pe){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
130
+ `;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var _e=class extends Fe{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Dt?e:new Dt(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o!=null?o:this.getUUID()),i=i!=null?i:this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let h=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${h};`)}return c?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};import{MathUtils as Er,Vector2 as Zr,Vector3 as Qr,Vector4 as ia}from"three";import{Texture as oS}from"three";var be=class extends Fe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e!=null?e:0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var We=class{constructor(t,e,r,o){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let i in r)i!=="type"&&i!=="calpha"&&(this.uniforms[`f${this.id}_${i}`]=r[i]);for(let i in o)this.defines[i]=o[i]}}copy(t){this.id=t.id,this.type=t.type,this.defines=P({},t.defines);for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new We(this.id).copy(this)}fromJSON(t,e){this.id=t.id,this.defines=P({},t.defines);for(let r in t.uniforms)this.uniforms[r]=e.getNode(t.uniforms[r]);if(t.type==="texture"){if(!(`f${this.id}_textureSize`in this.uniforms)){let r=this.uniforms[`f${this.id}_texture`].value.image;this.uniforms[`f${t.id}_textureSize`]=new St(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new vt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new be(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new be(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new be(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new be(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new St(-1,-1,-1))):t.type==="depth"&&(`f${t.id}_isWorldSpace`in this.uniforms||(this.uniforms[`f${t.id}_isWorldSpace`]=new te(1)));return this}toJSON(t){let e={};for(let o in this.uniforms)e[o]=this.uniforms[o].toJSON(t).uuid;return{id:this.id,type:this.type,defines:JSON.parse(JSON.stringify(this.defines)),uniforms:e,next:this.next==null?void 0:this.next.toJSON(t)}}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let i=this.uniforms[`f${this.id}_${r}`].value;i!==void 0&&(Array.isArray(i)?t[r]=i.map(s=>s.clone?s.clone():s):t[r]=i.clone?i.clone():i)}return t}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}isEqual(t){for(let e in t.uniforms){let r=t.getName(e);if(!r)return!1;let o=this.getValue(r),i=t.uniforms[e].value;if(i.value instanceof oS){if(o.image!==i.image)return!1}else if(Array.isArray(i)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==i[a])return!1}else{let s=o;if(s.equals){if(!s.equals(i))return!1}else if(o!==i)return!1}}return!0}dispose(){}};function hu(n){let t=n instanceof We?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}var hn=class extends Fe{constructor(e){super("b");this.nodeType="Bool";this.value=e!=null?e:!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}copy(e){return super.copy(e),this.value=e.value,this}};import{Vector4 as pu}from"three";var So=class extends Fe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof pu?new Array(e).fill(r):new Array(e).fill(new pu(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var wo=class extends Fe{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};import{Matrix3 as iS}from"three";var mi=class extends Fe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e!=null?e:new iS}generateReadonly(e,r,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var dn=class extends me{constructor(e=new Mt,r,o,i,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=l,this.mat=new mi(this.texture.value.matrix),this.alpha=c,this.mode=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(dn.Nodes.cylindrical);break;case 2:i=e.include(dn.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new re(`
131
+ vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
132
132
 
133
- vec2 uvs = ( mat * vec3( (${i}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
133
+ vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
134
134
 
135
135
  vec4 tmp = texture2D( tex, uvs );
136
136
 
@@ -146,7 +146,7 @@ var lm=Object.create;var Bn=Object.defineProperty,cm=Object.defineProperties,pm=
146
146
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
147
147
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
148
148
  return col;
149
- }`);o=e.include(l);break;default:o=e.include(hn.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${i}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${i}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${i}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.getTexture(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+s.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.texture.copy(e.texture),this.textureSize=e.textureSize.clone(),this.crop=e.crop.clone(),this.projection=e.projection.clone(),this.axis=e.axis.clone(),this.size=e.size.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this}},pn=hn;pn.Nodes=function(){let e=new re(`
149
+ }`);i=e.include(l);break;default:i=e.include(dn.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.getTexture(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.texture.copy(e.texture),this.textureSize=e.textureSize.clone(),this.crop=e.crop.clone(),this.projection=e.projection.clone(),this.axis=e.axis.clone(),this.size=e.size.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this}},pn=dn;pn.Nodes=function(){let e=new re(`
150
150
  vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
151
151
  vec3 posN = normalize(position);
152
152
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -204,7 +204,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
204
204
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
205
205
  return col;
206
206
  }
207
- `),i=new re(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
207
+ `),o=new re(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
208
208
 
209
209
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
210
210
  vec4 tmp = texture2D( tex, uvs );
@@ -220,14 +220,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
220
220
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
221
221
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
222
222
  return col;
223
- }`);return{cylindrical:e,spherical:r,uv:i}}();var El=class extends fe{constructor(e,r,i,o,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=i,this.intensity=o,this.factor=s,this.alpha=a,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let i=e.include(El.Nodes.fresnel),o=[];return o.push(this.color.build(e,"c")),o.push(this.bias.build(e,"f")),o.push(this.scale.build(e,"f")),o.push(this.intensity.build(e,"f")),o.push(this.factor.build(e,"f")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),o.push(this.calpha),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.color=e.color.clone(),this.bias=e.bias.clone(),this.scale=e.scale.clone(),this.intensity=e.intensity.clone(),this.factor=e.factor.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},dn=El;dn.Nodes=function(){return{fresnel:new re(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
223
+ }`);return{cylindrical:e,spherical:r,uv:o}}();var zl=class extends me{constructor(e,r,o,i,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=a,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(zl.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.color=e.color.clone(),this.bias=e.bias.clone(),this.scale=e.scale.clone(),this.intensity=e.intensity.clone(),this.factor=e.factor.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},un=zl;un.Nodes=function(){return{fresnel:new re(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
224
224
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
225
225
 
226
226
  float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
227
227
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
228
228
  accumAlpha += (1.0 - accumAlpha) * lalpha;
229
229
  return color;
230
- }`)}}();var un=(o=>(o.SIMPLEX="simplex3d",o.SIMPLEX_FRACTAL="simplex3dFractal",o.ASHIMA="simplexAshima",o.FBM="fbm",o.PERLIN="perlin",o))(un||{}),Dt=function(){let t=new re(`vec3 random3(vec3 c) {
230
+ }`)}}();var mn=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(mn||{}),Et=function(){let t=new re(`vec3 random3(vec3 c) {
231
231
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
232
232
  vec3 r;
233
233
  r.z = fract(512.0*j);
@@ -267,7 +267,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
267
267
  d *= w;
268
268
 
269
269
  return dot(d, vec4(52.0));
270
- }`,[t]);e.keywords.F3=new Te("float F3 0.3333333"),e.keywords.G3=new Te("float G3 0.1666667");let r=new re(`float simplex3dFractal(vec3 m) {
270
+ }`,[t]);e.keywords.F3=new Ne("float F3 0.3333333"),e.keywords.G3=new Ne("float G3 0.1666667");let r=new re(`float simplex3dFractal(vec3 m) {
271
271
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
272
272
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
273
273
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -275,7 +275,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
275
275
  + 0.2666667 * simplex3d(2.0 * m * rot2)
276
276
  + 0.1333333 * simplex3d(4.0 * m * rot3)
277
277
  + 0.0666667 * simplex3d(8.0 * m);
278
- }`,[e]),i=new re("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),o=new re("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new re(`float simplexAshima(vec3 v) {
278
+ }`,[e]),o=new re("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new re("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new re(`float simplexAshima(vec3 v) {
279
279
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
280
280
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
281
281
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -320,7 +320,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
320
320
  m = m * m;
321
321
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
322
322
  dot(p2,x2), dot(p3,x3) ) );
323
- }`,[i,o]),a=new re("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new re("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new re(`float noise(vec3 p){
323
+ }`,[o,i]),a=new re("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new re("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new re(`float noise(vec3 p){
324
324
  vec3 a = floor(p);
325
325
  vec3 d = p - a;
326
326
  d = d * d * (3.0 - 2.0 * d);
@@ -335,7 +335,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
335
335
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
336
336
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
337
337
  return o4.y * d.y + o4.x * (1.0 - d.y);
338
- }`,[l]),p=new re(`float fbm(vec3 x) {
338
+ }`,[l]),h=new re(`float fbm(vec3 x) {
339
339
  float v = 0.0;
340
340
  float a = 0.5;
341
341
  vec3 shift = vec3(100);
@@ -345,7 +345,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
345
345
  a *= 0.5;
346
346
  }
347
347
  return v;
348
- }`,[c]);p.keywords.NUM_OCTAVES=new Te(`int NUM_OCTAVES ${5}`);let h=new re("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new re(`float perlin(vec3 P){
348
+ }`,[c]);h.keywords.NUM_OCTAVES=new Ne(`int NUM_OCTAVES ${5}`);let p=new re("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new re(`float perlin(vec3 P){
349
349
  vec3 Pi0 = floor(P);
350
350
  vec3 Pi1 = Pi0 + vec3(1.0);
351
351
  Pi0 = mod(Pi0, 289.0);
@@ -404,7 +404,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
404
404
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
405
405
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
406
406
  return 2.2 * n_xyz;
407
- }`,[i,o,h]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:p,perlin:d}}();var _l=class extends fe{constructor(e,r,i,o,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=i,this.noiseStrength=o,this.noiseScale=s,this.offset=a,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(_l.Nodes.rainbow),o=[];return o.push(this.filmThickness.build(e,"f")),o.push(this.movement.build(e,"f")),o.push(this.wavelengths.build(e,"v3")),o.push(this.noiseStrength.build(e,"f")),o.push(this.noiseScale.build(e,"f")),o.push(this.offset.build(e,"v3")),o.push(this.alpha.build(e,"f")),o.push(this.calpha),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.filmThickness=e.filmThickness.clone(),this.movement=e.movement.clone(),this.wavelengths=e.wavelengths.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},mn=_l;mn.Nodes=function(){let e=new re(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
407
+ }`,[o,i,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:d}}();var Rl=class extends me{constructor(e,r,o,i,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Rl.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.filmThickness=e.filmThickness.clone(),this.movement=e.movement.clone(),this.wavelengths=e.wavelengths.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},fn=Rl;fn.Nodes=function(){let e=new re(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
408
408
  vec3 st = position / noiseScale;
409
409
  vec3 q = vec3(simplex3d(st),
410
410
  simplex3d(st + vec3(1.0)),
@@ -417,7 +417,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
417
417
  float noise = simplex3d(st + r);
418
418
 
419
419
  return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
420
- }`,[Dt.simplex]);return{rainbow:new re(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
420
+ }`,[Et.simplex]);return{rainbow:new re(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
421
421
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
422
422
 
423
423
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -426,7 +426,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
426
426
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
427
427
 
428
428
  return res;
429
- }`,[e])}}();var Gl=class extends fe{constructor(e,r,i,o,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=i,this.transmissionSamplerSize=o,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let i=e.include(Gl.Nodes.transmission),o=[];return o.push(this.thickness.build(e,"f")),o.push(this.ior.build(e,"f")),o.push(this.roughness.build(e,"f")),o.push(this.transmissionSamplerSize.build(e,"v2")),o.push(this.transmissionSamplerMap.getTexture(e,"t")),o.push(this.transmissionDepthMap.getTexture(e,"t")),o.push(this.aspectRatio.build(e,"v2")),o.push("normal"),o.push(this.alpha.build(e,"f")),o.push(this.calpha),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(this),this.thickness=e.thickness.clone(),this.ior=e.ior.clone(),this.roughness=e.roughness.clone(),this.transmissionSamplerSize=e.transmissionSamplerSize.clone(),this.transmissionSamplerMap=e.transmissionSamplerMap,this.transmissionDepthMap=e.transmissionDepthMap,this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},fn=Gl;fn.Nodes=function(){let e=new re(`
429
+ }`,[e])}}();var Fl=class extends me{constructor(e,r,o,i,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Fl.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(this),this.thickness=e.thickness.clone(),this.ior=e.ior.clone(),this.roughness=e.roughness.clone(),this.transmissionSamplerSize=e.transmissionSamplerSize.clone(),this.transmissionSamplerMap=e.transmissionSamplerMap,this.transmissionDepthMap=e.transmissionDepthMap,this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},yn=Fl;yn.Nodes=function(){let e=new re(`
430
430
  float gaussian(vec2 i) {
431
431
  const float sigma = float(NUM_SAMPLES) * .25;
432
432
  return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
@@ -457,7 +457,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
457
457
  #endif
458
458
  }
459
459
  return O / O.a;
460
- }`,[e]),i=new re(`
460
+ }`,[e]),o=new re(`
461
461
  vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
462
462
  // Direction of refracted light.
463
463
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
@@ -468,7 +468,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
468
468
  modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
469
469
  // The thickness is specified in local space.
470
470
  return normalize( refractionVector ) * thickness * modelScale;
471
- }`),o=new re(`
471
+ }`),i=new re(`
472
472
  float applyIorToRoughness( float roughness, float ior ) {
473
473
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
474
474
  // an IOR of 1.5 results in the default amount of microfacet refraction.
@@ -479,7 +479,7 @@ vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 tra
479
479
  float lod = applyIorToRoughness(roughness, ior);
480
480
 
481
481
  return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
482
- }`,[o,r]),a=new re(`
482
+ }`,[i,r]),a=new re(`
483
483
  vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
484
484
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
485
485
  vec3 refractedRayExit = position + transmissionRay;
@@ -499,7 +499,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
499
499
  vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
500
500
  // Get the specular component.
501
501
  return vec4( ( 1.0 ) * transmittedLight.rgb, transmittedLight.a );
502
- }`,[s,i]);return{transmission:new re(`
502
+ }`,[s,o]);return{transmission:new re(`
503
503
  vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
504
504
  vec3 v = vec3(0.);
505
505
  if (isOrthographic) {
@@ -513,14 +513,14 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
513
513
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
514
514
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
515
515
  return transmission.rgb;
516
- }`,[a])}}();var zl=class extends fe{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let i=e.include(zl.Nodes.customNormal),o=[];return o.push(this.cnormal.build(e,"v3")),o.push("normal"),o.push(this.alpha.build(e,"f")),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.cnormal.copy(e.cnormal),this.alpha.copy(e.alpha),this}},yn=zl;yn.Nodes=function(){return{customNormal:new re(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
516
+ }`,[a])}}();var Vl=class extends me{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include(Vl.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.cnormal.copy(e.cnormal),this.alpha.copy(e.alpha),this}},gn=Vl;gn.Nodes=function(){return{customNormal:new re(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
517
517
  vec3 normal = packNormalToRGB( norm ).rgb;
518
518
  normal *= step( vec3(0.5), cnormal );
519
519
 
520
520
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
521
521
 
522
522
  return normal;
523
- }`)}}();var Rl=class extends fe{constructor(e,r,i,o,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=i,this.steps=o,this.offset=s,this.morph=a,this.angle=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Rl.Nodes.gradient),o=[];return o.push(this.gradientType.build(e,"i")),o.push(this.smooth.build(e,"b")),o.push(this.colors.build(e,"v4[]")),o.push(this.steps.build(e,"f[]")),o.push(this.offset.build(e,"v2")),o.push(this.morph.build(e,"v2")),o.push(this.angle.build(e,"f")),o.push(this.alpha.build(e,"f")),o.push(this.calpha),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.offset=e.offset.clone(),this.morph=e.morph.clone(),this.angle=e.angle.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},gn=Rl;gn.Nodes=function(){return{gradient:new re(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
523
+ }`)}}();var jl=class extends me{constructor(e,r,o,i,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(jl.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.offset=e.offset.clone(),this.morph=e.morph.clone(),this.angle=e.angle.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},xn=jl;xn.Nodes=function(){return{gradient:new re(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
524
524
  vec4 color = colors[0];
525
525
  vec2 m = morph / vUv.xy;
526
526
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -562,11 +562,11 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
562
562
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
563
563
 
564
564
  return color.xyz;
565
- }`)}}();var Vl=(e=>(e.NOISE="noise",e.MAP="map",e))(Vl||{}),Fl=class extends fe{constructor(e=new be(0),r,i,o,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=i,Object.values(Vl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ho(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=s,this.noiseFunctionIndex=a}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let i,o=[];switch(o.push("displaced_position"),o.push("displaced_normal"),Object.values(Vl)[this.displacementTypeIndex.value]){case"map":{i=e.include(Fl.Nodes.map),o.push(this.movementOrTexture.getTexture(e,"t")),o.push("uv"),o.push(this.cropOrOffset.build(e,"f")),this.mat&&o.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(un)[this.noiseFunctionIndex.value],l=new re(`vec3 orthogonal(vec3 v) {
565
+ }`)}}();var Ul=(e=>(e.NOISE="noise",e.MAP="map",e))(Ul||{}),kl=class extends me{constructor(e=new be(0),r,o,i,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=o,Object.values(Ul)[this.displacementTypeIndex.value]==="map"&&(this.mat=new mi(this.movementOrTexture.value.matrix)),this.cropOrOffset=i,this.scale=s,this.noiseFunctionIndex=a}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Ul)[this.displacementTypeIndex.value]){case"map":{o=e.include(kl.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(mn)[this.noiseFunctionIndex.value],l=new re(`vec3 orthogonal(vec3 v) {
566
566
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
567
567
  }`),c=new re(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
568
568
  return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
569
- }`,[Dt.simplex,Dt.simplexFractal,Dt.simplexAshima,Dt.fbm,Dt.perlin]),p=new re(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
569
+ }`,[Et.simplex,Et.simplexFractal,Et.simplexAshima,Et.fbm,Et.perlin]),h=new re(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
570
570
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
571
571
  vec3 tangent1 = orthogonal(normal);
572
572
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -582,7 +582,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
582
582
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
583
583
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
584
584
  return displaced_position;
585
- }`,[c,l]);i=e.include(p),o.push(this.scale.build(e,"f")),o.push(this.cropOrOffset.build(e,"v3")),o.push(this.movementOrTexture.build(e,"f"));break}}return o.push(this.intensity.build(e,"f")),o.push("displaced_normal"),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){var r,i;return super.copy(e),this.noiseFunctionIndex=(r=e.noiseFunctionIndex)==null?void 0:r.clone(),this.scale=(i=e.scale)==null?void 0:i.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},uo=Fl;uo.Nodes=function(){let e=new re(`vec3 orthogonal(vec3 v) {
585
+ }`,[c,l]);o=e.include(h),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){var r,o;return super.copy(e),this.noiseFunctionIndex=(r=e.noiseFunctionIndex)==null?void 0:r.clone(),this.scale=(o=e.scale)==null?void 0:o.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},fi=kl;fi.Nodes=function(){let e=new re(`vec3 orthogonal(vec3 v) {
586
586
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
587
587
  }`),r=new re(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
588
588
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
@@ -604,7 +604,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
604
604
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
605
605
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
606
606
  return displaced_position;
607
- }`,[e,r])}}();var xn=class extends fe{constructor(e=new de,r=new de,i=new de,o=new de,s=new de,a=new de,l=new de,c=new de,p=new de,h=new de,d=new de,m=new de){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=i,this.fA=o,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=p,this.colorD=h,this.alpha=d,this.noiseType=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,i,o,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(un)[this.noiseType.value],l=new re(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
607
+ }`,[e,r])}}();var bn=class extends me{constructor(e=new pe,r=new pe,o=new pe,i=new pe,s=new pe,a=new pe,l=new pe,c=new pe,h=new pe,p=new pe,d=new pe,u=new pe){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=h,this.colorD=p,this.alpha=d,this.noiseType=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(mn)[this.noiseType.value],l=new re(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
608
608
  vec3 st = position / size;
609
609
  st /= scale;
610
610
  vec3 q = vec3(${a}(st),
@@ -624,17 +624,17 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
624
624
 
625
625
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
626
626
  return clamp(color, 0.0, 1.0).rgb;
627
- }`,[Dt.simplex,Dt.simplexFractal,Dt.simplexAshima,Dt.fbm,Dt.perlin]),c=e.include(l),p=[];return p.push(this.scale.build(e,"f")),p.push(this.size.build(e,"v3")),p.push(this.move.build(e,"f")),p.push(this.fA.build(e,"v2")),p.push(this.fB.build(e,"v2")),p.push(this.distortion.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.colorC.build(e,"v4")),p.push(this.colorD.build(e,"v4")),p.push(this.alpha.build(e,"f")),p.push(this.calpha),e.format(c+"("+p.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};xn.numOctaves=5;var bn=class extends fe{constructor(e=new de,r=new de,i=new de,o=new de){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=i,this.mode=o}generate(e,r){if(e.isShader("fragment")){let i=[];return i.push(this.a.build(e,"c")),i.push(this.b.build(e,"c")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),e.format("spe_blend("+i.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var mo=class extends fe{constructor(e,r,i,o,s,a,l,c,p,h,d,m){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=i,this.far=o,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=p,this.steps=h,this.num=d,this.alpha=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let i=`g${this.uuid.toString().replace(/-/g,"")}`,o=new re(`vec3 ${i}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${i}_MAX_COLORS], float steps[10], float alpha, out float calpha) {
627
+ }`,[Et.simplex,Et.simplexFractal,Et.simplexAshima,Et.fbm,Et.perlin]),c=e.include(l),h=[];return h.push(this.scale.build(e,"f")),h.push(this.size.build(e,"v3")),h.push(this.move.build(e,"f")),h.push(this.fA.build(e,"v2")),h.push(this.fB.build(e,"v2")),h.push(this.distortion.build(e,"v2")),h.push(this.colorA.build(e,"v4")),h.push(this.colorB.build(e,"v4")),h.push(this.colorC.build(e,"v4")),h.push(this.colorD.build(e,"v4")),h.push(this.alpha.build(e,"f")),h.push(this.calpha),e.format(c+"("+h.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};bn.numOctaves=5;var vn=class extends me{constructor(e=new pe,r=new pe,o=new pe,i=new pe){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){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),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var yi=class extends me{constructor(e,r,o,i,s,a,l,c,h,p,d,u){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=h,this.steps=p,this.num=d,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new re(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[10], float alpha, out float calpha) {
628
628
  vec4 color = colors[0];
629
- #ifdef ${i}_IS_VECTOR
630
- #ifdef ${i}_LINEAR
631
- #ifdef ${i}_WORLDSPACE
629
+ #ifdef ${o}_IS_VECTOR
630
+ #ifdef ${o}_LINEAR
631
+ #ifdef ${o}_WORLDSPACE
632
632
  float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
633
633
  #else
634
634
  float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
635
635
  #endif
636
636
  #else
637
- #ifdef ${i}_WORLDSPACE
637
+ #ifdef ${o}_WORLDSPACE
638
638
  float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
639
639
  #else
640
640
  float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
@@ -647,13 +647,13 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
647
647
 
648
648
 
649
649
  float p;
650
- #ifdef ${i}_SMOOTH
651
- for ( int i = 1; i < ${i}_MAX_COLORS; i++ ) {
650
+ #ifdef ${o}_SMOOTH
651
+ for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
652
652
  p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
653
653
  color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
654
654
  }
655
655
  #else
656
- for ( int i = 1; i < ${i}_MAX_COLORS; i++ ) {
656
+ for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
657
657
  p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
658
658
  color = mix(color, colors[i], p);
659
659
  }
@@ -664,7 +664,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
664
664
 
665
665
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
666
666
  return color.rgb;
667
- }`,[mo.Nodes.vectorLinearWorldSpaceDepth,mo.Nodes.vectorLinearObjectSpaceDepth,mo.Nodes.vectorSphericalObjectSpaceDepth,mo.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${i}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${i}_SMOOTH`),this.isVector.value>.5&&e.define(`${i}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${i}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${i}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(o),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.near=e.near.clone(),this.far=e.far.clone(),this.isVector=e.isVector.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.origin=e.origin.clone(),this.direction=e.direction.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},vn=mo;vn.Nodes=function(){let e=new re(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
667
+ }`,[yi.Nodes.vectorLinearWorldSpaceDepth,yi.Nodes.vectorLinearObjectSpaceDepth,yi.Nodes.vectorSphericalObjectSpaceDepth,yi.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.near=e.near.clone(),this.far=e.far.clone(),this.isVector=e.isVector.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.origin=e.origin.clone(),this.direction=e.direction.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},Sn=yi;Sn.Nodes=function(){let e=new re(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
668
668
  vec3 n = normalize(direction);
669
669
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
670
670
  return ( dist - near ) / ( far - near );
@@ -672,13 +672,13 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
672
672
  vec3 n = normalize(direction);
673
673
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
674
674
  return ( dist - near ) / ( far - near );
675
- }`),i=new re(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
675
+ }`),o=new re(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
676
676
  float dist = length(vWPosition - origin);
677
677
  return ( dist - near ) / ( far - near );
678
- }`),o=new re(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
678
+ }`),i=new re(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
679
679
  float dist = length(position - origin);
680
680
  return ( dist - near ) / ( far - near );
681
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:i,vectorSphericalObjectSpaceDepth:o}}();var jl=class extends fe{constructor(e,r,i){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=i,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let i=e.include(jl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let o=[];return o.push(this.texture.getTexture(e,"t")),o.push("normal"),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),o.push(this.calpha),e.format(i+"("+o.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.texture=e.texture.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},Sn=jl;Sn.Nodes=function(){return{matcap:new re(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
681
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Hl=class extends me{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Hl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.getTexture(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.texture=e.texture.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},wn=Hl;wn.Nodes=function(){return{matcap:new re(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
682
682
  vec3 viewDir = normalize( vViewPosition );
683
683
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
684
684
  vec3 y = cross( viewDir, x );
@@ -690,8 +690,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
690
690
 
691
691
  return matcapColor.rgb;
692
692
  }
693
- `)}}();var St=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Ar.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new te(1));let r=new te(1),i=new be(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=i),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:i}),this.head=e.layer,this.head.next=new qe(1,void 0,{type:"light",alpha:r,mode:i}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var o;this._material=t;let e,r,i=this.head;for(;i!==void 0;){if(i.type==="light"){e=i.uniforms[`f${i.id}_alpha`],r=i.uniforms[`f${i.id}_mode`];break}i=i.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes((o=t.userData.layers)==null?void 0:o.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){var i;if(t.id=(i=t.id)!=null?i:++this.id,this.layerCount++,t.type==="light"){let o=this.createLightLayer(t);return this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let o=this.head;for(;o.next!=null;)o=o.next;o.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++this.id,this.layerCount++;let i=this._createLayer(t),o=i.layer;o.next=e;let s=0;if(r===e)this.head=o,i.color&&this._layerNodes.splice(0,0,{id:o.id,type:"color",color:i.color,alpha:i.alpha,mode:i.mode}),i.position&&this._layerNodes.splice(0,0,{id:o.id,type:"position",position:i.position});else{for(s=1;(r==null?void 0:r.next)!==e;)r=r==null?void 0:r.next,s++;r.next=o,i.color&&this._layerNodes.splice(s,0,{id:o.id,type:"color",color:i.color,alpha:i.alpha,mode:i.mode}),i.position&&this._layerNodes.splice(s,0,{id:o.id,type:"position",position:i.position})}return this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}addLayerAt(t,e){var o;e.id=(o=e.id)!=null?o:++this.id,this.layerCount++;let r=this._createLayer(e),i=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:i.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:i.id,type:"position",position:r.position}),t==0)i.next=this.head,this.head=i;else{let s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;i.next=a,s.next=i}return this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}removeLayer(t){let e=this.head,r,i=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(i=1,r=e,e=e==null?void 0:e.next;e!=null;){if(e.id==t){r.next=e.next;break}i++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=Ar.generateUUID(),this.layerCount--,i}changeLayer(t,e){let r,i=this.head,o;if((i==null?void 0:i.id)==t){let s=this._createLayer(P({id:t,uuid:i.uuid},e));o=s.layer,o.next=i.next,this.head=o,s.color&&(this._layerNodes[0]={id:o.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:o.id,type:"position",position:s.position}),o.uniforms[`f${t}_mode`].value=i.uniforms[`f${t}_mode`].value,o.uniforms[`f${t}_alpha`].value=i.uniforms[`f${t}_alpha`].value}else{r=i,i=i.next;let s=1;for(;i!=null;){if(i.id==t){let a=this._createLayer(P({id:t,uuid:i.uuid},e));o=a.layer,r.next=o,o.next=i.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),o.uniforms[`f${t}_mode`].value=i.uniforms[`f${t}_mode`].value,o.uniforms[`f${t}_alpha`].value=i.uniforms[`f${t}_alpha`].value;break}r=i,i=i.next,s++}}return this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,i=this.head,o;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)o=i,i=i.next;o.next=i.next,r=i}if(i=this.head,o=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)i=i.next;r.next=i==null?void 0:i.next,i.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Ar.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new te(t.alpha),r=new be(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let i=new qe(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=i;else{let o=this.head;for(;o.next!=null;)o=o.next;o.next=i}return this.attachLightNodes(this.getLightLayer()),i}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let i=r?e.uniforms[`f${e.id}_alpha`]:new te(e.uniforms[`f${e.id}_alpha`].value),o=r?e.uniforms[`f${e.id}_mode`]:new be(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=i,this._material.shadingBlend=o,this._layerNodes.push({id:e.id,type:"light",alpha:i,mode:o}),this.head===void 0?this.head=new qe(e.id,e.uuid,{type:"light",alpha:i,mode:o}):t&&(t.next=new qe(e.id,e.uuid,{type:"light",alpha:i,mode:o})),this.attachLightNodes(e)}else{let i={type:e.type,id:e.id};for(let o in e.uniforms){let s=e.getName(o);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))i[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){i[s]=l;continue}l!=null&&(i[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(i)}}attachLightNodes(t){var i,o,s,a,l,c,p,h,d,m,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new Ee((o=(i=t==null?void 0:t.getValue("emissive"))==null?void 0:i.clone())!=null?o:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new Ee((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new Ee((h=(p=t==null?void 0:t.getValue("specular"))==null?void 0:p.clone())!=null?h:1118481);break;case"Physical":e.roughness=new te((d=t==null?void 0:t.getValue("roughness"))!=null?d:.3),e.metalness=new te((m=t==null?void 0:t.getValue("metalness"))!=null?m:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(T=>{this._material[T]=e[T],r.uniforms[`f${r.id}_${T}`]=e[T]})}clone(t){return new St(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let i=new qe(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),o=t.head.next,s=i;for(;o!=null;)s.next=new qe(o.id,void 0,{type:o.type}).fromJSON(o,e),o=o.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,i,!0);let a=i;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e:t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){var r,i,o,s,a,l,c,p,h,d,m,f,T,w,y,L,A,I,b,V,x,u,M,g,N,v,C,J,H,ie,pe,ce,ve,F,G,B,z,D,R,K,Z,U,j,E,k,ne,q,$,Y,X,Q,se,oe,he,_e,ge,We,Ce,ct,wt,vr,ft,Sr,ii,oi,Ue,yt,Bt,Nn,Mn,On,In,Pn,An,Ut,Po,pt,wi,Dn,ni;let e=t.type;switch(e){case"color":{let xe=new Ee((r=t.color)!=null?r:5855577),Le=new te((i=t.alpha)!=null?i:1),Se=new Be("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Le;let we=new be((o=t.mode)!=null?o:0);return xe.alpha=Le,{layer:new qe(t.id,t.uuid,{type:e,color:xe,alpha:Le,calpha:Se,mode:we}),color:xe,alpha:Se,mode:we}}case"texture":{let xe=(s=t.texture)!=null?s:new mr,Le=xe.matrix;t.mat&&Le.copy(t.mat),xe.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new be((l=t.projection)!=null?l:0),Ne=new be((c=t.axis)!=null?c:0),De=new be((p=t.side)!=null?p:0),Ge=new bt(t.size?new Yr(t.size[0],t.size[1]):new Yr(100,100)),Fe=new te((h=t.alpha)!=null?h:1),Ae=new be((d=t.mode)!=null?d:0),ke=new Nt(xe),ot=new vt((m=t.textureSize)!=null?m:new Xr(xe.image?xe.image.width:0,xe.image?xe.image.height:0)),Et=new pn(ke,ot,Se,we,Ne,De,Ge,Fe,Ae),Xt=new Be(Et.calpha,"f");return{layer:new qe(t.id,t.uuid,{type:e,texture:ke,textureSize:ot,crop:Se,projection:we,axis:Ne,side:De,size:Ge,mat:Et.mat,alpha:Fe,calpha:Xt,mode:Ae}),color:Et,alpha:Xt,mode:Ae}}case"matcap":{let xe=(f=t.texture)!=null?f:new mr;xe.needsUpdate=!0;let Le=new te((T=t.alpha)!=null?T:1),Se=new Nt(xe),we=new be((w=t.mode)!=null?w:0),Ne=new Sn(Se,Le,we),De=new Be(Ne.calpha,"f");return{layer:new qe(t.id,t.uuid,{type:e,texture:Se,alpha:Le,calpha:De,mode:we}),color:Ne,alpha:De,mode:we}}case"fresnel":{let xe=new Ee((y=t.color)!=null?y:16777215),Le=new te((L=t.bias)!=null?L:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((I=t.intensity)!=null?I:2),Ne=new te((b=t.factor)!=null?b:1),De=new te((V=t.alpha)!=null?V:1),Ge=new be((x=t.mode)!=null?x:0),Fe=new dn(xe,Le,Se,we,Ne,De,Ge),Ae=new Be(Fe.calpha,"f");return{layer:new qe(t.id,t.uuid,{type:e,color:xe,bias:Le,scale:Se,intensity:we,factor:Ne,alpha:De,calpha:Ae,mode:Ge}),color:Fe,alpha:Ae,mode:Ge}}case"rainbow":{let xe=new te((u=t.filmThickness)!=null?u:30),Le=new te((M=t.movement)!=null?M:0),Se=new vt((g=t.wavelengths)!=null?g:new Xr(0,0,0)),we=new te((N=t.noiseStrength)!=null?N:0),Ne=new te((v=t.noiseScale)!=null?v:1),De=new vt((C=t.offset)!=null?C:new Xr(0,0,0)),Ge=new te((J=t.alpha)!=null?J:1),Fe=new mn(xe,Le,Se,we,Ne,De,Ge),Ae=new Be(Fe.calpha,"f"),ke=new be((H=t.mode)!=null?H:0);return{layer:new qe(t.id,t.uuid,{type:e,filmThickness:xe,movement:Le,wavelengths:Se,noiseStrength:we,noiseScale:Ne,offset:De,alpha:Ge,calpha:Ae,mode:ke}),color:Fe,alpha:Ae,mode:ke}}case"transmission":{let xe=new te((ie=t.thickness)!=null?ie:10),Le=new te((pe=t.ior)!=null?pe:1.5),Se=new te((ce=t.roughness)!=null?ce:.5),we=new bt((ve=t.transmissionSamplerSize)!=null?ve:new Yr(2048,2048)),Ne=(F=t.transmissionSamplerMap)!=null?F:new mr,De=(G=t.transmissionDepthMap)!=null?G:new mr,Ge=new Nt(Ne),Fe=new Nt(De),Ae=window.innerWidth,ke=window.innerHeight,ot=Ae>=ke?new bt(ke/Ae,1):new bt(1,Ae/ke),Et=new te((B=t.alpha)!=null?B:1),Xt=new fn(xe,Le,Se,we,Ge,Fe,ot,Et),wr=new Be(Xt.calpha,"f"),_r=new be((z=t.mode)!=null?z:0);return{layer:new qe(t.id,t.uuid,{type:e,thickness:xe,ior:Le,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:Ge,transmissionDepthMap:Fe,aspectRatio:ot,alpha:Et,calpha:wr,mode:_r}),color:Xt,alpha:wr,mode:_r}}case"depth":{let xe=new be((D=t.gradientType)!=null?D:0),Le=new cn((R=t.smooth)!=null?R:!1),Se=new te((K=t.near)!=null?K:50),we=new te((Z=t.far)!=null?Z:200),Ne=new te((U=t.isVector)!=null?U:1),De=new te((j=t.isWorldSpace)!=null?j:0),Ge=new vt((E=t.origin)!=null?E:new Xr),Fe=new vt((k=t.direction)!=null?k:new Xr),Ae=new be((ne=t.num)!=null?ne:0),ke;t.colors?ke=new gi(Ae.value+1,t.colors):(ke=new gi(Ae.value+1,new ta(0,0,0,1)),ke.value[1]=new ta(1,1,1,1));let ot;t.steps?ot=new xi(t.steps.length,t.steps):(ot=new xi(10,1),ot.value[0]=0);let Et=new te((q=t.alpha)!=null?q:1),Xt=new be(($=t.mode)!=null?$:0),wr=new vn(xe,Le,Se,we,Ne,De,Ge,Fe,ke,ot,Ae,Et),_r=new Be(wr.calpha,"f");return{layer:new qe(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,near:Se,far:we,isVector:Ne,isWorldSpace:De,origin:Ge,direction:Fe,colors:ke,steps:ot,num:Ae,alpha:Et,calpha:_r,mode:Xt}),color:wr,alpha:_r,mode:Xt}}case"noise":{let xe=new te((Y=t.scale)!=null?Y:1),Le=new vt((X=t.size)!=null?X:new Xr(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new bt((se=t.fA)!=null?se:new Yr(1.7,9.2)),Ne=new bt((oe=t.fB)!=null?oe:new Yr(8.3,2.8)),De=new bt((he=t.distortion)!=null?he:new Yr(1,1)),Ge=new Pr(t.colorA),Fe=new Pr(t.colorB),Ae=new Pr(t.colorC),ke=new Pr(t.colorD),ot=new te((_e=t.alpha)!=null?_e:1),Et=new be((ge=t.mode)!=null?ge:0),Xt=new be((We=t.noiseType)!=null?We:0),wr=new xn(xe,Le,Se,we,Ne,De,Ge,Fe,Ae,ke,ot,Xt),_r=new Be(wr.calpha,"f");return{layer:new qe(t.id,t.uuid,{type:e,scale:xe,size:Le,move:Se,fA:we,fB:Ne,distortion:De,colorA:Ge,colorB:Fe,colorC:Ae,colorD:ke,alpha:ot,calpha:_r,mode:Et,noiseType:Xt}),color:wr,alpha:_r,mode:Et}}case"normal":{let xe=new vt((Ce=t.cnormal)!=null?Ce:new Xr(1,1,1)),Le=new te((ct=t.alpha)!=null?ct:1),Se=new be((wt=t.mode)!=null?wt:0),we=new yn(xe,Le),Ne=new Be("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Ne.keywords.alpha=Le,{layer:new qe(t.id,t.uuid,{type:e,cnormal:xe,alpha:Le,calpha:Ne,mode:Se}),color:we,alpha:Ne,mode:Se}}case"gradient":{let xe=new be((vr=t.gradientType)!=null?vr:0),Le=new cn((ft=t.smooth)!=null?ft:!1),Se;t.colors?Se=new gi(t.colors.length,t.colors):(Se=new gi(10,new ta(0,0,0,1)),Se.value[1]=new ta(1,1,1,1));let we;t.steps?we=new xi(t.steps.length,t.steps):(we=new xi(10,1),we.value[0]=0);let Ne=new bt((Sr=t.offset)!=null?Sr:new Yr(0,0)),De=new bt((ii=t.morph)!=null?ii:new Yr(0,0)),Ge=new te((oi=t.angle)!=null?oi:0),Fe=new te((Ue=t.alpha)!=null?Ue:1),Ae=new be((yt=t.mode)!=null?yt:0),ke=new gn(xe,Le,Se,we,Ne,De,Ge,Fe),ot=new Be(ke.calpha,"f");return{layer:new qe(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,colors:Se,steps:we,offset:Ne,morph:De,angle:Ge,alpha:Fe,calpha:ot,mode:Ae}),color:ke,alpha:ot,mode:Ae}}case"displace":{let xe=new be((Bt=t.displacementType)!=null?Bt:0);if(xe.value===0){let Le=new vt((Nn=t.offset)!=null?Nn:new Xr(0,0,0)),Se=new te((Mn=t.scale)!=null?Mn:10),we=new te((On=t.intensity)!=null?On:8),Ne=new te((In=t.movement)!=null?In:1),De=new te((Pn=t.alpha)!=null?Pn:1),Ge=new be((An=t.mode)!=null?An:0),Fe=new be((Ut=t.noiseType)!=null?Ut:0),Ae=new uo(xe,we,Ne,Le,Se,Fe);return{layer:new qe(t.id,t.uuid,{displacementType:xe,type:e,offset:Le,scale:Se,intensity:we,movement:Ne,alpha:De,mode:Ge,noiseType:Fe}),position:Ae}}else if(xe.value===1){let Le=(Po=t.texture)!=null?Po:new mr,Se=Le.matrix;t.mat&&Se.copy(t.mat),Le.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Ne=new Nt(Le),De=new te((wi=t.crop)!=null?wi:0),Ge=new te((Dn=t.alpha)!=null?Dn:1),Fe=new be((ni=t.mode)!=null?ni:0),Ae=new uo(xe,we,Ne,De);return{layer:new qe(t.id,t.uuid,{displacementType:xe,type:e,intensity:we,texture:Ne,crop:De,mat:Ae.mat,alpha:Ge,mode:Fe}),position:Ae}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let i=t+1;i<e;++i){let o=this._layerNodes[i];o.type==="color"&&(r=new bn(r,o.color,o.alpha,o.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Be("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let i=this._layerNodes[r];i.type==="color"&&(t=new bn(t,i.color,i.alpha,i.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new At(e,t[r].position,At.ADD),e=new At(e,new te(.5).setReadonly(!0),At.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};var Vt=class extends Qv{constructor(e,r,i){super(i);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e!=null?e:new ln(new ut(ut.PROJECTION)),this.fragment=r!=null?r:new ln(new Ee(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),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}_getLayerStack(e){let r=new St(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(i=>requestAnimationFrame(i));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let i=(o,s,a)=>Math.min(Math.max(o,s),a);if(this.userData.layers){for(let o of this.userData.layers.getLayers())if(o.type=="displace"){this.uniformsBackup[`f${o.id}_intensity`]=o.uniforms[`f${o.id}_intensity`].value;let s=i(o.uniforms[`f${o.id}_intensity`].value,e,r);o.uniforms[`f${o.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){var i;e=e!=null?e:{};let r=(i=e.builder)!=null?i:new ea;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>Zv,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let i in e)this[i]=e[i];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let i=super.toJSON(e);return i.type="ShaderMaterial",i.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},i.vertex=this.vertex.toJSON(e).uuid,i.fragment=this.fragment.toJSON(e).uuid,delete i.vertexShader,delete i.fragmentShader,delete i.color,delete i.shininess,delete i.specular,delete i.roughness,delete i.metalness,delete i.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=i),this.userData.layers=r,i}fromJSON(e,r){var i;this.defines=(i=e.defines)!=null?i:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:eS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(Vt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{UniformsLib as tS,UniformsUtils as rS}from"three";var ra=class extends de{constructor(){super("basic");this.nodeType="Basic";this.color=new Ee(5855577)}generate(e){let r;if(e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(rS.merge([tS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
694
- `));let o=["#include <beginnormal_vertex>",`
693
+ `)}}();var wt=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Er.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new te(1));let r=new te(1),o=new be(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var i;this._material=t;let e,r,o=this.head;for(;o!==void 0;){if(o.type==="light"){e=o.uniforms[`f${o.id}_alpha`],r=o.uniforms[`f${o.id}_mode`];break}o=o.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes((i=t.userData.layers)==null?void 0:i.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let i=this.createLightLayer(t);return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++this.id,this.layerCount++;let o=this._createLayer(t),i=o.layer;i.next=e;let s=0;if(r===e)this.head=i,o.color&&this._layerNodes.splice(0,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:i.id,type:"position",position:o.position});else{for(s=1;(r==null?void 0:r.next)!==e;)r=r==null?void 0:r.next,s++;r.next=i,o.color&&this._layerNodes.splice(s,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:i.id,type:"position",position:o.position})}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}addLayerAt(t,e){var i;e.id=(i=e.id)!=null?i:++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0:e.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=Er.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,i;if((o==null?void 0:o.id)==t){let s=this._createLayer(P({id:t,uuid:o.uuid},e));i=s.layer,i.next=o.next,this.head=i,s.color&&(this._layerNodes[0]={id:i.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:i.id,type:"position",position:s.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value}else{r=o,o=o.next;let s=1;for(;o!=null;){if(o.id==t){let a=this._createLayer(P({id:t,uuid:o.uuid},e));i=a.layer,r.next=i,i.next=o.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,o=this.head,i;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)i=o,o=o.next;i.next=o.next,r=o}if(o=this.head,i=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)o=o.next;r.next=o==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new te(t.alpha),r=new be(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new We(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=o}return this.attachLightNodes(this.getLightLayer()),o}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let o=r?e.uniforms[`f${e.id}_alpha`]:new te(e.uniforms[`f${e.id}_alpha`].value),i=r?e.uniforms[`f${e.id}_mode`]:new be(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=i,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:i}),this.head===void 0?this.head=new We(e.id,e.uuid,{type:"light",alpha:o,mode:i}):t&&(t.next=new We(e.id,e.uuid,{type:"light",alpha:o,mode:i})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let i in e.uniforms){let s=e.getName(i);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))o[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){o[s]=l;continue}l!=null&&(o[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(o)}}attachLightNodes(t){var o,i,s,a,l,c,h,p,d,u,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((i=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?i:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((d=t==null?void 0:t.getValue("roughness"))!=null?d:.3),e.metalness=new te((u=t==null?void 0:t.getValue("metalness"))!=null?u:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new wt(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),i=t.head.next,s=o;for(;i!=null;)s.next=new We(i.id,void 0,{type:i.type}).fromJSON(i,e),i=i.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e:t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){var r,o,i,s,a,l,c,h,p,d,u,f,g,w,y,b,A,N,v,k,L,m,I,x,C,T,O,$,J,ie,de,ce,ve,F,G,B,z,D,R,K,Z,j,V,E,U,ne,q,W,Y,X,Q,se,oe,he,Ge,ge,$e,Te,ht,Lt,Lr,yt,Cr,so,ao,ke,gt,_t,An,Dn,Bn,En,_n,Gn,Ut,Ei,pt,Oo,zn,lo;let e=t.type;switch(e){case"color":{let xe=new _e((r=t.color)!=null?r:5855577),Le=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Le;let we=new be((i=t.mode)!=null?i:0);return xe.alpha=Le,{layer:new We(t.id,t.uuid,{type:e,color:xe,alpha:Le,calpha:Se,mode:we}),color:xe,alpha:Se,mode:we}}case"texture":{let xe=(s=t.texture)!=null?s:new yr,Le=xe.matrix;t.mat&&Le.copy(t.mat),xe.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new be((l=t.projection)!=null?l:0),Me=new be((c=t.axis)!=null?c:0),Be=new be((h=t.side)!=null?h:0),ze=new vt(t.size?new Zr(t.size[0],t.size[1]):new Zr(100,100)),je=new te((p=t.alpha)!=null?p:1),De=new be((d=t.mode)!=null?d:0),He=new Mt(xe),st=new St((u=t.textureSize)!=null?u:new Qr(xe.image?xe.image.width:0,xe.image?xe.image.height:0)),Gt=new pn(He,st,Se,we,Me,Be,ze,je,De),Zt=new Ee(Gt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:Gt.mat,alpha:je,calpha:Zt,mode:De}),color:Gt,alpha:Zt,mode:De}}case"matcap":{let xe=(f=t.texture)!=null?f:new yr;xe.needsUpdate=!0;let Le=new te((g=t.alpha)!=null?g:1),Se=new Mt(xe),we=new be((w=t.mode)!=null?w:0),Me=new wn(Se,Le,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Le,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let xe=new _e((y=t.color)!=null?y:16777215),Le=new te((b=t.bias)!=null?b:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((v=t.factor)!=null?v:1),Be=new te((k=t.alpha)!=null?k:1),ze=new be((L=t.mode)!=null?L:0),je=new un(xe,Le,Se,we,Me,Be,ze),De=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:xe,bias:Le,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:De,mode:ze}),color:je,alpha:De,mode:ze}}case"rainbow":{let xe=new te((m=t.filmThickness)!=null?m:30),Le=new te((I=t.movement)!=null?I:0),Se=new St((x=t.wavelengths)!=null?x:new Qr(0,0,0)),we=new te((C=t.noiseStrength)!=null?C:0),Me=new te((T=t.noiseScale)!=null?T:1),Be=new St((O=t.offset)!=null?O:new Qr(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new fn(xe,Le,Se,we,Me,Be,ze),De=new Ee(je.calpha,"f"),He=new be((J=t.mode)!=null?J:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:xe,movement:Le,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:De,mode:He}),color:je,alpha:De,mode:He}}case"transmission":{let xe=new te((ie=t.thickness)!=null?ie:10),Le=new te((de=t.ior)!=null?de:1.5),Se=new te((ce=t.roughness)!=null?ce:.5),we=new vt((ve=t.transmissionSamplerSize)!=null?ve:new Zr(2048,2048)),Me=(F=t.transmissionSamplerMap)!=null?F:new yr,Be=(G=t.transmissionDepthMap)!=null?G:new yr,ze=new Mt(Me),je=new Mt(Be),De=window.innerWidth,He=window.innerHeight,st=De>=He?new vt(He/De,1):new vt(1,De/He),Gt=new te((B=t.alpha)!=null?B:1),Zt=new yn(xe,Le,Se,we,ze,je,st,Gt),Tr=new Ee(Zt.calpha,"f"),Fr=new be((z=t.mode)!=null?z:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:xe,ior:Le,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Gt,calpha:Tr,mode:Fr}),color:Zt,alpha:Tr,mode:Fr}}case"depth":{let xe=new be((D=t.gradientType)!=null?D:0),Le=new hn((R=t.smooth)!=null?R:!1),Se=new te((K=t.near)!=null?K:50),we=new te((Z=t.far)!=null?Z:200),Me=new te((j=t.isVector)!=null?j:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new St((E=t.origin)!=null?E:new Qr),je=new St((U=t.direction)!=null?U:new Qr),De=new be((ne=t.num)!=null?ne:0),He;t.colors?He=new So(De.value+1,t.colors):(He=new So(De.value+1,new ia(0,0,0,1)),He.value[1]=new ia(1,1,1,1));let st;t.steps?st=new wo(t.steps.length,t.steps):(st=new wo(10,1),st.value[0]=0);let Gt=new te((q=t.alpha)!=null?q:1),Zt=new be((W=t.mode)!=null?W:0),Tr=new Sn(xe,Le,Se,we,Me,Be,ze,je,He,st,De,Gt),Fr=new Ee(Tr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:De,alpha:Gt,calpha:Fr,mode:Zt}),color:Tr,alpha:Fr,mode:Zt}}case"noise":{let xe=new te((Y=t.scale)!=null?Y:1),Le=new St((X=t.size)!=null?X:new Qr(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new vt((se=t.fA)!=null?se:new Zr(1.7,9.2)),Me=new vt((oe=t.fB)!=null?oe:new Zr(8.3,2.8)),Be=new vt((he=t.distortion)!=null?he:new Zr(1,1)),ze=new Br(t.colorA),je=new Br(t.colorB),De=new Br(t.colorC),He=new Br(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Gt=new be((ge=t.mode)!=null?ge:0),Zt=new be(($e=t.noiseType)!=null?$e:0),Tr=new bn(xe,Le,Se,we,Me,Be,ze,je,De,He,st,Zt),Fr=new Ee(Tr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:xe,size:Le,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:De,colorD:He,alpha:st,calpha:Fr,mode:Gt,noiseType:Zt}),color:Tr,alpha:Fr,mode:Gt}}case"normal":{let xe=new St((Te=t.cnormal)!=null?Te:new Qr(1,1,1)),Le=new te((ht=t.alpha)!=null?ht:1),Se=new be((Lt=t.mode)!=null?Lt:0),we=new gn(xe,Le),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Le,{layer:new We(t.id,t.uuid,{type:e,cnormal:xe,alpha:Le,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let xe=new be((Lr=t.gradientType)!=null?Lr:0),Le=new hn((yt=t.smooth)!=null?yt:!1),Se;t.colors?Se=new So(t.colors.length,t.colors):(Se=new So(10,new ia(0,0,0,1)),Se.value[1]=new ia(1,1,1,1));let we;t.steps?we=new wo(t.steps.length,t.steps):(we=new wo(10,1),we.value[0]=0);let Me=new vt((Cr=t.offset)!=null?Cr:new Zr(0,0)),Be=new vt((so=t.morph)!=null?so:new Zr(0,0)),ze=new te((ao=t.angle)!=null?ao:0),je=new te((ke=t.alpha)!=null?ke:1),De=new be((gt=t.mode)!=null?gt:0),He=new xn(xe,Le,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:De}),color:He,alpha:st,mode:De}}case"displace":{let xe=new be((_t=t.displacementType)!=null?_t:0);if(xe.value===0){let Le=new St((An=t.offset)!=null?An:new Qr(0,0,0)),Se=new te((Dn=t.scale)!=null?Dn:10),we=new te((Bn=t.intensity)!=null?Bn:8),Me=new te((En=t.movement)!=null?En:1),Be=new te((_n=t.alpha)!=null?_n:1),ze=new be((Gn=t.mode)!=null?Gn:0),je=new be((Ut=t.noiseType)!=null?Ut:0),De=new fi(xe,we,Me,Le,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:xe,type:e,offset:Le,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:De}}else if(xe.value===1){let Le=(Ei=t.texture)!=null?Ei:new yr,Se=Le.matrix;t.mat&&Se.copy(t.mat),Le.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Mt(Le),Be=new te((Oo=t.crop)!=null?Oo:0),ze=new te((zn=t.alpha)!=null?zn:1),je=new be((lo=t.mode)!=null?lo:0),De=new fi(xe,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:xe,type:e,intensity:we,texture:Me,crop:Be,mat:De.mat,alpha:ze,mode:je}),position:De}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let o=t+1;o<e;++o){let i=this._layerNodes[o];i.type==="color"&&(r=new vn(r,i.color,i.alpha,i.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new vn(t,o.color,o.alpha,o.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new Bt(e,t[r].position,Bt.ADD),e=new Bt(e,new te(.5).setReadonly(!0),Bt.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};var Vt=class extends sS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e!=null?e:new cn(new ut(ut.PROJECTION)),this.fragment=r!=null?r:new cn(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),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}_getLayerStack(e){let r=new wt(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(o=>requestAnimationFrame(o));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let o=(i,s,a)=>Math.min(Math.max(i,s),a);if(this.userData.layers){for(let i of this.userData.layers.getLayers())if(i.type=="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new oa;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>nS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:aS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(Vt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{UniformsLib as lS,UniformsUtils as cS}from"three";var na=class extends pe{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(cS.merge([lS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
694
+ `));let i=["#include <beginnormal_vertex>",`
695
695
  #if !defined( USE_LAYER_DISPLACE )
696
696
  #include <defaultnormal_vertex>
697
697
  #endif
@@ -707,11 +707,11 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
707
707
  #if !defined( USE_LAYER_DISPLACE )
708
708
  #include <begin_vertex>
709
709
  #endif /* !USE_LAYER_DISPLACE */
710
- `];i&&o.push(i.code,i.result?"displaced_position = "+i.result+";":""),o.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),o.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),r=o.join(`
711
- `)}else{this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let i=this.color.flow(e,"c",{slot:"color"}),o=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=o!==void 0,e.addParsCode(["#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
712
- `));let a=["#include <normal_fragment_begin>",i.code];o&&a.push(o.code,"#ifdef ALPHATEST"," if ( "+o.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${i.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${i.result};`),o?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${o.result} );`):a.push("gl_FragColor = vec4("+i.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
713
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ia=class extends Vt{constructor(e=new ra,r){super(e,e,r);this.type="BasicNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}};var mt=class extends ia{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof St){let e=t.userData.layers,r=t.fragment;super.copy(t);let i=r.clone();this.fragment=i,this.vertex=i;let o=e.clone(this);this.userData.layers=o}else super.copy(t);return this}static fromJSON(t,e,r){let i=r.getNode(e.vertex),o=new mt(void 0,i);return o.fromJSON(e,r),o}static fromMaterial(t){let e=new mt(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as hu,UniformsUtils as iS}from"three";var oa=class extends de{constructor(){super("phong");this.nodeType="Phong";this.color=new Ee(5855577),this.specular=new Ee(1118481),this.shininess=new te(30),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(iS.merge([hu.fog,hu.lights])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
714
- `));let o=["#include <beginnormal_vertex>",`
710
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),r=i.join(`
711
+ `)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
712
+ `));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
713
+ `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var sa=class extends Vt{constructor(e=new na,r){super(e,e,r);this.type="BasicNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}};var mt=class extends sa{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new mt(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new mt(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as uu,UniformsUtils as hS}from"three";var aa=class extends pe{constructor(){super("phong");this.nodeType="Phong";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(hS.merge([uu.fog,uu.lights])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
714
+ `));let i=["#include <beginnormal_vertex>",`
715
715
  #ifndef USE_LAYER_DISPLACE
716
716
  #include <defaultnormal_vertex>
717
717
  #endif
@@ -727,9 +727,9 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
727
727
  #ifndef USE_LAYER_DISPLACE
728
728
  #include <begin_vertex>
729
729
  #endif
730
- `];i&&o.push(i.code,i.result?"displaced_position = "+i.result+";":""),o.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),o.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=o.join(`
731
- `)}else{this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),o=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["uniform vec3 emissive;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
732
- `));let h=["#include <normal_fragment_begin>",`
730
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=i.join(`
731
+ `)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["uniform vec3 emissive;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
732
+ `));let p=["#include <normal_fragment_begin>",`
733
733
  // NOTE: gl_FrontFacing alternative using face normal estimation.
734
734
  vec3 viewdx = dFdx(vViewPosition);
735
735
  vec3 viewdy = dFdy(vViewPosition);
@@ -737,15 +737,15 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
737
737
  if (dot(normal, faceNormal) < 0.0) {
738
738
  normal *= -1.0;
739
739
  }
740
- `," BlinnPhongMaterial material;"];h.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",o.code," vec3 specular = "+o.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),p&&h.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("material.diffuseColor = diffuseColor;"),h.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),h.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),h.push(`
740
+ `," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
741
741
  if (outgoingLight != diffuseColor) {
742
742
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
743
743
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
744
744
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
745
745
  }
746
- `),c&&h.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=h.join(`
747
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var na=class extends Vt{constructor(e=new oa,r){super(e,e,r);this.type="PhongNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var Ft=class extends na{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof St){let e=t.userData.layers,r=t.fragment;super.copy(t);let i=r.clone();this.fragment=i,this.vertex=i;let o=e.clone(this);this.userData.layers=o,i.shadingAlpha.value=r.shadingAlpha.value,i.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let i=r.getNode(e.vertex),o=new Ft(void 0,i);return o.fromJSON(e,r),o}static fromMaterial(t){let e=new Ft(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as du,UniformsUtils as oS}from"three";var sa=class extends de{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ee(5855577),this.emissive=new Ee(0),this.emissiveIntensity=new te(1),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(oS.merge([du.fog,du.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
748
- `));let o=["#include <beginnormal_vertex>",`
746
+ `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
747
+ `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var la=class extends Vt{constructor(e=new aa,r){super(e,e,r);this.type="PhongNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var Ot=class extends la{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new Ot(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new Ot(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as mu,UniformsUtils as pS}from"three";var ca=class extends pe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new _e(5855577),this.emissive=new _e(0),this.emissiveIntensity=new te(1),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(pS.merge([mu.fog,mu.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
748
+ `));let i=["#include <beginnormal_vertex>",`
749
749
  #ifndef USE_LAYER_DISPLACE
750
750
  #include <defaultnormal_vertex>
751
751
  #endif
@@ -761,7 +761,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
761
761
  #ifndef USE_LAYER_DISPLACE
762
762
  #include <begin_vertex>
763
763
  #endif
764
- `];i&&o.push(i.code,i.result?"displaced_position = "+i.result+";":""),o.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),o.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
764
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
765
765
  vec3 diffuse = vec3( 1.0 );
766
766
  GeometricContext geometry;
767
767
  geometry.position = mvPosition.xyz;
@@ -835,23 +835,23 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
835
835
  }
836
836
  #pragma unroll_loop_end
837
837
  #endif
838
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=o.join(`
839
- `)}else{this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),o=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
840
- `));let h=["#include <normal_fragment_begin>",`
838
+ `," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=i.join(`
839
+ `)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
840
+ `));let p=["#include <normal_fragment_begin>",`
841
841
  // NOTE: gl_FrontFacing alternative using face normal estimation.
842
842
  vec3 viewdx = dFdx(vViewPosition);
843
843
  vec3 viewdy = dFdy(vViewPosition);
844
844
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
845
845
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
846
- `,"#include <clipping_planes_fragment>"];h.push(i.code,"vec3 diffuseColor = "+i.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),p&&h.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),o&&h.push(o.code,"reflectedLight.directDiffuse += "+o.result+" * "+s.result+";"),h.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),h.push(`
846
+ `,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&p.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
847
847
  if (outgoingLight != diffuseColor) {
848
848
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
849
849
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
850
850
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
851
851
  }
852
- `),c&&h.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=h.join(`
853
- `)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var aa=class extends Vt{constructor(e=new sa,r){super(e,e,r);this.type="LambertNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get emissive(){return this.fragment.emissive}set emissive(e){this.fragment.emissive=e}get emissiveIntensity(){return this.fragment.emissiveIntensity}set emissiveIntensity(e){this.fragment.emissiveIntensity=e}};var fo=class extends aa{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof St){let e=t.userData.layers,r=t.fragment;super.copy(t);let i=r.clone();this.fragment=i,this.vertex=i;let o=e.clone(this);this.userData.layers=o,i.shadingAlpha.value=r.shadingAlpha.value,i.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let i=r.getNode(e.vertex),o=new fo(void 0,i);return o.fromJSON(e,r),o}dispose(){super.dispose()}};import{UniformsLib as uu,UniformsUtils as nS}from"three";var la=class extends de{constructor(){super("toon");this.nodeType="Toon";this.color=new Ee(5855577),this.specular=new Ee(1118481),this.shininess=new te(30),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(nS.merge([uu.fog,uu.lights])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
854
- `));let o=["#include <beginnormal_vertex>",`
852
+ `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
853
+ `)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var ha=class extends Vt{constructor(e=new ca,r){super(e,e,r);this.type="LambertNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get emissive(){return this.fragment.emissive}set emissive(e){this.fragment.emissive=e}get emissiveIntensity(){return this.fragment.emissiveIntensity}set emissiveIntensity(e){this.fragment.emissiveIntensity=e}};var gi=class extends ha{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new gi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as fu,UniformsUtils as dS}from"three";var pa=class extends pe{constructor(){super("toon");this.nodeType="Toon";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(dS.merge([fu.fog,fu.lights])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
854
+ `));let i=["#include <beginnormal_vertex>",`
855
855
  #ifndef USE_LAYER_DISPLACE
856
856
  #include <defaultnormal_vertex>
857
857
  #endif
@@ -867,8 +867,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
867
867
  #ifndef USE_LAYER_DISPLACE
868
868
  #include <begin_vertex>
869
869
  #endif
870
- `];i&&o.push(i.code,i.result?"displaced_position = "+i.result+";":""),o.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),o.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=o.join(`
871
- `)}else{this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),o=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
870
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=i.join(`
871
+ `)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
872
872
  varying vec3 vViewPosition;
873
873
  struct ToonMaterial {
874
874
  vec3 diffuseColor;
@@ -889,7 +889,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
889
889
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
890
890
  #define Material_LightProbeLOD( material ) (0)
891
891
  `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
892
- `));let h=["#include <normal_fragment_begin>",`
892
+ `));let p=["#include <normal_fragment_begin>",`
893
893
  // NOTE: gl_FrontFacing alternative using face normal estimation.
894
894
  vec3 viewdx = dFdx(vViewPosition);
895
895
  vec3 viewdy = dFdy(vViewPosition);
@@ -897,15 +897,15 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
897
897
  if (dot(normal, faceNormal) < 0.0) {
898
898
  normal *= -1.0;
899
899
  }
900
- `," ToonMaterial material;"];h.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",o.code," vec3 specular = "+o.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),p&&h.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("material.diffuseColor = diffuseColor;"),h.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),h.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),h.push(`
900
+ `," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
901
901
  if (outgoingLight != diffuseColor) {
902
902
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
903
903
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
904
904
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
905
905
  }
906
- `),c&&h.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=h.join(`
907
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ca=class extends Vt{constructor(e=new la,r){super(e,e,r);this.type="ToonNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var yo=class extends ca{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof St){let e=t.userData.layers,r=t.fragment;super.copy(t);let i=r.clone();this.fragment=i,this.vertex=i;let o=e.clone(this);this.userData.layers=o,i.shadingAlpha.value=r.shadingAlpha.value,i.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let i=r.getNode(e.vertex),o=new yo(void 0,i);return o.fromJSON(e,r),o}dispose(){super.dispose()}};import{UniformsLib as Ul,UniformsUtils as sS}from"three";var pa=class extends de{constructor(){super("standard");this.nodeType="Standard";this.color=new Ee(5855577),this.roughness=new te(.3),this.metalness=new te(0),this.reflectivity=new te(.5),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(sS.merge([Ul.fog,Ul.lights])),Ul.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
908
- `));let o=["#include <beginnormal_vertex>",`
906
+ `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
907
+ `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var da=class extends Vt{constructor(e=new pa,r){super(e,e,r);this.type="ToonNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var xi=class extends da{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new xi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as ql,UniformsUtils as uS}from"three";var ua=class extends pe{constructor(){super("standard");this.nodeType="Standard";this.color=new _e(5855577),this.roughness=new te(.3),this.metalness=new te(0),this.reflectivity=new te(.5),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(uS.merge([ql.fog,ql.lights])),ql.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
908
+ `));let i=["#include <beginnormal_vertex>",`
909
909
  #if !defined( USE_LAYER_DISPLACE )
910
910
  #include <defaultnormal_vertex>
911
911
  #endif
@@ -921,9 +921,9 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
921
921
  #if !defined( USE_LAYER_DISPLACE )
922
922
  #include <begin_vertex>
923
923
  #endif /* !USE_LAYER_DISPLACE */
924
- `];i&&o.push(i.code,i.result?"displaced_position = "+i.result+";":""),o.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),o.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),r=o.join(`
925
- `)}else{let i={gamma:!0};this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color",context:i}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let o=this.color.flow(e,"c",{slot:"color",context:i}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["varying vec3 vViewPosition;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
926
- `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
924
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),r=i.join(`
925
+ `)}else{let o={gamma:!0};this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),h=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
926
+ `));let u=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
927
927
  // NOTE: gl_FrontFacing alternative using face normal estimation.
928
928
  vec3 viewdx = dFdx(vViewPosition);
929
929
  vec3 viewdy = dFdy(vViewPosition);
@@ -931,12 +931,12 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
931
931
  if (dot(normal, faceNormal) < 0.0) {
932
932
  normal *= -1.0;
933
933
  }
934
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];m.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),h&&m.push(h.code,"#ifdef ALPHATEST"," if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?m.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),m.push(`
934
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];u.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),p&&u.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),u.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),u.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?u.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):u.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),u.push("#include <lights_fragment_begin>"),u.push("#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),u.push(`
935
935
  if (outgoingLight != diffuseColor) {
936
936
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
937
937
  accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
938
938
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
939
939
  }
940
- `),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),h?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
941
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ha=class extends Vt{constructor(e=new pa,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var go=class extends ha{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof St){let e=t.userData.layers,r=t.fragment;super.copy(t);let i=r.clone();this.fragment=i,this.vertex=i;let o=e.clone(this);this.userData.layers=o,i.shadingAlpha.value=r.shadingAlpha.value,i.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let i=r.getNode(e.vertex),o=new go(void 0,i);return o.fromJSON(e,r),o}dispose(){super.dispose()}};import{Color as Hl}from"three";import{Matrix3 as mu,Texture as kl,Vector2 as wn,Vector3 as Zr,Vector4 as fu}from"three";function yu(n,t){switch(n.data.type){case"light":return ir(n);case"fresnel":return lS(n,t);case"gradient":return cS(n);case"depth":return pS(n);case"normal":return hS(n);case"noise":return dS(n,t);case"texture":return uS(n,t);case"rainbow":return mS(n);case"transmission":return fS(n,t);case"matcap":return yS(n,t);case"displace":return gS(n);case"color":default:return aS(n,t)}}function gu(n){return{type:n.data.type}}function ir(n){let{alpha:t,mode:e}=n.data;return W(P({},gu(n)),{alpha:t,mode:e})}function aS(n,t){return W(P({},ir(n)),{color:Ye(n.data.color,t)})}function lS(n,t){let{bias:e,scale:r,intensity:i,factor:o,color:s}=n.data;return W(P({},ir(n)),{color:Ye(s,t),bias:e,scale:r,intensity:i,factor:o})}function cS(n){let{gradientType:t,smooth:e,colors:r,steps:i,angle:o,offset:s,morph:a}=n.data;return W(P({},ir(n)),{gradientType:t,smooth:e,colors:r.map(l=>new fu(l[0],l[1],l[2],l[3])),num:r.length,steps:i,offset:new wn(...s),morph:new wn(...a),angle:o})}function pS(n){let{gradientType:t,near:e,far:r,isVector:i,isWorldSpace:o,origin:s,direction:a,colors:l,steps:c,smooth:p,num:h}=n.data;return W(P({},ir(n)),{gradientType:t,near:e,far:r,isVector:i,isWorldSpace:o,origin:new Zr(...s),direction:a?new Zr(...a):new Zr(1,0,0),num:h,colors:l.map(d=>new fu(d[0],d[1],d[2],d[3])),steps:c,smooth:p})}function hS(n){let{cnormal:t}=n.data;return W(P({},ir(n)),{cnormal:new Zr(t[0],t[1],t[2])})}function dS(n,t){let{data:e}=n;return W(P({},ir(n)),{scale:e.scale,move:e.move,fA:new wn(...e.fA),fB:new wn(...e.fB),size:new Zr(...e.size),distortion:new wn(...e.distortion),colorA:Ye(e.colorA,t),colorB:Ye(e.colorB,t),colorC:Ye(e.colorC,t),colorD:Ye(e.colorD,t),noiseType:e.noiseType})}function uS(n,t){let{projection:e,axis:r,side:i,crop:o,size:s}=n.data,{image:a,wrapping:l,repeat:c,offset:p}=n.data.texture,h=new kl,d;if(typeof a=="string")d=t==null?void 0:t.getImage(a);else{let m=new Image;m.src=a.data,m.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(a.data))},d=m}return h.image=d,h.repeat.set(c[0],c[1]),h.offset.set(p[0],p[1]),h.wrapS=h.wrapT=l,W(P({},ir(n)),{texture:h,mat:new mu().setUvTransform(p[0],p[1],c[0],c[1],0,0,0),crop:o,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(i),size:s})}function mS(n){let{data:t}=n;return W(P({},ir(n)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new Zr(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new Zr(...t.offset)})}function fS(n,t){let{data:e}=n;return W(P({},ir(n)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function yS(n,t){let e=new kl,{image:r}=n.data.texture,i;if(typeof r=="string")i=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=r.data,s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(r.data))},i=s}e.image=i;let o=16777215;return W(P({},ir(n)),{color:o,texture:e})}function gS(n){let{data:t}=n,e=W(P({},gu(n)),{intensity:t.intensity});if(t.displacementType==="noise")return W(P({},e),{offset:new Zr(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new kl,i=new mu().setUvTransform(0,0,1,1,0,0,0);return W(P({},e),{texture:r,mat:i,crop:t.crop})}}function xu(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Su,Vector4 as xS}from"three";var xo;(t=>{function n(e){return new Su(e.x,e.y,e.z).getHex()}t.getHex=n})(xo||(xo={}));var bu;(t=>{function n(e){return new xS(e.r,e.g,e.b,e.a)}t.getThreeVector4=n})(bu||(bu={}));var vu;(e=>{function n(r,i){r.setRGB(i.r,i.g,i.b)}e.setThreeColor=n;function t(r){return new Su(r.r,r.g,r.b).getHex()}e.getHex=t})(vu||(vu={}));function Ln(n,t){return typeof n=="string"?t.getMaterialOrDeletedPlaceholder(n):ql(n,t)}function wu(n,t){return n.map(e=>Ln(e,t))}function ql(n,t){var s,a;let e=(s=n.layers)!=null?s:Ki.defaultTwoLayerData("phong").layers,r=bS(e),i;switch(r.category){case"basic":i=new mt;break;case"lambert":{i=new fo;break}case"toon":{i=new yo;break}case"physical":i=new go;break;case"phong":default:{i=new Ft;break}}i.name=(a=n.name)!=null?a:"Untitled Material";let o=i.userData.layers;vS(o);for(let l=e.length-1;l>=0;l--)SS(o,e[l],t);switch(r.category){case"basic":break;case"lambert":{let p=i,d=Ye(r.emissive,t);d instanceof Hl?p.emissive.value=d:p.emissive.value.setHex(xo.getHex(d));break}case"toon":{let p=i,h=r;p.shininess.value=h.shininess;let d=Ye(h.specular,t);d instanceof Hl?p.specular.value=d:p.specular.value.setHex(xo.getHex(d));break}case"physical":let l=i,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let p=i,h=r;p.shininess.value=h.shininess;let d=Ye(h.specular,t);d instanceof Hl?p.specular.value=d:p.specular.value.setHex(xo.getHex(d));break}}return o.blendColors(),o.blendAfterColors(),o.blendPositions(),i}function bS(n){for(let t of n)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function vS(n){for(let t of n.getLayers())n.removeLayer(t.id)}function SS(n,t,e){let r=yu(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let i=n.addLayer(r);i.uuid=t.id;for(let o in t.data)xu(o,i,t.data)}var Lu=n=>n.tagName==="VIDEO",bi=class{static resize(t,e,r){let i=t/e,o;if(!r.image)return;let s=r.image;Lu(s)?o=s.videoWidth/s.videoHeight:o=s.width/s.height,i>o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*o/i):r.repeat.set(1,1*o/i)),i<o&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/o*-1,1):r.repeat.set(1*i/o,1)),i==o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let i=t/e,o=r.image!==void 0?r.image.width/r.image.height:1,s;i>o?s={x:1,y:o/i}:i<o?s={x:i/o,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let i=r.userData.layers,o=i.getLayers();for(let s=0;s<o.length;s++){let a=o[s];lu(a)&&(bi.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),i.updateLayerUniform())}}static resizeComplex(t,e,r,i){let o=t/e,s,a=r.image;Lu(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,i.geometry.type.includes("Shape")?(o>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/o):r.repeat.set(1/t,1/e*s/o)),o<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*o/s*-1,1/e):r.repeat.set(1/t*o/s,1/e)),o==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(o>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/o):r.repeat.set(1,1*s/o)),o<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/s*-1,1):r.repeat.set(1*o/s,1)),o==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var bo=class extends at{constructor(e,r=new mt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&bi.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&bi.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,i;if(e instanceof wS){let a=e.image;r=a.videoWidth*.5,i=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,i=a.height*.5}let o=Js.create({parameters:{width:r,height:i}}),s=new mt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new bo(o,s)}};import{DoubleSide as LS,EventDispatcher as CS,Matrix3 as TS,Vector3 as Wl}from"three";var NS=new Wl(0,0,1),Cu=new Wl,Tu=new Wl,Nu=new TS,Qr=class extends at{constructor(e=ht.create({}),r=new mt({side:LS})){var i;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new CS;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(i=this.shape.eventDispatcher)==null||i.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){var r,i;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(i=this.shape.eventDispatcher)==null||i.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Nu.getNormalMatrix(this.matrixWorld),Cu.copy(NS).applyMatrix3(Nu).normalize(),Tu.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Cu,Tu)}clone(e){let r=this.shape.clone(),i=this.material.clone(),o=this.geometry.userData,s=ht.create(Object.assign({},o,{shape:r})),a=new Qr(s,i).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){at.prototype.raycast.call(this,e,r)}};import{Camera as US,OrthographicCamera as kS,PerspectiveCamera as HS,Vector3 as jt,Object3D as Iu,Quaternion as qS}from"three";import{BoxBufferGeometry as MS}from"three";var gr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new MS(30,30,30),t};import{Camera as DS,LineSegments as BS,BufferGeometry as ES,LineBasicMaterial as _S,Color as $l,Vector3 as GS,Float32BufferAttribute as Ou}from"three";import{Ray as OS,Sphere as IS,Matrix4 as PS,Vector3 as Dr}from"three";var da=new OS,Jl=new IS,Mu=new PS,xr=(n,t,e,r,i=!1)=>{let o=t,s=n.matrixWorld;if(o.boundingSphere===null&&o.computeBoundingSphere(),Jl.copy(o.boundingSphere),Jl.applyMatrix4(s),e.ray.intersectsSphere(Jl)===!1||(Mu.copy(s).invert(),da.copy(e.ray).applyMatrix4(Mu),o.boundingBox!==null&&da.intersectsBox(o.boundingBox)===!1))return;let a,l,c,p,h=o.index,d=o.attributes.position,m=o.drawRange,f,T;if(i===!1){let y=Math.max(0,m.start),L=Math.min(h.count,m.start+m.count);for(f=y,T=L;f<T;f+=3)if(l=h.getX(f),c=h.getX(f+1),p=h.getX(f+2),a=w(n,e,da,d,l,c,p),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let L=o.attributes.position,A=new Dr,I=new Dr,b=new Dr,V=new Dr,x=2,M=1/((n.scale.x+n.scale.y+n.scale.z)/3),g=M*M,N=Math.max(0,m.start),v=Math.min(L.count,m.start+m.count);for(let C=N,J=v-1;C<J;C+=x){if(A.fromBufferAttribute(L,C),I.fromBufferAttribute(L,C+1),da.distanceSqToSegment(A,I,V,b)>g)continue;V.applyMatrix4(n.matrixWorld);let ie=e.ray.origin.distanceTo(V);ie<e.near||ie>e.far||r.push({distance:ie,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function w(y,L,A,I,b,V,x){let u=new Dr,M=new Dr,g=new Dr,N=new Dr,v=new Dr;if(u.fromBufferAttribute(I,b),M.fromBufferAttribute(I,V),g.fromBufferAttribute(I,x),A.intersectTriangle(u,M,g,!1,N)===null)return null;v.copy(N),v.applyMatrix4(y.matrixWorld);let J=L.ray.origin.distanceTo(v);return J<L.near||J>L.far?null:{faceIndex:1,distance:J,point:v.clone(),object:y}}};var ua=new GS,Yt=new DS,Kl=class extends BS{constructor(e){let r=new ES,i=new _S({color:16777215,vertexColors:!0,toneMapped:!1}),o=[],s=[],a={},l=new $l(15711266),c=new $l(15711266),p=new $l(2857471);h("n1","n2",l),h("n2","n4",l),h("n4","n3",l),h("n3","n1",l),h("f1","f2",l),h("f2","f4",l),h("f4","f3",l),h("f3","f1",l),h("n1","f1",l),h("n2","f2",l),h("n3","f3",l),h("n4","f4",l),h("p","n1",c),h("p","n2",c),h("p","n3",c),h("p","n4",c),h("u1","u2",p),h("u2","u3",p),h("u3","u1",p);function h(m,f,T){d(m,T),d(f,T)}function d(m,f){o.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(o.length/3-1)}r.setAttribute("position",new Ou(o,3)),r.setAttribute("color",new Ou(s,3));super(r,i);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,i=!0;Yt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let o=1,s=1,a=i?.8:1e-4;or("n1",r,e,Yt,-o,-s,a),or("n2",r,e,Yt,o,-s,a),or("n3",r,e,Yt,-o,s,a),or("n4",r,e,Yt,o,s,a);let l=a;or("f1",r,e,Yt,-o,-s,l),or("f2",r,e,Yt,o,-s,l),or("f3",r,e,Yt,-o,s,l),or("f4",r,e,Yt,o,s,l);let c=l,p=.5;or("u1",r,e,Yt,o*.7*p,s*1.1,c),or("u2",r,e,Yt,-o*.7*p,s*1.1,c),or("u3",r,e,Yt,0,s*(1.1+.9*p),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function or(n,t,e,r,i,o,s){ua.set(i,o,s).unproject(r);let a=t[n];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,p=a.length;c<p;c++)l.setXYZ(a[c],ua.x,ua.y,ua.z)}}var ma=class extends gr(Kl){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){xr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as zS}from"three";var vo=class extends gr(zS){constructor(e,r=15,i=10066329){super(e,r,i);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,vo.geometryHelper,e,r)}};import{AxesHelper as RS}from"three";var So=class extends gr(RS){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){xr(this.object,So.geometryHelper,e,r)}update(){}};import{PointLightHelper as VS}from"three";var wo=class extends gr(VS){constructor(e,r=15,i=6710886){super(e,r,i);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,wo.geometryHelper,e,r)}};import{SpotLightHelper as FS,Vector3 as jS}from"three";var fa=class extends gr(FS){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,fa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=fa._vector,r=this.object.distance?this.object.distance:1e3,i=r*Math.tan(this.object.angle);this.cone.scale.set(i,i,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let o=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(o);else this.cone.material.color.set(o)}}},Cn=fa;Cn._vector=new jS;var br=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(i){this.visible=i,this.setHelperVisibility(i),this.setHelperChildrenVisibility(i)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(i){this.objectHelper.visible=i}setHelperChildrenVisibility(i){for(let o of this.children)$t(o)&&o.traverseEntity(s=>{Ir(s)&&s.visible&&(s.objectHelper.visible=i)})}raycast(i,o){this.objectHelper.raycast(i,o)}copy(i,o=!0){return super.copy(i,o),i.enableHelper!==void 0&&(this.enableHelper=i.enableHelper),i.objectHelper!==void 0&&(this.objectHelper.visible=i.objectHelper.visible),this}toJSON(i){let o=super.toJSON(i),s=o.object;return s.enableHelper=this.enableHelper,o}fromJSON(i){return super.fromJSON(i),i.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(i,o){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;i.color!==void 0&&(s.color=Ye(i.color,o)),i.intensity!==void 0&&(s.intensity=i.intensity),i.depth!==void 0&&(s.shadow.camera.far=i.depth,s.shadow.needsUpdate=!0),i.shadows!==void 0&&(this.castShadow=i.shadows),i.helper!==void 0&&(this.enableHelper=i.helper,s.gizmos.shadowmap.visible=i.helper)}return this}};var Lo=new jt,Yl=new jt,Br=class extends br(Kt(US),ma){constructor(e=window.innerWidth,r=window.innerHeight,i=45,o,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=ci.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new kS(e*-.5,e*.5,r*.5,r*-.5,o!=null?o:-5e4,s),this.perspCamera=new HS(i,e/r,o!=null?o:50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let i=new Br().fromState(r);return i.enableHelper=!0,i.objectHelper.update(),i.uuid=e,i}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Lo),this.targetOffset=Lo.distanceTo(e)}getTarget(e=new jt){return this.getWorldDirection(Yl),this.getWorldPosition(Lo),Yl.multiplyScalar(this.targetOffset),e.copy(Lo).add(Yl),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Lo),Lo.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new qS),r=new jt(0,0,1).applyQuaternion(e),i=new jt().copy(Iu.DefaultUp);this.isUpVectorFlipped&&i.negate(),i.applyQuaternion(e);let o=new jt().copy(Iu.DefaultUp).projectOnPlane(r),s=new jt().crossVectors(o,i).dot(r)>=0?1:-1;this.angleOffsetFromUp=o.angleTo(i)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new jt),o=e.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().add(o),target:r}}getViewToObject(e){let r=e.getWorldPosition(new jt),o=this.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(o),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,i,o,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,i,o,s,a):this.orthoCamera.setViewOffset(e,r,i,o,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},i={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=i.near,this.perspCamera.far=i.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),i=r.object;return i.objectType="CombinedCamera",i.cameraType=this.cameraType,i.targetOffset=this.targetOffset,i.isUpVectorFlipped=this.isUpVectorFlipped,i.angleOffsetFromUp=this.angleOffsetFromUp,i.left=this.left,i.right=this.right,i.top=this.top,i.bottom=this.bottom,this.view!==null&&(i.view=Object.assign({},this.view)),i.zoomOrtho=this.orthoCamera.zoom,i.nearOrtho=this.orthoCamera.near,i.far=this.far,i.aspect=this.aspect,i.fov=this.fov,i.focus=this.focus,i.filmGauge=this.filmGauge,i.filmOffset=this.filmOffset,i.zoomPersp=this.perspCamera.zoom,i.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let i=this.getWorldPosition(new jt),o=new jt().fromArray(e.orbitControlsTarget);this.targetOffset=o.distanceTo(i)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ji(r,e)}fromCameraState(e){let{orthographic:r,perspective:i}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),i!==void 0&&(i.near!==void 0&&(this.perspCamera.near=i.near),i.fov!==void 0&&(this.perspCamera.fov=i.fov),i.zoom!==void 0&&(this.perspCamera.zoom=i.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return W(P(P({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as WS}from"three";var Er=class extends br(Kt(WS),So){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let i=new Er().fromState(r);return i.uuid=e,i.enableHelper=!0,i.objectHelper.update(),i}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as JS,CameraHelper as ya}from"three";var Co=class extends br(Kt(JS),vo){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=1,i.far=2500;let o=new ya(this.shadow.camera);o.visible=!1,this._gizmos.shadowmap=o,this.update()}static createFromState(e,r,i){let o=new Co().fromState(r,i);return o.uuid=e,o}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),i=r.object;return i.objectType="LightDirectional",i.color=this.color.getHex(),i.intensity=this.intensity,i.shadow=this.shadow.toJSON(),r}fromJSON(e){var o;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(o=e.shadow.normalBias)!=null?o:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,i=e.shadow.camera;return r.near=i.near,r.far=i.far,r.zoom=i.zoom,r.left=i.left,r.right=i.right,r.top=i.top,r.bottom=i.bottom,i.view!==void 0&&(r.view=Object.assign({},i.view)),this}fromDirectionalLightState(e,r){let i=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Zd(this,e.size),i&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as $S,Vector3 as ga,Box3 as KS,Box3Helper as xa,Color as YS}from"three";var To=class extends br(Kt($S),wo){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let o=new ga(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new ga(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),a=new KS(o,s),l=new xa(a,new YS(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,i){let o=new To().fromState(r,i);return o.uuid=e,o}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xa&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof xa){let i=this.shadow.camera,o=new ga(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new ga(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z);r.box.set(o,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),i=r.object;return i.objectType="LightPoint",i.color=this.color.getHex(),i.intensity=this.intensity,i.distance=this.distance,i.decay=this.decay,i.shadow=this.shadow.toJSON(),r}fromJSON(e){var o,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(o=e.shadow.normalBias)!=null?o:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,i=e.shadow.camera;return r.near=i.near,r.far=i.far,r.zoom=i.zoom,r.fov=i.fov,r.focus=i.focus,r.aspect=i.aspect,r.filmGauge=i.filmGauge,r.filmOffset=i.filmOffset,i.view!==void 0&&(r.view=Object.assign({},i.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as XS,CameraHelper as ba,MathUtils as ZS,Vector3 as Bu,Quaternion as QS}from"three";var Pu=new Bu,Au=new Bu,Du=new QS,No=class extends br(Kt(XS),Cn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let i=this.shadow.camera;i.fov=ZS.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let o=new ba(this.shadow.camera);o.visible=!1,this._gizmos.shadowmap=o,this.update()}static createFromState(e,r,i){let o=new No().fromState(r,i);return o.uuid=e,o}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ba&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ba&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ba&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Au.setFromMatrixPosition(this.matrixWorld),Du.setFromRotationMatrix(this.matrixWorld),Pu.copy(this.up).applyQuaternion(Du).negate().multiplyScalar(this.distance),this.target.position.copy(Au).add(Pu),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),i=r.object;return i.objectType="LightSpot",i.color=this.color.getHex(),i.intensity=this.intensity,i.distance=this.distance,i.angle=this.angle,i.decay=this.decay,i.penumbra=this.penumbra,i.shadow=this.shadow.toJSON(),r}fromJSON(e){var o;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(o=e.shadow.normalBias)!=null?o:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,i=e.shadow.camera;return r.near=i.near,r.far=i.far,r.zoom=i.zoom,r.fov=i.fov,r.focus=i.focus,r.aspect=i.aspect,r.filmGauge=i.filmGauge,r.filmOffset=i.filmOffset,i.view!==void 0&&(r.view=Object.assign({},i.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Mo=class extends at{constructor(e,r=new Ft){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Oo=class extends Mo{constructor(e,r=new Ft){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as ew,Mesh as tw,MeshBasicMaterial as rw,ShapeBufferGeometry as iw,Vector2 as ow,Vector3 as nw}from"three";import{FontLoader as sw}from"three/examples/jsm/loaders/FontLoader.js";var Xe=class extends tw{constructor({char:e,originalChar:r,fontFamily:i,letterSpacing:o,fontSize:s,LOD:a=16},l=new rw({color:0,opacity:1,visible:!0,transparent:!0,side:ew})){let c=Xe.loadChar(e,i,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?r:e,this.fontFamily=i,this.letterSpacing=o,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new ow,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Xe._fontPath}static set FONTS_PATH(e){Xe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let i=new nw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(i).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Xe.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Xe.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Xe.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Xe(e).copy(this)}static loadFont(e){return new Promise(function(r,i){Xe.fontCache[e]?r(Xe.fontCache[e]):new sw().load(Xe.FONTS_PATH+e+".json",s=>{Xe.fontCache[e]=s,r(s)},void 0,i)})}static loadChar(e,r,i){if(Xe.charCache[e]){if(Xe.charCache[e][i]&&Xe.charCache[e][i].fontFamily===r)return Xe.charCache[e][i]}else Xe.charCache[e]={};let o=Xe.fontCache[r],s=o.generateShapes(e,1);return Xe.charCache[e][i]={geometry:new iw(s,i),fontFamily:r,resolution:o.data.resolution,glyphsHa:o.data.glyphs[e].ha},Xe.charCache[e][i]}},Mt=Xe;Mt.charCache={},Mt.fontCache={},Mt._fontPath="/_assets/_fonts/";import{DoubleSide as Sa,MeshBasicMaterial as _u,Vector3 as Gu,Object3D as aw}from"three";import{Vector2 as Eu}from"three";var va=new Eu,ei=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new Eu(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,i=this.message.length;r<i;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,i;for(i=t;i>=0;i-=1)if(this.message[i].char===" "){r=!1,e.length===0&&(i-=1,e.splice(0,0,this.message[i]));break}else e.splice(0,0,this.message[i]);return r?e=[]:this.message.splice(i+1,e.length),e}getWord(t=0,e=1){let r=[],i=t;for(i=t;;i+=e){if(!this.message[i]||this.message[i].char===" "){r.length===0&&this.message[i]&&(r.push(this.message[i]),this.message.splice(i,1));break}e>0?(r.push(this.message[i]),this.message.splice(i,1),i-=e):(r.splice(0,0,this.message[i]),this.message.splice(i,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,i=t;for(;i>=0&&i<this.message.length;){if(this.message[i].char===" "){r===0&&(r=this.message[i].charSize);break}r+=this.message[i].charSize,i+=e}return(i<0||i>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let i=e;i<=r;i+=1)this.message[i].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,i,o){switch(r){case 1:this.leftAlign(t,o);break;case 3:this.centerAlign(this.spaceLeft(e),t,o);break;case 2:this.rightAlign(this.spaceLeft(e),t,o);break;case 4:this.justifyAlign(this.spaceLeft(e),t,o);break}}offsetCharacters(t,e,r){va.set(e,r);let i=this.message.length;for(let o=0;o<i;o++)this.message[o].updatePosition(this.message[o].localPosition.add(va),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let i=this.countSpaces();if(i===0){this.offsetCharacters(e,0,r);return}let o=t/i,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=o),va.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(va),e)}clone(){let t=new ei(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var Xl=class extends at{constructor(e,r=new mt({transparent:!0,opacity:1,visible:!1,side:Sa})){super(e,r);this.objectType="TextFrame";this.charContainer=new aw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Gu(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,i){let o=$s.create({parameters:{width:r.width,height:r.height}}),s=new Xl(o).fromState(r,i);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,i=r.fontFamily;await Mt.loadFont(i),r.text=e;let o=r.textOrigin,s=new _u({visible:r.visible,transparent:!0,side:Sa}),a=e.split(`
942
- `),l=0;this.userData.textFrame.textLines=a.map((c,p)=>{let h=new ei(l,r.lineHeight,r.fontSize);return h.message=c.split("").map(d=>{let m={char:d,fontFamily:i,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let T=new Mt(m,f);return h.addChar3D(T,o),this.charContainer.add(T),T}),l+=h.maxCharSize*h.lineHeight,h}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let i=[];if(super.raycast(e,i),i.length>0){r.push(i[0]);return}let o=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Mt&&(e.intersectObject(this.charContainer.children[s],!1,o),o.length>0)){o[0].object=this,r.push(o[0]);return}}updateGeometry(e){var p,h,d,m;let r=this.userData,i=this.geometry.userData,o=i.parameters.width,s=i.parameters.height,a=(h=(p=e.parameters)==null?void 0:p.width)!=null?h:o,l=(m=(d=e.parameters)==null?void 0:d.height)!=null?m:s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==o&&(o<a?this.checkCapacity():o>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,i=r.textFrame.textOrigin,o=r.textFrame.textLines;for(let s=e;s<o.length;s++){o[s].updateYLinePos(this.getNewLinePosition(s)),o[s].fullUpdate(i);let a=[];for(;o[s].checkOverFlow(r.textFrame.maxLineSize);)o[s].containSpaceOverFlow()?a.unshift(o[s].getWord(o[s].message.length-1,-1)):a.unshift(o[s].popChar());if(a.length>0){o[s+1]===void 0?(o[s].isEndLine(!1),this.createTextLine()):o[s].endLine&&(this.createTextLine(s+1),o[s].isEndLine(!1),o[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let p=0;p<a[c].length;p+=1)o[s+1].addChar3D(a[c][p],i,l),l+=1;o[s+1].fullUpdate(i)}o[s].fullUpdate(i)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,i=r.textFrame.textOrigin,o=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(i),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(o);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let p=0;p<l.length;p+=1)l[p]&&s[a-1].addChar3D(l[p],i)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(i));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let i=this.userData.textFrame;i.textLines.splice(e,0,new ei(this.getNewLinePosition(e),i.lineHeight,i.fontSize))}textFullUpdate(e=0){let i=this.userData.textFrame,o=i.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<o.length;a++)o[a].updateYLinePos(this.getNewLinePosition(a)),o[a].fullUpdate(i.textOrigin),o[a].alignText(i.textOrigin,i.maxLineSize,i.horizontalAlignment,i.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let i=this.userData.textFrame.textLines,o=0;for(let s=0;s<e;s+=1)o+=i[s].maxCharSize*i[s].lineHeight;return o}updateColor(e){var o;let r=this.userData;r.textFrame.hexColor=e;let i=r.textFrame.textLines;for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(o=c.color)!=null&&o.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let i=r.textFrame.textLines;for(let o=0;o<i.length;o++){let s=i[o].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let i=r.textFrame.textLines;for(let o=0;o<i.length;o++){let s=i[o].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await Mt.loadFont(e);let i=this.userData.textFrame,o=i.textLines;i.fontFamily=e;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let i=this.userData.textFrame,o=i.textLines,s=i.fontSize;i.fontSize=e;for(let a=0;a<o.length;a++)o[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let i=this.userData.textFrame;await Mt.loadFont(i.fontFamily);let o=i.textLines;switch(i.textTransform=e,e){case 2:for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++)o[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++)o[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++)o[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,i=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let o=0;o<i.length;o++){let s=i[o].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let i=r.textFrame.textLines;for(let o=0;o<i.length;o++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,i=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let o=0;o<i.length;o++)i[o].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}toJSON(e){let r=super.toJSON(e),i=r.object;i.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return i.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await Mt.loadFont(r.fontFamily),r.textOrigin=new Gu(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let i=new _u({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Sa});r.textLinesData&&(r.textLines=r.textLinesData.map((o,s)=>{let a=new ei(Number(o.yLinePos),Number(o.lineHeight),Number(o.maxCharSize)),l=o.message.map((c,p)=>{if(c.char===void 0){let m=r.textLines[s].message[p];if("geometries"in m){let f=m.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let h={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},d=new Mt(h,i.clone());return a.addChar3D(d,r.textOrigin),this.charContainer.add(d),d});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let i=Ye(e.color,r);this.updateColor(i),this.updateOpacity(i.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,i=new Er;i.name="Text Shape";let o=Mt.fontCache[e];for(let s of this.charContainer.children)s instanceof Mt&&o.generateShapes(s.char,1).forEach(a=>{let l=new Me().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ht.create({shape:l}),p=new mt({side:Sa});p.color=r;let h=new Qr(c,p);h.name=s.char,h.position.copy(s.position),h.rotation.copy(s.rotation),i.attach(h)});return i}},vi=Xl;vi.VerticalAlign=Ya,vi.HorizontalAlign=Ka,vi.TextTransform=Xa;import{HemisphereLight as ww,Scene as Lw,Vector3 as Cw,Color as Yu,Fog as Tw,Box3 as Nw}from"three";import{BufferGeometryLoader as lw}from"three";function zu(n,t){return cw(n)}function cw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Me.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>{var i;return r.materialIndex=Math.max((i=r.materialIndex)!=null?i:0,0)}),t.geometry=new lw().parse(n));let e;try{e=tn(t)}catch(r){console.error(r)}if(!e){let r=Me.createFromState(Yi.defaultData(),100,100);t.shape=r,e=tn(t)}return e}import{Box3 as pw,Matrix4 as Si,Sphere as Fu,Vector3 as hw}from"three";var Uu=xm(Vu());var Zl;Ks.then(n=>{Zl=n});var ku=new Si,dw=new Si,uw=new Si,nr=new pw,ti=new hw,mw=new Si,fw=new Si,Io=class extends at{constructor(e,r,i,o=new Ft){super(i!=null?i:r,o);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=i;this.objectType="SubdivObject";this.hiddenMatrixOld=new Si;this.smoothShading=!0;this.matrixWorldRigid=new Si;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,i){let{subdivPointer:o,originalGeometry:s,subdividedGeometry:a}=Rt.build(r.geometry,void 0,void 0,!r.flatShading),l=Ln(r.material,i),c=new Io(o,s,a||void 0,l);return c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Oo(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e){var s,a,l;let{originalGeometry:r,subdividedGeometry:i,subdivPointer:o}=Rt.build(e,this.subdivPointer,void 0,this.smoothShading,this.shearScale);if(this.subdivPointer=o,r!==void 0&&((s=this.originalGeometry)==null||s.dispose(),this.originalGeometry=r),i!==void 0&&((a=this.subdividedGeometry)==null||a.dispose(),this.subdividedGeometry=i!=null?i:void 0),this.geometry=(l=this.subdividedGeometry)!=null?l:this.originalGeometry,this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Rt.buildLevel(this.subdivPointer,!0,this.smoothShading,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Rt.buildLevel(this.subdivPointer,!1,this.smoothShading,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=Rt.buildLevel(this.subdivPointer,!0,this.smoothShading),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Rt.buildLevel(this.subdivPointer,!1,this.smoothShading)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var i;this.geometry=this.originalGeometry,at.prototype.raycast.call(this,e,r),this.geometry=(i=this.subdividedGeometry)!=null?i:this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:i,v:o,q:s}=(0,Uu.SVD)(r),a=ku.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),l=dw.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=uw.copy(l).transpose();this.shearScale=mw.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=fw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(p=>Math.abs(s[0]-p)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Fu);let r=e.attributes.position,i=e.boundingSphere.center;nr.setFromBufferAttribute(r),nr.getCenter(i),e.boundingSphere.radius=i.distanceTo(nr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),nr.getSize(ti);let o={width:ti.x,height:ti.y,depth:ti.z};return this.geometry.userData.parameters=o,o}updateBoundingBox(e){let r=this.originalGeometry;nr.min.set(e[0],e[2],e[4]),nr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(nr.min.applyMatrix4(this.shearScaleInv),nr.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Fu);let i=r.boundingSphere.center;nr.getCenter(i),r.boundingSphere.radius=i.distanceTo(nr.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),nr.getSize(ti);let o={width:ti.x,height:ti.y,depth:ti.z};return this.geometry.userData.parameters=o,o}freeSubdivPointer(){this.subdivPointer&&(Zl.free_bvh(this.subdivPointer),Zl.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,ju(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(ju(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=P({},e.parameters)}};function ju(n,t,e,r){let i=n.position.array,o=n.normal.array,s=ku.makeScale(t,e,r).invert().elements,a,l,c;for(var p=0,h=i.length;p<h;p+=3)i[p]*=t,i[p+1]*=e,i[p+2]*=r,a=o[p],l=o[p+1],c=o[p+2],o[p]=s[0]*a+s[4]*l+s[8]*c,o[p+1]=s[1]*a+s[5]*l+s[9]*c,o[p+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as yw,DoubleSide as gw,FrontSide as xw}from"three";function Hu(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=xw:t.side===1?n.side=yw:n.side=gw)}function bw(n,t){if(Array.isArray(n.material))for(let e of n.material)Hu(e,t);else{let e=n.material;Hu(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function qu(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Io.createFromState(n,t,e);else{let i=zu(t.geometry,e),o="materials"in t?wu(t.materials,e):Ln(t.material,e);Ds.is2DParametricMesh(i.userData.type)?r=new bo(i,o):(i==null?void 0:i.userData.type)==="VectorGeometry"?r=new Qr(i,o):t.geometry.type==="NonParametricGeometry"?r=new Oo(i,o):r=new Mo(i,o),r.uuid=n,r.fromState(t)}return bw(r,t),r}function Wu(n,t,e){return t.type==="Mesh"?qu(n,t,e):t.type==="TextFrame"?vi.createFromState(n,t,e):t.type==="Empty"?Er.createFromState(n,t):t.type==="PointLight"?To.createFromState(n,t,e):t.type==="SpotLight"?No.createFromState(n,t,e):t.type==="DirectionalLight"?Co.createFromState(n,t,e):Ui.is(t.type)?Br.createFromState(n,t):(console.error(t),new Er)}function vw(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function Ju(n,t,e){if(!e.userData.layers)return!1;let r=!1,i=e.userData.layers.getLayersOfType("transmission");return i.length>0?(t.layers.set(3),r=!0,n!==void 0&&i.forEach(o=>vw(n,o))):t.layers.set(0),r}function $u(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof at)if(Array.isArray(r.material))for(let i=0;i<r.material.length;i++)Ju(n,r,r.material[i])&&(e=!0);else Ju(n,r,r.material)&&(e=!0)}),e}function Ku(n,t){"material"in n&&Sw(n.material,t),"geometry"in n&&n.geometry.dispose()}function Sw(n,t){nc(n).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Xu=new Cw,Ql=class extends Xs(Lw){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Tw(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new Yu(1,0,0);this.bgColor=new Yu(1,1,1);this.entityByUuid={};this.ambientLight=new ww(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=$u(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ye(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let i=this.find(e.publish.playCamera);i instanceof Br&&this.switchActiveCamera(i)}}clearScene(e){this.traverseEntity(r=>{Ku(r,e)});for(let r of this.children)$t(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Br.createFromState(Ql.PERSONAL_CAMERA_ID,W(P({},Es.defaultData),{name:"Personal Camera"}));return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],i=o=>{for(let s of o.children)$t(s)&&!s.raycastLock&&s.visible&&((oo(s)||Ir(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),i(s))};return i(this),r}traverseEntity(e){for(let r of this.children)$t(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ye(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Xd(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ye(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,i){for(let o of e)this.createChildObject(o.id,o.data,o.children,r,i)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,i,o,s){let a=Wu(e,r,s);return a&&(this.entityByUuid[e]=a,o.add(a),this.createChildrenObjects(i,a,s)),a}getCenter(e){let r=[];for(let o=0,s=e.length;o<s;++o){let{id:a,recursive:l}=e[o],c=this.find(a),p=l?c.recursiveBBox:c.singleBBox;r.push(...p.vertices)}let i=new Nw;return i.setFromPoints(r),i.getCenter(Xu),Xu}copyMatrixWorld(e,r){if(e===null){r.identity();return}let i=this.find(e);i?r.copy(i.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var o;if(e===null){r.identity();return}let i=(o=this.find(e))==null?void 0:o.parent;i?r.copy(i.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof at)if(Array.isArray(r.material))for(let i=0;i<r.material.length;i++)e(r.material[i]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let i,o;e>=r?(i=r/e,o=1):(i=1,o=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=i,l.uniforms[`f${l.id}_aspectRatio`].value.y=o})})}},Tn=Ql;Tn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as Mw}from"three/examples/jsm/loaders/DRACOLoader.js";var ri;function Ow(){return ri||(ri=new Mw,ri.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ri.decoderPending}async function Iw(n){if(ri){let t={attributeIDs:ri.defaultAttributeIDs,attributeTypes:ri.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ri.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,i])=>({name:r,itemSize:i.itemSize,array:i.array}))}}return null}async function Zu(n){let[t,e]=Ba(Ms.deserialize(new Uint8Array(n))),r=[];t.scene.objects.traverse((i,o)=>{o.type==="Mesh"&&o.geometry.type==="NonParametricGeometry"&&o.geometry.data.draco!==void 0&&r.push(o)}),r.length&&await Ow();for(let i of r){let o=await Iw(_a(i.geometry.data.draco));if(o){o.index&&(i.geometry.data.index={array:o.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};o.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return e.result().data}import{WebGLRenderTarget as Pw,LinearMipmapLinearFilter as Aw,LinearFilter as Dw,ClampToEdgeWrapping as Qu,DepthTexture as Bw}from"three";var em=new mt,La=class extends Pt{},Ca=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new Pw(2048,2048,{generateMipmaps:!0,minFilter:Aw,magFilter:Dw,wrapS:Qu,wrapT:Qu}),this.transmissionRenderTarget.depthTexture=new Bw(2048,2048),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,ql(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===em}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:em}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t].src=e,!0;{let r=new Image;return r.src=e,r.onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new La(e.r,e.g,e.b,e.a):this.colors[t]=new La(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,i,o,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(i=e.g)!=null?i:a.g,this.colors[t].b=(o=e.b)!=null?o:a.b,this.colors[t].a=(s=e.a)!=null?s:a.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as zk}from"three";import{mergeBufferGeometries as Fk}from"three/examples/jsm/utils/BufferGeometryUtils.js";function tm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as rm,ShaderLib as Ew}from"three";function im(n){let t=new Set;return n.traverse(e=>{if(oo(e))if(Qe(e.material))e.material.forEach(r=>{let i=r;t.has(i)||t.add(i)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);_w(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new rm,specularColor:new rm}),e.onBeforeCompile=(i,o)=>{r&&r(i,o),i.uniforms=Object.assign(Ew.physical.uniforms,i.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{i.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=i.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=i.uniforms.transmissionSamplerSize.value)})}):Gw(e)||(e.onBeforeCompile=(i,o)=>{r&&r(i,o),e.transparent=!1})}),n}function _w(n){return n.userData.layers.getLayersOfType("transmission").length>0}function Gw(n){let t=n.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function om(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function nm(n){let t=[],e=(r,i=0)=>{let o=i>0?r+i:r;return t.includes(o)?e(r,i+1):o};return n.traverse(r=>{if(t.includes(r.name)){let i=r.name,o=e(r.name);if(r.name=o,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(i,o)}):s.material.isAsset||(s.material.name=s.material.name.replace(i,o))}}t.push(r.name)}),n}import{mergeBufferGeometries as zw}from"three/examples/jsm/utils/BufferGeometryUtils";function sm(n){let t=[];return n.traverse(e=>{e instanceof mi&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children,o=i.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&tm(l),l}),s=zw(e.parameters.hideBase?o:[r.geometry,...o]);r.geometry=s,r.material=i[0].material,r.remove(e)}),n}var am="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",ec=class extends Vw{load(t,e,r,i=console.error){let o=new Rw(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(am+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(am),o.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){i(a)}},r,i)}async parse(t){let e=await Zu(t),r=new Ca(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let i=new Tn(e.scene,r);i.remove(i.personalCamera),e.scene.environment.ambientLight.enabled||i.remove(i.ambientLight);let o=e.scene.publish.playCamera;if(o){let s=i.find(o);s&&Yd(s)&&Object.assign(s,{makeDefault:!0})}return i=sm(i),i=im(i),i=om(i),i=nm(i),i}};export{ec as default};
940
+ `),h&&u.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
941
+ `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ma=class extends Vt{constructor(e=new ua,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var bi=class extends ma{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new bi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{Color as $l}from"three";function Xe(n,t){let e;if(typeof n=="string"){let r=t==null?void 0:t.getColor(n);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Dt(0,0,0,0))}else return"a"in n?new Dt(n.r,n.g,n.b,n.a):new Dt(n.r,n.g,n.b,1);return e}import{Matrix3 as yu,Texture as Wl,Vector2 as Ln,Vector3 as eo,Vector4 as gu}from"three";function xu(n,t){switch(n.data.type){case"light":return ir(n);case"fresnel":return fS(n,t);case"gradient":return yS(n);case"depth":return gS(n);case"normal":return xS(n);case"noise":return bS(n,t);case"texture":return vS(n,t);case"rainbow":return SS(n);case"transmission":return wS(n,t);case"matcap":return LS(n,t);case"displace":return CS(n);case"color":default:return mS(n,t)}}function bu(n){return{type:n.data.type}}function ir(n){let{alpha:t,mode:e}=n.data;return H(P({},bu(n)),{alpha:t,mode:e})}function mS(n,t){return H(P({},ir(n)),{color:Xe(n.data.color,t)})}function fS(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n.data;return H(P({},ir(n)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:i})}function yS(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n.data;return H(P({},ir(n)),{gradientType:t,smooth:e,colors:r.map(l=>new gu(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Ln(...s),morph:new Ln(...a),angle:i})}function gS(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=n.data;return H(P({},ir(n)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new eo(...s),direction:a?new eo(...a):new eo(1,0,0),num:p,colors:l.map(d=>new gu(d[0],d[1],d[2],d[3])),steps:c,smooth:h})}function xS(n){let{cnormal:t}=n.data;return H(P({},ir(n)),{cnormal:new eo(t[0],t[1],t[2])})}function bS(n,t){let{data:e}=n;return H(P({},ir(n)),{scale:e.scale,move:e.move,fA:new Ln(...e.fA),fB:new Ln(...e.fB),size:new eo(...e.size),distortion:new Ln(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function vS(n,t){let{projection:e,axis:r,side:o,crop:i,size:s}=n.data,{image:a,wrapping:l,repeat:c,offset:h}=n.data.texture,p=new Wl,d;if(typeof a=="string")d=t==null?void 0:t.getImage(a);else{let u=new Image;u.src=a.data,u.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(a.data))},d=u}return p.image=d,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,H(P({},ir(n)),{texture:p,mat:new yu().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:i,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s})}function SS(n){let{data:t}=n;return H(P({},ir(n)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new eo(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new eo(...t.offset)})}function wS(n,t){let{data:e}=n;return H(P({},ir(n)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function LS(n,t){let e=new Wl,{image:r}=n.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=r.data,s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(r.data))},o=s}e.image=o;let i=16777215;return H(P({},ir(n)),{color:i,texture:e})}function CS(n){let{data:t}=n,e=H(P({},bu(n)),{intensity:t.intensity});if(t.displacementType==="noise")return H(P({},e),{offset:new eo(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Wl,o=new yu().setUvTransform(0,0,1,1,0,0,0);return H(P({},e),{texture:r,mat:o,crop:t.crop})}}function vu(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Lu,Vector4 as TS}from"three";var vi;(t=>{function n(e){return new Lu(e.x,e.y,e.z).getHex()}t.getHex=n})(vi||(vi={}));var Su;(t=>{function n(e){return new TS(e.r,e.g,e.b,e.a)}t.getThreeVector4=n})(Su||(Su={}));var wu;(e=>{function n(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=n;function t(r){return new Lu(r.r,r.g,r.b).getHex()}e.getHex=t})(wu||(wu={}));function Cn(n,t){return typeof n=="string"?t.getMaterialOrDeletedPlaceholder(n):Jl(n,t)}function Cu(n,t){return n.map(e=>Cn(e,t))}function Jl(n,t){var s,a;let e=(s=n.layers)!=null?s:go.defaultTwoLayerData("phong").layers,r=NS(e),o;switch(r.category){case"basic":o=new mt;break;case"lambert":{o=new gi;break}case"toon":{o=new xi;break}case"physical":o=new bi;break;case"phong":default:{o=new Ot;break}}o.name=(a=n.name)!=null?a:"Untitled Material";let i=o.userData.layers;MS(i);for(let l=e.length-1;l>=0;l--)OS(i,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,d=Xe(r.emissive,t);d instanceof $l?h.emissive.value=d:h.emissive.value.setHex(vi.getHex(d));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let d=Xe(p.specular,t);d instanceof $l?h.specular.value=d:h.specular.value.setHex(vi.getHex(d));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let d=Xe(p.specular,t);d instanceof $l?h.specular.value=d:h.specular.value.setHex(vi.getHex(d));break}}return i.blendColors(),i.blendAfterColors(),i.blendPositions(),o}function NS(n){for(let t of n)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function MS(n){for(let t of n.getLayers())n.removeLayer(t.id)}function OS(n,t,e){let r=xu(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=n.addLayer(r);o.uuid=t.id;for(let i in t.data)vu(i,o,t.data)}import{Mesh as zS,Matrix4 as RS}from"three";import{Matrix4 as Yl}from"three";import{Box3 as Iu,Line3 as $t,Matrix4 as Kl,Vector3 as Ve}from"three";import{HemisphereLight as Tu}from"three";var fa=n=>"isEntity"in n,br=n=>"isAbstractMesh"in n,Nu=n=>n.objectType==="CombinedCamera";var _r=n=>"objectHelper"in n;function PS(n,t){var r;let e=!1;if(t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray((r=t.hiddenMatrix)!=null?r:Wr.identity)),e&&(n.updateMatrix(),br(n))){let o=n.invalidateDownstreamBooleanData();o.isBooleanMesh&&o.recomputeBoolean()}t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function IS(n,t){PS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.isEntity?n.visibility=t.visible:n.visible=t.visible)}function Mu(n,t,e){IS(n,t),t.color!==void 0&&(n.color=Xe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Tu)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Tu)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0),t.helper!==void 0&&_r(n)&&(n.enableHelper=t.helper,n.gizmos.shadowmap.visible=t.helper)}function Ou(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Si=new Iu,ft=new Ve,le=new Ve,tt=new Kl;function AS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=e;h<r;h++){let p=t.getX(h),d=t.getY(h),u=t.getZ(h);p<o&&(o=p),d<i&&(i=d),u<s&&(s=u),p>a&&(a=p),d>l&&(l=d),u>c&&(c=u)}return n.min.set(o,i,s),n.max.set(a,l,c),n}var Pu=(n,t,e,r)=>{var o;if(br(n)){let i=n.geometry.userData.parameters,s=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?ft.copy(n.originalGeometry.boundingSphere.center):s!==void 0&&(AS(Si,s,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:s.count),Si.getCenter(ft)),n.forceComputeSize?Si.getSize(le).multiplyScalar(.5):le.set(i.width,i.height,(o=i.depth)!=null?o:0).multiplyScalar(.5)}else if(_r(n)&&r===!0){let i=n.geometryHelper.getAttribute("position");Si.setFromArray(i.array),Si.getCenter(ft),Si.getSize(le).multiplyScalar(.5)}else ft.setScalar(0),le.setScalar(0);tt.copy(t).multiply(n.matrixWorld),le.x===0&&le.y===0&&le.z===0?e.push(new Ve(ft.x,ft.y,ft.z).applyMatrix4(tt)):e.push(new Ve(-le.x,le.y,le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,-le.y,le.z).add(ft).applyMatrix4(tt),new Ve(le.x,-le.y,le.z).add(ft).applyMatrix4(tt),new Ve(le.x,le.y,le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,-le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(le.x,-le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(le.x,le.y,-le.z).add(ft).applyMatrix4(tt))},Tn=class extends Iu{constructor(){super(...arguments);this.matrix=new Kl;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Kl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Pu(s,r,i,e.enableHelper===!0)}):Pu(e,r,i,e.enableHelper===!0),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(le).multiplyScalar(.5),this.getCenter(ft),tt.copy(this.matrix).setPosition(ft),this.vertices=[new Ve(-le.x,le.y,le.z).applyMatrix4(tt),new Ve(-le.x,-le.y,le.z).applyMatrix4(tt),new Ve(le.x,-le.y,le.z).applyMatrix4(tt),new Ve(le.x,le.y,le.z).applyMatrix4(tt),new Ve(-le.x,le.y,-le.z).applyMatrix4(tt),new Ve(-le.x,-le.y,-le.z).applyMatrix4(tt),new Ve(le.x,-le.y,-le.z).applyMatrix4(tt),new Ve(le.x,le.y,-le.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new $t(this.vertices[0],this.vertices[3]),new $t(this.vertices[1],this.vertices[2]),new $t(this.vertices[5],this.vertices[6]),new $t(this.vertices[4],this.vertices[7]),new $t(this.vertices[0],this.vertices[1]),new $t(this.vertices[3],this.vertices[2]),new $t(this.vertices[7],this.vertices[6]),new $t(this.vertices[4],this.vertices[5]),new $t(this.vertices[0],this.vertices[4]),new $t(this.vertices[1],this.vertices[5]),new $t(this.vertices[2],this.vertices[6]),new $t(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as DS,Matrix4 as BS,Light as ES}from"three";function Nn(n){let t=[];for(let e in n){let r=n[e];delete r.metadata,t.push(r)}return t}function _S(n){let t=[];for(let e in n)t.push(n[e]);return t}var ya=n=>class extends n{hasEntityChild(){return this.children.some(e=>fa(e))}isDescendantOf(e){e instanceof DS&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new BS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),fa(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let i={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(i.name=this.name),i.matrix=this.matrix.toArray(),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),i.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData),this.children.length>0){i.children=[];for(let s of this.children)(fa(s)||s instanceof ES)&&i.children.push(s.toJSON(e).object)}if(r){let s=Nn(e.geometries),a=Nn(e.materials),l=Nn(e.textures),c=Nn(e.images),h=Nn(e.interactionStates),p=_S(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=i,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Jt=n=>"isEntity"in n,Au=n=>"isAbstractMesh"in n,Kt=n=>class extends ya(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Yl;this._singleBBox=new Tn;this._recursiveBBox=new Tn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Jt(o)&&o.traverseEntity(i=>{_r(i)&&i.visible&&(i.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Jt(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)Jt(o)&&o.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&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 s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Jt(i)&&this.add(i.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Jt(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Yl,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)Jt(i)&&i.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),i=o.object;return this.raycastLock===!0&&(i.raycastLock=!0),this.scaleLock===!0&&(i.scaleLock=!0),i.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Yl}),this.copy(r),r.children=o,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return $o(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o=P({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return $o(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as GS,Vector3 as Mn,Euler as Du,MathUtils as to}from"three";var Lo=class extends GS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Mn),i=.1;this.parameters=fs.defaultData(o.toArray(),i),po(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(o=>o.clone());for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=this.object.shallowClone(!1);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*to.DEG2RAD,i=r.end*to.DEG2RAD,s=o-i,a=new Du(r.rotation[0]*to.DEG2RAD,r.rotation[1]*to.DEG2RAD,r.rotation[2]*to.DEG2RAD),l;switch(r.axis){case"z":l=new Mn(0,0,1);break;case"y":l=new Mn(0,1,0);break;default:case"x":l=new Mn(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let p=s/e.count*c-o;switch(r.axis){case"x":h.rotation.set(0,p,0);break;case"y":h.rotation.set(0,0,p);break;case"z":h.rotation.set(p,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Du(r.rotation[0]*to.DEG2RAD,r.rotation[1]*to.DEG2RAD,r.rotation[2]*to.DEG2RAD);for(let[i,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Mn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=o.size[0]*a-s.x,h.position.y=o.size[1]*l-s.y,h.position.z=o.size[2]*c-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),po(this.parameters,e),this.update(),this}};var Co=n=>n!==null&&n.isBooleanMesh,rt=class extends Kt(zS){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new RS;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=Xl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){sn.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=On(r),i=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new Lo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Lo(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,i,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(i=e.receiveShadow)!=null?i:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Yt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),this.parent&&Co(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)br(e)&&(e.freeBooleanPointer(),Co(e)&&e.invalidateUpstreamBooleanData())}};var US=new Zl(0,0,1),Bu=new Zl,Eu=new Zl,_u=new jS,ro=class extends rt{constructor(e=dt.create({}),r=new mt({side:FS})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new VS;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),_u.getNormalMatrix(this.matrixWorld),Bu.copy(US).applyMatrix3(_u).normalize(),Eu.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Bu,Eu)}clone(e){let r=this.shape.clone(),o=this.material.clone(),i=this.geometry.userData,s=dt.create(Object.assign({},i,{shape:r})),a=new ro(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function ga(n,t){return HS(n)}function HS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Oe.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new kS().parse(n));let e;try{e=On(t)}catch(r){console.error(r)}if(!e){let r=Oe.createFromState(ti.defaultData(),100,100);t.shape=r,e=On(t)}return e}var fe;ea.then(n=>{fe=n});var Ru=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Fu=new Uint32Array([0,1,2,3]),Vu=new Uint8Array([4]),nr=class{static build(n,t,e,r){let o,i,s;if((n==null?void 0:n.positionWASM)!==void 0){t&&t!==0&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{o=nr.allocate(n,r)}catch(a){console.error(a,n),o=nr.allocate({positionWASM:Ru,indexWASM:Fu,verticesPerFaceWASM:Vu},r)}fe.set_destination_refinement_level(o,0),i=nr.buildLevel(o,!0,e)}else o=t;if(n!==void 0&&n.subdivisions!==void 0){let a=WS(n.subdivisions,n.positionWASM.length);fe.set_destination_refinement_level(o,a),a>0?s=nr.buildLevel(o,!1,e):s=null}return{subdivPointer:o,originalGeometry:i,subdividedGeometry:s}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:ga(n),r,o,i,s;return{positions:r,triIndices:s}=ic(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=nc(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){var N;let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=Ru,r=Fu,o=Vu);let a=e.length,l=r.length,c=o.length,h=e.length+i.length+s.length,p=r.length+o.length,d=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=h*Float32Array.BYTES_PER_ELEMENT,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(d),w=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+u,p);w.set(e,0),w.set(i,e.length),w.set(s,e.length+i.length),y.set(r,0),y.set(o,r.length);let b;(N=n==null?void 0:n.scaleBaked)!=null&&N.some(v=>v!==1)&&(b=new qS().makeScale(...n.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+u,l,g+u+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+u,l,g+u+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(n,t,e,r,o){let i=o?fe.get_mesh_data2(n,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t,o.elements):fe.get_mesh_data(n,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t),s=8,a=fe.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let d=fe.HEAPU32[a[c]>>2],u=fe.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let w=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(w>>2,(w>>2)+l[c]);if(c++,r===void 0){let b=new Gu;if(b.setIndex(new Ql(y,1)),b.setAttribute("position",new ec(p,3)),b.setAttribute("normal",new ec(u,3)),t){b.setAttribute("faceMap",new Ql(g,1));let A=new Float32Array(u.length/3*4).fill(0);b.setAttribute("color",new zu(A,4))}return fe.free_mesh_data(i),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(u),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=fe.get_wireframe_data_for_base_level(n),o=4,i=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,l=fe.HEAPU32[i[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[i[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let d=new Gu;d.setAttribute("position",new ec(c,3));let u=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)u[f++]=e.r,u[f++]=e.g,u[f++]=e.b;return d.setAttribute("color",new zu(u,3)),d.setIndex(new Ql(p,1)),fe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||fe.set_destination_refinement_level(n,1);let r=e?fe.get_topological_data2(n,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(n,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,i=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=fe.HEAPU32[i[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[i[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let d=fe.HEAPU32[i[a]>>2],u=new Uint8Array(fe.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:u}}};function WS(n,t){let e=n;return e=Math.min(e,3-Math.ceil(Math.log(t/172e3)/Math.log(4))),Math.max(e,0)}var ju=["getX","getY","getZ"];function ic(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[ju[d]](h)*a)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)s.push(n[ju[d]](h));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:s,triIndices:l}}var xa=new ba,tc=new ba,rc=new ba,oc=new ba;function nc(n,t,e){var i;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);n.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)n.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)n.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(i=e.capStartIndex)!=null?i:t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){xa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),tc.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),rc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),oc.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),tc.sub(xa).normalize(),rc.sub(xa).normalize(),oc.sub(xa).normalize();let l=tc.cross(rc).dot(oc);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<n.length;c+=3,h++)n[c+2]===0&&(s.push(h),l++),n[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Yt={};xc(Yt,{calcBoolean:()=>XS,calcBooleanTopological:()=>YS,freeMeshSet:()=>ew,getMeshSet:()=>ZS,transformMeshSet:()=>QS});var $S,Uu=new Promise(n=>{$S=n});import{Float32BufferAttribute as ku,Sphere as JS}from"three";var Ce,wi;Uu.then(n=>Ce=n);function KS(n,t){let e,{positions:r,triIndices:o}=ic(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=nc(r,o,n);i=a.length,e=[];for(let l=0,c=0;l<i;l++){e.push(a[l]);for(let h=0;h<a[l];h++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,l=0;l<e.length;)e[l++]=3,i++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:i}}function Hu(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=Ce._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ce.HEAPU32.buffer,i,t):new Float32Array(Ce.HEAPF32.buffer,i,t)).set(n,0),i}function qu(n){switch(n){case 0:return Ce.OP.UNION;case 1:return Ce.OP.INTERSECTION;case 2:return Ce.OP.A_MINUS_B;case 3:return Ce.OP.B_MINUS_A;case 4:return Ce.OP.SYMMETRIC_DIFFERENCE;case 5:return Ce.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function YS(n,t){wi===void 0&&(wi=Ce.init_csg());let e=Ce.csg_calc(wi,Hu(n),n.length,qu(t),!0),r=6,o=Ce.HEAPU32.subarray(e>>2,(e>>2)+r),i=o.subarray(3,3+3),s=0,a=Ce.HEAPU32[o[s]>>2],l=new Float32Array(Ce.HEAPF32.subarray(a>>2,(a>>2)+i[s]));s++;let c=Ce.HEAPU32[o[s]>>2],h=new Uint32Array(Ce.HEAPU32.subarray(c>>2,(c>>2)+i[s]));s++;let p=Ce.HEAPU32[o[s]>>2],d=new Uint8Array(Ce.HEAPU32.subarray(p>>2,(p>>2)+i[s]));return Ce.free_mesh_data(e),{positions:l,indices:h,verticesPerFace:d}}function XS(n,t,e){wi===void 0&&(wi=Ce.init_csg());let r=Ce.csg_calc(wi,Hu(n),n.length,qu(t),!1),o=5,i=Ce.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+3),a=0,l=Ce.HEAPU32[i[a]>>2],c=Ce.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=Ce.HEAPU32[i[a]>>2],p=Ce.HEAPF32.subarray(h>>2,(h>>2)+s[a]);a++;let d=s[a];e.setAttribute("position",new ku(c,3)),e.setAttribute("normal",new ku(p,3));let u=Ce.HEAPF32.subarray((r>>2)+5,(r>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new JS),e.boundingSphere.center.set(u[0],u[1],u[2]),e.boundingSphere.radius=(u[3]**2+u[4]**2+u[5]**2)**.5,e.userData.parameters={width:u[3]*2,height:u[4]*2,depth:u[5]*2},Ce.free_mesh_data(r),d}function ZS(n,t){if(Ce===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let g=n.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((w,y)=>w+y,0)+o);for(let w=0,y=0,b=0;w<g.verticesPerFace.length;w++){r[b++]=g.verticesPerFace[w];for(let A=0;A<g.verticesPerFace[w];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=KS(n,t));let i=e.length,s=r.length,a=e.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,p=l*Uint32Array.BYTES_PER_ELEMENT,d=Ce._malloc(c),u=new Float32Array(Ce.HEAPF32.buffer,d,a),f=new Uint32Array(Ce.HEAPU32.buffer,d+h,l);return u.set(e,0),f.set(r,0),Ce.get_csg_mesh(d,i,d+h,s,o)}function QS(n,t){Ce.transform_csg_mesh(n,t.elements)}function ew(n){Ce.free_csg_mesh(n)}var Xl={ConeGeometry:pd,CubeGeometry:dd,CylinderGeometry:hd,DodecahedronGeometry:ud,EllipseGeometry:zd,HelixGeometry:Ud,IcosahedronGeometry:kd,LatheGeometry:Hd,NonParametricGeometry:Jd,PolygonGeometry:Kd,PyramidGeometry:Yd,RectangleGeometry:Zs,SphereGeometry:Xd,PlaneGeometry:Zd,StarGeometry:Qd,TextFrameGeometry:Qs,TorusGeometry:eu,TorusKnotGeometry:tu,TriangleGeometry:ru,VectorGeometry:dt},On=n=>Xl[n.type].create(n);import{VideoTexture as tw}from"three";var Wu=n=>n.tagName==="VIDEO",To=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Wu(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.userData.layers,i=o.getLayers();for(let s=0;s<i.length;s++){let a=i[s];hu(a)&&(To.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;Wu(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Li=class extends rt{constructor(e,r=new mt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof tw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let i=Zs.create({parameters:{width:r,height:o}}),s=new mt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Li(i,s)}};import{BufferGeometry as $u,Matrix4 as rw}from"three";var ow=new rw;var va=class extends rt{constructor(e=new $u,r=new Ot){super(e,r);this.booleanOp=2;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];Co(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Au(i)&&i.booleanExclude===!1&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Yt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Yt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else Co(i)&&i.needsTransformForDownstream===!0?(Yt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Yt.transformMeshSet(i.booleanMeshSetAddress,ow.multiplyMatrices(i.matrix,i.booleanMatrixInvOld)),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Yt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new $u,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere,this.booleanMeshSetAddress=Yt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry),this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){var o;this.booleanOp=(o=e.parameters.operation)!=null?o:this.booleanOp,this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as bw,OrthographicCamera as vw,PerspectiveCamera as Sw,Vector3 as jt,Object3D as Yu,Quaternion as ww}from"three";import{BoxBufferGeometry as iw}from"three";var vr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new iw(30,30,30),t};import{Camera as cw,LineSegments as hw,BufferGeometry as pw,LineBasicMaterial as dw,Color as ac,Vector3 as uw,Float32BufferAttribute as Ku}from"three";import{Ray as nw,Sphere as sw,Matrix4 as aw,Vector3 as Gr}from"three";var Sa=new nw,sc=new sw,Ju=new aw,Sr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),sc.copy(i.boundingSphere),sc.applyMatrix4(s),e.ray.intersectsSphere(sc)===!1||(Ju.copy(s).invert(),Sa.copy(e.ray).applyMatrix4(Ju),i.boundingBox!==null&&Sa.intersectsBox(i.boundingBox)===!1))return;let a,l,c,h,p=i.index,d=i.attributes.position,u=i.drawRange,f,g;if(o===!1){let y=Math.max(0,u.start),b=Math.min(p.count,u.start+u.count);for(f=y,g=b;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=w(n,e,Sa,d,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=i.attributes.position,A=new Gr,N=new Gr,v=new Gr,k=new Gr,L=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),x=I*I,C=Math.max(0,u.start),T=Math.min(b.count,u.start+u.count);for(let O=C,$=T-1;O<$;O+=L){if(A.fromBufferAttribute(b,O),N.fromBufferAttribute(b,O+1),Sa.distanceSqToSegment(A,N,k,v)>x)continue;k.applyMatrix4(n.matrixWorld);let ie=e.ray.origin.distanceTo(k);ie<e.near||ie>e.far||r.push({distance:ie,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function w(y,b,A,N,v,k,L){let m=new Gr,I=new Gr,x=new Gr,C=new Gr,T=new Gr;if(m.fromBufferAttribute(N,v),I.fromBufferAttribute(N,k),x.fromBufferAttribute(N,L),A.intersectTriangle(m,I,x,!1,C)===null)return null;T.copy(C),T.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(T);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:T.clone(),object:y}}};var wa=new uw,Xt=new cw,lc=class extends hw{constructor(e){let r=new pw,o=new dw({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},l=new ac(15711266),c=new ac(15711266),h=new ac(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",h),p("u2","u3",h),p("u3","u1",h);function p(u,f,g){d(u,g),d(f,g)}function d(u,f){i.push(0,0,0),s.push(f.r,f.g,f.b),a[u]===void 0&&(a[u]=[]),a[u].push(i.length/3-1)}r.setAttribute("position",new Ku(i,3)),r.setAttribute("color",new Ku(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Xt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;sr("n1",r,e,Xt,-i,-s,a),sr("n2",r,e,Xt,i,-s,a),sr("n3",r,e,Xt,-i,s,a),sr("n4",r,e,Xt,i,s,a);let l=a;sr("f1",r,e,Xt,-i,-s,l),sr("f2",r,e,Xt,i,-s,l),sr("f3",r,e,Xt,-i,s,l),sr("f4",r,e,Xt,i,s,l);let c=l,h=.5;sr("u1",r,e,Xt,i*.7*h,s*1.1,c),sr("u2",r,e,Xt,-i*.7*h,s*1.1,c),sr("u3",r,e,Xt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,t,e,r,o,i,s){wa.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],wa.x,wa.y,wa.z)}}var La=class extends vr(lc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){Sr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as mw}from"three";var Ci=class extends vr(mw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ci.geometryHelper,e,r)}};import{AxesHelper as fw}from"three";var Ti=class extends vr(fw){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){Sr(this.object,Ti.geometryHelper,e,r)}update(){}};import{PointLightHelper as yw}from"three";var Ni=class extends vr(yw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ni.geometryHelper,e,r)}};import{SpotLightHelper as gw,Vector3 as xw}from"three";var Ca=class extends vr(gw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ca.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Ca._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Pn=Ca;Pn._vector=new xw;var wr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let i of this.children)Jt(i)&&i.traverseEntity(s=>{_r(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,i){this.objectHelper.raycast(o,i)}copy(o,i=!0){return super.copy(o,i),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let i=super.toJSON(o),s=i.object;return s.enableHelper=this.enableHelper,i}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var Mi=new jt,cc=new jt,zr=class extends wr(Kt(bw),La){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new vw(e*-.5,e*.5,r*.5,r*-.5,i!=null?i:-5e4,s),this.perspCamera=new Sw(o,e/r,i!=null?i:50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let o=new zr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Mi),this.targetOffset=Mi.distanceTo(e)}getTarget(e=new jt){return this.getWorldDirection(cc),this.getWorldPosition(Mi),cc.multiplyScalar(this.targetOffset),e.copy(Mi).add(cc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Mi),Mi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new ww),r=new jt(0,0,1).applyQuaternion(e),o=new jt().copy(Yu.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new jt().copy(Yu.DefaultUp).projectOnPlane(r),s=new jt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new jt),i=e.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new jt),i=this.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new jt),i=new jt().fromArray(e.orbitControlsTarget);this.targetOffset=i.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return $o(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return H(P(P({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Lw}from"three";var Rr=class extends wr(Kt(Lw),Ti){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Rr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Cw,CameraHelper as Ta}from"three";var Oi=class extends wr(Kt(Cw),Ci){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=1,o.far=2500;let i=new Ta(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Oi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Ou(this,e.size),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Tw,Vector3 as Na,Box3 as Nw,Box3Helper as Ma,Color as Mw}from"three";var Pi=class extends wr(Kt(Tw),Ni){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new Na(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Na(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Nw(i,s),l=new Ma(a,new Mw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let i=new Pi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ma&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof Ma){let o=this.shadow.camera,i=new Na(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Na(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as Ow,CameraHelper as Oa,MathUtils as Pw,Vector3 as em,Quaternion as Iw}from"three";var Xu=new em,Zu=new em,Qu=new Iw,Ii=class extends wr(Kt(Ow),Pn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=Pw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Oa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Ii().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Zu.setFromMatrixPosition(this.matrixWorld),Qu.setFromRotationMatrix(this.matrixWorld),Xu.copy(this.up).applyQuaternion(Qu).negate().multiplyScalar(this.distance),this.target.position.copy(Zu).add(Xu),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Ai=class extends rt{constructor(e,r=new Ot){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Di=class extends Ai{constructor(e,r=new Ot){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Aw,Mesh as Dw,MeshBasicMaterial as Bw,ShapeBufferGeometry as Ew,Vector2 as _w,Vector3 as Gw}from"three";import{FontLoader as zw}from"three/examples/jsm/loaders/FontLoader.js";var Ze=class extends Dw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},l=new Bw({color:0,opacity:1,visible:!0,transparent:!0,side:Aw})){let c=Ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?r:e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new _w,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ze._fontPath}static set FONTS_PATH(e){Ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Gw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ze.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ze.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ze.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ze.fontCache[e]?r(Ze.fontCache[e]):new zw().load(Ze.FONTS_PATH+e+".json",s=>{Ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ze.charCache[e]){if(Ze.charCache[e][o]&&Ze.charCache[e][o].fontFamily===r)return Ze.charCache[e][o]}else Ze.charCache[e]={};let i=Ze.fontCache[r],s=i.generateShapes(e,1);return Ze.charCache[e][o]={geometry:new Ew(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ze.charCache[e][o]}},Pt=Ze;Pt.charCache={},Pt.fontCache={},Pt._fontPath="/_assets/_fonts/";import{DoubleSide as Ia,MeshBasicMaterial as rm,Vector3 as om,Object3D as Rw}from"three";import{Vector2 as tm}from"three";var Pa=new tm,oo=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new tm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){Pa.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(Pa),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),Pa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Pa),e)}clone(){let t=new oo(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var hc=class extends rt{constructor(e,r=new mt({transparent:!0,opacity:1,visible:!1,side:Ia})){super(e,r);this.objectType="TextFrame";this.charContainer=new Rw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new om(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Qs.create({parameters:{width:r.width,height:r.height}}),s=new hc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Pt.loadFont(o),r.text=e;let i=r.textOrigin,s=new rm({visible:r.visible,transparent:!0,side:Ia}),a=e.split(`
942
+ `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new oo(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(d=>{let u={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new Pt(u,f);return p.addChar3D(g,i),this.charContainer.add(g),g}),l+=p.maxCharSize*p.lineHeight,p}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Pt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){var h,p,d,u;let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:i,l=(u=(d=e.parameters)==null?void 0:d.height)!=null?u:s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)i[s+1].addChar3D(a[c][h],o,l),l+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&s[a-1].addChar3D(l[h],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new oo(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){var i;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(i=c.color)!=null&&i.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await Pt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Pt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await Pt.loadFont(r.fontFamily),r.textOrigin=new om(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new rm({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Ia});r.textLinesData&&(r.textLines=r.textLinesData.map((i,s)=>{let a=new oo(Number(i.yLinePos),Number(i.lineHeight),Number(i.maxCharSize)),l=i.message.map((c,h)=>{if(c.char===void 0){let u=r.textLines[s].message[h];if("geometries"in u){let f=u.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},d=new Pt(p,o.clone());return a.addChar3D(d,r.textOrigin),this.charContainer.add(d),d});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Rr;o.name="Text Shape";let i=Pt.fontCache[e];for(let s of this.charContainer.children)s instanceof Pt&&i.generateShapes(s.char,1).forEach(a=>{let l=new Oe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=dt.create({shape:l}),h=new mt({side:Ia});h.color=r;let p=new ro(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},No=hc;No.VerticalAlign=nl,No.HorizontalAlign=il,No.TextTransform=sl;import{HemisphereLight as Zw,Scene as Qw,Vector3 as e1,Color as ym,Fog as t1,Box3 as r1}from"three";import{Box3 as Fw,Matrix4 as Mo,Sphere as sm,Vector3 as Vw}from"three";var lm=zm(nm());var pc;ea.then(n=>{pc=n});var cm=new Mo,jw=new Mo,Uw=new Mo,ar=new Fw,io=new Vw,kw=new Mo,Hw=new Mo,Bi=class extends rt{constructor(e,r,o,i=new Ot){super(o!=null?o:r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=nr.build(r.geometry,void 0,!r.flatShading),l=Cn(r.material,o),c=new Bi(i,s,a||void 0,l);return c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Di(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e){var s,a,l;let{originalGeometry:r,subdividedGeometry:o,subdivPointer:i}=nr.build(e,this.subdivPointer,this.smoothShading,this.shearScale);if(this.subdivPointer=i,r!==void 0&&((s=this.originalGeometry)==null||s.dispose(),this.originalGeometry=r),o!==void 0&&((a=this.subdividedGeometry)==null||a.dispose(),this.subdividedGeometry=o!=null?o:void 0),this.geometry=(l=this.subdividedGeometry)!=null?l:this.originalGeometry,this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){nr.buildLevel(this.subdivPointer,!0,this.smoothShading,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&nr.buildLevel(this.subdivPointer,!1,this.smoothShading,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=nr.buildLevel(this.subdivPointer,!0,this.smoothShading),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=nr.buildLevel(this.subdivPointer,!1,this.smoothShading)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o:this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,lm.SVD)(r),a=cm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=jw.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=Uw.copy(l).transpose();this.shearScale=kw.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Hw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(h=>Math.abs(s[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new sm);let r=e.attributes.position,o=e.boundingSphere.center;ar.setFromBufferAttribute(r),ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(io);let i={width:io.x,height:io.y,depth:io.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;ar.min.set(e[0],e[2],e[4]),ar.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ar.min.applyMatrix4(this.shearScaleInv),ar.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new sm);let o=r.boundingSphere.center;ar.getCenter(o),r.boundingSphere.radius=o.distanceTo(ar.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(io);let i={width:io.x,height:io.y,depth:io.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(pc.free_bvh(this.subdivPointer),pc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,am(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(am(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=P({},e.parameters)}};function am(n,t,e,r){let o=n.position.array,i=n.normal.array,s=cm.makeScale(t,e,r).invert().elements,a,l,c;for(var h=0,p=o.length;h<p;h+=3)o[h]*=t,o[h+1]*=e,o[h+2]*=r,a=i[h],l=i[h+1],c=i[h+2],i[h]=s[0]*a+s[4]*l+s[8]*c,i[h+1]=s[1]*a+s[5]*l+s[9]*c,i[h+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as qw,BufferGeometry as Ww,DoubleSide as $w,FrontSide as Jw}from"three";function hm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=Jw:t.side===1?n.side=qw:n.side=$w)}function Kw(n,t){if(Array.isArray(n.material))for(let e of n.material)hm(e,t);else{let e=n.material;hm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function pm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Bi.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Ww:ga(t.geometry,e),i="materials"in t?Cu(t.materials,e):Cn(t.material,e);zs.is2DParametricMesh(o.userData.type)?r=new Li(o,i):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new ro(o,i):t.geometry.type==="NonParametricGeometry"?r=new Di(o,i):t.geometry.type==="BooleanGeometry"?(r=new va(void 0,i),r.booleanOp=t.geometry.operation):r=new Ai(o,i),r.uuid=n,r.fromState(t)}return Kw(r,t),r}function dm(n,t,e){return t.type==="Mesh"?pm(n,t,e):t.type==="TextFrame"?No.createFromState(n,t,e):t.type==="Empty"?Rr.createFromState(n,t):t.type==="PointLight"?Pi.createFromState(n,t,e):t.type==="SpotLight"?Ii.createFromState(n,t,e):t.type==="DirectionalLight"?Oi.createFromState(n,t,e):Jo.is(t.type)?zr.createFromState(n,t):(console.error(t),new Rr)}function Yw(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function um(n,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,n!==void 0&&o.forEach(i=>Yw(n,i))):t.layers.set(0),r}function mm(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)um(n,r,r.material[o])&&(e=!0);else um(n,r,r.material)&&(e=!0)}),e}function fm(n,t){"material"in n&&Xw(n.material,t),"geometry"in n&&n.geometry.dispose()}function Xw(n,t){bc(n).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var gm=new e1,dc=class extends ya(Qw){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new t1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new ym(1,0,0);this.bgColor=new ym(1,1,1);this.entityByUuid={};this.ambientLight=new Zw(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=mm(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Xe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof zr&&this.switchActiveCamera(o)}}clearScene(e){this.traverseEntity(r=>{fm(r,e)});for(let r of this.children)Jt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=zr.createFromState(dc.PERSONAL_CAMERA_ID,H(P({},Fs.defaultData),{name:"Personal Camera"}));return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)Jt(s)&&!s.raycastLock&&s.visible&&((br(s)||_r(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Jt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Mu(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=dm(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),Co(i)&&br(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:l}=e[i],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new r1;return o.setFromPoints(r),o.getCenter(gm),gm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var i;if(e===null){r.identity();return}let o=(i=this.find(e))==null?void 0:i.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},In=dc;In.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as o1}from"three/examples/jsm/loaders/DRACOLoader.js";var no;function i1(){return no||(no=new o1,no.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),no.decoderPending}async function n1(n){if(no){let t={attributeIDs:no.defaultAttributeIDs,attributeTypes:no.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await no.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function xm(n){let[t,e]=Ua(Ds.deserialize(new Uint8Array(n))),r=[];t.scene.objects.traverse((o,i)=>{i.type==="Mesh"&&i.geometry.type==="NonParametricGeometry"&&i.geometry.data.draco!==void 0&&r.push(i)}),r.length&&await i1();for(let o of r){let i=await n1(Ha(o.geometry.data.draco));if(i){i.index&&(o.geometry.data.index={array:i.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};i.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}import{WebGLRenderTarget as s1,LinearMipmapLinearFilter as a1,LinearFilter as l1,ClampToEdgeWrapping as bm,DepthTexture as c1}from"three";var vm=new mt,Da=class extends Dt{},Ba=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new s1(2048,2048,{generateMipmaps:!0,minFilter:a1,magFilter:l1,wrapS:bm,wrapT:bm}),this.transmissionRenderTarget.depthTexture=new c1(2048,2048),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,Jl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===vm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:vm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t].src=e,!0;{let r=new Image;return r.src=e,r.onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Da(e.r,e.g,e.b,e.a):this.colors[t]=new Da(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,i,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(i=e.b)!=null?i:a.b,this.colors[t].a=(s=e.a)!=null?s:a.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as F4}from"three";import{mergeBufferGeometries as U4}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Sm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as wm,ShaderLib as h1}from"three";function Lm(n){let t=new Set;return n.traverse(e=>{if(br(e))if(et(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);p1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new wm,specularColor:new wm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(h1.physical.uniforms,o.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):d1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function p1(n){return n.userData.layers.getLayersOfType("transmission").length>0}function d1(n){let t=n.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function Cm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Tm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as u1}from"three/examples/jsm/utils/BufferGeometryUtils";function Nm(n){let t=[];return n.traverse(e=>{e instanceof Lo&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,i=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Sm(l),l}),s=u1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.material=o[0].material,r.remove(e)}),n}var Mm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",uc=class extends f1{load(t,e,r,o=console.error){let i=new m1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Mm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Mm),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await xm(t),r=new Ba(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new In(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Nu(s)&&Object.assign(s,{makeDefault:!0})}return o=Nm(o),o=Lm(o),o=Cm(o),o=Tm(o),o}};export{uc as default};