@splinetool/loader 0.9.64 → 0.9.65

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 kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=Object.getOwnPropertyDescriptor,Wd=Object.getOwnPropertyDescriptors,$d=Object.getOwnPropertyNames,Lc=Object.getOwnPropertySymbols,Jd=Object.getPrototypeOf,Tc=Object.prototype.hasOwnProperty,Yd=Object.prototype.propertyIsEnumerable;var Cc=(i,t,e)=>t in i?Un(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,I=(i,t)=>{for(var e in t||(t={}))Tc.call(t,e)&&Cc(i,e,t[e]);if(Lc)for(var e of Lc(t))Yd.call(t,e)&&Cc(i,e,t[e]);return i},H=(i,t)=>Hd(i,Wd(t));var Kd=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Nc=(i,t)=>{for(var e in t)Un(i,e,{get:t[e],enumerable:!0})},Xd=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $d(t))!Tc.call(i,o)&&o!==e&&Un(i,o,{get:()=>t[o],enumerable:!(r=qd(t,o))||r.enumerable});return i};var Qd=(i,t,e)=>(e=i!=null?kd(Jd(i)):{},Xd(t||!i||!i.__esModule?Un(e,"default",{value:i,enumerable:!0}):e,i));var xd=Kd((Ga,gd)=>{(function(i,t){typeof Ga=="object"&&typeof gd<"u"?t(Ga):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Ga,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,u,m,f,g,v,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],S=[],k=[],T=e==="f"?A:b,d=g=u=0;d<A;d++)S[d]=new Array(T).fill(0);for(d=0;d<b;d++)k[d]=new Array(b).fill(0);var O,x=new Array(b).fill(0);for(d=0;d<A;d++)for(s=0;s<b;s++)S[d][s]=t[d][s];for(d=0;d<b;d++){for(N[d]=u,f=0,l=d+1,s=d;s<A;s++)f+=Math.pow(S[s][d],2);if(f<n)u=0;else for(m=(p=S[d][d])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[d][d]=p-u,s=l;s<b;s++){for(f=0,a=d;a<A;a++)f+=S[a][d]*S[a][s];for(p=f/m,a=d;a<A;a++)S[a][s]=S[a][s]+p*S[a][d]}for(x[d]=u,f=0,s=l;s<b;s++)f+=Math.pow(S[d][s],2);if(f<n)u=0;else{for(m=(p=S[d][d+1])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[d][d+1]=p-u,s=l;s<b;s++)N[s]=S[d][s]/m;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=S[s][a]*S[d][a];for(a=l;a<b;a++)S[s][a]=S[s][a]+f*N[a]}}g<(v=Math.abs(x[d])+Math.abs(N[d]))&&(g=v)}if(r)for(d=b-1;0<=d;d--){if(u!==0){for(m=S[d][d+1]*u,s=l;s<b;s++)k[s][d]=S[d][s]/m;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=S[d][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][d]}}for(s=l;s<b;s++)k[d][s]=0,k[s][d]=0;k[d][d]=1,u=N[d],l=d}if(e){if(e==="f")for(d=b;d<A;d++){for(s=b;s<A;s++)S[d][s]=0;S[d][d]=1}for(d=b-1;0<=d;d--){for(l=d+1,u=x[d],s=l;s<T;s++)S[d][s]=0;if(u!==0){for(m=S[d][d]*u,s=l;s<T;s++){for(f=0,a=l;a<A;a++)f+=S[a][d]*S[a][s];for(p=f/m,a=d;a<A;a++)S[a][s]=S[a][s]+p*S[a][d]}for(s=d;s<A;s++)S[s][d]=S[s][d]/u}else for(s=d;s<A;s++)S[s][d]=0;S[d][d]=S[d][d]+1}}for(o*=g,a=b-1;0<=a;a--)for(var L=0;L<50;L++){for(O=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){O=!0;break}if(Math.abs(x[l-1])<=o)break}if(!O){for(h=0,c=l-(f=1),d=l;d<a+1&&(p=f*N[d],N[d]=h*N[d],!(Math.abs(p)<=o));d++)if(u=x[d],x[d]=Math.sqrt(p*p+u*u),h=u/(m=x[d]),f=-p/m,e)for(s=0;s<A;s++)v=S[s][c],y=S[s][d],S[s][c]=v*h+y*f,S[s][d]=-v*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=(((v=x[a-1])-y)*(v+y)+((u=N[a-1])-(m=N[a]))*(u+m))/(2*m*v),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+m*(v/(p<0?p-u:p+u)-m))/g,d=l+(f=h=1);d<a+1;d++){if(u=N[d],v=x[d],m=f*u,u*=h,y=Math.sqrt(p*p+m*m),p=g*(h=p/(N[d-1]=y))+u*(f=m/y),u=-g*f+u*h,m=v*f,v*=h,r)for(s=0;s<b;s++)g=k[s][d-1],y=k[s][d],k[s][d-1]=g*h+y*f,k[s][d]=-g*f+y*h;if(y=Math.sqrt(p*p+m*m),p=(h=p/(x[d-1]=y))*u+(f=m/y)*v,g=-f*u+h*v,e)for(s=0;s<A;s++)v=S[s][d-1],y=S[s][d],S[s][d-1]=v*h+y*f,S[s][d]=-v*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(d=0;d<b;d++)x[d]<o&&(x[d]=0);return{u:S,q:x,v:k}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});import{FileLoader as O1,Loader as I1}from"three";function Mc(i){return Array.isArray(i)?i:[i]}var Zd=typeof global=="object"&&global&&global.Object===Object&&global,kn=Zd;var ef=typeof self=="object"&&self&&self.Object===Object&&self,tf=kn||ef||Function("return this")(),Ze=tf;var rf=Ze.Symbol,Nt=rf;var Pc=Object.prototype,of=Pc.hasOwnProperty,nf=Pc.toString,Fi=Nt?Nt.toStringTag:void 0;function sf(i){var t=of.call(i,Fi),e=i[Fi];try{i[Fi]=void 0;var r=!0}catch{}var o=nf.call(i);return r&&(t?i[Fi]=e:delete i[Fi]),o}var Oc=sf;var af=Object.prototype,lf=af.toString;function cf(i){return lf.call(i)}var Ic=cf;var hf="[object Null]",pf="[object Undefined]",Ac=Nt?Nt.toStringTag:void 0;function uf(i){return i==null?i===void 0?pf:hf:Ac&&Ac in Object(i)?Oc(i):Ic(i)}var Ft=uf;function mf(i){return i!=null&&typeof i=="object"}var bt=mf;var df="[object Symbol]";function ff(i){return typeof i=="symbol"||bt(i)&&Ft(i)==df}var Io=ff;function yf(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var Hn=yf;var gf=Array.isArray,et=gf;var xf=1/0,Dc=Nt?Nt.prototype:void 0,Bc=Dc?Dc.toString:void 0;function Ec(i){if(typeof i=="string")return i;if(et(i))return Hn(i,Ec)+"";if(Io(i))return Bc?Bc.call(i):"";var t=i+"";return t=="0"&&1/i==-xf?"-0":t}var _c=Ec;function bf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var vt=bf;function vf(i){return i}var qn=vf;var Sf="[object AsyncFunction]",wf="[object Function]",Lf="[object GeneratorFunction]",Cf="[object Proxy]";function Tf(i){if(!vt(i))return!1;var t=Ft(i);return t==wf||t==Lf||t==Sf||t==Cf}var Ao=Tf;var Nf=Ze["__core-js_shared__"],Wn=Nf;var Gc=function(){var i=/[^.]+$/.exec(Wn&&Wn.keys&&Wn.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Mf(i){return!!Gc&&Gc in i}var zc=Mf;var Pf=Function.prototype,Of=Pf.toString;function If(i){if(i!=null){try{return Of.call(i)}catch{}try{return i+""}catch{}}return""}var Pr=If;var Af=/[\\^$.*+?()[\]{}|]/g,Df=/^\[object .+?Constructor\]$/,Bf=Function.prototype,Ef=Object.prototype,_f=Bf.toString,Gf=Ef.hasOwnProperty,zf=RegExp("^"+_f.call(Gf).replace(Af,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Rf(i){if(!vt(i)||zc(i))return!1;var t=Ao(i)?zf:Df;return t.test(Pr(i))}var Rc=Rf;function Ff(i,t){return i==null?void 0:i[t]}var Fc=Ff;function Vf(i,t){var e=Fc(i,t);return Rc(e)?e:void 0}var Dt=Vf;var jf=Dt(Ze,"WeakMap"),$n=jf;var Vc=Object.create,Uf=function(){function i(){}return function(t){if(!vt(t))return{};if(Vc)return Vc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),jc=Uf;function kf(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Uc=kf;function Hf(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Jn=Hf;var qf=800,Wf=16,$f=Date.now;function Jf(i){var t=0,e=0;return function(){var r=$f(),o=Wf-(r-e);if(e=r,o>0){if(++t>=qf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var kc=Jf;function Yf(i){return function(){return i}}var Hc=Yf;var Kf=function(){try{var i=Dt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Do=Kf;var Xf=Do?function(i,t){return Do(i,"toString",{configurable:!0,enumerable:!1,value:Hc(t),writable:!0})}:qn,qc=Xf;var Qf=kc(qc),Yn=Qf;function Zf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Wc=Zf;var ey=9007199254740991,ty=/^(?:0|[1-9]\d*)$/;function ry(i,t){var e=typeof i;return t=t==null?ey:t,!!t&&(e=="number"||e!="symbol"&&ty.test(i))&&i>-1&&i%1==0&&i<t}var Kn=ry;function oy(i,t,e){t=="__proto__"&&Do?Do(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Bo=oy;function iy(i,t){return i===t||i!==i&&t!==t}var Ur=iy;var ny=Object.prototype,sy=ny.hasOwnProperty;function ay(i,t,e){var r=i[t];(!(sy.call(i,t)&&Ur(r,e))||e===void 0&&!(t in i))&&Bo(i,t,e)}var Xn=ay;function ly(i,t,e,r){var o=!e;e||(e={});for(var n=-1,s=t.length;++n<s;){var a=t[n],l=r?r(e[a],i[a],a,e,i):void 0;l===void 0&&(l=i[a]),o?Bo(e,a,l):Xn(e,a,l)}return e}var qt=ly;var $c=Math.max;function cy(i,t,e){return t=$c(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=$c(r.length-t,0),s=Array(n);++o<n;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Uc(i,this,a)}}var Qn=cy;function hy(i,t){return Yn(Qn(i,t,qn),i+"")}var Jc=hy;var py=9007199254740991;function uy(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=py}var Zn=uy;function my(i){return i!=null&&Zn(i.length)&&!Ao(i)}var kr=my;function dy(i,t,e){if(!vt(e))return!1;var r=typeof t;return(r=="number"?kr(e)&&Kn(t,e.length):r=="string"&&t in e)?Ur(e[t],i):!1}var Yc=dy;function fy(i){return Jc(function(t,e){var r=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=i.length>3&&typeof n=="function"?(o--,n):void 0,s&&Yc(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),t=Object(t);++r<o;){var a=e[r];a&&i(t,a,r,n)}return t})}var Kc=fy;var yy=Object.prototype;function gy(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||yy;return i===e}var Eo=gy;function xy(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Xc=xy;var by="[object Arguments]";function vy(i){return bt(i)&&Ft(i)==by}var Fa=vy;var Qc=Object.prototype,Sy=Qc.hasOwnProperty,wy=Qc.propertyIsEnumerable,Ly=Fa(function(){return arguments}())?Fa:function(i){return bt(i)&&Sy.call(i,"callee")&&!wy.call(i,"callee")},uo=Ly;function Cy(){return!1}var Zc=Cy;var rh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eh=rh&&typeof module=="object"&&module&&!module.nodeType&&module,Ty=eh&&eh.exports===rh,th=Ty?Ze.Buffer:void 0,Ny=th?th.isBuffer:void 0,My=Ny||Zc,_o=My;var Py="[object Arguments]",Oy="[object Array]",Iy="[object Boolean]",Ay="[object Date]",Dy="[object Error]",By="[object Function]",Ey="[object Map]",_y="[object Number]",Gy="[object Object]",zy="[object RegExp]",Ry="[object Set]",Fy="[object String]",Vy="[object WeakMap]",jy="[object ArrayBuffer]",Uy="[object DataView]",ky="[object Float32Array]",Hy="[object Float64Array]",qy="[object Int8Array]",Wy="[object Int16Array]",$y="[object Int32Array]",Jy="[object Uint8Array]",Yy="[object Uint8ClampedArray]",Ky="[object Uint16Array]",Xy="[object Uint32Array]",Ue={};Ue[ky]=Ue[Hy]=Ue[qy]=Ue[Wy]=Ue[$y]=Ue[Jy]=Ue[Yy]=Ue[Ky]=Ue[Xy]=!0;Ue[Py]=Ue[Oy]=Ue[jy]=Ue[Iy]=Ue[Uy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=Ue[Gy]=Ue[zy]=Ue[Ry]=Ue[Fy]=Ue[Vy]=!1;function Qy(i){return bt(i)&&Zn(i.length)&&!!Ue[Ft(i)]}var oh=Qy;function Zy(i){return function(t){return i(t)}}var Go=Zy;var ih=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vi=ih&&typeof module=="object"&&module&&!module.nodeType&&module,eg=Vi&&Vi.exports===ih,Va=eg&&kn.process,tg=function(){try{var i=Vi&&Vi.require&&Vi.require("util").types;return i||Va&&Va.binding&&Va.binding("util")}catch{}}(),Or=tg;var nh=Or&&Or.isTypedArray,rg=nh?Go(nh):oh,es=rg;var og=Object.prototype,ig=og.hasOwnProperty;function ng(i,t){var e=et(i),r=!e&&uo(i),o=!e&&!r&&_o(i),n=!e&&!r&&!o&&es(i),s=e||r||o||n,a=s?Xc(i.length,String):[],l=a.length;for(var c in i)(t||ig.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Kn(c,l)))&&a.push(c);return a}var ts=ng;function sg(i,t){return function(e){return i(t(e))}}var rs=sg;var ag=rs(Object.keys,Object),sh=ag;var lg=Object.prototype,cg=lg.hasOwnProperty;function hg(i){if(!Eo(i))return sh(i);var t=[];for(var e in Object(i))cg.call(i,e)&&e!="constructor"&&t.push(e);return t}var ah=hg;function pg(i){return kr(i)?ts(i):ah(i)}var zo=pg;function ug(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var lh=ug;var mg=Object.prototype,dg=mg.hasOwnProperty;function fg(i){if(!vt(i))return lh(i);var t=Eo(i),e=[];for(var r in i)r=="constructor"&&(t||!dg.call(i,r))||e.push(r);return e}var ch=fg;function yg(i){return kr(i)?ts(i,!0):ch(i)}var cr=yg;var gg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xg=/^\w*$/;function bg(i,t){if(et(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Io(i)?!0:xg.test(i)||!gg.test(i)||t!=null&&i in Object(t)}var hh=bg;var vg=Dt(Object,"create"),Ir=vg;function Sg(){this.__data__=Ir?Ir(null):{},this.size=0}var ph=Sg;function wg(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var uh=wg;var Lg="__lodash_hash_undefined__",Cg=Object.prototype,Tg=Cg.hasOwnProperty;function Ng(i){var t=this.__data__;if(Ir){var e=t[i];return e===Lg?void 0:e}return Tg.call(t,i)?t[i]:void 0}var mh=Ng;var Mg=Object.prototype,Pg=Mg.hasOwnProperty;function Og(i){var t=this.__data__;return Ir?t[i]!==void 0:Pg.call(t,i)}var dh=Og;var Ig="__lodash_hash_undefined__";function Ag(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Ir&&t===void 0?Ig:t,this}var fh=Ag;function Ro(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Ro.prototype.clear=ph;Ro.prototype.delete=uh;Ro.prototype.get=mh;Ro.prototype.has=dh;Ro.prototype.set=fh;var ja=Ro;function Dg(){this.__data__=[],this.size=0}var yh=Dg;function Bg(i,t){for(var e=i.length;e--;)if(Ur(i[e][0],t))return e;return-1}var Hr=Bg;var Eg=Array.prototype,_g=Eg.splice;function Gg(i){var t=this.__data__,e=Hr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():_g.call(t,e,1),--this.size,!0}var gh=Gg;function zg(i){var t=this.__data__,e=Hr(t,i);return e<0?void 0:t[e][1]}var xh=zg;function Rg(i){return Hr(this.__data__,i)>-1}var bh=Rg;function Fg(i,t){var e=this.__data__,r=Hr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var vh=Fg;function Fo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Fo.prototype.clear=yh;Fo.prototype.delete=gh;Fo.prototype.get=xh;Fo.prototype.has=bh;Fo.prototype.set=vh;var qr=Fo;var Vg=Dt(Ze,"Map"),Wr=Vg;function jg(){this.size=0,this.__data__={hash:new ja,map:new(Wr||qr),string:new ja}}var Sh=jg;function Ug(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var wh=Ug;function kg(i,t){var e=i.__data__;return wh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var $r=kg;function Hg(i){var t=$r(this,i).delete(i);return this.size-=t?1:0,t}var Lh=Hg;function qg(i){return $r(this,i).get(i)}var Ch=qg;function Wg(i){return $r(this,i).has(i)}var Th=Wg;function $g(i,t){var e=$r(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Nh=$g;function Vo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Vo.prototype.clear=Sh;Vo.prototype.delete=Lh;Vo.prototype.get=Ch;Vo.prototype.has=Th;Vo.prototype.set=Nh;var ji=Vo;var Jg="Expected a function";function Ua(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Jg);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var s=i.apply(this,r);return e.cache=n.set(o,s)||n,s};return e.cache=new(Ua.Cache||ji),e}Ua.Cache=ji;var Mh=Ua;var Yg=500;function Kg(i){var t=Mh(i,function(r){return e.size===Yg&&e.clear(),r}),e=t.cache;return t}var Ph=Kg;var Xg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Qg=/\\(\\)?/g,Zg=Ph(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Xg,function(e,r,o,n){t.push(o?n.replace(Qg,"$1"):r||e)}),t}),Oh=Zg;function ex(i){return i==null?"":_c(i)}var Ih=ex;function tx(i,t){return et(i)?i:hh(i,t)?[i]:Oh(Ih(i))}var jo=tx;var rx=1/0;function ox(i){if(typeof i=="string"||Io(i))return i;var t=i+"";return t=="0"&&1/i==-rx?"-0":t}var os=ox;function ix(i,t){t=jo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[os(t[e++])];return e&&e==r?i:void 0}var Ah=ix;function nx(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Uo=nx;var Dh=Nt?Nt.isConcatSpreadable:void 0;function sx(i){return et(i)||uo(i)||!!(Dh&&i&&i[Dh])}var Bh=sx;function Eh(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Bh),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Eh(a,t-1,e,r,o):Uo(o,a):r||(o[o.length]=a)}return o}var _h=Eh;function ax(i){var t=i==null?0:i.length;return t?_h(i,1):[]}var Gh=ax;function lx(i){return Yn(Qn(i,void 0,Gh),i+"")}var zh=lx;var cx=rs(Object.getPrototypeOf,Object),ko=cx;var hx="[object Object]",px=Function.prototype,ux=Object.prototype,Rh=px.toString,mx=ux.hasOwnProperty,dx=Rh.call(Object);function fx(i){if(!bt(i)||Ft(i)!=hx)return!1;var t=ko(i);if(t===null)return!0;var e=mx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Rh.call(e)==dx}var is=fx;function yx(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Fh=yx;function gx(){this.__data__=new qr,this.size=0}var Vh=gx;function xx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var jh=xx;function bx(i){return this.__data__.get(i)}var Uh=bx;function vx(i){return this.__data__.has(i)}var kh=vx;var Sx=200;function wx(i,t){var e=this.__data__;if(e instanceof qr){var r=e.__data__;if(!Wr||r.length<Sx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new ji(r)}return e.set(i,t),this.size=e.size,this}var Hh=wx;function Ho(i){var t=this.__data__=new qr(i);this.size=t.size}Ho.prototype.clear=Vh;Ho.prototype.delete=jh;Ho.prototype.get=Uh;Ho.prototype.has=kh;Ho.prototype.set=Hh;var ns=Ho;function Lx(i,t){return i&&qt(t,zo(t),i)}var qh=Lx;function Cx(i,t){return i&&qt(t,cr(t),i)}var Wh=Cx;var Kh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$h=Kh&&typeof module=="object"&&module&&!module.nodeType&&module,Tx=$h&&$h.exports===Kh,Jh=Tx?Ze.Buffer:void 0,Yh=Jh?Jh.allocUnsafe:void 0;function Nx(i,t){if(t)return i.slice();var e=i.length,r=Yh?Yh(e):new i.constructor(e);return i.copy(r),r}var ss=Nx;function Mx(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var s=i[e];t(s,e,i)&&(n[o++]=s)}return n}var Xh=Mx;function Px(){return[]}var as=Px;var Ox=Object.prototype,Ix=Ox.propertyIsEnumerable,Qh=Object.getOwnPropertySymbols,Ax=Qh?function(i){return i==null?[]:(i=Object(i),Xh(Qh(i),function(t){return Ix.call(i,t)}))}:as,qo=Ax;function Dx(i,t){return qt(i,qo(i),t)}var Zh=Dx;var Bx=Object.getOwnPropertySymbols,Ex=Bx?function(i){for(var t=[];i;)Uo(t,qo(i)),i=ko(i);return t}:as,ls=Ex;function _x(i,t){return qt(i,ls(i),t)}var ep=_x;function Gx(i,t,e){var r=t(i);return et(i)?r:Uo(r,e(i))}var cs=Gx;function zx(i){return cs(i,zo,qo)}var tp=zx;function Rx(i){return cs(i,cr,ls)}var hs=Rx;var Fx=Dt(Ze,"DataView"),ps=Fx;var Vx=Dt(Ze,"Promise"),us=Vx;var jx=Dt(Ze,"Set"),ms=jx;var rp="[object Map]",Ux="[object Object]",op="[object Promise]",ip="[object Set]",np="[object WeakMap]",sp="[object DataView]",kx=Pr(ps),Hx=Pr(Wr),qx=Pr(us),Wx=Pr(ms),$x=Pr($n),mo=Ft;(ps&&mo(new ps(new ArrayBuffer(1)))!=sp||Wr&&mo(new Wr)!=rp||us&&mo(us.resolve())!=op||ms&&mo(new ms)!=ip||$n&&mo(new $n)!=np)&&(mo=function(i){var t=Ft(i),e=t==Ux?i.constructor:void 0,r=e?Pr(e):"";if(r)switch(r){case kx:return sp;case Hx:return rp;case qx:return op;case Wx:return ip;case $x:return np}return t});var Wo=mo;var Jx=Object.prototype,Yx=Jx.hasOwnProperty;function Kx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Yx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ap=Kx;var Xx=Ze.Uint8Array,ka=Xx;function Qx(i){var t=new i.constructor(i.byteLength);return new ka(t).set(new ka(i)),t}var $o=Qx;function Zx(i,t){var e=t?$o(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var lp=Zx;var e0=/\w*$/;function t0(i){var t=new i.constructor(i.source,e0.exec(i));return t.lastIndex=i.lastIndex,t}var cp=t0;var hp=Nt?Nt.prototype:void 0,pp=hp?hp.valueOf:void 0;function r0(i){return pp?Object(pp.call(i)):{}}var up=r0;function o0(i,t){var e=t?$o(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ds=o0;var i0="[object Boolean]",n0="[object Date]",s0="[object Map]",a0="[object Number]",l0="[object RegExp]",c0="[object Set]",h0="[object String]",p0="[object Symbol]",u0="[object ArrayBuffer]",m0="[object DataView]",d0="[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]";function L0(i,t,e){var r=i.constructor;switch(t){case u0:return $o(i);case i0:case n0:return new r(+i);case m0:return lp(i,e);case d0:case f0:case y0:case g0:case x0:case b0:case v0:case S0:case w0:return ds(i,e);case s0:return new r;case a0:case h0:return new r(i);case l0:return cp(i);case c0:return new r;case p0:return up(i)}}var mp=L0;function C0(i){return typeof i.constructor=="function"&&!Eo(i)?jc(ko(i)):{}}var fs=C0;var T0="[object Map]";function N0(i){return bt(i)&&Wo(i)==T0}var dp=N0;var fp=Or&&Or.isMap,M0=fp?Go(fp):dp,yp=M0;var P0="[object Set]";function O0(i){return bt(i)&&Wo(i)==P0}var gp=O0;var xp=Or&&Or.isSet,I0=xp?Go(xp):gp,bp=I0;var A0=1,D0=2,B0=4,vp="[object Arguments]",E0="[object Array]",_0="[object Boolean]",G0="[object Date]",z0="[object Error]",Sp="[object Function]",R0="[object GeneratorFunction]",F0="[object Map]",V0="[object Number]",wp="[object Object]",j0="[object RegExp]",U0="[object Set]",k0="[object String]",H0="[object Symbol]",q0="[object WeakMap]",W0="[object ArrayBuffer]",$0="[object DataView]",J0="[object Float32Array]",Y0="[object Float64Array]",K0="[object Int8Array]",X0="[object Int16Array]",Q0="[object Int32Array]",Z0="[object Uint8Array]",eb="[object Uint8ClampedArray]",tb="[object Uint16Array]",rb="[object Uint32Array]",Re={};Re[vp]=Re[E0]=Re[W0]=Re[$0]=Re[_0]=Re[G0]=Re[J0]=Re[Y0]=Re[K0]=Re[X0]=Re[Q0]=Re[F0]=Re[V0]=Re[wp]=Re[j0]=Re[U0]=Re[k0]=Re[H0]=Re[Z0]=Re[eb]=Re[tb]=Re[rb]=!0;Re[z0]=Re[Sp]=Re[q0]=!1;function ys(i,t,e,r,o,n){var s,a=t&A0,l=t&D0,c=t&B0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!vt(i))return i;var h=et(i);if(h){if(s=ap(i),!a)return Jn(i,s)}else{var p=Wo(i),u=p==Sp||p==R0;if(_o(i))return ss(i,a);if(p==wp||p==vp||u&&!o){if(s=l||u?{}:fs(i),!a)return l?ep(i,Wh(s,i)):Zh(i,qh(s,i))}else{if(!Re[p])return o?i:{};s=mp(i,p,a)}}n||(n=new ns);var m=n.get(i);if(m)return m;n.set(i,s),bp(i)?i.forEach(function(v){s.add(ys(v,t,e,v,i,n))}):yp(i)&&i.forEach(function(v,y){s.set(y,ys(v,t,e,y,i,n))});var f=c?l?hs:tp:l?cr:zo,g=h?void 0:f(i);return Wc(g||i,function(v,y){g&&(y=v,v=i[y]),Xn(s,y,ys(v,t,e,y,i,n))}),s}var gs=ys;var ob=1,ib=4;function nb(i){return gs(i,ob|ib)}var Ui=nb;function sb(i){return function(t,e,r){for(var o=-1,n=Object(t),s=r(t),a=s.length;a--;){var l=s[i?a:++o];if(e(n[l],l,n)===!1)break}return t}}var Lp=sb;var ab=Lp(),Cp=ab;function lb(i,t,e){(e!==void 0&&!Ur(i[t],e)||e===void 0&&!(t in i))&&Bo(i,t,e)}var ki=lb;function cb(i){return bt(i)&&kr(i)}var Tp=cb;function hb(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var Hi=hb;function pb(i){return qt(i,cr(i))}var Np=pb;function ub(i,t,e,r,o,n,s){var a=Hi(i,e),l=Hi(t,e),c=s.get(l);if(c){ki(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=et(l),m=!u&&_o(l),f=!u&&!m&&es(l);h=l,u||m||f?et(a)?h=a:Tp(a)?h=Jn(a):m?(p=!1,h=ss(l,!0)):f?(p=!1,h=ds(l,!0)):h=[]:is(l)||uo(l)?(h=a,uo(a)?h=Np(a):(!vt(a)||Ao(a))&&(h=fs(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),ki(i,e,h)}var Mp=ub;function Pp(i,t,e,r,o){i!==t&&Cp(t,function(n,s){if(o||(o=new ns),vt(n))Mp(i,t,s,e,Pp,r,o);else{var a=r?r(Hi(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),ki(i,s,a)}},cr)}var Op=Pp;function mb(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Ip=mb;function db(i,t){return t.length<2?i:Ah(i,Fh(t,0,-1))}var Ap=db;var fb=Kc(function(i,t,e){Op(i,t,e)}),fo=fb;function yb(i,t){return t=jo(t,i),i=Ap(i,t),i==null||delete i[os(Ip(t))]}var Dp=yb;function gb(i){return is(i)?void 0:i}var Bp=gb;var xb=1,bb=2,vb=4,Sb=zh(function(i,t){var e={};if(i==null)return e;var r=!1;t=Hn(t,function(n){return n=jo(n,i),r||(r=n.length>1),n}),qt(i,hs(i),e),r&&(e=gs(e,xb|bb|vb,Bp));for(var o=t.length;o--;)Dp(e,t[o]);return e}),Jo=Sb;var Yo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Yo||(Yo={}));var yo;(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(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=r})(yo||(yo={}));var Ep;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n]}e.lerp=t})(Ep||(Ep={}));var Ko;(o=>{function i(n,s){return n[0]===s[0]&&n[1]===s[1]&&n[2]===s[2]}o.isEqual=i;function t(n,s){return[n[0]+s[0],n[1]+s[1],n[2]+s[2]]}o.add=t;function e(n,s){return[n[0]-s[0],n[1]-s[1],n[2]-s[2]]}o.sub=e;function r(n,s,a){return[n[0]+(s[0]-n[0])*a,n[1]+(s[1]-n[1])*a,n[2]+(s[2]-n[2])*a]}o.lerp=r})(Ko||(Ko={}));var _p;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(_p||(_p={}));var Jr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,s){for(let a=0;a<16;a++)if(n[a]!==s[a])return!1;return!0}o.isEqual=t;function e(n){return n!=null?n:o.identity}o.simplify=e;function r(n,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=n[3]*s[l]+n[7]*s[l+1]+n[11]*s[l+2]+n[15];a[l]=(n[0]*s[l]+n[4]*s[l+1]+n[8]*s[l+2]+n[12])/h,a[l+1]=(n[1]*s[l]+n[5]*s[l+1]+n[9]*s[l+2]+n[13])/h,a[l+2]=(n[2]*s[l]+n[6]*s[l+1]+n[10]*s[l+2]+n[14])/h}return a}o.applyMatrix4=r})(Jr||(Jr={}));var Vt;(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 n(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=n;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})(Vt||(Vt={}));var hr;(s=>{s.white=H(I({},Vt.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(I({},Vt.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 Vt.equals(a,l)&&a.a===l.a}s.equals=o;function n(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=n})(hr||(hr={}));var xs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(xs||(xs={}));var Gp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Gp||(Gp={}));var zp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(zp||(zp={}));var bs;(t=>{function i(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=i})(bs||(bs={}));var Wt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n=H(I({},r),{[t]:e});return Object.setPrototypeOf(n,Wt.prototype),n}}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:n,data:s}=t,a=H(I({},e),{[n]:s});return Object.setPrototypeOf(a,Wt.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 n=I({},e);return Object.setPrototypeOf(n,Wt.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function qi(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&qi(r)}return Object.freeze(i)}function Rp(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var vs=class extends Error{};function pr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let s=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(s)}return r}function Fp(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Vp(){return typeof process<"u"}function jp(i,t){for(let e of i)t(e.id,e.data),jp(e.children,t)}function Up(i,t){t(i.id,i.data);for(let e of i.children)Up(e,t)}var $t=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,$t.prototype)}deepFreeze(){let e=0;for(;e<this.length;)qi(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&&Up(o,r)}}traverse(e){jp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),s=this.childrenArray(n),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(I({},l),{data:r}),this.modifyArrayBy(n,s)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let a=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(h=>h.id===l);if(c<0)throw new Error;n=[...n],n[c]=H(I({},n[c]),{children:a})}Object.setPrototypeOf(n,$t.prototype);let s=n;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:n,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:n,data:s,children:a};return c=[...c,h],c.sort((u,m)=>u.fi-m.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),s=n.findIndex(c=>c.id===r);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:H(I({type:7},a),{parent:o})}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===n)throw new vs("cyclic tree");m=this.parent(m)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(m=>m.id===n);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let u=h.fi;return h=H(I({},h),{fi:o}),l=[...l,h],l.sort((m,f)=>m.fi-f.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(I(I({},o),n))}r.sort((o,n)=>Rp(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),s=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return H(I({},s),{sortKey:o})}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return pr(0,o,o);{let s=n[0].fi;return pr(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=n.find(l=>l.fi>s.fi);if(a===void 0){let l=n[n.length-1].fi;return pr(l,l+o,o)}else return pr(s.fi,a.fi,o)}}};var Ss;(t=>{function i(e,r){if(Array.isArray(e)){let o=r.props,n={},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");n[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},s=I({},e),a=!1;if(o)for(let l of Object.keys(o)){n[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:n}}:null}}t.runOp=i})(Ss||(Ss={}));var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)qi(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 n=this,s=n.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]=H(I({},a),{data:r}),this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return Vp()||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:n}=e,s=this,a={fi:r,id:o,data:n};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,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let s=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:I({type:4},s)}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(h=>h.id===o);if(s===-1)return null;let a=n[s].fi,l=H(I({},n[s]),{fi:r});return n[s]=l,n.sort((h,p)=>h.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),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 pr(0,r,r);{let n=o[0].fi;return pr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>n.fi);if(s===void 0){let a=o[o.length-1].fi;return pr(a,a+r,r)}else return pr(n.fi,s.fi,r)}}};var kp=Symbol(),Ls=Symbol(),Xo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof ws);){let n=r._path,s=r._current;if(n!==""&&o.splice(0,0,n),r=r._parent,r===null)return;r.update(n,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ls];r&&r(),delete this._children[t]}}}},qa=class extends Xo{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(I({},this._current),{[t]:e})}runOp(t){this.reportOp(t,Ss.runOp(this._current,t))}},Wa=class extends Xo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(I({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Wt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Hp={get(i,t){if(t===Ls)return()=>{i._parent=null};if(t===kp)return i._current;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],s=Cs(i,t,n);return s!==n?(r===void 0&&(r={},i._children=r),r[t]=s,s):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},wb=H(I({},Hp),{set(i,t,e){var o;let r={type:0,props:{[t]:(o=Ya(e))!=null?o:e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}}),Lb=H(I({},Hp),{set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}}),Qo=class extends Xo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ls]=()=>{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 n=(a=e.get(t))==null?void 0:a.data,s=Cs(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],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 Xo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ls]=()=>{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(I({},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 n=(a=e.get(t))==null?void 0:a.data,s=Cs(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Ha(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ts.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push(H(I({},t),{path:e}))}var ws=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){Ha(this.ts,e,t),Ha(this.actual,r,t),Ha(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Cs(i,t,e){return e instanceof $t?new Qo(i,t,e):e instanceof Je?new Zo(i,t,e):e instanceof Wt?new Proxy(new Wa(i,t,e),Lb):e!==null&&typeof e=="object"?Fp(e)?e:new Proxy(new qa(i,t,e),wb):e}function $a(i){let t=new ws(i);return[Cs(t,"",i),t]}function Ja(i,t){let[e,r]=$a(i);return t(e),r.result()}function Ya(i){return i instanceof Qo||i instanceof Zo?i._current:i!==null&&typeof i=="object"?i[kp]:i}var Ts;(r=>{function i(o,n){if(n.length===o.length)for(var s=0;s<o.length;){if(o[s]!==n[s])return!1;s+=1}else return!1;return!0}r.equal=i;function t(o,n,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l=I({},n);return Object.keys(a).forEach(c=>{delete l[c]}),l}else return n}r.removeOverridden=t;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof $t||o instanceof Qo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Je||o instanceof Zo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if(typeof n[s]=="number"&&Array.isArray(o))return e(o[n[s]],n,s+1);if(typeof n[s]=="string"&&typeof o=="object")return e(o[n[s]],n,s+1)}r.zoom=e})(Ts||(Ts={}));var Ns=class{},Wi=class extends Ns{constructor(e){super();this.id=e}},$i=class extends Ns{constructor(e){super();this.data=e}};var Xa;try{Xa=new TextDecoder}catch{}var ee,Kr,w=0;var Qp=[],Qa=Qp,Za=0,Bt={},Oe,Yr,Jt=0,ur=0,jt,Ar,Mt=[],Ae,qp={useRecords:!1,mapsAsObjects:!0},Ji=class{},tl=new Ji;tl.name="MessagePack 0xC1";var ei=!1,mr=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 ou(()=>(Ps(),this?this.unpack(t,e):mr.prototype.unpack.call(qp,t,e)));Kr=e>-1?e:t.length,w=0,Za=0,ur=0,Yr=null,Qa=Qp,jt=null,ee=t;try{Ae=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 mr){if(Bt=this,this.structures)return Oe=this.structures,Ms();(!Oe||Oe.length>0)&&(Oe=[])}else Bt=qp,(!Oe||Oe.length>0)&&(Oe=[]);return Ms()}unpackMultiple(t,e){let r,o=0;try{ei=!0;let n=t.length,s=this?this.unpack(t,n):As.unpack(t,n);if(e){for(e(s);w<n;)if(o=w,e(Ms())===!1)return}else{for(r=[s];w<n;)o=w,r.push(Ms());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{ei=!1,Ps()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ms(){try{if(!Bt.trusted&&!ei){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let i=Ye();if(w==Kr)Oe.restoreStructures&&Wp(),Oe=null,ee=null,Ar&&(Ar=null);else if(w>Kr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ei)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Oe.restoreStructures&&Wp(),Ps(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Wp(){for(let i in Oe.restoreStructures)Oe[i]=Oe.restoreStructures[i];Oe.restoreStructures=null}function Ye(){let i=ee[w++];if(i<160)if(i<128){if(i<64)return i;{let t=Oe[i&63]||Bt.getStructures&&Zp()[i&63];return t?(t.read||(t.read=rl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Bt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[tu()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}else if(i<192){let t=i-160;if(ur>=w)return Yr.slice(w-Jt,(w+=t)-Jt);if(ur==0&&Kr<140){let e=t<16?ol(t):eu(t);if(e!=null)return e}return el(t)}else{let t;switch(i){case 192:return null;case 193:return jt?(t=Ye(),t>0?jt[1].slice(jt.position1,jt.position1+=t):jt[0].slice(jt.position0,jt.position0-=t)):tl;case 194:return!1;case 195:return!0;case 196:return Ka(ee[w++]);case 197:return t=Ae.getUint16(w),w+=2,Ka(t);case 198:return t=Ae.getUint32(w),w+=4,Ka(t);case 199:return go(ee[w++]);case 200:return t=Ae.getUint16(w),w+=2,go(t);case 201:return t=Ae.getUint32(w),w+=4,go(t);case 202:if(t=Ae.getFloat32(w),Bt.useFloat32>2){let e=Is[(ee[w]&127)<<1|ee[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=Ae.getFloat64(w),w+=8,t;case 204:return ee[w++];case 205:return t=Ae.getUint16(w),w+=2,t;case 206:return t=Ae.getUint32(w),w+=4,t;case 207:return Bt.int64AsNumber?(t=Ae.getUint32(w)*4294967296,t+=Ae.getUint32(w+4)):t=Ae.getBigUint64(w),w+=8,t;case 208:return Ae.getInt8(w++);case 209:return t=Ae.getInt16(w),w+=2,t;case 210:return t=Ae.getInt32(w),w+=4,t;case 211:return Bt.int64AsNumber?(t=Ae.getInt32(w)*4294967296,t+=Ae.getUint32(w+4)):t=Ae.getBigInt64(w),w+=8,t;case 212:if(t=ee[w++],t==114)return Xp(ee[w++]&63);{let e=Mt[t];if(e)return e.read?(w++,e.read(Ye())):e.noBuffer?(w++,e()):e(ee.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=ee[w],t==114?(w++,Xp(ee[w++]&63,ee[w++])):go(2);case 214:return go(4);case 215:return go(8);case 216:return go(16);case 217:return t=ee[w++],ur>=w?Yr.slice(w-Jt,(w+=t)-Jt):Tb(t);case 218:return t=Ae.getUint16(w),w+=2,ur>=w?Yr.slice(w-Jt,(w+=t)-Jt):Nb(t);case 219:return t=Ae.getUint32(w),w+=4,ur>=w?Yr.slice(w-Jt,(w+=t)-Jt):Mb(t);case 220:return t=Ae.getUint16(w),w+=2,Jp(t);case 221:return t=Ae.getUint32(w),w+=4,Jp(t);case 222:return t=Ae.getUint16(w),w+=2,Yp(t);case 223:return t=Ae.getUint32(w),w+=4,Yp(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var Cb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function rl(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>Cb.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Ye);return i.highByte===0&&(i.read=$p(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Ye()}return r}return e.count=0,i.highByte===0?$p(t,e):e}var $p=(i,t)=>function(){let e=ee[w++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Oe[r]||Zp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=rl(o,i)),o.read()};function Zp(){let i=ou(()=>(ee=null,Bt.getStructures()));return Oe=Bt._mergeStructures(i,Oe)}var el=Os,Tb=Os,Nb=Os,Mb=Os;function Os(i){let t;if(i<16&&(t=ol(i)))return t;if(i>64&&Xa)return Xa.decode(ee.subarray(w,w+=i));let e=w+i,r=[];for(t="";w<e;){let o=ee[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=ee[w++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=ee[w++]&63,s=ee[w++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=ee[w++]&63,s=ee[w++]&63,a=ee[w++]&63,l=(o&7)<<18|n<<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 Jp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}function Yp(i){if(Bt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[tu()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}}var at=String.fromCharCode;function eu(i){let t=w,e=new Array(i);for(let r=0;r<i;r++){let o=ee[w++];if((o&128)>0){w=t;return}e[r]=o}return at.apply(String,e)}function ol(i){if(i<4)if(i<2){if(i===0)return"";{let t=ee[w++];if((t&128)>1){w-=1;return}return at(t)}}else{let t=ee[w++],e=ee[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(i<3)return at(t,e);let r=ee[w++];if((r&128)>0){w-=3;return}return at(t,e,r)}else{let t=ee[w++],e=ee[w++],r=ee[w++],o=ee[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(i<6){if(i===4)return at(t,e,r,o);{let n=ee[w++];if((n&128)>0){w-=5;return}return at(t,e,r,o,n)}}else if(i<8){let n=ee[w++],s=ee[w++];if((n&128)>0||(s&128)>0){w-=6;return}if(i<7)return at(t,e,r,o,n,s);let a=ee[w++];if((a&128)>0){w-=7;return}return at(t,e,r,o,n,s,a)}else{let n=ee[w++],s=ee[w++],a=ee[w++],l=ee[w++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){w-=8;return}if(i<10){if(i===8)return at(t,e,r,o,n,s,a,l);{let c=ee[w++];if((c&128)>0){w-=9;return}return at(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=ee[w++],h=ee[w++];if((c&128)>0||(h&128)>0){w-=10;return}if(i<11)return at(t,e,r,o,n,s,a,l,c,h);let p=ee[w++];if((p&128)>0){w-=11;return}return at(t,e,r,o,n,s,a,l,c,h,p)}else{let c=ee[w++],h=ee[w++],p=ee[w++],u=ee[w++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){w-=12;return}if(i<14){if(i===12)return at(t,e,r,o,n,s,a,l,c,h,p,u);{let m=ee[w++];if((m&128)>0){w-=13;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,m)}}else{let m=ee[w++],f=ee[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(i<15)return at(t,e,r,o,n,s,a,l,c,h,p,u,m,f);let g=ee[w++];if((g&128)>0){w-=15;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,m,f,g)}}}}}function Ka(i){return Bt.copyBuffers?Uint8Array.prototype.slice.call(ee,w,w+=i):ee.subarray(w,w+=i)}function go(i){let t=ee[w++];if(Mt[t])return Mt[t](ee.subarray(w,w+=i));throw new Error("Unknown extension type "+t)}var Kp=new Array(4096);function tu(){let i=ee[w++];if(i>=160&&i<192){if(i=i-160,ur>=w)return Yr.slice(w-Jt,(w+=i)-Jt);if(!(ur==0&&Kr<180))return el(i)}else return w--,Ye();let t=(i<<5^(i>1?Ae.getUint16(w):i>0?ee[w]:0))&4095,e=Kp[t],r=w,o=w+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ae.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=ee[r++],n!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],Kp[t]=e,e.bytes=i;r<o;)n=Ae.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=ee[r++],e.push(n);let a=i<16?ol(i):eu(i);return a!=null?e.string=a:e.string=el(i)}var Xp=(i,t)=>{var e=Ye();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Oe[i];return o&&o.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[i]=o),Oe[i]=e,e.read=rl(e,r),e.read()},ru=typeof self=="object"?self:global;Mt[0]=()=>{};Mt[0].noBuffer=!0;Mt[101]=()=>{let i=Ye();return(ru[i[0]]||Error)(i[1])};Mt[105]=i=>{let t=Ae.getUint32(w-4);Ar||(Ar=new Map);let e=ee[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ar.set(t,o);let n=Ye();return o.used?Object.assign(r,n):(o.target=n,n)};Mt[112]=i=>{let t=Ae.getUint32(w-4),e=Ar.get(t);return e.used=!0,e.target};Mt[115]=()=>new Set(Ye());var il=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Mt[116]=i=>{let t=i[0],e=il[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ru[e](Uint8Array.prototype.slice.call(i,1).buffer)};Mt[120]=()=>{let i=Ye();return new RegExp(i[0],i[1])};Mt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=w;w+=t-4,jt=[Ye(),Ye()],jt.position0=0,jt.position1=0;let r=w;w=e;try{return Ye()}finally{w=r}};Mt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function ou(i){let t=Kr,e=w,r=Za,o=Jt,n=ur,s=Yr,a=Qa,l=Ar,c=jt,h=new Uint8Array(ee.slice(0,Kr)),p=Oe,u=Oe.slice(0,Oe.length),m=Bt,f=ei,g=i();return Kr=t,w=e,Za=r,Jt=o,ur=n,Yr=s,Qa=a,Ar=l,jt=c,ee=h,ei=f,Oe=p,Oe.splice(0,Oe.length,...u),Bt=m,Ae=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Ps(){ee=null,Ar=null,Oe=null}function iu(i){i.unpack?Mt[i.type]=i.unpack:Mt[i.type]=i}var Is=new Array(147);for(let i=0;i<256;i++)Is[i]=+("1e"+Math.floor(45.15-i*.30103));var As=new mr({useRecords:!1}),Pb=As.unpack,Ob=As.unpackMultiple,Ib=As.unpack,Ds={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Ab=new Float32Array(1),sA=new Uint8Array(Ab.buffer,0,4);var Bs;try{Bs=new TextEncoder}catch{}var Es,sl,_s=typeof Buffer<"u",nl=_s?Buffer.allocUnsafeSlow:Uint8Array,lu=_s?Buffer:Uint8Array,nu=_s?4294967296:2144337920,F,Ke,M=0,dr,fr=null,Db=/[\u0080-\uFFFF]/,Yi=Symbol("record-id"),xo=class extends mr{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=lu.prototype.utf8Write?function(d,O,x){return F.utf8Write(d,O,x)}:Bs&&Bs.encodeInto?function(d,O){return Bs.encodeInto(d,F.subarray(O)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=u?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=m>32||f+m>64,v=m+64,y=m+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(d,O){if(F||(F=new nl(8192),Ke=new DataView(F.buffer,0,8192),M=0),dr=F.length-10,dr-M<2048?(F=new nl(F.length),Ke=new DataView(F.buffer,0,F.length),dr=F.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(fr=["",""],F[M++]=214,F[M++]=98,fr.position=M-r,M+=4):fr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>m)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 L=0;L<x;L++){let C=o[L];if(!C)continue;let P,$=o.transitions;for(let Y=0,oe=C.length;Y<oe;Y++){let ae=C[Y];P=$[ae],P||(P=$[ae]=Object.create(null)),$=P}$[Yi]=L+64}l=x}p||(o.nextId=x+64)}n&&(n=!1),s=o||[];try{if(S(d),fr){Ke.setUint32(fr.position+r,M-fr.position-r);let x=fr;fr=null,S(x[0]),S(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>dr&&T(M),h.offset=M;let x=Eb(F.subarray(r,M),a.idsToInsert);return a=null,x}return O&hu?(F.start=r,F.end=M,F):F.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,L=b.length;x<L;x++)b[x][Yi]=0;b=[]}if(n&&h.saveStructures){let x=o.sharedLength||m;o.length>x&&(o=o.slice(0,x));let L=F.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(d)):(l=x,L)}}O&jb&&(M=r)}};let S=d=>{M>dr&&(F=T(M));var O=typeof d,x;if(O==="string"){let L=d.length;if(fr&&L>=8&&L<4096){let $=Db.test(d);fr[$?0:1]+=d,F[M++]=193,S($?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let P=L*3;if(M+P>dr&&(F=T(M+P)),L<64||!c){let $,Y,oe,ae=M+C;for($=0;$<L;$++)Y=d.charCodeAt($),Y<128?F[ae++]=Y:Y<2048?(F[ae++]=Y>>6|192,F[ae++]=Y&63|128):(Y&64512)===55296&&((oe=d.charCodeAt($+1))&64512)===56320?(Y=65536+((Y&1023)<<10)+(oe&1023),$++,F[ae++]=Y>>18|240,F[ae++]=Y>>12&63|128,F[ae++]=Y>>6&63|128,F[ae++]=Y&63|128):(F[ae++]=Y>>12|224,F[ae++]=Y>>6&63|128,F[ae++]=Y&63|128);x=ae-M-C}else x=c(d,M+C,P);x<32?F[M++]=160|x:x<256?(C<2&&F.copyWithin(M+2,M+1,M+1+x),F[M++]=217,F[M++]=x):x<65536?(C<3&&F.copyWithin(M+3,M+2,M+2+x),F[M++]=218,F[M++]=x>>8,F[M++]=x&255):(C<5&&F.copyWithin(M+5,M+3,M+3+x),F[M++]=219,Ke.setUint32(M,x),M+=4),M+=x}else if(O==="number")if(d>>>0===d)d<64?F[M++]=d:d<256?(F[M++]=204,F[M++]=d):d<65536?(F[M++]=205,F[M++]=d>>8,F[M++]=d&255):(F[M++]=206,Ke.setUint32(M,d),M+=4);else if(d>>0===d)d>=-32?F[M++]=256+d:d>=-128?(F[M++]=208,F[M++]=d+256):d>=-32768?(F[M++]=209,Ke.setInt16(M,d),M+=2):(F[M++]=210,Ke.setInt32(M,d),M+=4);else{let L;if((L=this.useFloat32)>0&&d<4294967296&&d>=-2147483648){F[M++]=202,Ke.setFloat32(M,d);let C;if(L<4||(C=d*Is[(F[M]&127)<<1|F[M+1]>>7])>>0===C){M+=4;return}else M--}F[M++]=203,Ke.setFloat64(M,d),M+=8}else if(O==="object")if(!d)F[M++]=192;else{if(a){let C=a.get(d);if(C){if(!C.id){let P=a.idsToInsert||(a.idsToInsert=[]);C.id=P.push(C)}F[M++]=214,F[M++]=112,Ke.setUint32(M,C.id),M+=4;return}else a.set(d,{offset:M-r})}let L=d.constructor;if(L===Object)k(d,!0);else if(L===Array){x=d.length,x<16?F[M++]=144|x:x<65536?(F[M++]=220,F[M++]=x>>8,F[M++]=x&255):(F[M++]=221,Ke.setUint32(M,x),M+=4);for(let C=0;C<x;C++)S(d[C])}else if(L===Map){x=d.size,x<16?F[M++]=128|x:x<65536?(F[M++]=222,F[M++]=x>>8,F[M++]=x&255):(F[M++]=223,Ke.setUint32(M,x),M+=4);for(let[C,P]of d)S(C),S(P)}else{for(let C=0,P=Es.length;C<P;C++){let $=sl[C];if(d instanceof $){let Y=Es[C];if(Y.write){Y.type&&(F[M++]=212,F[M++]=Y.type,F[M++]=0),S(Y.write.call(this,d));return}let oe=F,ae=Ke,ne=M;F=null;let ge;try{ge=Y.pack.call(this,d,j=>(F=oe,oe=null,M+=j,M>dr&&T(M),{target:F,targetView:Ke,position:M-j}),S)}finally{oe&&(F=oe,Ke=ae,M=ne,dr=F.length-10)}ge&&(ge.length+M>dr&&T(ge.length+M),M=Bb(ge,F,M,Y.type));return}}k(d,!d.hasOwnProperty)}}else if(O==="boolean")F[M++]=d?195:194;else if(O==="bigint"){if(d<BigInt(1)<<BigInt(63)&&d>=-(BigInt(1)<<BigInt(63)))F[M++]=211,Ke.setBigInt64(M,d);else if(d<BigInt(1)<<BigInt(64)&&d>0)F[M++]=207,Ke.setBigUint64(M,d);else if(this.largeBigIntToFloat)F[M++]=203,Ke.setFloat64(M,Number(d));else throw new RangeError(d+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(O==="undefined")this.encodeUndefinedAsNil?F[M++]=192:(F[M++]=212,F[M++]=0,F[M++]=0);else if(O==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+O)},k=this.useRecords===!1?this.variableMapSize?d=>{let O=Object.keys(d),x=O.length;x<16?F[M++]=128|x:x<65536?(F[M++]=222,F[M++]=x>>8,F[M++]=x&255):(F[M++]=223,Ke.setUint32(M,x),M+=4);let L;for(let C=0;C<x;C++)S(L=O[C]),S(d[L])}:(d,O)=>{F[M++]=222;let x=M-r;M+=2;let L=0;for(let C in d)(O||d.hasOwnProperty(C))&&(S(C),S(d[C]),L++);F[x+++r]=L>>8,F[x+r]=L&255}:d=>{let O=Object.keys(d),x,L=s.transitions||(s.transitions=Object.create(null)),C=0;for(let $=0,Y=O.length;$<Y;$++){let oe=O[$];x=L[oe],x||(x=L[oe]=Object.create(null),C++),L=x}let P=L[Yi];if(P)P>=96&&g?(F[M++]=((P-=96)&31)+96,F[M++]=P>>5):F[M++]=P;else{P=s.nextId,P||(P=64),P<v&&this.shouldShareStructure&&!this.shouldShareStructure(O)?(P=s.nextOwnId,P<y||(P=v),s.nextOwnId=P+1):(P>=y&&(P=v),s.nextId=P+1);let $=O.highByte=P>=96&&g?P-96>>5:-1;L[Yi]=P,s[P-64]=O,P<v?(O.isShared=!0,s.sharedLength=P-63,n=!0,$>=0?(F[M++]=(P&31)+96,F[M++]=$):F[M++]=P):($>=0?(F[M++]=213,F[M++]=114,F[M++]=(P&31)+96,F[M++]=$):(F[M++]=212,F[M++]=114,F[M++]=P),C&&(A+=N*C),b.length>=f&&(b.shift()[Yi]=0),b.push(L),S(O))}for(let $=0,Y=O.length;$<Y;$++)S(d[O[$]])},T=d=>{let O;if(d>16777216){if(d-r>nu)throw new Error("Packed buffer would be larger than maximum buffer size");O=Math.min(nu,Math.round(Math.max((d-r)*(d>67108864?1.25:2),4194304)/4096)*4096)}else O=(Math.max(d-r<<2,F.length-1)>>12)+1<<12;let x=new nl(O);return Ke=new DataView(x.buffer,0,O),F.copy?F.copy(x,0,r,d):x.set(F.slice(r,d)),M-=r,r=0,dr=x.length-10,F=x}}useBuffer(t){F=t,Ke=new DataView(F.buffer,F.byteOffset,F.byteLength),M=0}};sl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ji];Es=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:s}=t(6);o[s++]=214,o[s++]=255,n.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:s}=t(10);o[s++]=215,o[s++]=255,n.setUint32(s,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:n,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,n.setUint32(s,i.getMilliseconds()*1e6),n.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?su(i,16,t):au(_s?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==lu&&this.structuredClone?su(i,il.indexOf(e.name),t):au(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function su(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:s}=e(4+o);n[s++]=199,n[s++]=o+1}else if(o+1<65536){var{target:n,position:s}=e(5+o);n[s++]=200,n[s++]=o+1>>8,n[s++]=o+1&255}else{var{target:n,position:s,targetView:a}=e(7+o);n[s++]=201,a.setUint32(s,o+1),s+=4}n[s++]=116,n[s++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s)}function au(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function Bb(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function Eb(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,s)=>n.offset>s.offset?1:-1);e=t.pop();){let n=e.offset,s=e.id;i.copyWithin(n+r,n,o),r-=6;let a=n+r;i[a++]=214,i[a++]=105,i[a++]=s>>24,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=s&255,o=n}return i}function bo(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");sl.unshift(i.Class),Es.unshift(i)}iu(i)}var cu=new xo({useRecords:!1}),_b=cu.pack,Gb=cu.pack;var{NEVER:zb,ALWAYS:Rb,DECIMAL_ROUND:Fb,DECIMAL_FIT:Vb}=Ds,hu=512,jb=1024;var pu=new xo({structuredClone:!0});bo({Class:Wt.prototype.constructor,type:1,write(i){return I({},i)},read(i){return Object.setPrototypeOf(i,Wt.prototype),i}});bo({Class:Je.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});bo({Class:$t.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,$t.prototype),i}});bo({Class:Wi.prototype.constructor,type:4,write(i){return i.id},read(i){return new Wi(i)}});bo({Class:$i.prototype.constructor,type:5,write(i){return i.data},read(i){return new $i(i)}});function Ub(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}var Gs;(r=>{function i(o){return pu.pack(o)}r.serialize=i;function t(o){return pu.unpack(o)}r.deserialize=t;function e(o){return Ub(i(o)).toString()}r.checksum=e})(Gs||(Gs={}));var zs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(zs||(zs={}));var Rs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:hr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:hr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:hr.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Rs||(Rs={}));var al;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(al||(al={}));var ll;(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})(ll||(ll={}));var Fs;(t=>t.defaultData=H(I(I({},ll.defaultData),al.defaultData),{cloner:null,booleanExclude:null}))(Fs||(Fs={}));var cl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(cl||{}),hl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(hl||{}),pl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(pl||{}),Vs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:hr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Vs||(Vs={}));var ti;(r=>{function i(o,n){return o==="light"&&n?t(n):e(o)}r.defaultData=i;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:Vt.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(I({},Vt.fromHex(6710886)),{a:1}),colorB:H(I({},Vt.fromHex(6710886)),{a:1}),colorC:H(I({},Vt.fromHex(16777215)),{a:1}),colorD:H(I({},Vt.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:hr.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}}}})(ti||(ti={}));var vo;(a=>{function i(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=i;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,u])=>{c+=`${p}${u}`,Array.isArray(u)?u.forEach(m=>c+=`${m}`):typeof u=="object"?Object.values(u).forEach(m=>{typeof m=="number"?c+=`${m.toFixed(4)}`:c+=`${m}`}):c+=`${u}`})}),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 n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",h="layer2"){let p=new Je;return p.push({fi:0,data:ti.defaultData("light",l),id:c}),p.push({fi:1,data:ti.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=ti.defaultData("texture");Object.assign(u.texture,{image:l});let m=new Je;return m.push({fi:0,data:u,id:h}),m.push({fi:1,data:ti.defaultData("light",c),id:p}),{layers:m}}a.defaultTwoLayerTextureData=s})(vo||(vo={}));var ri;(t=>{function i(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(ri||(ri={}));var js;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(js||(js={}));var Ki;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ri.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=i})(Ki||(Ki={}));var Xi;(o=>{o.identity=H(I({},xs.identity),{hiddenMatrix:Jr.identity});function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,s){return{position:(s==null?void 0:s.position)||n.position,rotation:(s==null?void 0:s.rotation)||n.rotation,scale:(s==null?void 0:s.scale)||n.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Ko.isEqual(n.position,s.position)?null:s.position,rotation:Ko.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Ko.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Jr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Xi||(Xi={}));var Dr;(t=>t.defaultData=I({states:new Je,events:new Je,visible:!0,raycastLock:!1},Xi.identity))(Dr||(Dr={}));var uu;(t=>t.defaultData=I({type:"Empty"},Dr.defaultData))(uu||(uu={}));var Us;(t=>t.defaultData=I(I({type:"Mesh"},Dr.defaultData),Fs.defaultData))(Us||(Us={}));var mu;(t=>t.defaultData=I(I({type:"TextFrame"},Dr.defaultData),Vs.defaultData))(mu||(mu={}));var ks;(t=>t.defaultData=I(I(I({},Dr.defaultData),Xi.identity),yo.defaultData))(ks||(ks={}));var du;(t=>{function i(e){return I(I({},Dr.defaultData),Rs.defaultData(e))}t.defaultData=i})(du||(du={}));var fu;(r=>(r.defaultCamera=I({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Jr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},yo.defaultData),r.defaultMeshObject=H(I(I({name:"Rectangle"},Dr.defaultData),Us.defaultData),{geometry:Ki.defaultData("RectangleGeometry"),material:vo.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(I(I({name:"Boolean"},Dr.defaultData),Us.defaultData),{geometry:Ki.defaultData("BooleanGeometry"),material:vo.defaultTwoLayerData("phong","layer1","layer2")})))(fu||(fu={}));var yu;(e=>{function i(r,o){if(o===void 0)return r;let n=I({},r);return"material"in n&&"material"in o&&o.material&&(n.material=Ja(n.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&fo(c,l)}}).data),n.materials&&o.materials&&(n.materials=Ja(n.materials,s=>{var a,l;for(let c=0;c<n.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,u]of Object.entries(h.layers)){let m=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);m&&fo(m,u)}}}).data),n}e.patchMaterialState=i;function t(r,o){var s,a;if(o===void 0)return r;let n=I({},r);if(Object.assign(n,Xi.merge(n,o)),Yo.is(r.type)){n.orthographic=I({},n.orthographic),n.perspective=I({},n.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(n.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(n.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(n.targetOffset=l.targetOffset)}else if(r.type==="Mesh")n.geometry=I({},n.geometry),Object.assign(n.geometry,o.geometry),n=i(n,o);else if(zs.is(r.type)){let l=o;n.intensity!==void 0&&(n.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?n.color=l.color:n.color=Vt.clone(l.color))}return n}e.patch=t})(yu||(yu={}));import{ConeBufferGeometry as qb}from"three";import{BufferGeometry as kb,CylinderBufferGeometry as Hb,Float32BufferAttribute as ul,Vector2 as rr,Vector3 as Hs}from"three";var xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.parameters),r=e.width/2,o=(a=e.radiusTop)!=null?a:r,n=(l=e.radiusBottom)!=null?l:r;return o===n?(o=r,n=r):o>n?(o=r,n=n*r/o):(o=o*r/n,n=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:n})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:u,hollow:m}=i.parameters,f;return p||m?f=new Qi(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,m):f=new Hb(c,h,r,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(I({},i),{type:"CylinderGeometry"})})}};function Xr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function gu(i){return new rr(i.y,-i.x)}var Qi=class extends kb{constructor(t,e,r,o,n,s,a,l,c,h,p,u,m=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,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=[],v=[],y=[],b=0,A=r/2,N=new Hs,S=new Hs;m&&t==0&&(t=c),m&&e==0&&(e=h);let k=new rr(t,A),T=new rr(e,-A),d=null,O=null,x=null,L=null,C=k.clone().sub(T),P=0,$=0,Y=0;u>0&&(P=Math.min(t,e)*(1-u),$=t-P,Y=e-P);let oe=k.clone();oe.x-=P;let ae=Math.PI-C.angle(),ne=C.angle(),ge=Math.tan(ne/2),j=Math.tan(ae/2),R=ge+j,B=u?R:j,E=u?R:ge;if(c=Math.min(c,(t-$)/B,C.length()/R),h=Math.min(h,(e-Y)/E,C.length()/R),c>0){let V=c/ge;d=k.clone().sub(new rr(V,c)),u&&(x=d.clone(),x.x-=P-R*c),k.sub(C.clone().setLength(V))}if(h>0){let V=h/j;O=T.clone().sub(new rr(V,-h)),T.add(C.clone().setLength(V)),u&&(L=O.clone(),L.x-=P-R*h,oe.sub(C.clone().setLength(V)))}C=k.clone().sub(T);let D=C.length()<.5,_=[];for(let V=0;V<=o;V++){let z=[],U=V/o,se=U*l+a,q=new rr(Math.sin(se),Math.cos(se));L&&O?(W(z,U,q,ae,h,L,-1,!0),W(z,U,q,ne,h,O,-1,!1)):O?(K(z,q,O.x,0,-1),W(z,U,q,ne,h,O,-1,!1)):s||K(z,q,e,Y,-1);let J=gu(C).normalize();if(Xr(J,q,N),!D)for(let X=0;X<=n;X++){let Q=X/n,Z=C.clone().multiplyScalar(Q).add(T);Xr(Z,q,S),g.push(S.x,S.y,S.z),v.push(N.x,N.y,N.z),y.push(U,.5+S.y/r),z.push(b++)}if(x&&d?(W(z,U,q,ae,c,d,1,!1),W(z,U,q,ne,c,x,1,!0)):d?(W(z,U,q,ae,c,d,1,!1),K(z,q,d.x,0,1)):s||K(z,q,t,$,1),u&&!D){let X=gu(C).multiplyScalar(-1).normalize();Xr(X,q,N);for(let Q=0;Q<=n;Q++){let Z=Q/n,le=C.clone().multiplyScalar(-Z).add(oe);Xr(le,q,S),g.push(S.x,S.y,S.z),v.push(N.x,N.y,N.z),y.push(U,.5+S.y/r),z.push(b++)}}u&&!s&&z.push(z[0]),_.push(z)}for(let V=0;V<_.length-1;V++)for(let z=0;z<_[0].length-1;z++){if(s&&u&&z==n)continue;let U=_[V][z],se=_[V+1][z],q=_[V+1][z+1],J=_[V][z+1],X=g[q*3+0],Q=g[q*3+2];f.push(U,se,J),(X!=0||Q!=0)&&f.push(se,q,J)}l<Math.PI*2&&(G(-1,_[0],a),G(1,_[_.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new ul(g,3)),this.setAttribute("normal",new ul(v,3)),this.setAttribute("uv",new ul(y,2));function W(V,z,U,se,q,J,X,Q){for(let Z=0;Z<p+1;Z++){let le=Z/p,ie=X<0?le:1-le;Q&&(ie-=1),ie*=se;let pe=new rr(Math.sin(ie),Math.cos(ie)*X),Ge=pe.clone().multiplyScalar(q).add(J);Xr(Ge,U,S),g.push(S.x,S.y,S.z),Xr(pe,U,N),v.push(N.x,N.y,N.z),y.push(z,.5+S.y/r),V.push(b++)}}function K(V,z,U,se,q){let J=new Hs,X=new rr,Q=[U,se];q<0&&Q.reverse();for(let Z of Q)X.set(Z,A*q),Xr(X,z,J),g.push(J.x,J.y,J.z),v.push(0,q,0),y.push(.5,.5),V.push(b++)}function G(V,z,U){let se=new rr(Math.sin(U),Math.cos(U)),q=new rr(-Math.cos(U),Math.sin(U)),J=new Hs,X=V<0?(le,ie,pe)=>f.push(le,ie,pe):(le,ie,pe)=>f.push(le,pe,ie),Q=new rr((t+e+$+Y)/4,0);Xr(Q,se,J),g.push(J.x,J.y,J.z),v.push(q.x,0,q.y),y.push(.5,.5);let Z=b++;for(let le of z){let ie=g.slice(le*3,le*3+3);g.push(...ie),v.push(q.x,0,q.y);let pe=y.slice(le*2,le*2+2);y.push(...pe),b++}for(let le=Z+1;le<b-1;le++)X(Z,le,le+1);X(Z,b-1,Z+1)}}};var bu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;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},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=i.parameters,u;return c>0||h>0||l<360?u=new Qi(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new qb(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:H(I({},i),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as Wb,BufferGeometry as $b,Float32BufferAttribute as ml,Vector3 as Zi}from"three";var vu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;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},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:l}=i.parameters,c;return a==0?c=new Wb(t,e,r,o,n,s):c=new fl(t,e,r,o,n,s,a,l),Object.assign(c,{userData:H(I({},i),{type:"CubeGeometry"})})}},dl=Math.PI/2,fl=class extends $b{constructor(t=1,e=1,r=1,o=1,n=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],u=[],m=[],f=0,g=0;v("z","y","x",-1,-1,r,e,t,s,n,0),v("z","y","x",1,-1,r,e,-t,s,n,1),v("x","z","y",1,1,t,r,e,o,s,2),v("x","z","y",1,-1,t,r,-e,o,s,3),v("x","y","z",1,-1,t,e,r,o,n,4),v("x","y","z",-1,-1,t,e,-r,o,n,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,n,0),y("y","x","z",1,-1,-1,e,t,r,n,1),y("y","x","z",1,1,1,e,t,r,n,1),y("y","x","z",-1,1,-1,e,t,r,n,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 ml(p,3)),this.setAttribute("normal",new ml(u,3)),this.setAttribute("uv",new ml(m,2));function v(A,N,S,k,T,d,O,x,L,C,P){let $=(d-2*a)/L,Y=(O-2*a)/C,oe=d/2-a,ae=O/2-a,ne=x/2,ge=L+1,j=C+1,R=0,B=0,E=new Zi;for(let D=0;D<j;D++){let _=D*Y-ae;for(let W=0;W<ge;W++){let K=W*$-oe;E[A]=K*k,E[N]=_*T,E[S]=ne,p.push(E.x,E.y,E.z),E[A]=0,E[N]=0,E[S]=x>0?1:-1,u.push(E.x,E.y,E.z),m.push(W/L),m.push(1-D/C),R+=1}}for(let D=0;D<C;D++)for(let _=0;_<L;_++){let W=f+_+ge*D,K=f+_+ge*(D+1),G=f+(_+1)+ge*(D+1),V=f+(_+1)+ge*D;h.push(W,K,V),h.push(K,G,V),B+=6}c.addGroup(g,B,P),g+=B,f+=R}function y(A,N,S,k,T,d,O,x,L,C,P){let $=(O-2*a)/C,Y=O/2-a,oe=x/2-a,ae=L/2,ne=C+1,ge=0,j=0,R=new Zi,B=new Zi;for(let E=0;E<l+1;E++){let D=E/l*dl,_=Math.sin(D)*a,W=(1-Math.cos(D))*a,K=Math.sin(D),G=Math.cos(D);R[N]=(oe+_)*T,R[S]=(ae-W)*d,B[A]=0,B[N]=K*Math.sign(R[N]),B[S]=G*Math.sign(R[S]);for(let V=0;V<ne;V++){let z=V*$-Y;R[A]=z*k,p.push(R.x,R.y,R.z),u.push(B.x,B.y,B.z),m.push(V/C),m.push(0),ge+=1}}for(let E=0;E<l;E++)for(let D=0;D<C;D++){let _=f+D+ne*E,W=f+D+ne*(E+1),K=f+(D+1)+ne*(E+1),G=f+(D+1)+ne*E;h.push(_,W,G),h.push(W,K,G),j+=6}c.addGroup(g,j,P),g+=j,f+=ge}function b(A,N,S){let k=new Zi,T=new Zi(t/2,e/2,r/2);T.subScalar(a);let d=[],O=A*N*S>0?(L,C,P)=>h.push(L,C,P):(L,C,P)=>h.push(L,P,C);for(let L=0;L<=l;L++){let C=[],P=dl*(1-L/l),$=Math.cos(P),Y=Math.sin(P),oe=0;for(let ae=0;ae<=L;ae++){let ne=Math.cos(oe),ge=Math.sin(oe);k.x=$*ne,k.y=Y,k.z=$*ge;let j=T.clone().addScaledVector(k,a);p.push(A*j.x,N*j.y,S*j.z),u.push(A*k.x,N*k.y,S*k.z),m.push(0,0),C.push(f++),oe+=dl/L}d.push(C)}let x=d.length-1;for(let L=0;L<x;L++){let C=d[L],P=d[L+1],$=C.length-1;O(C[0],P[1],P[0]);for(let Y=1;Y<=$;Y++)O(C[Y-1],C[Y],P[Y]),O(C[Y],P[Y+1],P[Y])}}}};import{BufferGeometry as Jb,Float32BufferAttribute as yl,Triangle as Yb,Vector3 as Br,Vector2 as gl}from"three";var Qr=class extends Jb{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new yl(a,3)),this.setAttribute("normal",new yl(c,3)),this.setAttribute("uv",new yl(l,2));return;function h(){var ge;n=Math.min(1-1e-5,n),n==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Br,g=f.clone(),v=new Yb,y=n*o,b=o-y,A=s+1,N=new Br,S=(j,R)=>N.subVectors(j,R).normalize(),k=(j,R)=>Array(j).fill(void 0).map(R),T=k(t.length/3,(j,R)=>new Br().fromArray(t,R*3).setLength(o)),d=[],O=1e6;for(let j=0;j<T.length;j++){let R=T[j],B=[],E,D,_,W=1e10,K=-1;for(;(K=e.indexOf(j,K+1))!=-1;){let U=K-K%3;E=e[U+(K+1)%3],D=e[U+(K+2)%3],_=R.distanceToSquared(T[E]),W=Math.min(W,_),B.push([E,D,_])}W+=1e-6;let G=[],V=0,z=B.length;for(let U=0;U<z;U++){[E,D,_]=B[V];let se=((ge=d[E])==null?void 0:ge.includes(j))==!0;_<=W&&G.push(E+ +se*O),V=B.findIndex(q=>q[0]==D)}d.push(G)}let x=[];{let j=0,R=0,B,E,D=m==3;for(let _=0;_<=s;_++){B=_*(_+1)/2,E=(_+1)*(_+2)/2;for(let W=0;W<s-_;W++)[j,R]=[B+W+_+2,E+W+_+3],x.push(B,E,...D?[R,B]:[j,E],R,j),[B,E]=[j,R];x.push(B,E,B+s+2)}}let L=f.clone(),C=f.clone(),P=f.clone(),$=f.clone(),Y=f.clone(),oe=[],ae=k(T.length,()=>k(m,()=>f.clone()));for(let j=0;j<T.length;j++){f.copy(T[j]).normalize(),L.copy(f).multiplyScalar(b);let R=d[j];for(let G=0;G<R.length;G++){let V=R[G],z=R[(G+1)%m];v.setFromPointsAndIndices(T,j,V%O,z%O),v.b.sub(v.a).setLength(1e10).add(v.a),v.c.sub(v.a).setLength(1e10).add(v.a),v.closestPointToPoint(L,ae[j][G])}let B=[],E=[],D=[],_=new Br;s==0&&[...ae[j]].reduce((G,V)=>G.add(V),_).multiplyScalar(1/m);for(let G=0;G<m;G++){let V=[],z=(G-1+m)%m,U=ae[j][z],se=ae[j][G];f.copy(U).sub(L),g.copy(se).sub(L);let q=L.angleTo(f),J=f.angleTo(g),X=Math.cos(q)*y;s==0?C.copy(_):C.copy(L).setLength(b+X),E.push(X);let Q=[C,U,se];for(let Z=0;Z<2;Z++){let le=Q[Z],ie=Q[Z+1];$.subVectors(le,L),Y.subVectors(ie,L),P.crossVectors($,Y).normalize();for(let pe=0;pe<A;pe++){let Ge=[q,J][Z]*pe/A;f.copy($).applyAxisAngle(P,Ge).add(L),B.push(f.clone()),Z&&(S(f,L),V.push([pe==0?le:f.clone(),N.clone()]))}Z&&(S(ie,L),V.push([ie,N.clone()]))}D.push(V)}oe.push(D);let W=2*A,K=2;for(let G=0;G<m;G++){let V=W*G,z=W*((G+1)%m),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],Y=B[z+q],U.push($);for(let J=1,X=q-K+1;J<=X;J++)f.lerpVectors($,Y,J/(X+1)),f.sub(L).setLength(E[G]).add(L),U.push(f.clone());U.push(Y)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[z+A]);let se=x.map(q=>U[q]);a.push(...se.map(q=>[q.x,q.y,q.z]).flat()),c.push(...se.map(q=>(S(q,L),[N.x,N.y,N.z])).flat())}}let ne=[];for(let j=0;j<d.length;j++)for(let R=0;R<m;R++){let B=d[j][R];if(B<O){let E=d[B].findIndex(W=>W%O==j),D=oe[j][R],_=oe[B][E];for(let W=0;W<A;W++){let K=D[W],G=_[A-W],V=D[W+1],z=_[A-(W+1)];[K,G,V,V,G,z].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}ne.push(D[0][0],_[A][0],D[A][0],_[0][0])}}for(;ne.length;){let j,R,B,E;[j,R]=ne.splice(0,2);let D=[j];for(;j!=R;)D.push(R),B=ne.indexOf(R),E=B%2,R=ne.splice(B-E,2)[1-E];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let _=N.dot(D[0])<0;_&&N.negate();for(let W=1;W<=D.length-2;W++)[D[W+ +_],D[W+1-+_],D[0]].forEach(K=>{a.push(K.x,K.y,K.z),c.push(N.x,N.y,N.z)})}}function p(){let u=new Br;for(let T=0;T<a.length;T+=3){u.x=a[T+0],u.y=a[T+1],u.z=a[T+2];let d=S(u)/2/Math.PI+.5,O=k(u)/Math.PI+.5;l.push(d,1-O)}let m=new Br,f=new Br,g=new Br,v=new Br,y=new gl,b=new gl,A=new gl,N=(T,d,O,x)=>{x<0&&T.x===1&&(l[d]=T.x-1),O.x===0&&O.z===0&&(l[d]=x/2/Math.PI+.5)};for(let T=0,d=0;T<a.length;T+=9,d+=6){m.set(a[T+0],a[T+1],a[T+2]),f.set(a[T+3],a[T+4],a[T+5]),g.set(a[T+6],a[T+7],a[T+8]),y.set(l[d+0],l[d+1]),b.set(l[d+2],l[d+3]),A.set(l[d+4],l[d+5]),v.copy(m).add(f).add(g).divideScalar(3);let O=S(v);N(y,d+0,m,O),N(b,d+2,f,O),N(A,d+4,g,O)}for(let T=0;T<l.length;T+=6){let d=l[T+0],O=l[T+2],x=l[T+4],L=Math.max(d,O,x),C=Math.min(d,O,x);L>.9&&C<.1&&(d<.2&&(l[T+0]+=1),O<.2&&(l[T+2]+=1),x<.2&&(l[T+4]+=1))}function S(T){return Math.atan2(T.z,-T.x)}function k(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new Qr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Kb}from"three";var Su=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new en(t*.5,n,s):new Kb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(I({},i),{type:"DodecahedronGeometry"})})}},en=class extends Qr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=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,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],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 en(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as av,Plane as lv,Shape as Gu,Vector2 as Er,Vector3 as cv,MathUtils as Cl,LineCurve as Tl,QuadraticBezierCurve as zu,CubicBezierCurve as Js}from"three";import{CubicBezierCurve as qs,EllipseCurve as Xb,LineCurve as Ws,LineCurve3 as Qb,MathUtils as Zb,QuadraticBezierCurve as bl,SplineCurve as ev,Vector2 as St,Vector3 as Cu}from"three";var tn=1e-12,oi=class{constructor(t){this.position=new St;this.startPosition=new St;this.uuid=Zb.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 oi(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ii=class extends oi{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ii(this.parent).copy(this)}},or=class extends oi{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ii(this),new ii(this))}static create(e,r){let o=new or(e,new St(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let 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 or(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){var o,n;let e=(o=this.curveBefore)==null?void 0:o.getTangentAt(1),r=(n=this.curveAfter)==null?void 0:n.getTangentAt(0);return[e,r]}computeNormals(e=new St,r=new St){let[o,n]=this.computeTangents();return o&&n&&(wu(o,e),wu(n,r)),[e,r]}computeTangent(e=new St){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new St){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function wu(i,t=new St){let e=i.length();return t.set(-i.y/e,i.x/e)}var vl=i=>i,ni=new St,$s=new St,tv=new St,rv=new St,ov=new St,iv=new St,Tu=new Cu,Nu=new Cu;function Mu(i){let t=new St;t.addVectors(i.v0,ni.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new St;return e.addVectors(i.v2,$s.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new qs(i.v0,t,e,i.v2)}function rn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function nv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function sv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function Sl(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function Pu(i,t,e){return Lu(i,t)&&Lu(t,e)&&xl(i.position,t.position,e.position)}function xl(i,t,e){return ni.copy(t).sub(i).cross($s.copy(e).sub(i))===0}function Ou(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),s=(i.y+t.y)/2,a=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function Iu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Au(i,t,e,r,o,n){let s=t.x-i.x,a=t.y-i.y,l=e.x-i.x,c=e.y-i.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return Sl(t,i,e)>Math.PI&&(h*=-1),rn(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),n.set(e.x+p*c,e.y-p*l),[o,n]}function wl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function Lu(i,t){return xl(i.position,i.controls[1].position,t.position)&&xl(i.position,t.controls[0].position,t.position)}function Du(i,t,e,r,o=.5){let n=ni.subVectors(t,i).multiplyScalar(o).add(i),s=$s.subVectors(e,t).multiplyScalar(o).add(t),a=tv.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=rv.subVectors(s,n).multiplyScalar(o).add(n),h=ov.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=iv.subVectors(h,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,u.x,u.y,h.x,h.y,p.x,p.y,r.x,r.y]}function Bu(i,t,e=12,r=!0){let o=Nu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=vl(t[l]),h=ni,p=Zr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof qs||c instanceof bl||c instanceof Ws){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&sv(n,o))continue;n===void 0&&(n=Tu),n.copy(o),i.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),i}function Eu(i,t,e,r=12,o=!0){let n=Nu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=vl(t[l]),p=ni,u=Zr(h,r);a.push(u);for(let m=0;m<=u;m++)if(h instanceof qs||h instanceof bl||h instanceof Ws){if(h.getPoint(m/u,p),n.set(p.x,p.y,0),c!=null&&c.equals(n))continue;c===void 0?c=Tu:(i.setXYZ(s,c.x,c.y,c.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),c.copy(n)}}return o&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),a}function Ll(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let s=i[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Zr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Zr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Zr(i[0].roundedCurveCorner,t)*.5),r}function Zr(i,t=12){return i&&i instanceof Xb?t*2:i&&(i instanceof Ws||i instanceof Qb)?1:i&&i instanceof ev?t*i.points.length:t}function _u(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=vl(t[s]),l=Zr(a,e),c=ni;for(let h=0;h<=l;h++)if(a instanceof qs||a instanceof bl||a instanceof Ws){if(a.getPoint(h/l,c),o!==void 0&&nv(o,c,tn))continue;o===void 0&&(o=$s),o.copy(c),i.push(c.x,c.y),n++}}return rn(i[0],i[i.length-2],tn)&&rn(i[1],i[i.length-1],tn)&&(i.pop(),i.pop()),r&&n>1&&!(rn(i[n-1],i[1],tn)&&rn(i[n-2],i[0],tn))&&(i.push(i[0],i[1]),n++),i}var Nl=new Er,hv=new Er,pv=new Er,uv=new Er,mv=new Er,dv=new Er,Pe=class extends Gu{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new av;this.plane=new lv(new cv(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=Cl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Pe;return n.isClosed=e.isClosed,n.points=e.points.map(s=>or.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Pe.createFromState(s)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,h=l.getPointIndexById(e);if(h<0)n+=c;else return h+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let n=this.shapeHoles[r],s=e-this.points.length;if(s<=n.points.length-1)return n.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,n=this.shapeHoles.length;o<n;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=Nl.set(e,r);for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let n=0,s=this.shapeHoles.length;n<s;n++)this.shapeHoles[n].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=Cl.generateUUID()){let n;e instanceof Er?n=e:n=new Er(e,r);let s=new or(o,n);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 n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}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 n=o?this.roundedCurveDivisions:this.curveDivisions;return Bu(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Ll(this.points,e,!1),this.roundedCurveDivisions=Ll(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Eu(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),_u(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Zr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let h=n[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let n=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(wl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(Nl.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){wl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(e=!0){var o,n,s;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let a=0,l=this.points.length;a<l;a++){let c=this.points[a];if(a===0)this.moveTo(c.position.x,c.position.y);else{let h=this.points[a-1];this._applyCurveForPoint(c,h)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let a=this.points[0],l=this.points[this.points.length-1];this._applyCurveForPoint(a,l)}if(this.points.length>2){let a=0;for(let l=0,c=this.points.length;l<c;l++){let h=this.points[l],p=(o=this.points[l-1])!=null?o:this.points[this.points.length-1],u=(n=this.points[l+1])!=null?n:this.points[0],m=h.roundness,f=p&&u&&Pu(p,h,u);if(!h.controlsMoved()&&m>0&&!f){let g=h.curveBefore,v=h.curveAfter;if(g===void 0||v===void 0)continue;let y=h.roundedCurveBefore,b=h.roundedCurveAfter,A=g.getLength(),N=v.getLength(),S=Math.min(m,A*.499),k=Math.min(m,N*.499),T=Math.min(S,k),d=1-T/A,O=T/N,x=g.getPointAt(d,Nl),L=v.getPointAt(O,hv);this._subSplitCurve(g,y,d,x,void 0),this._subSplitCurve(v,b,O,void 0,L);let C;if(this.useCubicForRoundedCorners){let P=Sl(x,h.position,L)/2,$=Math.tan(P)*x.distanceTo(h.position),[Y,oe]=Ou(x,L,$,pv,uv),ae=Iu(Y,oe,h.position),[ne,ge]=Au(ae,x,L,$,mv,dv);C=new Js(x.clone(),ne.clone(),ge.clone(),L.clone())}else C=new zu(x.clone(),h.position.clone(),L.clone());h.roundedCurveCorner=C,this.roundedCurves.splice(l+a,0,C),a++}}}e&&((s=this.eventDispatcher)==null||s.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,n,s){if(e instanceof Tl)n!==void 0&&r.v2.copy(n),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=Du(a.v0,a.v1,a.v2,a.v3,c);return n!==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 Pe(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 n=0;n<r;n++){let s=n*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],u=e.points[s+5],m=e.points[s+6],f=new or(Cl.generateUUID(),new Er(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,u),f.roundness=m,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(n=>{let s=new Pe;return s.fromJSON(n),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof Js&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,l;for(a=0,l=n.length;a<l;a++)n[a]instanceof zu&&(n[a]=Mu(n[a]));for(a=0,l=n.length;a<l;a++){let p=n[a],u=a>0?n[a-1]:null,m;p instanceof Js?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof Tl&&(m=this.createPoint(p.v1)),m!==void 0&&(u!==null&&r(m,u),s.push(m))}let c=n[n.length-1],h=!1;return c instanceof Js?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof Tl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Gu&&(this.shapeHoles=e.holes.map(n=>{let s=new Pe;return s.fromShape(n),s})),this.update(),this}};var Pl=Math.PI*2;function Ml({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function fv(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),s=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+s*e,y:s-n*e},{x:n,y:s}]}function Ru(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function yv(i,t,e,r,o,n,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(n,2),u=Math.pow(s,2),m=Math.pow(a,2),f=h*p-h*m-p*u;f<0&&(f=0),f/=h*m+p*u,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,v=f*-n/o*s,y=g+(i+e)/2,b=v+(t+r)/2,A=(s-g)/o,N=(a-v)/n,S=(-s-g)/o,k=(-a-v)/n,T=Ru(1,0,A,N),d=Ru(A,N,S,k);return!c&&d>0&&(d-=Pl),c&&d<0&&(d+=Pl),{centerx:y,centery:b,ang1:T,ang2:d}}function Fu({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let u=yv(i,t,e,r,o,n,c,h,s,a),{ang1:m,ang2:f}=u,{centerx:g,centery:v}=u,y=Math.abs(f)/(Pl/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(fv(m,f)),m+=f;return l.map(A=>{let{x:N,y:S}=Ml(A[0],o,n,g,v),{x:k,y:T}=Ml(A[1],o,n,g,v),{x:d,y:O}=Ml(A[2],o,n,g,v);return{x1:N,y1:S,x2:k,y2:T,x:d,y:O}})}import{BufferAttribute as Ks,BufferGeometry as Sv}from"three";var qe;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(qe||(qe={}));var ot;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function me(i,t){if(!i)throw t||"Assertion Failed!"}var ce=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){me(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){me(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){me(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){me(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var s,a,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(s=i.edgeEval(t,r,e),a=i.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,e.s)):(s=i.edgeSign(t,r,e),a=-i.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(s=i.transEval(t,r,e),a=i.transEval(r,e,o),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,e.t)):(s=i.transSign(t,r,e),a=-i.transSign(t,o,e),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,o.t)):n.t=(r.t+e.t)/2},i}(),on=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),Ys=function(){function i(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),si=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return i}(),Vu=function(){function i(){var t=new si,e=new on,r=new Ys(0),o=new Ys(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new Ys(0),r=new Ys(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;me(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;me(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.makeEdge=function(){var t=new si,e=new si,r=new on,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new si;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new on;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new on;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new si;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var s=new on;this.makeFace_(s,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,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)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,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,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),a+l-2<=t&&ce.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ce.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,s,a,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){me(o.prev===n),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){me(s.prev===a),l=s.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(me(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)me(l.Sym.next===c.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),ju=function(){function i(){this.handle=null}return i}(),Uu=function(){function i(){this.key=null,this.node=0}return i}(),gv=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new ju,this.handles[r]=new Uu;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,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,me(s<=this.max),n=e[s].handle,s>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t>>1,n=e[s].handle,s===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new ju;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Uu}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;me(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),Ol=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),ku=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),xv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new ku,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new ku;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),bv=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,s=r.eUp;if(n.Dst===o)return s.Dst===o?ce.vertLeq(n.Org,s.Org)?ce.edgeSign(s.Dst,n.Org,s.Org)<=0:ce.edgeSign(n.Dst,s.Org,n.Org)>=0:ce.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ce.edgeSign(n.Dst,o,n.Org)>=0;var a=ce.edgeEval(n.Dst,o,n.Org),l=ce.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){me(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new Ol;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case 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")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,n=i.regionBelow(s),o=n.eUp,o.Org!=a.Org){if(!n.fixUpperEdge){i.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),i.finishRegion(t,s),a=n.eUp,s=n}return a},i.addRightEdges=function(t,e,r,o,n,s){var a,l,c,h,p=!0;c=r;do me(ce.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,h=n;a=i.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=i.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,h),i.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,me(l.windingNumber-c.winding===a.windingNumber),s&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ce.vertL1dist(e,t),n=ce.vertL1dist(r,t),s=.5*n/(o+n),a=.5*o/(o+n);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]},i.getIntersectData=function(t,e,r,o,n,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,s)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ce.vertLeq(o.Org,n.Org)){if(ce.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ce.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ce.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s;if(me(!ce.vertEq(o.Dst,n.Dst)),ce.vertLeq(o.Dst,n.Dst)){if(ce.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,s),s.Lface.inside=e.inside}else{if(ce.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),s.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s=o.Org,a=n.Org,l=o.Dst,c=n.Dst,h,p,u=new si,m,f;if(me(!ce.vertEq(c,l)),me(ce.edgeSign(l,t.event,s)<=0),me(ce.edgeSign(c,t.event,a)>=0),me(s!==t.event&&a!==t.event),me(!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(ce.vertLeq(s,a)){if(ce.edgeSign(c,s,a)>0)return!1}else if(ce.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),ce.intersect(l,s,c,a,u),me(Math.min(s.t,l.t)<=u.t),me(u.t<=Math.max(a.t,c.t)),me(Math.min(c.s,l.s)<=u.s),me(u.s<=Math.max(a.s,s.s)),ce.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),m=ce.vertLeq(s,a)?s:a,ce.vertLeq(m,u)&&(u.s=m.s,u.t=m.t),ce.vertEq(u,s)||ce.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!ce.vertEq(l,t.event)&&ce.edgeSign(l,t.event,u)>=0||!ce.vertEq(c,t.event)&&ce.edgeSign(c,t.event,u)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),f=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,f,!0),!0):(ce.edgeSign(l,t.event,u)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ce.edgeSign(c,t.event,u)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=u.s,o.Org.t=u.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,s,l,a,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,s=i.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&i.checkForIntersect(t,e),ce.vertEq(a.Org,t.event)&&(t.mesh.splice(n.Oprev,a),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),s),c=!0),ce.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,s,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ce.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,s,a,l;if(o=e.eUp,ce.vertEq(o.Org,r)){me(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ce.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}me(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(me(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ce.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,s,a,l,c=new Ol;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ce.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ce.vertLeq(a.Dst,s.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);me(o!==null);var n=i.regionBelow(o),s=n.eUp,a=i.finishLeftRegions(t,n,null);a.Onext===s?i.connectRightVertex(t,o,a):i.addRightEdges(t,o,a.Onext,s,s,!0)},i.addSentinel=function(t,e,r,o){var n=new Ol,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,n.eUp=s,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new xv(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;i.addSentinel(t,o,n,s),i.addSentinel(t,o,n,a)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(me(e.fixUpperEdge),me(++r===1)),me(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ce.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new gv(n,ce.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,me(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ce.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),vv=function(){function i(){this.mesh=new Vu,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 i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],u=[0,0,0],m=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var v=0;v<3;++v)n=e.coords[v],c[v]=n,f[v]=e,l[v]=n,m[v]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)n=e.coords[y],n<c[y]&&(c[y]=n,f[y]=e),n>l[y]&&(l[y]=n,m[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=m[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],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var 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);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ce.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ce.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ce.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ce.edgeGoesLeft(o.Lnext)||ce.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ce.edgeGoesRight(r.Lprev)||ce.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,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){n=h.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=a,a++),l++,n=n.Lnext}while(n!==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 u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){n=h.anEdge,l=0;do{var c=n.Org;this.elements[u++]=c.n,l++,n=n.Lnext}while(n!==h.anEdge);for(var m=l;m<r;++m)this.elements[u++]=-1;if(e===ot.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var f=l;f<r;++f)this.elements[u++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=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;n=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++]=n,this.elements[h++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Vu),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,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,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),bv.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},i}();function So(i){var t=i.windingRule,e=t===void 0?qe.ODD:t,r=i.elementType,o=r===void 0?ot.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,l=a===void 0?2:a,c=i.normal,h=c===void 0?[0,0,1]:c,p=i.contours,u=p===void 0?[]:p,m=i.strict,f=m===void 0?!0:m,g=i.debug,v=g===void 0?!1:g;if(!u&&f)throw new Error("Contours can't be empty");if(!!u){var y=new vv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[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:v?y.mesh:void 0}}}var JD=qe.ODD,YD=qe.NONZERO,KD=qe.POSITIVE,XD=qe.NEGATIVE,QD=qe.ABS_GEQ_TWO,ZD=ot.POLYGONS,e2=ot.CONNECTED_POLYGONS,t2=ot.BOUNDARY_CONTOURS;var ai=class extends Sv{constructor(e,r=12,o={}){var f,g,v;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 n=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=n.length/2;y<b;y++){let A=y*2,N=n[A+0],S=n[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&S!==p&&(c=!1),h=N,p=S,!l&&!c)break}!l&&!c&&(a=So({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=(f=a==null?void 0:a.vertexCount)!=null?f:1,m=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new Ks(new Float32Array(u*3),3),this._normalAttribute=new Ks(new Float32Array(u*3),3),this._uvAttribute=new Ks(new Float32Array(u*2),2),this._indexAttribute=new Ks(new Uint32Array(m*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let T=0,d=u;T<d;T++){let O=T*2,x=a.vertices[O+0],L=a.vertices[O+1];x<y&&(y=x),x>b&&(b=x),L<A&&(A=L),L>N&&(N=L)}let S=b-y,k=N-A;for(let T=0,d=u;T<d;T++){let O=T*2,x=a.vertices[O+0],L=a.vertices[O+1],C=(x-y)/S,P=(L-A)/k;this._positionAttribute.setXYZ(T,x,L,0),this._normalAttribute.setXYZ(T,0,0,1),this._uvAttribute.setXY(T,C,P)}for(let T=0,d=m;T<d;T++){let O=T*3,x=a.elements[O+0],L=a.elements[O+1],C=a.elements[O+2];this._indexAttribute.setX(O+0,x),this._indexAttribute.setX(O+1,L),this._indexAttribute.setX(O+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((v=a==null?void 0:a.elementCount)!=null?v:1)*3)}clone(){let e=new ai(this._shape,this._curveSegments);return e.userData=Ui(this.userData),e}};import{BufferAttribute as Qs,BufferGeometry as wv}from"three";var Xs=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*Xs.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Xs.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*t);s+=3*t;let l=new Float32Array(o,s*n,3*t);s+=3*t;let c=new Float32Array(o,s*n,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)}},nn=Xs;nn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Il=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),li=class extends wv{constructor(e,r,o=0,n=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=n,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([],n),l=this._shape.shapeHoles.map(T=>{let d=T.extractShapePointsToFlatArray([],n),O=[];for(let x=d.length-1;x>=1;x-=2){let L=d[x-1],C=d[x-0];O.push(L,C)}return O}),c=So({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=So({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 T=0;T<h.elements.length;T++){let d=h.elements[T],O=T%2===0?c.vertexCount:0;c.elements.push(d+O)}for(let T=0;T<h.vertexIndices.length;T++){let d=h.vertexIndices[T],O=c.vertexCount;c.vertexIndices.push(d+O)}for(let T=0;T<h.vertices.length;T++){let d=h.vertices[T];c.vertices.push(d)}}let u=1/0,m=-1/0,f=1/0,g=-1/0;for(let T=0,d=c.vertexCount;T<d;T++){let O=T*2,x=c.vertices[O+0],L=c.vertices[O+1];x<u&&(u=x),x>m&&(m=x),L<f&&(f=L),L>g&&(g=L)}this._minX=u,this._minY=f,this._width=m-u,this._height=g-f;let v=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new nn(v);let y=[],b=[];for(let T=c.elementCount-1;T>=0;T--){let d=T>=p,O=T*2,x=c.elements[O+0],L=c.elements[O+1],C=x+L,P={start:x,count:L,normals:[],continuous:[],concave:[]},$=x,Y=C-1,oe=x+1,ae=this._shape.roundedCurves.length;do{let R=$-x,B=c.vertices[Y*2+0],E=c.vertices[Y*2+1],D=c.vertices[$*2+0],_=c.vertices[$*2+1],W=c.vertices[oe*2+0],K=c.vertices[oe*2+1],G=D-B,V=_-E,z=Math.sqrt(G*G+V*V);G/=z,V/=z;let U=D-W,se=_-K,q=Math.sqrt(U*U+se*se);U/=q,se/=q,P.normals[R*2+0]=-se,P.normals[R*2+1]=U,P.concave[R]=G*se-V*U>0;let J=c.vertexIndices[$];if(Array.isArray(J))P.continuous[R]=!1;else{let[X,Q]=this._shape.getCurveIndexFromVertexId(J-1,!0);if(Q>0&&Q<1)P.continuous[R]=!0;else{let Z=Q===1?X+1:X-1;Z=(Z+ae)%ae;let le=Q===1?0:1,ie=this._shape.roundedCurves[X].getTangent(Q),pe=this._shape.roundedCurves[Z].getTangent(le);P.continuous[R]=ie.dot(pe)>.95}}d&&(P.normals[R*2+0]*=-1,P.normals[R*2+1]*=-1),[Y,$,oe]=[$,oe,oe+1],oe>=C&&(oe-=L)}while(oe!==x+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((R,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,C*2)});for(let R=1;R<=this._bevelSegments;R++){let B=R/this._bevelSegments*Math.PI/2,E=(1-Math.cos(B))*this._bevelSize,D=[],_=[],W=[],K=[],G=0;for(let z=0;z<L;z++){let U=z*2,se=(z-1+L)%L*2,q=c.vertices[P.start*2+U+0],J=c.vertices[P.start*2+U+1],X=-P.normals[se+0]*E,Q=-P.normals[se+1]*E,Z=-P.normals[U+0]*E,le=-P.normals[U+1]*E;if(P.concave[z]||!P.concave[z]&&d){let ie=Math.atan2(Q,X),pe=Math.atan2(le,Z);pe>ie&&(pe-=Math.PI*2);let Ge=pe-ie;if(P.continuous[z]||d){let xe=ie+Ge/2,$e=Math.cos(xe)*E,Te=Math.sin(xe)*E;D[2*G+0]=q+$e*(d?-1:1),D[2*G+1]=J+Te*(d?-1:1),K[G]=z,G++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=xe;$e++){let Te=ie+Ge*($e/xe),ht=Math.cos(Te)*E,Tt=Math.sin(Te)*E;D[2*G+0]=q+ht,D[2*G+1]=J+Tt,K[G]=z,G++}}}else D[2*G+0]=q+X,D[2*G+1]=J+Q,K[G]=z,_[z]=G,G++,D[2*G+0]=q,D[2*G+1]=J,K[G]=z,G++,D[2*G+0]=q+Z,D[2*G+1]=J+le,K[G]=z,W[z]=G,G++}let V=So({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:z=>{let se=z.Org.idx,q=K[se],J=K[(se+1)%K.length];z.idx=[q,J],z.Sym.idx=[J,q]},vertexIdCallback:z=>{let U=z.Lprev.idx;return[U?U[1]:0,z.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!V.vertexCount)break;for(let z=0;z<V.vertexIndices.length;z++){let[U,se]=V.vertexIndices[z];if(U===se)continue;let q=se;se<U&&(q+=L);for(let J=U;J<q;J++){let X=J%L,Q=(J+1)%L;if(!P.continuous[X]||!P.continuous[Q]){V.vertexIndices[z]=[U,X],V.vertexIndices.splice(z+1,0,[Q,se]),V.vertices.splice((z+1)*2,0,V.vertices[z*2],V.vertices[z*2+1]);break}}}ne.push({bevelI:R,angle:B,size:E,boundary:V,reverseMap:K,insetPoints:D})}let ge=(R,B,E)=>{let D=0,_=R.boundary.vertexIndices.length;for(;D<_&&E(R.boundary.vertexIndices[B]);)B=(B+1)%_,D++;return D},j=y.length;for(let R=1;R<ne.length;R++){let B=ne[R-1],E=ne[R],D=B.boundary.vertexIndices.length,_=E.boundary.vertexIndices.length;if(!D||!_)break;let W=P.concave.length,K=0,G=Il(K,L);for(;!B.boundary.vertexIndices.filter(G).length||!E.boundary.vertexIndices.filter(G).length;)K++,G=Il(K,L);let V=B.boundary.vertexIndices.findIndex(G),z=E.boundary.vertexIndices.findIndex(G);do V=(V+1)%D;while(G(B.boundary.vertexIndices[V]));do z=(z+1)%_;while(G(E.boundary.vertexIndices[z]));K=(K+1)%L;let U=K,se=this.buildBevelVert(P,B,(V-1+D)%D),q=this.buildBevelVert(P,E,(z-1+_)%_),J=se,X=q,Q,Z,le=!1;do{G=Il(K,L);let ie=ge(B,V,G),pe=ge(E,z,G),Ge=le;if(le=!1,ie&&!pe){for(let xe=0;xe<ie;xe++)Q=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),y.push(J.topN,Q.topP,X.topN),y.push(Q.bottomP,J.bottomN,X.bottomN),J=Q;le=!0}else if(!ie&&pe)for(let xe=0;xe<pe;xe++)Z=this.buildBevelVert(P,E,(z+xe)%_,xe/(pe-1)),y.push(X.topN,J.topP,Z.topP),y.push(J.bottomP,X.bottomN,Z.bottomP),X=Z;else if(ie&&pe)if(Q=this.buildBevelVert(P,B,V,0),Z=this.buildBevelVert(P,E,z,0),Ge?(y.push(J.topN,Z.topP,X.topN),y.push(J.topN,Q.topP,Z.topP),y.push(Z.bottomP,J.bottomN,X.bottomN),y.push(Z.bottomP,Q.bottomP,J.bottomN)):(y.push(X.topN,J.topN,Q.topP),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,J.bottomN,X.bottomN),y.push(Q.bottomP,X.bottomN,Z.bottomP)),J=Q,X=Z,ie===pe)for(let xe=1;xe<ie;xe++)Q=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),Z=this.buildBevelVert(P,E,(z+xe)%_,xe/(pe-1)),y.push(J.topN,Q.topP,X.topN),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,J.bottomN,X.bottomN),y.push(Q.bottomP,X.bottomN,Z.bottomP),J=Q,X=Z;else if(ie>pe){let xe=ie/pe,$e=0;for(let Te=1;Te<ie;Te++)Q=this.buildBevelVert(P,B,(V+Te)%D,Te/(ie-1)),y.push(J.topN,Q.topP,X.topN),y.push(Q.bottomP,J.bottomN,X.bottomN),J=Q,Te>($e+1)*xe&&($e++,Z=this.buildBevelVert(P,E,(z+$e)%_,$e/(pe-1)),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,X.bottomN,Z.bottomP),X=Z)}else{let xe=pe/ie,$e=0;for(let Te=1;Te<pe;Te++)Z=this.buildBevelVert(P,E,(z+Te)%_,Te/(pe-1)),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,X.bottomN,Z.bottomP),X=Z,Te>($e+1)*xe&&($e++,Q=this.buildBevelVert(P,B,(V+$e)%D,$e/(ie-1)),y.push(J.topN,Q.topP,X.topN),y.push(Q.bottomP,J.bottomN,X.bottomN),J=Q)}V=(V+ie)%D,z=(z+pe)%_,K=(K+1)%W}while(K!==U)}{let R=ne[0];for(let B=0,E=R.boundary.vertexCount;B<E;B++){let D=this.buildBevelVert(P,R,B),_=this.buildBevelVert(P,R,(B+1)%E);y.push(_.topP,D.topN,D.bottomN),y.push(_.topP,D.bottomN,_.bottomP)}}if(d){let R=[];for(let B=y.length-1;B>=j+2;B-=3){let E=y[B-2],D=y[B-1],_=y[B-0];R.push(_,D,E)}y.splice(j,y.length-j,...R)}if(d){let R=[];for(let B=ne[ne.length-1].boundary.vertices.length-1;B>=1;B-=2){let E=ne[ne.length-1].boundary.vertices[B-1],D=ne[ne.length-1].boundary.vertices[B-0];R.push(E,D)}b.push(R)}if(!d){let R=ne[ne.length-1],B=So({windingRule:ne.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let E=0;E<B.elementCount*3;E+=3){let D=this.buildSurfaceVert(B,B.elements[E+0]),_=this.buildSurfaceVert(B,B.elements[E+1]),W=this.buildSurfaceVert(B,B.elements[E+2]);y.push(D.top,_.top,W.top),y.push(W.bottom,_.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Qs(Uint32Array.from(y),1),N=new Qs(this._buffer.positions,3),S=new Qs(this._buffer.normals,3),k=new Qs(this._buffer.uvs,2);N.needsUpdate=!0,S.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",S),this.setAttribute("uv",k),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let n=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(n-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,u={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=n,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]=n,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]=u,u}buildBevelVert(e,r,o,n=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,u;a!==l?(h=a,c=l,u=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,u=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||u);let m=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,v=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,S=(b-this._minX)/this._width,k=(A-this._minY)/this._height,T=e.normals[v+0],d=e.normals[v+1],O=e.normals[y+0],x=e.normals[y+1];if(u){let Y=O-T,oe=x-d;T=T+Y*(1-n),d=d+oe*(1-n);let ae=Math.sqrt(T*T+d*d);T/=ae,d/=ae}let L=this._buffer.get(p?2:4),C=L*3,P=L*2,$={i:o,fi:c,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=T*m,this._buffer.normals[C+1]=d*m,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=S,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=T*m,this._buffer.normals[C+4]=d*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=S,p||(L+=2,C+=6,P+=4,$.topP=L+0,$.bottomP=L+1,this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=O*m,this._buffer.normals[C+1]=x*m,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=S,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=O*m,this._buffer.normals[C+4]=x*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=S),this.vertexCache[s]=$,$}clone(){let e=new li(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ui(this.userData),e}};var ut=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var c,h,p,u,m,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),n=Math.abs((p=e.depth)!=null?p:0),s=(u=i.shape)!=null?u:t==null?void 0:t.shape,a=(m=s==null?void 0:s.roundness)!=null?m:e.roundness;s!==void 0&&(s instanceof Pe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Pe(r,o).fromJSON(s),((f=i.parameters)==null?void 0:f.roundness)!==void 0&&((g=i.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Pe(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:a}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new ai(i.shape,o):s=new li(i.shape,t,e,o,r),Object.assign(s,{userData:H(I({},i),{type:"VectorGeometry"})})}};import{MathUtils as qu,Vector2 as Wu}from"three";var $u=Math.PI*2,Ju=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s:0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c=i.shape,h=t*.5,p=e*.5,u=Lv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let m=ut.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(m,{userData:H(I({},i),{type:"EllipseGeometry"})})}};function Lv(i,t,e,r,o,n){if(r>=$u)return o>30||o%4===0?(Tv(i,t,e,n),Math.round(o/4)):Hu(i,r,o,t,e,n);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Fu({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(i,s.x,s.y,c,o,t,e,n):Hu(i,r,o,t,e,n)}function Cv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(ci(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],m=ci(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),m.controls[0].position.set(p.x2,p.y2),i.addPoint(m)}return a>0?Yu(i,n,s,a):i.addPoint(ci(0,0)),l}function Hu(i,t,e,r,o,n){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;i.addPoint(ci(c,h))}return t<$u?n>0?Yu(i,r,o,n):i.addPoint(ci(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Ku(i,r,o,n)),1}function Tv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Zs(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Zs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Zs(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Zs(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Ku(i,t,e,r)}function ci(i,t){return new or(qu.generateUUID(),new Wu(i,t))}function Zs(i,t,e,r,o,n){let s=ci(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function Yu(i,t,e,r){Xu(i,t,e,r).forEach(n=>i.addPoint(n))}function Ku(i,t,e,r){let o=Xu(i,t,e,r),n=new Pe;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Xu(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new Wu(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=qu.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 Nv,Float32BufferAttribute as Al,Vector3 as Qu}from"three";var Zu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.parameters),r=Math.abs(e.width),o=Math.abs((l=e.height)!=null?l:r),n=Math.abs((c=e.depth)!=null?c:r),s=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=i.parameters,u=new sn(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:H(I({},i),{type:"HelixGeometry"})})}},sn=class extends Nv{constructor(t=!0,e=1,r=1,o=1,n=1,s=1,a=1,l=1,c=1,h=1,p=1,u=1){super();let m=t&&s===1;m&&(u=0),p>100&&(p=100);let f=()=>new Qu,g=new Qu,v=f(),y=f(),b=f(),A,N,S,k,T,d,O,x,L=f(),C=f(),P=f(),$=f(),Y=f(),oe=f(),ae=f(),ne=f(),ge=r-2*l+.001,j=ge/s,R=Math.ceil(a*s),B=R+1,E=ge/R,D=-ge/2,_=h+1,W=2*Math.PI/h,K=Math.PI/2/u,G=.01,V=Math.min((1-p/100)*l,l-G),z=l-V,U=0,se=2,q=u*se+se,J=_*q/se,X=J+_*B,Q=_*(B+q),[Z,le,ie]=[3,3,2].map(ke=>Array(Q*ke).fill(0)),pe=[],Ge=n-l;function xe(ke,xt){let zt=Math.PI/2;d=xt*E,x=2*Math.PI*(d%j)/j+zt,d+=D,O=Math.sin(x)*Ge,T=Math.cos(x)*Ge,t?ke.set(T,O,d):ke.set(T,d,O)}xe(g,-1e-10),xe(v,0),L.copy(g),xe(g,1);let $e=g.distanceTo(v),Te=z+V,ht=$e*R+2*Te,Tt=V,Tr=ht-Te;for(let ke=0;ke<=R;ke++){xe(y,ke),ne.subVectors(y,L).normalize(),L.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),ae.crossVectors(ne,oe).normalize();let xt=ke===0,zt=ke===R,_n=xt?3*Math.PI/2:K,Gn=xt?Tt:Tr,zn=xt?_:X,Rn=xt?0:Q-_,Fn=ne.clone().multiplyScalar(xt?-z:z).add(y),Vn=ne.clone().multiplyScalar(xt?-1:1).normalize();for(let Ht=0;Ht<_;Ht++){let Ri=Ht*W;if(C.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(Ri)),v.copy(ae).multiplyScalar(l*Math.sin(Ri))),P.copy(C).normalize(),xt||zt){m||(U=Rn+Ht,[0,1,2].forEach(pt=>{Z[U*3+pt]=Fn.getComponent(pt),le[U*3+pt]=Vn.getComponent(pt)}),ie[U*2]=+zt,ie[U*2+1]=Ht/h),v.copy(P).multiplyScalar(V),b.addVectors(y,v);for(let pt=0;pt<u;pt++){let Oo=pt*K+_n;$.addVectors(g.copy(ne).multiplyScalar(z*Math.sin(Oo)),v.copy(P).multiplyScalar(z*Math.cos(Oo))),Y.copy($).normalize(),v.addVectors(b,$),$.normalize(),U=zn+pt*_+Ht,[0,1,2].forEach(po=>{Z[U*3+po]=v.getComponent(po),le[U*3+po]=Y.getComponent(po)});let jn=+xt+Math.sin(Oo);ie[U*2]=(Gn+z*jn)/ht,ie[U*2+1]=Ht/h}}v.addVectors(y,C),U=J+ke*_+Ht,[0,1,2].forEach(pt=>{Z[U*3+pt]=v.getComponent(pt),le[U*3+pt]=P.getComponent(pt)}),ie[U*2]=(Te+ke*$e)/ht,ie[U*2+1]=Ht/h}}let gt=B+2*u+se,Nr=1,[co,ho]=m?[Nr,Nr+B-1]:[0,gt-1];for(let ke=co;ke<=ho-1;ke++){let xt=m&&ke===ho-1;for(let zt=0;zt<_-1;zt++)A=ke*_+zt,N=A+1,S=(xt?zt:A)+_,k=(xt?zt+1:N)+_,ke===0?pe.push(N,k,S):ke===gt-2?pe.push(A,N,S):pe.push(A,N,S,N,k,S)}this.setIndex(pe),this.setAttribute("position",new Al(Z,3)),this.setAttribute("normal",new Al(le,3)),this.setAttribute("uv",new Al(ie,2))}};import{IcosahedronBufferGeometry as Mv}from"three";var em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new an(t*.5,n,s):new Mv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(I({},i),{type:"IcosahedronGeometry"})})}},an=class extends Qr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],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(n,s,a,t,e,r),this.type=a}static fromJSON(t){return new an(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as Pv,Shape as Ov}from"three";var tm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s,a;((o=(r=i.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({},(n=t==null?void 0:t.parameters)!=null?n:{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new Ov;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new Pv(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:H(I({},i),{type:"LatheGeometry"})})}};import{BufferGeometry as om,BufferGeometryLoader as Gv,Vector3 as zv,BoxBufferGeometry as im}from"three";import{BufferGeometry as Iv,Vector2 as Dl,Vector3 as rm}from"three";import{Geometry as Av,Face3 as Dv}from"three/examples/jsm/deprecated/Geometry.js";var Bv=["a","b","c"];function Ev(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Bl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function El(i,t,e,r,o,n){let s=Math.min(i,t),a=Math.max(i,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),n[i].edges.push(c),n[t].edges.push(c)}function _v(i,t,e,r){let o,n,s;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)s=t[o],El(s.a,s.b,i,r,s,e),El(s.b,s.c,i,r,s,e),El(s.c,s.a,i,r,s,e)}function ea(i,t,e,r,o){i.push(new Dv(t,e,r,void 0,void 0,o))}function hi(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function ta(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ra=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Iv?t=new Av().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 rm,r,o,n,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],m=new Map;_v(l,c,u,m);let f=[],g,v,y,b,A,N,S;for(let G of Array.from(m.keys())){for(v=m.get(G),y=new rm,A=3/8,N=1/8,S=v.faces.length,S!=2&&(A=.5,N=0,S!=1),y.addVectors(v.a,v.b).multiplyScalar(A),e.set(0,0,0),s=0;s<S;s++){for(b=v.faces[s],a=0;a<3&&(g=l[Ev(b,Bv[a])],!(g!==v.a&&g!==v.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),v.newEdge=f.length,f.push(y)}let k,T,d,O,x,L,C,P=[];for(o=0,n=l.length;o<n;o++){for(L=l[o],x=u[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),T=1-r*Number(k),d=k,r<=2&&(r==2?(T=3/4,d=1/8):r==1||r==0),C=L.clone().multiplyScalar(T),e.set(0,0,0),s=0;s<r;s++)O=x[s],g=O.a!==L?O.a:O.b,e.add(g);e.multiplyScalar(Number(d)),C.add(e),P.push(C)}let $=P.concat(f),Y=P.length,oe,ae,ne,ge=[],j=[],R,B,E,D,_=new Dl,W=new Dl,K=new Dl;for(o=0,n=c.length;o<n;o++)b=c[o],oe=Number(Bl(b.a,b.b,m).newEdge)+Y,ae=Number(Bl(b.b,b.c,m).newEdge)+Y,ne=Number(Bl(b.c,b.a,m).newEdge)+Y,ea(ge,oe,ae,ne,b.materialIndex),ea(ge,b.a,oe,ne,b.materialIndex),ea(ge,b.b,ae,oe,b.materialIndex),ea(ge,b.c,ne,ae,b.materialIndex),p&&(R=h[o],B=R[0],E=R[1],D=R[2],_.set(hi(B.x,E.x),hi(B.y,E.y)),W.set(hi(E.x,D.x),hi(E.y,D.y)),K.set(hi(B.x,D.x),hi(B.y,D.y)),ta(j,_,W,K),ta(j,B,_,K),ta(j,E,W,_),ta(j,D,K,W));t.vertices=$,t.faces=ge,p&&(t.faceVertexUvs[0]=j)}};var it=new zv,nm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s;let e=(s=(n=i.geometry)!=null?n:t==null?void 0:t.geometry)!=null?s:new om().copy(new im(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=I(I({},r),i.parameters);return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){var l;let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=(l=i.geometry)!=null?l:new om().copy(new im(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&n.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=n.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=n),n=new ra(o).modify(a).toBufferGeometry()):(a!==void 0&&(n=a),a=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),a!==void 0&&Object.assign(n,{originalGeometry:a}),delete i.geometry,Object.assign(n,{userData:H(I({},i),{type:"NonParametricGeometry"})})}static loadFromUrl(i,t,e){new Gv(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(n.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(n))})}};var sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s:0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,l=i.shape,c=t*.5,h=e*.5,p=0,u=0,m=2*Math.PI/r;for(let g=0;g<r;g++){let v=m*g,y=p+Math.sin(v)*c,b=u+Math.cos(v)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,v=l.points.length;g<v;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=ut.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(I({},i),{type:"PolygonGeometry"})})}};import{BufferGeometry as Rv,Float32BufferAttribute as _l,Vector2 as yr,Vector3 as lt}from"three";var am=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;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},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=new zl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(I({},i),{type:"PyramidGeometry"})})}};function ln(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Gl(i,t,e,r,o,n){let s=t.clone().sub(i),a=e.clone().sub(i),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(c)),n.addScaledVector(a,r/Math.sin(c))}}function Fv(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var zl=class extends Rv{constructor(t=.5,e=1,r=4,o=1,n=!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=[],u=0,m=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),v=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-m,0),N=new lt(0,m,0),S=new yr(t,-m),k=new yr(g,-m),T=new yr(0,N.y).sub(k),d=new yr(0,N.y).sub(S),O=new yr(T.y,-T.x).normalize(),x=new yr(d.y,-d.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-T.angle())/2)-1e-8;s=Math.min(s,C);let P;{let j=new lt(O.x,O.y,0),R=new lt(Math.cos(v)*j.x,j.y,Math.sin(v)*j.x);P=j.angleTo(R)}let $=s/Math.tan((Math.PI-T.angle())/2),Y=s/Math.tan((Math.PI-P)/2),oe=new lt;if(!n){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let j=u++,R=[],B=S.clone(),E=$/Math.cos(Math.PI/r);B.x-=E;for(let D=0;D<r;D++){let _=D/r*Math.PI*2+f,W=new yr(Math.sin(_),Math.cos(_));ln(B,W,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),R.push(u++)}for(let D=0;D<R.length;D++)l.push(R[D],j,R[(D+1)%R.length])}let ae=[];{let j=new lt,R=new lt,B=new lt,E=new lt,D=new lt,_=new lt;for(let W=0;W<r;W++){let K=W/r*Math.PI*2+f,G=(W+.5)/r*Math.PI*2+f,V=(W+1)/r*Math.PI*2+f,z=new yr(Math.sin(K),Math.cos(K)),U=new yr(Math.sin(G),Math.cos(G)),se=new yr(Math.sin(V),Math.cos(V));ln(S,z,R),ln(S,se,B),ln(O,U,j),Gl(N,R,B,Y,Y,E),c.push(E.x,E.y,E.z),Gl(R,N,B,Y,$,D),c.push(D.x,D.y,D.z),Gl(B,R,N,$,Y,_),c.push(_.x,_.y,_.z),h.push(j.x,j.y,j.z),h.push(j.x,j.y,j.z),h.push(j.x,j.y,j.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=u++,J=u++,X=u++;if(l.push(q,J,X),s>0){{let le=R.clone().add(B).multiplyScalar(.5),ie=N.clone().sub(le).normalize(),Ge=A.clone().sub(le).normalize().add(ie).normalize().multiplyScalar(-1),xe=_.clone().sub(D);ne(le,xe,Ge,T.angle())}let Q,Z;{let le=new lt;ln(x,se,le);let ie=_.clone().add(E).multiplyScalar(.5);ie=Fv(ie,B,N);let pe=_.clone().sub(E);[Q,Z]=ne(ie,pe,le,P,E.y)}{let le=Q,ie=le.clone().setY(0).normalize(),pe=new lt(0,-1,0),Ge=ie.clone().cross(pe);ge(le,ie,pe,Ge)}ae.concat(Z);{let le=T.angle(),ie=Math.PI-le,pe=N.clone();pe.y-=s/Math.sin(le-Math.PI/2);let Ge=new lt,xe=[];for(let Te=0;Te<a;Te++){let ht=[],Tt=Math.PI/2-ie*Te/a,Tr=Math.cos(Tt),gt=Math.sin(Tt),Nr=G;for(let co=0;co<=Te;co++){let ho=Math.cos(Nr),ke=Math.sin(Nr);j.x=Tr*ke,j.y=gt,j.z=Tr*ho,Ge.copy(pe).addScaledVector(j,s),c.push(Ge.x,Ge.y,Ge.z),h.push(j.x,j.y,j.z),p.push(0,0),ht.push(u++),Nr+=Math.PI*2/Te/r}xe.push(ht)}Z.reverse(),xe.push(Z);let $e=xe.length-1;for(let Te=0;Te<$e;Te++){let ht=xe[Te],Tt=xe[Te+1],Tr=ht.length-1;l.push(Tt[1],ht[0],Tt[0]);for(let gt=1;gt<=Tr;gt++)l.push(ht[gt],ht[gt-1],Tt[gt]),l.push(Tt[gt+1],ht[gt],Tt[gt])}}}}}this.setIndex(l),this.setAttribute("position",new _l(c,3)),this.setAttribute("normal",new _l(h,3)),this.setAttribute("uv",new _l(p,2));function ne(j,R,B,E,D){let _=-E/2,W=(Math.PI-E)/2,K=R.clone().normalize().cross(B);j.addScaledVector(B,-s/Math.sin(W));let G=new lt,V=new lt,z=1,U=u,se=[];for(let q=0;q<=a;q++){let J=_+q/a*E;V.set(0,0,0),V.addScaledVector(K,Math.sin(J)),V.addScaledVector(B,Math.cos(J));for(let X=0;X<=z;X++){let Q=X/z-.5;if(G.copy(j),G.addScaledVector(R,Q),G.addScaledVector(V,s),D!=null){let Z=Math.max(0,G.y-D);G.addScaledVector(R,-Z/R.y)}c.push(G.x,G.y,G.z),h.push(V.x,V.y,V.z),p.push(0,0),X===0&&se.push(u),u++}}for(let q=0;q<a;q++)for(let J=0;J<z;J++){let X=U+J+(z+1)*q,Q=X+(z+1),Z=Q+1,le=X+1;l.push(X,Q,le),l.push(Q,Z,le)}return[j.clone().addScaledVector(R,.5),se]}function ge(j,R,B,E){let D=Math.PI/2,_=d.angle()-D,W=[],K=new lt,G=new lt;for(let z=0;z<=a;z++){let U=[],se=z/a;for(let q=0;q<=z;q++){let X=((z?q/z:0)-.5)*b,Q=Math.cos(X),Z=Math.sin(X),le=Math.atan(Math.tan(_)*Q),ie=(D+le)*se,pe=Math.cos(ie),Ge=Math.sin(ie);K.set(0,0,0),K.addScaledVector(R,Ge*Q),K.addScaledVector(B,pe),K.addScaledVector(E,Ge*Z),G.copy(j).addScaledVector(K,s),c.push(G.x,G.y,G.z),h.push(K.x,K.y,K.z),p.push(0,0),U.push(u++)}W.push(U)}let V=W.length-1;for(let z=0;z<V;z++){let U=W[z],se=W[z+1],q=U.length-1;l.push(U[0],se[1],se[0]);for(let J=1;J<=q;J++)l.push(U[J-1],U[J],se[J]),l.push(U[J],se[J+1],se[J])}}}};var oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s,a,l;let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs((l=e.depth)!=null?l:0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function u(N,S,k){return S>e&&k>r?Math.min(N*e/S,N*r/k):S>e?N*e/S:k>r?N*r/k:N}let m=[];m[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let f=h.x,g=p.x,v=p.y,y=h.y;t.addPoint(t.createPoint(f,v)),t.addPoint(t.createPoint(g,v)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,S=t.points.length;N<S;N++)t.points[N].roundness=m[N],N>0&&m[N]!==m[N-1]&&(b=!1);b&&(t.roundness=m[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=ut.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(I({},i),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as Vv}from"three";var lm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;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},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=i.parameters,h=new Vv(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(I({},i),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as jv}from"three";var cm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.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(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new jv(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:H(I({},i),{type:"PlaneGeometry"})})}};import{BufferGeometry as Uv,Float32BufferAttribute as Rl,Vector3 as kv}from"three";var hm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Fl(t,e,r,o,n,s);return Object.assign(a,{userData:H(I({},i),{type:"BackdropGeometry"})})}},Fl=class extends Uv{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],h=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-h,o),o*=Math.PI/180;let p=[],u=(G=0,V=0,z=0)=>new kv(G,V,z),m=u(),f=u(),[g,v,y]=[e/2,t/2,r/2],b=-v,A=+v,[N,S,k]=[u(b,-g,+y),u(b,-g,-y),u(b,+g,-y)],[T,d]=[G=>Math.sin(G),G=>Math.cos(G)],O=(G,V=!1)=>Math.sin(G-Math.PI/(1+ +V)),x=(G,V=!1)=>Math.cos(G-Math.PI/(1+ +V));k.y=T(o)*e-g;let L=d(o)*e-y;o<=Math.PI/2?k.z=Math.min(L,N.z-h):S.z=Math.min(S.z-L-y,N.z-h),m.subVectors(N,S),f.subVectors(k,S);let C=Math.min(m.length(),f.length())*n/100,P=C*Math.tan(o/2),$=C/Math.cos(o/2),Y=m.clone().normalize().add(f.normalize()).setLength($).add(S);m.set(0,O(o,!0),x(o,!0)),p.push([k,m.clone()]);let oe=(Math.PI-o)/s;for(let G=0;G<=s;G++){let V=Math.PI/2+o+G*oe;m.set(0,T(V)*P,d(V)*P),m.add(Y),f.set(0,O(V),x(V)),p.push([m.clone(),f.clone()])}p.push([N,u(0,1,0)]);let ae=Math.sin(oe/2)*P*2,ne=p.length-1,ge=p[0][0].distanceTo(p[1][0]),j=p[ne-1][0].distanceTo(p[ne][0]),R=ge+ae*s+j;p[0].push(1);for(let G=0;G<=s;G++)p[G+1].push(1-(ge+G*ae)/R);p[ne].push(0);let[B,E,D]=p[0],_,W,K;for(let G=1;G<p.length;G++)[_,W,K]=p[G],a.push(b,B.y,B.z,b,_.y,_.z,A,B.y,B.z,A,B.y,B.z,b,_.y,_.z,A,_.y,_.z),l.push(0,E.y,E.z,0,W.y,W.z,0,E.y,E.z,0,E.y,E.z,0,W.y,W.z,0,W.y,W.z),c.push(0,D,0,K,1,D,1,D,0,K,1,K),[B,E,D]=[_,W,K];this.setAttribute("position",new Rl(a,3)),this.setAttribute("normal",new Rl(l,3)),this.setAttribute("uv",new Rl(c,2))}};var pm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,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,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s:0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,h=i.shape,p=t*.5,u=e*.5,m=0,f=0,g=s*Math.PI/360/o,v=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let S=g*N,k=m+Math.sin(S)*p,T=f+Math.cos(S)*u;h.addPoint(h.createPoint(k,T))}}else for(let N=0;N<o;N++){let S=m+Math.cos(v)*p,k=f+Math.sin(v)*u;h.addPoint(h.createPoint(S,k)),v+=g,S=m+Math.cos(v)*y,k=f+Math.sin(v)*b,N<=o,h.addPoint(h.createPoint(S,k)),v+=g}h.isClosed=!0;for(let N=0,S=h.points.length;N<S;N++)h.points[N].roundness=n;h.roundness=n,h.update();let A=ut.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(I({},i),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as Hv}from"three";var ia=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new Hv(t,e);return Object.assign(r,{userData:H(I({},i),{type:"TextFrameGeometry"})})}};var um=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),n=Math.abs((l=e.depth)!=null?l:e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=qv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(I({},i),{type:"TorusGeometry"})})}};function qv(i,t,e,r,o,n,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new sn(!0,i,t,e,r,o,n,s,a,l,c,h)}import{TorusKnotBufferGeometry as Wv}from"three";var mm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width),tube:(s=e.tube)!=null?s:e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let l=new Wv(a,e,r,o,n,s);return Object.assign(l,{userData:H(I({},i),{type:"TorusKnotGeometry"})})}};var dm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs((s=e.depth)!=null?s:0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,l=i.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 u=0,m=l.points.length;u<m;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=ut.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(I({},i),{type:"TriangleGeometry"})})}};var cn={};Nc(cn,{addBarycentricAttribute:()=>Xv,fixUvs:()=>Zv,loadFromUrl:()=>Qv,resizeGeometry:()=>Kv,roundShapePolygon:()=>Yv});import{BufferGeometryLoader as $v,Float32BufferAttribute as Jv,Vector3 as Vl}from"three";var fm=function(i,t){let e=t.x-i.x,r=t.y-i.y,o=Math.sqrt(e*e+r*r),n=e/o,s=r/o,a=Math.atan2(s,n);return{x:e,y:r,len:o,nx:n,ny:s,ang:a}},Yv=(i,t,e)=>{let r,o,n,s,a,l,c,h,p,u,m,f,g,v,y=t.length;for(s=t[y-2],i.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=fm(a,s),A=fm(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,m=Math.asin(c),p=1,u=!1,h<0?m<0?m=Math.PI+m:(m=Math.PI-m,p=-1,u=!0):m>0&&(p=-1,u=!0),f=m/2,v=Math.abs(Math.cos(f)*e/Math.sin(f)),v>Math.min(b.len/2,A.len/2)?(v=Math.min(b.len/2,A.len/2),g=Math.abs(v*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*v,n=a.y+A.ny*v,o+=-A.ny*g*p,n+=A.nx*g*p,i.absarc(o,n,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,u),s=a,a=l}i.closePath()},Kv=(i,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=i.userData.parameters,n,s,a;t===0?(t=o.width,n=1):n=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,i.scale(n,s,a),o.width=t,o.height=e,o.depth=r},Xv=(i,t)=>{let e=[new Vl(1,0,0),new Vl(0,1,0),new Vl(0,0,1)],r=i.attributes.position,o=new Float32Array(r.count*3);for(let n=0,s=r.count;n<s;n++)e[n%3].toArray(o,n*3);i.setAttribute(t,new Jv(o,3))},Qv=i=>new Promise(t=>{new $v().load(i,r=>t(r))}),Zv=(i,t,e)=>{let r=i.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let n=r.getX(o),s=r.getY(o);r.setXY(o,(n+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as Jm,BufferAttribute as Ym,Uint32BufferAttribute as sc,Float32BufferAttribute as ac,Matrix4 as lw,Vector3 as Ca}from"three";var eS,na=new Promise(i=>{eS=i});import{BufferGeometryLoader as sw}from"three";import{DoubleSide as rw,EventDispatcher as ow,Matrix3 as iw,Vector3 as nc}from"three";import{NormalBlending as wS,ShaderMaterial as LS,FrontSide as CS}from"three";import{CubeReflectionMapping as mS,CubeRefractionMapping as dS,CubeUVReflectionMapping as fS,LinearEncoding as vm,sRGBEncoding as yS}from"three";var hn=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 tS}from"three";var ue=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=tS.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,n,s){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}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 ue&&(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 jl=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 jl;import{Vector2 as ym}from"three";import{MathUtils as rS}from"three";var de=class extends ue{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,n){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=rS.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,n);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,n,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o!=null?o:this.uuid,e.getTempVar(o,n!=null?n:this.getType(e),s,this.getLabel()).name}};var Fe=class extends de{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,n,s,a){o=e.getUUID(o!=null?o:this.getUUID()),n=n!=null?n:this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var wt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof ym?e:new ym(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as gm}from"three";var Lt=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof gm?e:new gm(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Color as oS}from"three";var Et=class extends oS{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}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 _r=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Et?e:new Et(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var iS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,xm=/[a-z_0-9]+/gi,re=class extends de{constructor(e,r,o,n,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,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,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=xm.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],m=u[0],f=this.isMethod?!this.getInputByName(m):!0,g=m;if(this.keywords[m]||this.useKeywords&&f&&nt.containsKeyword(m)){let v=this.keywords[m];if(!v){let y=nt.getKeywordData(m);y.cache&&(v=e.keywords[m]),v=v||nt.getKeyword(m,e),y.cache&&(e.keywords[m]=v)}g=v.build(e)}m!==g&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+m.length+l),l+=g.length-m.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,n){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=o!=null?o:{},this.keywords=n!=null?n:{},this.isMethod){let s=iS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(xm);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 n={};for(let s in this.keywords)n[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=n,(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 nS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ul=class extends de{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ul.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,s){this.src=e||"";let a,l,c="",h=nS.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,n,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=Ul;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var sS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
- )*?)}`,"gim"),aS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),pi=class extends de{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=sS.exec(e);if(r){let o=r[2],n;for(;n=aS.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ui=class extends de{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:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,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 ui});nt.addKeyword("uv2",function(){return new ui(1)});import{LinearEncoding as lS,sRGBEncoding as cS}from"three";var wo=class extends de{constructor(e=new ue,r){super("v4");this.nodeType="ColorSpace";this.factor=new ue;this.input=e,this.method=r!=null?r:wo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case lS:return["Linear"];case cS:return["sRGB"];default:return[]}}generate(e,r){var l;let o=this.input.build(e,"v4"),n=this.getType(e),s=wo.Nodes[this.method],a=e.include(s);if(a===wo.LINEAR_TO_LINEAR)return e.format(o,n,r);if(((l=s.inputs)==null?void 0:l.length)===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=wo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=wo.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}},Pt=wo;Pt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
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
- `)),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
- `))},Pt.LINEAR_TO_LINEAR="LinearToLinear",Pt.SRGB_TO_LINEAR="sRGBToLinear",Pt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends re{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};import{Texture as hS}from"three";var gr=class extends hS{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 n=0;n<o.length;n++)t.images[o.uuid].url[n]=bm(o[n])}else t.images[o.uuid].url=bm(o)}return e}};function bm(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?pS(i):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var mi;function pS(i){if(/^data:/i.test(i.src))return i.src;let t;if(i instanceof HTMLCanvasElement)t=i;else{mi===void 0&&(mi=document.createElement("canvas")),mi.width=i.width,mi.height=i.height;let r=mi.getContext("2d");i instanceof ImageData?r.putImageData(i,0,0):r.drawImage(i,0,0,i.width,i.height),t=mi}let e=i.src.startsWith("blob:")?i.fileName:i.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Ot=class extends Fe{constructor(e=new gr,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new ui,this.bias=o,this.project=n!==void 0?n:!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),n=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+", "+n+", "+s+" )":l=a+"( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=(p=this.colorSpace)!=null?p:new Pt(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,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var pn=class extends de{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,n,s){n=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],u=this.inputs[h]||this.inputs[p.name];c.push(u.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,n,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 n=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(o=n.inputs)!=null&&o.length){r.inputs={};for(let s=0;s<n.inputs.length;s++){let a=n.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var kl=class extends de{constructor(e=new ue,r=new ue,o=kl.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 n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+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}},_t=kl;_t.ADD="+",_t.SUB="-",_t.MUL="*",_t.DIV="/";var De=class extends de{constructor(e=new ue,r=De.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:n=r,typeof o!="string"?this.c=o:n=o,this.method=n,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case De.MIX:case De.CLAMP:case De.REFRACT:case De.SMOOTHSTEP:case De.FACEFORWARD:return 3;case De.MIN:case De.MAX:case De.MOD:case De.STEP:case De.REFLECT:case De.DISTANCE:case De.DOT:case De.CROSS:case De.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,n=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>n?this.a.getType(e):o>n?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case De.LENGTH:case De.DISTANCE:case De.DOT:return"f";case De.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,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 De.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case De.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case De.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case De.STEP:o=this.a.build(e,a===1?"f":h),n=this.b.build(e,h);break;case De.MIN:case De.MAX:case De.MOD:o=this.a.build(e,h),n=this.b.build(e,l===1?"f":h);break;case De.REFRACT:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,"f");break;case De.MIX:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(n=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let u=[];u.push(o),n&&u.push(n),s&&u.push(s);let m=this.getNumInputs(e);if(u.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, currently ${u.length}.`);return e.format(this.method+"( "+u.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof ue?e.b.clone():e.b,this.c=e.c instanceof ue?e.c.clone():e.c,this.method=e.method,this}},ye=De;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 de{constructor(e=new ue,r=new ue,o=new ue){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){var c,h,p,u;let s=new pn(di.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Pt(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 Pt(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 Pt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(u=this.colorSpaceBR)!=null?u:new Pt(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,n=this.bias||e.context.roughness,s=new pn(di.Nodes.roughnessToMip,[n]),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 _t(l,new te(1).setReadonly(!0),_t.ADD)),u=new ye(h,p,c,ye.MIX);return e.format(u.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}},fi=di;fi.Nodes=function(){let e=new pi(`struct TextureCubeUVData {
1
+ var zm=Object.create;var Sa=Object.defineProperty;var Rm=Object.getOwnPropertyDescriptor;var Fm=Object.getOwnPropertyNames;var Vm=Object.getPrototypeOf,Um=Object.prototype.hasOwnProperty;var jm=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),cc=(n,t)=>{for(var e in t)Sa(n,e,{get:t[e],enumerable:!0})},km=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Fm(t))!Um.call(n,o)&&o!==e&&Sa(n,o,{get:()=>t[o],enumerable:!(r=Rm(t,o))||r.enumerable});return n};var Hm=(n,t,e)=>(e=n!=null?zm(Vm(n)):{},km(t||!n||!n.__esModule?Sa(e,"default",{value:n,enumerable:!0}):e,n));var nm=jm((ya,im)=>{(function(n,t){typeof ya=="object"&&typeof im<"u"?t(ya):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(ya,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,u,d,m,g,x,y,b=t[0].length,C=t.length;if(C<b)throw new TypeError("Invalid matrix: m < n");for(var S=[],v=[],z=[],w=e==="f"?C:b,f=g=u=0;f<C;f++)v[f]=new Array(w).fill(0);for(f=0;f<b;f++)z[f]=new Array(b).fill(0);var D,L=new Array(b).fill(0);for(f=0;f<C;f++)for(s=0;s<b;s++)v[f][s]=t[f][s];for(f=0;f<b;f++){for(S[f]=u,m=0,l=f+1,s=f;s<C;s++)m+=Math.pow(v[s][f],2);if(m<i)u=0;else for(d=(p=v[f][f])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,v[f][f]=p-u,s=l;s<b;s++){for(m=0,a=f;a<C;a++)m+=v[a][f]*v[a][s];for(p=m/d,a=f;a<C;a++)v[a][s]=v[a][s]+p*v[a][f]}for(L[f]=u,m=0,s=l;s<b;s++)m+=Math.pow(v[f][s],2);if(m<i)u=0;else{for(d=(p=v[f][f+1])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,v[f][f+1]=p-u,s=l;s<b;s++)S[s]=v[f][s]/d;for(s=l;s<C;s++){for(m=0,a=l;a<b;a++)m+=v[s][a]*v[f][a];for(a=l;a<b;a++)v[s][a]=v[s][a]+m*S[a]}}g<(x=Math.abs(L[f])+Math.abs(S[f]))&&(g=x)}if(r)for(f=b-1;0<=f;f--){if(u!==0){for(d=v[f][f+1]*u,s=l;s<b;s++)z[s][f]=v[f][s]/d;for(s=l;s<b;s++){for(m=0,a=l;a<b;a++)m+=v[f][a]*z[a][s];for(a=l;a<b;a++)z[a][s]=z[a][s]+m*z[a][f]}}for(s=l;s<b;s++)z[f][s]=0,z[s][f]=0;z[f][f]=1,u=S[f],l=f}if(e){if(e==="f")for(f=b;f<C;f++){for(s=b;s<C;s++)v[f][s]=0;v[f][f]=1}for(f=b-1;0<=f;f--){for(l=f+1,u=L[f],s=l;s<w;s++)v[f][s]=0;if(u!==0){for(d=v[f][f]*u,s=l;s<w;s++){for(m=0,a=l;a<C;a++)m+=v[a][f]*v[a][s];for(p=m/d,a=f;a<C;a++)v[a][s]=v[a][s]+p*v[a][f]}for(s=f;s<C;s++)v[s][f]=v[s][f]/u}else for(s=f;s<C;s++)v[s][f]=0;v[f][f]=v[f][f]+1}}for(o*=g,a=b-1;0<=a;a--)for(var P=0;P<50;P++){for(D=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){D=!0;break}if(Math.abs(L[l-1])<=o)break}if(!D){for(h=0,c=l-(m=1),f=l;f<a+1&&(p=m*S[f],S[f]=h*S[f],!(Math.abs(p)<=o));f++)if(u=L[f],L[f]=Math.sqrt(p*p+u*u),h=u/(d=L[f]),m=-p/d,e)for(s=0;s<C;s++)x=v[s][c],y=v[s][f],v[s][c]=x*h+y*m,v[s][f]=-x*m+y*h}if(y=L[a],l===a){if(y<0&&(L[a]=-y,r))for(s=0;s<b;s++)z[s][a]=-z[s][a];break}for(g=L[l],p=(((x=L[a-1])-y)*(x+y)+((u=S[a-1])-(d=S[a]))*(u+d))/(2*d*x),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(x/(p<0?p-u:p+u)-d))/g,f=l+(m=h=1);f<a+1;f++){if(u=S[f],x=L[f],d=m*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(S[f-1]=y))+u*(m=d/y),u=-g*m+u*h,d=x*m,x*=h,r)for(s=0;s<b;s++)g=z[s][f-1],y=z[s][f],z[s][f-1]=g*h+y*m,z[s][f]=-g*m+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(L[f-1]=y))*u+(m=d/y)*x,g=-m*u+h*x,e)for(s=0;s<C;s++)x=v[s][f-1],y=v[s][f],v[s][f-1]=x*h+y*m,v[s][f]=-x*m+y*h}S[l]=0,S[a]=p,L[a]=g}for(f=0;f<b;f++)L[f]<o&&(L[f]=0);return{u:v,q:L,v:z}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as M1,Loader as P1}from"three";function hc(n){return Array.isArray(n)?n:[n]}var qm=typeof global=="object"&&global&&global.Object===Object&&global,Sn=qm;var Wm=typeof self=="object"&&self&&self.Object===Object&&self,$m=Sn||Wm||Function("return this")(),Fe=$m;var Jm=Fe.Symbol,nt=Jm;var pc=Object.prototype,Ym=pc.hasOwnProperty,Km=pc.toString,wi=nt?nt.toStringTag:void 0;function Xm(n){var t=Ym.call(n,wi),e=n[wi];try{n[wi]=void 0;var r=!0}catch{}var o=Km.call(n);return r&&(t?n[wi]=e:delete n[wi]),o}var uc=Xm;var Qm=Object.prototype,Zm=Qm.toString;function ef(n){return Zm.call(n)}var dc=ef;var tf="[object Null]",rf="[object Undefined]",mc=nt?nt.toStringTag:void 0;function of(n){return n==null?n===void 0?rf:tf:mc&&mc in Object(n)?uc(n):dc(n)}var vt=of;function nf(n){return n!=null&&typeof n=="object"}var Qe=nf;var sf="[object Symbol]";function af(n){return typeof n=="symbol"||Qe(n)&&vt(n)==sf}var ho=af;function lf(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 wn=lf;var cf=Array.isArray,Ve=cf;var hf=1/0,fc=nt?nt.prototype:void 0,gc=fc?fc.toString:void 0;function yc(n){if(typeof n=="string")return n;if(Ve(n))return wn(n,yc)+"";if(ho(n))return gc?gc.call(n):"";var t=n+"";return t=="0"&&1/n==-hf?"-0":t}var xc=yc;function pf(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Ze=pf;function uf(n){return n}var Nn=uf;var df="[object AsyncFunction]",mf="[object Function]",ff="[object GeneratorFunction]",gf="[object Proxy]";function yf(n){if(!Ze(n))return!1;var t=vt(n);return t==mf||t==ff||t==df||t==gf}var po=yf;var xf=Fe["__core-js_shared__"],Ln=xf;var bc=function(){var n=/[^.]+$/.exec(Ln&&Ln.keys&&Ln.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function bf(n){return!!bc&&bc in n}var vc=bf;var vf=Function.prototype,Sf=vf.toString;function wf(n){if(n!=null){try{return Sf.call(n)}catch{}try{return n+""}catch{}}return""}var pr=wf;var Nf=/[\\^$.*+?()[\]{}|]/g,Lf=/^\[object .+?Constructor\]$/,Cf=Function.prototype,Tf=Object.prototype,Mf=Cf.toString,Pf=Tf.hasOwnProperty,If=RegExp("^"+Mf.call(Pf).replace(Nf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Of(n){if(!Ze(n)||vc(n))return!1;var t=po(n)?If:Lf;return t.test(pr(n))}var Sc=Of;function Af(n,t){return n?.[t]}var wc=Af;function Df(n,t){var e=wc(n,t);return Sc(e)?e:void 0}var dt=Df;var Bf=dt(Fe,"WeakMap"),Cn=Bf;var Nc=Object.create,Ef=function(){function n(){}return function(t){if(!Ze(t))return{};if(Nc)return Nc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Lc=Ef;function _f(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 Cc=_f;function Gf(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Tn=Gf;var zf=800,Rf=16,Ff=Date.now;function Vf(n){var t=0,e=0;return function(){var r=Ff(),o=Rf-(r-e);if(e=r,o>0){if(++t>=zf)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Tc=Vf;function Uf(n){return function(){return n}}var Mc=Uf;var jf=function(){try{var n=dt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),uo=jf;var kf=uo?function(n,t){return uo(n,"toString",{configurable:!0,enumerable:!1,value:Mc(t),writable:!0})}:Nn,Pc=kf;var Hf=Tc(Pc),Mn=Hf;function qf(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Ic=qf;var Wf=9007199254740991,$f=/^(?:0|[1-9]\d*)$/;function Jf(n,t){var e=typeof n;return t=t??Wf,!!t&&(e=="number"||e!="symbol"&&$f.test(n))&&n>-1&&n%1==0&&n<t}var Pn=Jf;function Yf(n,t,e){t=="__proto__"&&uo?uo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var mo=Yf;function Kf(n,t){return n===t||n!==n&&t!==t}var Lr=Kf;var Xf=Object.prototype,Qf=Xf.hasOwnProperty;function Zf(n,t,e){var r=n[t];(!(Qf.call(n,t)&&Lr(r,e))||e===void 0&&!(t in n))&&mo(n,t,e)}var In=Zf;function eg(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?mo(e,a,l):In(e,a,l)}return e}var Tt=eg;var Oc=Math.max;function tg(n,t,e){return t=Oc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Oc(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),Cc(n,this,a)}}var On=tg;function rg(n,t){return Mn(On(n,t,Nn),n+"")}var Ac=rg;var og=9007199254740991;function ig(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=og}var An=ig;function ng(n){return n!=null&&An(n.length)&&!po(n)}var Cr=ng;function sg(n,t,e){if(!Ze(e))return!1;var r=typeof t;return(r=="number"?Cr(e)&&Pn(t,e.length):r=="string"&&t in e)?Lr(e[t],n):!1}var Dc=sg;function ag(n){return Ac(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&&Dc(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 Bc=ag;var lg=Object.prototype;function cg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||lg;return n===e}var fo=cg;function hg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Ec=hg;var pg="[object Arguments]";function ug(n){return Qe(n)&&vt(n)==pg}var wa=ug;var _c=Object.prototype,dg=_c.hasOwnProperty,mg=_c.propertyIsEnumerable,fg=wa(function(){return arguments}())?wa:function(n){return Qe(n)&&dg.call(n,"callee")&&!mg.call(n,"callee")},Wr=fg;function gg(){return!1}var Gc=gg;var Fc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zc=Fc&&typeof module=="object"&&module&&!module.nodeType&&module,yg=zc&&zc.exports===Fc,Rc=yg?Fe.Buffer:void 0,xg=Rc?Rc.isBuffer:void 0,bg=xg||Gc,go=bg;var vg="[object Arguments]",Sg="[object Array]",wg="[object Boolean]",Ng="[object Date]",Lg="[object Error]",Cg="[object Function]",Tg="[object Map]",Mg="[object Number]",Pg="[object Object]",Ig="[object RegExp]",Og="[object Set]",Ag="[object String]",Dg="[object WeakMap]",Bg="[object ArrayBuffer]",Eg="[object DataView]",_g="[object Float32Array]",Gg="[object Float64Array]",zg="[object Int8Array]",Rg="[object Int16Array]",Fg="[object Int32Array]",Vg="[object Uint8Array]",Ug="[object Uint8ClampedArray]",jg="[object Uint16Array]",kg="[object Uint32Array]",Pe={};Pe[_g]=Pe[Gg]=Pe[zg]=Pe[Rg]=Pe[Fg]=Pe[Vg]=Pe[Ug]=Pe[jg]=Pe[kg]=!0;Pe[vg]=Pe[Sg]=Pe[Bg]=Pe[wg]=Pe[Eg]=Pe[Ng]=Pe[Lg]=Pe[Cg]=Pe[Tg]=Pe[Mg]=Pe[Pg]=Pe[Ig]=Pe[Og]=Pe[Ag]=Pe[Dg]=!1;function Hg(n){return Qe(n)&&An(n.length)&&!!Pe[vt(n)]}var Vc=Hg;function qg(n){return function(t){return n(t)}}var yo=qg;var Uc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ni=Uc&&typeof module=="object"&&module&&!module.nodeType&&module,Wg=Ni&&Ni.exports===Uc,Na=Wg&&Sn.process,$g=function(){try{var n=Ni&&Ni.require&&Ni.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),ur=$g;var jc=ur&&ur.isTypedArray,Jg=jc?yo(jc):Vc,Dn=Jg;var Yg=Object.prototype,Kg=Yg.hasOwnProperty;function Xg(n,t){var e=Ve(n),r=!e&&Wr(n),o=!e&&!r&&go(n),i=!e&&!r&&!o&&Dn(n),s=e||r||o||i,a=s?Ec(n.length,String):[],l=a.length;for(var c in n)(t||Kg.call(n,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Pn(c,l)))&&a.push(c);return a}var Bn=Xg;function Qg(n,t){return function(e){return n(t(e))}}var En=Qg;var Zg=En(Object.keys,Object),kc=Zg;var ey=Object.prototype,ty=ey.hasOwnProperty;function ry(n){if(!fo(n))return kc(n);var t=[];for(var e in Object(n))ty.call(n,e)&&e!="constructor"&&t.push(e);return t}var Hc=ry;function oy(n){return Cr(n)?Bn(n):Hc(n)}var xo=oy;function iy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var qc=iy;var ny=Object.prototype,sy=ny.hasOwnProperty;function ay(n){if(!Ze(n))return qc(n);var t=fo(n),e=[];for(var r in n)r=="constructor"&&(t||!sy.call(n,r))||e.push(r);return e}var Wc=ay;function ly(n){return Cr(n)?Bn(n,!0):Wc(n)}var qt=ly;var cy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,hy=/^\w*$/;function py(n,t){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||ho(n)?!0:hy.test(n)||!cy.test(n)||t!=null&&n in Object(t)}var $c=py;var uy=dt(Object,"create"),dr=uy;function dy(){this.__data__=dr?dr(null):{},this.size=0}var Jc=dy;function my(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Yc=my;var fy="__lodash_hash_undefined__",gy=Object.prototype,yy=gy.hasOwnProperty;function xy(n){var t=this.__data__;if(dr){var e=t[n];return e===fy?void 0:e}return yy.call(t,n)?t[n]:void 0}var Kc=xy;var by=Object.prototype,vy=by.hasOwnProperty;function Sy(n){var t=this.__data__;return dr?t[n]!==void 0:vy.call(t,n)}var Xc=Sy;var wy="__lodash_hash_undefined__";function Ny(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=dr&&t===void 0?wy:t,this}var Qc=Ny;function bo(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])}}bo.prototype.clear=Jc;bo.prototype.delete=Yc;bo.prototype.get=Kc;bo.prototype.has=Xc;bo.prototype.set=Qc;var La=bo;function Ly(){this.__data__=[],this.size=0}var Zc=Ly;function Cy(n,t){for(var e=n.length;e--;)if(Lr(n[e][0],t))return e;return-1}var Tr=Cy;var Ty=Array.prototype,My=Ty.splice;function Py(n){var t=this.__data__,e=Tr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():My.call(t,e,1),--this.size,!0}var eh=Py;function Iy(n){var t=this.__data__,e=Tr(t,n);return e<0?void 0:t[e][1]}var th=Iy;function Oy(n){return Tr(this.__data__,n)>-1}var rh=Oy;function Ay(n,t){var e=this.__data__,r=Tr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var oh=Ay;function vo(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])}}vo.prototype.clear=Zc;vo.prototype.delete=eh;vo.prototype.get=th;vo.prototype.has=rh;vo.prototype.set=oh;var Mr=vo;var Dy=dt(Fe,"Map"),Pr=Dy;function By(){this.size=0,this.__data__={hash:new La,map:new(Pr||Mr),string:new La}}var ih=By;function Ey(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var nh=Ey;function _y(n,t){var e=n.__data__;return nh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Ir=_y;function Gy(n){var t=Ir(this,n).delete(n);return this.size-=t?1:0,t}var sh=Gy;function zy(n){return Ir(this,n).get(n)}var ah=zy;function Ry(n){return Ir(this,n).has(n)}var lh=Ry;function Fy(n,t){var e=Ir(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var ch=Fy;function So(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])}}So.prototype.clear=ih;So.prototype.delete=sh;So.prototype.get=ah;So.prototype.has=lh;So.prototype.set=ch;var Li=So;var Vy="Expected a function";function Ca(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(Vy);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(Ca.Cache||Li),e}Ca.Cache=Li;var hh=Ca;var Uy=500;function jy(n){var t=hh(n,function(r){return e.size===Uy&&e.clear(),r}),e=t.cache;return t}var ph=jy;var ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Hy=/\\(\\)?/g,qy=ph(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(ky,function(e,r,o,i){t.push(o?i.replace(Hy,"$1"):r||e)}),t}),uh=qy;function Wy(n){return n==null?"":xc(n)}var dh=Wy;function $y(n,t){return Ve(n)?n:$c(n,t)?[n]:uh(dh(n))}var wo=$y;var Jy=1/0;function Yy(n){if(typeof n=="string"||ho(n))return n;var t=n+"";return t=="0"&&1/n==-Jy?"-0":t}var _n=Yy;function Ky(n,t){t=wo(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 mh=Ky;function Xy(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var No=Xy;var fh=nt?nt.isConcatSpreadable:void 0;function Qy(n){return Ve(n)||Wr(n)||!!(fh&&n&&n[fh])}var gh=Qy;function yh(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=gh),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?yh(a,t-1,e,r,o):No(o,a):r||(o[o.length]=a)}return o}var xh=yh;function Zy(n){var t=n==null?0:n.length;return t?xh(n,1):[]}var bh=Zy;function ex(n){return Mn(On(n,void 0,bh),n+"")}var vh=ex;var tx=En(Object.getPrototypeOf,Object),Lo=tx;var rx="[object Object]",ox=Function.prototype,ix=Object.prototype,Sh=ox.toString,nx=ix.hasOwnProperty,sx=Sh.call(Object);function ax(n){if(!Qe(n)||vt(n)!=rx)return!1;var t=Lo(n);if(t===null)return!0;var e=nx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Sh.call(e)==sx}var Gn=ax;function lx(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 wh=lx;function cx(){this.__data__=new Mr,this.size=0}var Nh=cx;function hx(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Lh=hx;function px(n){return this.__data__.get(n)}var Ch=px;function ux(n){return this.__data__.has(n)}var Th=ux;var dx=200;function mx(n,t){var e=this.__data__;if(e instanceof Mr){var r=e.__data__;if(!Pr||r.length<dx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Li(r)}return e.set(n,t),this.size=e.size,this}var Mh=mx;function Co(n){var t=this.__data__=new Mr(n);this.size=t.size}Co.prototype.clear=Nh;Co.prototype.delete=Lh;Co.prototype.get=Ch;Co.prototype.has=Th;Co.prototype.set=Mh;var zn=Co;function fx(n,t){return n&&Tt(t,xo(t),n)}var Ph=fx;function gx(n,t){return n&&Tt(t,qt(t),n)}var Ih=gx;var Bh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Oh=Bh&&typeof module=="object"&&module&&!module.nodeType&&module,yx=Oh&&Oh.exports===Bh,Ah=yx?Fe.Buffer:void 0,Dh=Ah?Ah.allocUnsafe:void 0;function xx(n,t){if(t)return n.slice();var e=n.length,r=Dh?Dh(e):new n.constructor(e);return n.copy(r),r}var Rn=xx;function bx(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 Eh=bx;function vx(){return[]}var Fn=vx;var Sx=Object.prototype,wx=Sx.propertyIsEnumerable,_h=Object.getOwnPropertySymbols,Nx=_h?function(n){return n==null?[]:(n=Object(n),Eh(_h(n),function(t){return wx.call(n,t)}))}:Fn,To=Nx;function Lx(n,t){return Tt(n,To(n),t)}var Gh=Lx;var Cx=Object.getOwnPropertySymbols,Tx=Cx?function(n){for(var t=[];n;)No(t,To(n)),n=Lo(n);return t}:Fn,Vn=Tx;function Mx(n,t){return Tt(n,Vn(n),t)}var zh=Mx;function Px(n,t,e){var r=t(n);return Ve(n)?r:No(r,e(n))}var Un=Px;function Ix(n){return Un(n,xo,To)}var Rh=Ix;function Ox(n){return Un(n,qt,Vn)}var jn=Ox;var Ax=dt(Fe,"DataView"),kn=Ax;var Dx=dt(Fe,"Promise"),Hn=Dx;var Bx=dt(Fe,"Set"),qn=Bx;var Fh="[object Map]",Ex="[object Object]",Vh="[object Promise]",Uh="[object Set]",jh="[object WeakMap]",kh="[object DataView]",_x=pr(kn),Gx=pr(Pr),zx=pr(Hn),Rx=pr(qn),Fx=pr(Cn),$r=vt;(kn&&$r(new kn(new ArrayBuffer(1)))!=kh||Pr&&$r(new Pr)!=Fh||Hn&&$r(Hn.resolve())!=Vh||qn&&$r(new qn)!=Uh||Cn&&$r(new Cn)!=jh)&&($r=function(n){var t=vt(n),e=t==Ex?n.constructor:void 0,r=e?pr(e):"";if(r)switch(r){case _x:return kh;case Gx:return Fh;case zx:return Vh;case Rx:return Uh;case Fx:return jh}return t});var Mo=$r;var Vx=Object.prototype,Ux=Vx.hasOwnProperty;function jx(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Ux.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Hh=jx;var kx=Fe.Uint8Array,Ta=kx;function Hx(n){var t=new n.constructor(n.byteLength);return new Ta(t).set(new Ta(n)),t}var Po=Hx;function qx(n,t){var e=t?Po(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var qh=qx;var Wx=/\w*$/;function $x(n){var t=new n.constructor(n.source,Wx.exec(n));return t.lastIndex=n.lastIndex,t}var Wh=$x;var $h=nt?nt.prototype:void 0,Jh=$h?$h.valueOf:void 0;function Jx(n){return Jh?Object(Jh.call(n)):{}}var Yh=Jx;function Yx(n,t){var e=t?Po(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Wn=Yx;var Kx="[object Boolean]",Xx="[object Date]",Qx="[object Map]",Zx="[object Number]",e0="[object RegExp]",t0="[object Set]",r0="[object String]",o0="[object Symbol]",i0="[object ArrayBuffer]",n0="[object DataView]",s0="[object Float32Array]",a0="[object Float64Array]",l0="[object Int8Array]",c0="[object Int16Array]",h0="[object Int32Array]",p0="[object Uint8Array]",u0="[object Uint8ClampedArray]",d0="[object Uint16Array]",m0="[object Uint32Array]";function f0(n,t,e){var r=n.constructor;switch(t){case i0:return Po(n);case Kx:case Xx:return new r(+n);case n0:return qh(n,e);case s0:case a0:case l0:case c0:case h0:case p0:case u0:case d0:case m0:return Wn(n,e);case Qx:return new r;case Zx:case r0:return new r(n);case e0:return Wh(n);case t0:return new r;case o0:return Yh(n)}}var Kh=f0;function g0(n){return typeof n.constructor=="function"&&!fo(n)?Lc(Lo(n)):{}}var $n=g0;var y0="[object Map]";function x0(n){return Qe(n)&&Mo(n)==y0}var Xh=x0;var Qh=ur&&ur.isMap,b0=Qh?yo(Qh):Xh,Zh=b0;var v0="[object Set]";function S0(n){return Qe(n)&&Mo(n)==v0}var ep=S0;var tp=ur&&ur.isSet,w0=tp?yo(tp):ep,rp=w0;var N0=1,L0=2,C0=4,op="[object Arguments]",T0="[object Array]",M0="[object Boolean]",P0="[object Date]",I0="[object Error]",ip="[object Function]",O0="[object GeneratorFunction]",A0="[object Map]",D0="[object Number]",np="[object Object]",B0="[object RegExp]",E0="[object Set]",_0="[object String]",G0="[object Symbol]",z0="[object WeakMap]",R0="[object ArrayBuffer]",F0="[object DataView]",V0="[object Float32Array]",U0="[object Float64Array]",j0="[object Int8Array]",k0="[object Int16Array]",H0="[object Int32Array]",q0="[object Uint8Array]",W0="[object Uint8ClampedArray]",$0="[object Uint16Array]",J0="[object Uint32Array]",Te={};Te[op]=Te[T0]=Te[R0]=Te[F0]=Te[M0]=Te[P0]=Te[V0]=Te[U0]=Te[j0]=Te[k0]=Te[H0]=Te[A0]=Te[D0]=Te[np]=Te[B0]=Te[E0]=Te[_0]=Te[G0]=Te[q0]=Te[W0]=Te[$0]=Te[J0]=!0;Te[I0]=Te[ip]=Te[z0]=!1;function Jn(n,t,e,r,o,i){var s,a=t&N0,l=t&L0,c=t&C0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Ze(n))return n;var h=Ve(n);if(h){if(s=Hh(n),!a)return Tn(n,s)}else{var p=Mo(n),u=p==ip||p==O0;if(go(n))return Rn(n,a);if(p==np||p==op||u&&!o){if(s=l||u?{}:$n(n),!a)return l?zh(n,Ih(s,n)):Gh(n,Ph(s,n))}else{if(!Te[p])return o?n:{};s=Kh(n,p,a)}}i||(i=new zn);var d=i.get(n);if(d)return d;i.set(n,s),rp(n)?n.forEach(function(x){s.add(Jn(x,t,e,x,n,i))}):Zh(n)&&n.forEach(function(x,y){s.set(y,Jn(x,t,e,y,n,i))});var m=c?l?jn:Rh:l?qt:xo,g=h?void 0:m(n);return Ic(g||n,function(x,y){g&&(y=x,x=n[y]),In(s,y,Jn(x,t,e,y,n,i))}),s}var Yn=Jn;var Y0=1,K0=4;function X0(n){return Yn(n,Y0|K0)}var Ci=X0;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 sp=Q0;var Z0=sp(),ap=Z0;function eb(n,t,e){(e!==void 0&&!Lr(n[t],e)||e===void 0&&!(t in n))&&mo(n,t,e)}var Ti=eb;function tb(n){return Qe(n)&&Cr(n)}var lp=tb;function rb(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Mi=rb;function ob(n){return Tt(n,qt(n))}var cp=ob;function ib(n,t,e,r,o,i,s){var a=Mi(n,e),l=Mi(t,e),c=s.get(l);if(c){Ti(n,e,c);return}var h=i?i(a,l,e+"",n,t,s):void 0,p=h===void 0;if(p){var u=Ve(l),d=!u&&go(l),m=!u&&!d&&Dn(l);h=l,u||d||m?Ve(a)?h=a:lp(a)?h=Tn(a):d?(p=!1,h=Rn(l,!0)):m?(p=!1,h=Wn(l,!0)):h=[]:Gn(l)||Wr(l)?(h=a,Wr(a)?h=cp(a):(!Ze(a)||po(a))&&(h=$n(l))):p=!1}p&&(s.set(l,h),o(h,l,r,i,s),s.delete(l)),Ti(n,e,h)}var hp=ib;function pp(n,t,e,r,o){n!==t&&ap(t,function(i,s){if(o||(o=new zn),Ze(i))hp(n,t,s,e,pp,r,o);else{var a=r?r(Mi(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Ti(n,s,a)}},qt)}var up=pp;function nb(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var dp=nb;function sb(n,t){return t.length<2?n:mh(n,wh(t,0,-1))}var mp=sb;var ab=Bc(function(n,t,e){up(n,t,e)}),Jr=ab;function lb(n,t){return t=wo(t,n),n=mp(n,t),n==null||delete n[_n(dp(t))]}var fp=lb;function cb(n){return Gn(n)?void 0:n}var gp=cb;var hb=1,pb=2,ub=4,db=vh(function(n,t){var e={};if(n==null)return e;var r=!1;t=wn(t,function(i){return i=wo(i,n),r||(r=i.length>1),i}),Tt(n,jn(n),e),r&&(e=Yn(e,hb|pb|ub,gp));for(var o=t.length;o--;)fp(e,t[o]);return e}),Io=db;var Oo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Oo||(Oo={}));var Yr;(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})(Yr||(Yr={}));var yp;(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})(yp||(yp={}));var Ao;(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})(Ao||(Ao={}));var xp;(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})(xp||(xp={}));var Or;(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??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})(Or||(Or={}));var St;(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})(St||(St={}));var Wt;(s=>{s.white={...St.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{...St.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 St.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})(Wt||(Wt={}));var Kn;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Kn||(Kn={}));var bp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(bp||(bp={}));var vp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(vp||(vp={}));var Xn;(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})(Xn||(Xn={}));var Mt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Mt.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,a={...e,[i]:s};return Object.setPrototypeOf(a,Mt.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={...e};return Object.setPrototypeOf(i,Mt.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Pi(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"&&Pi(r)}return Object.freeze(n)}function Sp(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 Qn=class extends Error{};function $t(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 Zn(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 wp(){return typeof process<"u"}function Np(n,t){for(let e of n)t(e.id,e.data),Np(e.children,t)}function Lp(n,t){t(n.id,n.data);for(let e of n.children)Lp(e,t)}var Pt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Pt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Pi(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){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Lp(o,r)}}traverse(e){Np(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]={...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]={...i[c],children:a}}Object.setPrototypeOf(i,Pt.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((u,d)=>u.fi-d.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:{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 d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===i)throw new Qn("cyclic tree");d=this.parent(d)}}let s=this.parent(i);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===i);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let u=h.fi;return h={...h,fi:o},l=[...l,h],l.sort((d,m)=>d.fi-m.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,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({...o,...i})}r.sort((o,i)=>Sp(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{...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 $t(0,o,o);{let s=i[0].fi;return $t(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 $t(l,l+o,o)}else return $t(s.fi,a.fi,o)}}};var es;(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={...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})(es||(es={}));var Ae=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ae.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Pi(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let 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]={...a,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ae.prototype);let r=e;return wp()||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:{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={...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 $t(0,r,r);{let i=o[0].fi;return $t(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 $t(a,a+r,r)}else return $t(i.fi,s.fi,r)}}};var Cp=Symbol(),rs=Symbol(),Do=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof ts);){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[rs];r&&r(),delete this._children[t]}}}},Pa=class extends Do{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={...this._current,[t]:e}}runOp(t){this.reportOp(t,es.runOp(this._current,t))}},Ia=class extends Do{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Mt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Tp={get(n,t){if(t===rs)return()=>{n._parent=null};if(t===Cp)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=os(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]}}},mb={...Tp,set(n,t,e){let r={type:0,props:{[t]:Da(e)??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}},fb={...Tp,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}},Bo=class extends Do{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[rs]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=os(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)}},Eo=class extends Do{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[rs]=()=>{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{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=os(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 Ma(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&is.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var ts=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){Ma(this.ts,e,t),Ma(this.actual,r,t),Ma(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function os(n,t,e){return e instanceof Pt?new Bo(n,t,e):e instanceof Ae?new Eo(n,t,e):e instanceof Mt?new Proxy(new Ia(n,t,e),fb):e!==null&&typeof e=="object"?Zn(e)?e:new Proxy(new Pa(n,t,e),mb):e}function Oa(n){let t=new ts(n);return[os(t,"",n),t]}function Aa(n,t){let[e,r]=Oa(n);return t(e),r.result()}function Da(n){return n instanceof Bo||n instanceof Eo?n._current:n!==null&&typeof n=="object"?n[Cp]:n}var is;(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={...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 Pt||o instanceof Bo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Ae||o instanceof Eo)&&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})(is||(is={}));var ns=class{},Ii=class extends ns{constructor(e){super();this.id=e}},Oi=class extends ns{constructor(e){super();this.data=e}};var Ea;try{Ea=new TextDecoder}catch{}var Z,Dr,N=0;var Ep=[],_a=Ep,Ga=0,mt={},ve,Ar,It=0,Jt=0,wt,mr,st=[],we,Mp={useRecords:!1,mapsAsObjects:!0},Ai=class{},Ra=new Ai;Ra.name="MessagePack 0xC1";var _o=!1,Yt=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(Z)return Fp(()=>(as(),this?this.unpack(t,e):Yt.prototype.unpack.call(Mp,t,e)));Dr=e>-1?e:t.length,N=0,Ga=0,Jt=0,Ar=null,_a=Ep,wt=null,Z=t;try{we=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw Z=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 Yt){if(mt=this,this.structures)return ve=this.structures,ss();(!ve||ve.length>0)&&(ve=[])}else mt=Mp,(!ve||ve.length>0)&&(ve=[]);return ss()}unpackMultiple(t,e){let r,o=0;try{_o=!0;let i=t.length,s=this?this.unpack(t,i):hs.unpack(t,i);if(e){for(e(s);N<i;)if(o=N,e(ss())===!1)return}else{for(r=[s];N<i;)o=N,r.push(ss());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{_o=!1,as()}}_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 ss(){try{if(!mt.trusted&&!_o){let t=ve.sharedLength||0;t<ve.length&&(ve.length=t)}let n=Be();if(N==Dr)ve.restoreStructures&&Pp(),ve=null,Z=null,mr&&(mr=null);else if(N>Dr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!_o)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ve.restoreStructures&&Pp(),as(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Pp(){for(let n in ve.restoreStructures)ve[n]=ve.restoreStructures[n];ve.restoreStructures=null}function Be(){let n=Z[N++];if(n<160)if(n<128){if(n<64)return n;{let t=ve[n&63]||mt.getStructures&&_p()[n&63];return t?(t.read||(t.read=Fa(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,mt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[zp()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}else if(n<192){let t=n-160;if(Jt>=N)return Ar.slice(N-It,(N+=t)-It);if(Jt==0&&Dr<140){let e=t<16?Va(t):Gp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return wt?(t=Be(),t>0?wt[1].slice(wt.position1,wt.position1+=t):wt[0].slice(wt.position0,wt.position0-=t)):Ra;case 194:return!1;case 195:return!0;case 196:return Ba(Z[N++]);case 197:return t=we.getUint16(N),N+=2,Ba(t);case 198:return t=we.getUint32(N),N+=4,Ba(t);case 199:return Kr(Z[N++]);case 200:return t=we.getUint16(N),N+=2,Kr(t);case 201:return t=we.getUint32(N),N+=4,Kr(t);case 202:if(t=we.getFloat32(N),mt.useFloat32>2){let e=cs[(Z[N]&127)<<1|Z[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=we.getFloat64(N),N+=8,t;case 204:return Z[N++];case 205:return t=we.getUint16(N),N+=2,t;case 206:return t=we.getUint32(N),N+=4,t;case 207:return mt.int64AsNumber?(t=we.getUint32(N)*4294967296,t+=we.getUint32(N+4)):t=we.getBigUint64(N),N+=8,t;case 208:return we.getInt8(N++);case 209:return t=we.getInt16(N),N+=2,t;case 210:return t=we.getInt32(N),N+=4,t;case 211:return mt.int64AsNumber?(t=we.getInt32(N)*4294967296,t+=we.getUint32(N+4)):t=we.getBigInt64(N),N+=8,t;case 212:if(t=Z[N++],t==114)return Bp(Z[N++]&63);{let e=st[t];if(e)return e.read?(N++,e.read(Be())):e.noBuffer?(N++,e()):e(Z.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=Z[N],t==114?(N++,Bp(Z[N++]&63,Z[N++])):Kr(2);case 214:return Kr(4);case 215:return Kr(8);case 216:return Kr(16);case 217:return t=Z[N++],Jt>=N?Ar.slice(N-It,(N+=t)-It):yb(t);case 218:return t=we.getUint16(N),N+=2,Jt>=N?Ar.slice(N-It,(N+=t)-It):xb(t);case 219:return t=we.getUint32(N),N+=4,Jt>=N?Ar.slice(N-It,(N+=t)-It):bb(t);case 220:return t=we.getUint16(N),N+=2,Op(t);case 221:return t=we.getUint32(N),N+=4,Op(t);case 222:return t=we.getUint16(N),N+=2,Ap(t);case 223:return t=we.getUint32(N),N+=4,Ap(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 gb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Fa(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>gb.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Be);return n.highByte===0&&(n.read=Ip(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Be()}return r}return e.count=0,n.highByte===0?Ip(t,e):e}var Ip=(n,t)=>function(){let e=Z[N++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=ve[r]||_p()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Fa(o,n)),o.read()};function _p(){let n=Fp(()=>(Z=null,mt.getStructures()));return ve=mt._mergeStructures(n,ve)}var za=ls,yb=ls,xb=ls,bb=ls;function ls(n){let t;if(n<16&&(t=Va(n)))return t;if(n>64&&Ea)return Ea.decode(Z.subarray(N,N+=n));let e=N+n,r=[];for(t="";N<e;){let o=Z[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=Z[N++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=Z[N++]&63,s=Z[N++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=Z[N++]&63,s=Z[N++]&63,a=Z[N++]&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+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function Op(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}function Ap(n){if(mt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[zp()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}}var qe=String.fromCharCode;function Gp(n){let t=N,e=new Array(n);for(let r=0;r<n;r++){let o=Z[N++];if((o&128)>0){N=t;return}e[r]=o}return qe.apply(String,e)}function Va(n){if(n<4)if(n<2){if(n===0)return"";{let t=Z[N++];if((t&128)>1){N-=1;return}return qe(t)}}else{let t=Z[N++],e=Z[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(n<3)return qe(t,e);let r=Z[N++];if((r&128)>0){N-=3;return}return qe(t,e,r)}else{let t=Z[N++],e=Z[N++],r=Z[N++],o=Z[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=Z[N++];if((i&128)>0){N-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=Z[N++],s=Z[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return qe(t,e,r,o,i,s);let a=Z[N++];if((a&128)>0){N-=7;return}return qe(t,e,r,o,i,s,a)}else{let i=Z[N++],s=Z[N++],a=Z[N++],l=Z[N++];if((i&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){N-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,a,l);{let c=Z[N++];if((c&128)>0){N-=9;return}return qe(t,e,r,o,i,s,a,l,c)}}else if(n<12){let c=Z[N++],h=Z[N++];if((c&128)>0||(h&128)>0){N-=10;return}if(n<11)return qe(t,e,r,o,i,s,a,l,c,h);let p=Z[N++];if((p&128)>0){N-=11;return}return qe(t,e,r,o,i,s,a,l,c,h,p)}else{let c=Z[N++],h=Z[N++],p=Z[N++],u=Z[N++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){N-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,a,l,c,h,p,u);{let d=Z[N++];if((d&128)>0){N-=13;return}return qe(t,e,r,o,i,s,a,l,c,h,p,u,d)}}else{let d=Z[N++],m=Z[N++];if((d&128)>0||(m&128)>0){N-=14;return}if(n<15)return qe(t,e,r,o,i,s,a,l,c,h,p,u,d,m);let g=Z[N++];if((g&128)>0){N-=15;return}return qe(t,e,r,o,i,s,a,l,c,h,p,u,d,m,g)}}}}}function Ba(n){return mt.copyBuffers?Uint8Array.prototype.slice.call(Z,N,N+=n):Z.subarray(N,N+=n)}function Kr(n){let t=Z[N++];if(st[t])return st[t](Z.subarray(N,N+=n));throw new Error("Unknown extension type "+t)}var Dp=new Array(4096);function zp(){let n=Z[N++];if(n>=160&&n<192){if(n=n-160,Jt>=N)return Ar.slice(N-It,(N+=n)-It);if(!(Jt==0&&Dr<180))return za(n)}else return N--,Be();let t=(n<<5^(n>1?we.getUint16(N):n>0?Z[N]:0))&4095,e=Dp[t],r=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=we.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=Z[r++],i!=e[s++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],Dp[t]=e,e.bytes=n;r<o;)i=we.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=Z[r++],e.push(i);let a=n<16?Va(n):Gp(n);return a!=null?e.string=a:e.string=za(n)}var Bp=(n,t)=>{var e=Be();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=ve[n];return o&&o.isShared&&((ve.restoreStructures||(ve.restoreStructures=[]))[n]=o),ve[n]=e,e.read=Fa(e,r),e.read()},Rp=typeof self=="object"?self:global;st[0]=()=>{};st[0].noBuffer=!0;st[101]=()=>{let n=Be();return(Rp[n[0]]||Error)(n[1])};st[105]=n=>{let t=we.getUint32(N-4);mr||(mr=new Map);let e=Z[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};mr.set(t,o);let i=Be();return o.used?Object.assign(r,i):(o.target=i,i)};st[112]=n=>{let t=we.getUint32(N-4),e=mr.get(t);return e.used=!0,e.target};st[115]=()=>new Set(Be());var Ua=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");st[116]=n=>{let t=n[0],e=Ua[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Rp[e](Uint8Array.prototype.slice.call(n,1).buffer)};st[120]=()=>{let n=Be();return new RegExp(n[0],n[1])};st[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=t-4,wt=[Be(),Be()],wt.position0=0,wt.position1=0;let r=N;N=e;try{return Be()}finally{N=r}};st[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 Fp(n){let t=Dr,e=N,r=Ga,o=It,i=Jt,s=Ar,a=_a,l=mr,c=wt,h=new Uint8Array(Z.slice(0,Dr)),p=ve,u=ve.slice(0,ve.length),d=mt,m=_o,g=n();return Dr=t,N=e,Ga=r,It=o,Jt=i,Ar=s,_a=a,mr=l,wt=c,Z=h,_o=m,ve=p,ve.splice(0,ve.length,...u),mt=d,we=new DataView(Z.buffer,Z.byteOffset,Z.byteLength),g}function as(){Z=null,mr=null,ve=null}function Vp(n){n.unpack?st[n.type]=n.unpack:st[n.type]=n}var cs=new Array(147);for(let n=0;n<256;n++)cs[n]=+("1e"+Math.floor(45.15-n*.30103));var hs=new Yt({useRecords:!1}),vb=hs.unpack,Sb=hs.unpackMultiple,wb=hs.unpack,ps={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Nb=new Float32Array(1),iA=new Uint8Array(Nb.buffer,0,4);var us;try{us=new TextEncoder}catch{}var ds,ka,ms=typeof Buffer<"u",ja=ms?Buffer.allocUnsafeSlow:Uint8Array,Hp=ms?Buffer:Uint8Array,Up=ms?4294967296:2144337920,G,_e,T=0,Kt,Xt=null,Lb=/[\u0080-\uFFFF]/,Di=Symbol("record-id"),Xr=class extends Yt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,l=0,c=Hp.prototype.utf8Write?function(f,D,L){return G.utf8Write(f,D,L)}:us&&us.encodeInto?function(f,D){return us.encodeInto(f,G.subarray(D)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=u?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||m+d>64,x=d+64,y=d+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],C=0,S=0;this.pack=this.encode=function(f,D){if(G||(G=new ja(8192),_e=new DataView(G.buffer,0,8192),T=0),Kt=G.length-10,Kt-T<2048?(G=new ja(G.length),_e=new DataView(G.buffer,0,G.length),Kt=G.length-10,T=0):T=T+7&2147483640,r=T,a=h.structuredClone?new Map:null,h.bundleStrings?(Xt=["",""],G[T++]=214,G[T++]=98,Xt.position=T-r,T+=4):Xt=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let L=o.sharedLength||0;if(L>d)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 P=0;P<L;P++){let M=o[P];if(!M)continue;let I,k=o.transitions;for(let q=0,oe=M.length;q<oe;q++){let ce=M[q];I=k[ce],I||(I=k[ce]=Object.create(null)),k=I}k[Di]=P+64}l=L}p||(o.nextId=L+64)}i&&(i=!1),s=o||[];try{if(v(f),Xt){_e.setUint32(Xt.position+r,T-Xt.position-r);let L=Xt;Xt=null,v(L[0]),v(L[1])}if(h.offset=T,a&&a.idsToInsert){T+=a.idsToInsert.length*6,T>Kt&&w(T),h.offset=T;let L=Tb(G.subarray(r,T),a.idsToInsert);return a=null,L}return D&Wp?(G.start=r,G.end=T,G):G.subarray(r,T)}finally{if(o){if(S<10&&S++,C>1e4)o.transitions=null,S=0,C=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let L=0,P=b.length;L<P;L++)b[L][Di]=0;b=[]}if(i&&h.saveStructures){let L=o.sharedLength||d;o.length>L&&(o=o.slice(0,L));let P=G.subarray(r,T);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(f)):(l=L,P)}}D&Bb&&(T=r)}};let v=f=>{T>Kt&&(G=w(T));var D=typeof f,L;if(D==="string"){let P=f.length;if(Xt&&P>=8&&P<4096){let k=Lb.test(f);Xt[k?0:1]+=f,G[T++]=193,v(k?-P:P);return}let M;P<32?M=1:P<256?M=2:P<65536?M=3:M=5;let I=P*3;if(T+I>Kt&&(G=w(T+I)),P<64||!c){let k,q,oe,ce=T+M;for(k=0;k<P;k++)q=f.charCodeAt(k),q<128?G[ce++]=q:q<2048?(G[ce++]=q>>6|192,G[ce++]=q&63|128):(q&64512)===55296&&((oe=f.charCodeAt(k+1))&64512)===56320?(q=65536+((q&1023)<<10)+(oe&1023),k++,G[ce++]=q>>18|240,G[ce++]=q>>12&63|128,G[ce++]=q>>6&63|128,G[ce++]=q&63|128):(G[ce++]=q>>12|224,G[ce++]=q>>6&63|128,G[ce++]=q&63|128);L=ce-T-M}else L=c(f,T+M,I);L<32?G[T++]=160|L:L<256?(M<2&&G.copyWithin(T+2,T+1,T+1+L),G[T++]=217,G[T++]=L):L<65536?(M<3&&G.copyWithin(T+3,T+2,T+2+L),G[T++]=218,G[T++]=L>>8,G[T++]=L&255):(M<5&&G.copyWithin(T+5,T+3,T+3+L),G[T++]=219,_e.setUint32(T,L),T+=4),T+=L}else if(D==="number")if(f>>>0===f)f<64?G[T++]=f:f<256?(G[T++]=204,G[T++]=f):f<65536?(G[T++]=205,G[T++]=f>>8,G[T++]=f&255):(G[T++]=206,_e.setUint32(T,f),T+=4);else if(f>>0===f)f>=-32?G[T++]=256+f:f>=-128?(G[T++]=208,G[T++]=f+256):f>=-32768?(G[T++]=209,_e.setInt16(T,f),T+=2):(G[T++]=210,_e.setInt32(T,f),T+=4);else{let P;if((P=this.useFloat32)>0&&f<4294967296&&f>=-2147483648){G[T++]=202,_e.setFloat32(T,f);let M;if(P<4||(M=f*cs[(G[T]&127)<<1|G[T+1]>>7])>>0===M){T+=4;return}else T--}G[T++]=203,_e.setFloat64(T,f),T+=8}else if(D==="object")if(!f)G[T++]=192;else{if(a){let M=a.get(f);if(M){if(!M.id){let I=a.idsToInsert||(a.idsToInsert=[]);M.id=I.push(M)}G[T++]=214,G[T++]=112,_e.setUint32(T,M.id),T+=4;return}else a.set(f,{offset:T-r})}let P=f.constructor;if(P===Object)z(f,!0);else if(P===Array){L=f.length,L<16?G[T++]=144|L:L<65536?(G[T++]=220,G[T++]=L>>8,G[T++]=L&255):(G[T++]=221,_e.setUint32(T,L),T+=4);for(let M=0;M<L;M++)v(f[M])}else if(P===Map){L=f.size,L<16?G[T++]=128|L:L<65536?(G[T++]=222,G[T++]=L>>8,G[T++]=L&255):(G[T++]=223,_e.setUint32(T,L),T+=4);for(let[M,I]of f)v(M),v(I)}else{for(let M=0,I=ds.length;M<I;M++){let k=ka[M];if(f instanceof k){let q=ds[M];if(q.write){q.type&&(G[T++]=212,G[T++]=q.type,G[T++]=0),v(q.write.call(this,f));return}let oe=G,ce=_e,ne=T;G=null;let J;try{J=q.pack.call(this,f,U=>(G=oe,oe=null,T+=U,T>Kt&&w(T),{target:G,targetView:_e,position:T-U}),v)}finally{oe&&(G=oe,_e=ce,T=ne,Kt=G.length-10)}J&&(J.length+T>Kt&&w(J.length+T),T=Cb(J,G,T,q.type));return}}z(f,!f.hasOwnProperty)}}else if(D==="boolean")G[T++]=f?195:194;else if(D==="bigint"){if(f<BigInt(1)<<BigInt(63)&&f>=-(BigInt(1)<<BigInt(63)))G[T++]=211,_e.setBigInt64(T,f);else if(f<BigInt(1)<<BigInt(64)&&f>0)G[T++]=207,_e.setBigUint64(T,f);else if(this.largeBigIntToFloat)G[T++]=203,_e.setFloat64(T,Number(f));else throw new RangeError(f+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");T+=8}else if(D==="undefined")this.encodeUndefinedAsNil?G[T++]=192:(G[T++]=212,G[T++]=0,G[T++]=0);else if(D==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},z=this.useRecords===!1?this.variableMapSize?f=>{let D=Object.keys(f),L=D.length;L<16?G[T++]=128|L:L<65536?(G[T++]=222,G[T++]=L>>8,G[T++]=L&255):(G[T++]=223,_e.setUint32(T,L),T+=4);let P;for(let M=0;M<L;M++)v(P=D[M]),v(f[P])}:(f,D)=>{G[T++]=222;let L=T-r;T+=2;let P=0;for(let M in f)(D||f.hasOwnProperty(M))&&(v(M),v(f[M]),P++);G[L+++r]=P>>8,G[L+r]=P&255}:f=>{let D=Object.keys(f),L,P=s.transitions||(s.transitions=Object.create(null)),M=0;for(let k=0,q=D.length;k<q;k++){let oe=D[k];L=P[oe],L||(L=P[oe]=Object.create(null),M++),P=L}let I=P[Di];if(I)I>=96&&g?(G[T++]=((I-=96)&31)+96,G[T++]=I>>5):G[T++]=I;else{I=s.nextId,I||(I=64),I<x&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(I=s.nextOwnId,I<y||(I=x),s.nextOwnId=I+1):(I>=y&&(I=x),s.nextId=I+1);let k=D.highByte=I>=96&&g?I-96>>5:-1;P[Di]=I,s[I-64]=D,I<x?(D.isShared=!0,s.sharedLength=I-63,i=!0,k>=0?(G[T++]=(I&31)+96,G[T++]=k):G[T++]=I):(k>=0?(G[T++]=213,G[T++]=114,G[T++]=(I&31)+96,G[T++]=k):(G[T++]=212,G[T++]=114,G[T++]=I),M&&(C+=S*M),b.length>=m&&(b.shift()[Di]=0),b.push(P),v(D))}for(let k=0,q=D.length;k<q;k++)v(f[D[k]])},w=f=>{let D;if(f>16777216){if(f-r>Up)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(Up,Math.round(Math.max((f-r)*(f>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(f-r<<2,G.length-1)>>12)+1<<12;let L=new ja(D);return _e=new DataView(L.buffer,0,D),G.copy?G.copy(L,0,r,f):L.set(G.slice(r,f)),T-=r,r=0,Kt=L.length-10,G=L}}useBuffer(t){G=t,_e=new DataView(G.buffer,G.byteOffset,G.byteLength),T=0}};ka=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ai];ds=[{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?jp(n,16,t):kp(ms?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Hp&&this.structuredClone?jp(n,Ua.indexOf(e.name),t):kp(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function jp(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 kp(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 Cb(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 Tb(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 Qr(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)");ka.unshift(n.Class),ds.unshift(n)}Vp(n)}var qp=new Xr({useRecords:!1}),Mb=qp.pack,Pb=qp.pack;var{NEVER:Ib,ALWAYS:Ob,DECIMAL_ROUND:Ab,DECIMAL_FIT:Db}=ps,Wp=512,Bb=1024;var $p=new Xr({structuredClone:!0});Qr({Class:Mt.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Mt.prototype),n}});Qr({Class:Ae.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ae.prototype),n}});Qr({Class:Pt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Pt.prototype),n}});Qr({Class:Ii.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ii(n)}});Qr({Class:Oi.prototype.constructor,type:5,write(n){return n.data},read(n){return new Oi(n)}});function Eb(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}function Ha(n){if(Zn(n))return n;if(Array.isArray(n))return n.map(Ha);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Ha(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var fs;(r=>{function n(o){return $p.pack(o)}r.serialize=n;function t(o){return $p.unpack(o)}r.deserialize=t;function e(o){return Eb(n(Ha(o))).toString()}r.checksum=e})(fs||(fs={}));var gs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(gs||(gs={}));var ys;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Wt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:Wt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Wt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(ys||(ys={}));var qa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(qa||(qa={}));var Wa;(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})(Wa||(Wa={}));var xs;(t=>t.defaultData={...Wa.defaultData,...qa.defaultData,cloner:null,booleanExclude:null})(xs||(xs={}));var $a=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))($a||{}),Ja=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Ja||{}),Ya=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Ya||{}),bs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Wt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(bs||(bs={}));var Go;(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:St.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Wt.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}}}})(Go||(Go={}));var Zr;(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,u])=>{c+=`${p}${u}`,Array.isArray(u)?u.forEach(d=>c+=`${d}`):typeof u=="object"?Object.values(u).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${u}`})}),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 Ae}}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 Ae;return p.push({fi:0,data:Go.defaultData("light",l),id:c}),p.push({fi:1,data:Go.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=i;function s(l,c="basic",h="layer1",p="layer2"){let u=Go.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Ae;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:Go.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(Zr||(Zr={}));var zo;(t=>{function n(){return{points:new Ae,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(zo||(zo={}));var vs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(vs||(vs={}));var Bi;(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:zo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Bi||(Bi={}));var Ei;(o=>{o.identity={...Kn.identity,hiddenMatrix:Or.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?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Ao.isEqual(i.position,s.position)?null:s.position,rotation:Ao.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Ao.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Or.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Ei||(Ei={}));var fr;(t=>t.defaultData={states:new Ae,events:new Ae,visible:!0,raycastLock:!1,...Ei.identity})(fr||(fr={}));var Jp;(t=>t.defaultData={type:"Empty",...fr.defaultData})(Jp||(Jp={}));var Ss;(t=>t.defaultData={type:"Mesh",...fr.defaultData,...xs.defaultData})(Ss||(Ss={}));var Yp;(t=>t.defaultData={type:"TextFrame",...fr.defaultData,...bs.defaultData})(Yp||(Yp={}));var ws;(t=>t.defaultData={...fr.defaultData,...Ei.identity,...Yr.defaultData})(ws||(ws={}));var Kp;(t=>{function n(e){return{...fr.defaultData,...ys.defaultData(e)}}t.defaultData=n})(Kp||(Kp={}));var Xp;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Or.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ae,events:new Ae,...Yr.defaultData},r.defaultMeshObject={name:"Rectangle",...fr.defaultData,...Ss.defaultData,geometry:Bi.defaultData("RectangleGeometry"),material:Zr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...fr.defaultData,...Ss.defaultData,geometry:Bi.defaultData("BooleanGeometry"),material:Zr.defaultTwoLayerData("phong","layer1","layer2")}))(Xp||(Xp={}));var Qp;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Aa(i.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&Jr(c,l)}}).data),i.materials&&o.materials&&(i.materials=Aa(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,h]of Object.entries(l.layers)){let p=s[a]?.layers?.data(c);p&&Jr(p,h)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Ei.merge(i,o)),Oo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(gs.is(r.type)){let s=o;i.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=St.clone(s.color))}return i}e.patch=t})(Qp||(Qp={}));import{ConeBufferGeometry as zb}from"three";import{BufferGeometry as _b,CylinderBufferGeometry as Gb,Float32BufferAttribute as Ka,Vector2 as Gt,Vector3 as Ns}from"three";var eu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{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=e.radiusTop??r,i=e.radiusBottom??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(e.height??e.width),depth:Math.abs(e.depth??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:u,hollow:d}=n.parameters,m;return p||d?m=new _i(c,h,r,o,i,s,a,l*Math.PI/180,p,p,u,d):m=new Gb(c,h,r,o,i,s,a,l*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Br(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Zp(n){return new Gt(n.y,-n.x)}var _i=class extends _b{constructor(t,e,r,o,i,s,a,l,c,h,p,u,d=!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 m=[],g=[],x=[],y=[],b=0,C=r/2,S=new Ns,v=new Ns;d&&t==0&&(t=c),d&&e==0&&(e=h);let z=new Gt(t,C),w=new Gt(e,-C),f=null,D=null,L=null,P=null,M=z.clone().sub(w),I=0,k=0,q=0;u>0&&(I=Math.min(t,e)*(1-u),k=t-I,q=e-I);let oe=z.clone();oe.x-=I;let ce=Math.PI-M.angle(),ne=M.angle(),J=Math.tan(ne/2),U=Math.tan(ce/2),R=J+U,E=u?R:U,B=u?R:J;if(c=Math.min(c,(t-k)/E,M.length()/R),h=Math.min(h,(e-q)/B,M.length()/R),c>0){let V=c/J;f=z.clone().sub(new Gt(V,c)),u&&(L=f.clone(),L.x-=I-R*c),z.sub(M.clone().setLength(V))}if(h>0){let V=h/U;D=w.clone().sub(new Gt(V,-h)),w.add(M.clone().setLength(V)),u&&(P=D.clone(),P.x-=I-R*h,oe.sub(M.clone().setLength(V)))}M=z.clone().sub(w);let O=M.length()<.5,_=[];for(let V=0;V<=o;V++){let A=[],W=V/o,X=W*l+a,Q=new Gt(Math.sin(X),Math.cos(X));P&&D?(Y(A,W,Q,ce,h,P,-1,!0),Y(A,W,Q,ne,h,D,-1,!1)):D?(j(A,Q,D.x,0,-1),Y(A,W,Q,ne,h,D,-1,!1)):s||j(A,Q,e,q,-1);let H=Zp(M).normalize();if(Br(H,Q,S),!O)for(let K=0;K<=i;K++){let $=K/i,re=M.clone().multiplyScalar($).add(w);Br(re,Q,v),g.push(v.x,v.y,v.z),x.push(S.x,S.y,S.z),y.push(W,.5+v.y/r),A.push(b++)}if(L&&f?(Y(A,W,Q,ce,c,f,1,!1),Y(A,W,Q,ne,c,L,1,!0)):f?(Y(A,W,Q,ce,c,f,1,!1),j(A,Q,f.x,0,1)):s||j(A,Q,t,k,1),u&&!O){let K=Zp(M).multiplyScalar(-1).normalize();Br(K,Q,S);for(let $=0;$<=i;$++){let re=$/i,ae=M.clone().multiplyScalar(-re).add(oe);Br(ae,Q,v),g.push(v.x,v.y,v.z),x.push(S.x,S.y,S.z),y.push(W,.5+v.y/r),A.push(b++)}}u&&!s&&A.push(A[0]),_.push(A)}for(let V=0;V<_.length-1;V++)for(let A=0;A<_[0].length-1;A++){if(s&&u&&A==i)continue;let W=_[V][A],X=_[V+1][A],Q=_[V+1][A+1],H=_[V][A+1],K=g[Q*3+0],$=g[Q*3+2];m.push(W,X,H),(K!=0||$!=0)&&m.push(X,Q,H)}l<Math.PI*2&&(F(-1,_[0],a),F(1,_[_.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new Ka(g,3)),this.setAttribute("normal",new Ka(x,3)),this.setAttribute("uv",new Ka(y,2));function Y(V,A,W,X,Q,H,K,$){for(let re=0;re<p+1;re++){let ae=re/p,ie=K<0?ae:1-ae;$&&(ie-=1),ie*=X;let me=new Gt(Math.sin(ie),Math.cos(ie)*K),De=me.clone().multiplyScalar(Q).add(H);Br(De,W,v),g.push(v.x,v.y,v.z),Br(me,W,S),x.push(S.x,S.y,S.z),y.push(A,.5+v.y/r),V.push(b++)}}function j(V,A,W,X,Q){let H=new Ns,K=new Gt,$=[W,X];Q<0&&$.reverse();for(let re of $)K.set(re,C*Q),Br(K,A,H),g.push(H.x,H.y,H.z),x.push(0,Q,0),y.push(.5,.5),V.push(b++)}function F(V,A,W){let X=new Gt(Math.sin(W),Math.cos(W)),Q=new Gt(-Math.cos(W),Math.sin(W)),H=new Ns,K=V<0?(ae,ie,me)=>m.push(ae,ie,me):(ae,ie,me)=>m.push(ae,me,ie),$=new Gt((t+e+k+q)/4,0);Br($,X,H),g.push(H.x,H.y,H.z),x.push(Q.x,0,Q.y),y.push(.5,.5);let re=b++;for(let ae of A){let ie=g.slice(ae*3,ae*3+3);g.push(...ie),x.push(Q.x,0,Q.y);let me=y.slice(ae*2,ae*2+2);y.push(...me),b++}for(let ae=re+1;ae<b-1;ae++)K(re,ae,ae+1);K(re,b-1,re+1)}}};var tu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{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(e.height??e.width),depth:Math.abs(e.depth??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,u;return c>0||h>0||l<360?u=new _i(0,t/2,r,o,i,s,a,l*Math.PI/180,c,h,p,0,!0):u=new zb(t/2,r,o,i,s),u.scale(1,1,e/t),Object.assign(u,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Rb,BufferGeometry as Fb,Float32BufferAttribute as Xa,Vector3 as Gi}from"three";var ru=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{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(e.height??e.width),depth:Math.abs(e.depth??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 Rb(t,e,r,o,i,s):c=new Za(t,e,r,o,i,s,a,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},Qa=Math.PI/2,Za=class extends Fb{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=[],u=[],d=[],m=0,g=0;x("z","y","x",-1,-1,r,e,t,s,i,0),x("z","y","x",1,-1,r,e,-t,s,i,1),x("x","z","y",1,1,t,r,e,o,s,2),x("x","z","y",1,-1,t,r,-e,o,s,3),x("x","y","z",1,-1,t,e,r,o,i,4),x("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 Xa(p,3)),this.setAttribute("normal",new Xa(u,3)),this.setAttribute("uv",new Xa(d,2));function x(C,S,v,z,w,f,D,L,P,M,I){let k=(f-2*a)/P,q=(D-2*a)/M,oe=f/2-a,ce=D/2-a,ne=L/2,J=P+1,U=M+1,R=0,E=0,B=new Gi;for(let O=0;O<U;O++){let _=O*q-ce;for(let Y=0;Y<J;Y++){let j=Y*k-oe;B[C]=j*z,B[S]=_*w,B[v]=ne,p.push(B.x,B.y,B.z),B[C]=0,B[S]=0,B[v]=L>0?1:-1,u.push(B.x,B.y,B.z),d.push(Y/P),d.push(1-O/M),R+=1}}for(let O=0;O<M;O++)for(let _=0;_<P;_++){let Y=m+_+J*O,j=m+_+J*(O+1),F=m+(_+1)+J*(O+1),V=m+(_+1)+J*O;h.push(Y,j,V),h.push(j,F,V),E+=6}c.addGroup(g,E,I),g+=E,m+=R}function y(C,S,v,z,w,f,D,L,P,M,I){let k=(D-2*a)/M,q=D/2-a,oe=L/2-a,ce=P/2,ne=M+1,J=0,U=0,R=new Gi,E=new Gi;for(let B=0;B<l+1;B++){let O=B/l*Qa,_=Math.sin(O)*a,Y=(1-Math.cos(O))*a,j=Math.sin(O),F=Math.cos(O);R[S]=(oe+_)*w,R[v]=(ce-Y)*f,E[C]=0,E[S]=j*Math.sign(R[S]),E[v]=F*Math.sign(R[v]);for(let V=0;V<ne;V++){let A=V*k-q;R[C]=A*z,p.push(R.x,R.y,R.z),u.push(E.x,E.y,E.z),d.push(V/M),d.push(0),J+=1}}for(let B=0;B<l;B++)for(let O=0;O<M;O++){let _=m+O+ne*B,Y=m+O+ne*(B+1),j=m+(O+1)+ne*(B+1),F=m+(O+1)+ne*B;h.push(_,Y,F),h.push(Y,j,F),U+=6}c.addGroup(g,U,I),g+=U,m+=J}function b(C,S,v){let z=new Gi,w=new Gi(t/2,e/2,r/2);w.subScalar(a);let f=[],D=C*S*v>0?(P,M,I)=>h.push(P,M,I):(P,M,I)=>h.push(P,I,M);for(let P=0;P<=l;P++){let M=[],I=Qa*(1-P/l),k=Math.cos(I),q=Math.sin(I),oe=0;for(let ce=0;ce<=P;ce++){let ne=Math.cos(oe),J=Math.sin(oe);z.x=k*ne,z.y=q,z.z=k*J;let U=w.clone().addScaledVector(z,a);p.push(C*U.x,S*U.y,v*U.z),u.push(C*z.x,S*z.y,v*z.z),d.push(0,0),M.push(m++),oe+=Qa/P}f.push(M)}let L=f.length-1;for(let P=0;P<L;P++){let M=f[P],I=f[P+1],k=M.length-1;D(M[0],I[1],I[0]);for(let q=1;q<=k;q++)D(M[q-1],M[q],I[q]),D(M[q],I[q+1],I[q])}}}};import{BufferGeometry as Vb,Float32BufferAttribute as el,Triangle as Ub,Vector3 as gr,Vector2 as tl}from"three";var Er=class extends Vb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new el(a,3)),this.setAttribute("normal",new el(c,3)),this.setAttribute("uv",new el(l,2));return;function h(){i=Math.min(1-1e-5,i),i==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new gr,g=m.clone(),x=new Ub,y=i*o,b=o-y,C=s+1,S=new gr,v=(J,U)=>S.subVectors(J,U).normalize(),z=(J,U)=>Array(J).fill(void 0).map(U),w=z(t.length/3,(J,U)=>new gr().fromArray(t,U*3).setLength(o)),f=[],D=1e6;for(let J=0;J<w.length;J++){let U=w[J],R=[],E,B,O,_=1e10,Y=-1;for(;(Y=e.indexOf(J,Y+1))!=-1;){let A=Y-Y%3;E=e[A+(Y+1)%3],B=e[A+(Y+2)%3],O=U.distanceToSquared(w[E]),_=Math.min(_,O),R.push([E,B,O])}_+=1e-6;let j=[],F=0,V=R.length;for(let A=0;A<V;A++){[E,B,O]=R[F];let W=f[E]?.includes(J)==!0;O<=_&&j.push(E+ +W*D),F=R.findIndex(X=>X[0]==B)}f.push(j)}let L=[];{let J=0,U=0,R,E,B=d==3;for(let O=0;O<=s;O++){R=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let _=0;_<s-O;_++)[J,U]=[R+_+O+2,E+_+O+3],L.push(R,E,...B?[U,R]:[J,E],U,J),[R,E]=[J,U];L.push(R,E,R+s+2)}}let P=m.clone(),M=m.clone(),I=m.clone(),k=m.clone(),q=m.clone(),oe=[],ce=z(w.length,()=>z(d,()=>m.clone()));for(let J=0;J<w.length;J++){m.copy(w[J]).normalize(),P.copy(m).multiplyScalar(b);let U=f[J];for(let j=0;j<U.length;j++){let F=U[j],V=U[(j+1)%d];x.setFromPointsAndIndices(w,J,F%D,V%D),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(P,ce[J][j])}let R=[],E=[],B=[],O=new gr;s==0&&[...ce[J]].reduce((j,F)=>j.add(F),O).multiplyScalar(1/d);for(let j=0;j<d;j++){let F=[],V=(j-1+d)%d,A=ce[J][V],W=ce[J][j];m.copy(A).sub(P),g.copy(W).sub(P);let X=P.angleTo(m),Q=m.angleTo(g),H=Math.cos(X)*y;s==0?M.copy(O):M.copy(P).setLength(b+H),E.push(H);let K=[M,A,W];for(let $=0;$<2;$++){let re=K[$],ae=K[$+1];k.subVectors(re,P),q.subVectors(ae,P),I.crossVectors(k,q).normalize();for(let ie=0;ie<C;ie++){let me=[X,Q][$]*ie/C;m.copy(k).applyAxisAngle(I,me).add(P),R.push(m.clone()),$&&(v(m,P),F.push([ie==0?re:m.clone(),S.clone()]))}$&&(v(ae,P),F.push([ae,S.clone()]))}B.push(F)}oe.push(B);let _=2*C,Y=2;for(let j=0;j<d;j++){let F=_*j,V=_*((j+1)%d),A=[R[F]];for(let X=1;X<C;X++){k=R[F+X],q=R[V+X],A.push(k);for(let Q=1,H=X-Y+1;Q<=H;Q++)m.lerpVectors(k,q,Q/(H+1)),m.sub(P).setLength(E[j]).add(P),A.push(m.clone());A.push(q)}for(let X=0;X<C;X++)A.push(R[X+C+F]);A.push(R[V+C]);let W=L.map(X=>A[X]);a.push(...W.map(X=>[X.x,X.y,X.z]).flat()),c.push(...W.map(X=>(v(X,P),[S.x,S.y,S.z])).flat())}}let ne=[];for(let J=0;J<f.length;J++)for(let U=0;U<d;U++){let R=f[J][U];if(R<D){let E=f[R].findIndex(_=>_%D==J),B=oe[J][U],O=oe[R][E];for(let _=0;_<C;_++){let Y=B[_],j=O[C-_],F=B[_+1],V=O[C-(_+1)];[Y,j,F,F,j,V].forEach(A=>{a.push(A[0].x,A[0].y,A[0].z),c.push(A[1].x,A[1].y,A[1].z)})}ne.push(B[0][0],O[C][0],B[C][0],O[0][0])}}for(;ne.length;){let J,U,R,E;[J,U]=ne.splice(0,2);let B=[J];for(;J!=U;)B.push(U),R=ne.indexOf(U),E=R%2,U=ne.splice(R-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let _=1;_<=B.length-2;_++)[B[_+ +O],B[_+1-+O],B[0]].forEach(Y=>{a.push(Y.x,Y.y,Y.z),c.push(S.x,S.y,S.z)})}}function p(){let u=new gr;for(let w=0;w<a.length;w+=3){u.x=a[w+0],u.y=a[w+1],u.z=a[w+2];let f=v(u)/2/Math.PI+.5,D=z(u)/Math.PI+.5;l.push(f,1-D)}let d=new gr,m=new gr,g=new gr,x=new gr,y=new tl,b=new tl,C=new tl,S=(w,f,D,L)=>{L<0&&w.x===1&&(l[f]=w.x-1),D.x===0&&D.z===0&&(l[f]=L/2/Math.PI+.5)};for(let w=0,f=0;w<a.length;w+=9,f+=6){d.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[f+0],l[f+1]),b.set(l[f+2],l[f+3]),C.set(l[f+4],l[f+5]),x.copy(d).add(m).add(g).divideScalar(3);let D=v(x);S(y,f+0,d,D),S(b,f+2,m,D),S(C,f+4,g,D)}for(let w=0;w<l.length;w+=6){let f=l[w+0],D=l[w+2],L=l[w+4],P=Math.max(f,D,L),M=Math.min(f,D,L);P>.9&&M<.1&&(f<.2&&(l[w+0]+=1),D<.2&&(l[w+2]+=1),L<.2&&(l[w+4]+=1))}function v(w){return Math.atan2(w.z,-w.x)}function z(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new Er(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as jb}from"three";var ou=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new zi(t*.5,i,s):new jb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},zi=class extends Er{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 zi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Zb,Plane as ev,Shape as xu,Vector2 as yr,Vector3 as tv,MathUtils as ll,LineCurve as cl,QuadraticBezierCurve as bu,CubicBezierCurve as Ms}from"three";import{CubicBezierCurve as Ls,EllipseCurve as kb,LineCurve as Cs,LineCurve3 as Hb,MathUtils as qb,QuadraticBezierCurve as ol,SplineCurve as Wb,Vector2 as et,Vector3 as su}from"three";var Ri=1e-12,Ro=class{constructor(t){this.position=new et;this.startPosition=new et;this.uuid=qb.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 Ro(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Fo=class extends Ro{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Fo(this.parent).copy(this)}},zt=class extends Ro{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Fo(this),new Fo(this))}static create(e,r){let o=new zt(e,new et(...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 zt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new et,r=new et){let[o,i]=this.computeTangents();return o&&i&&(iu(o,e),iu(i,r)),[e,r]}computeTangent(e=new et){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new et){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function iu(n,t=new et){let e=n.length();return t.set(-n.y/e,n.x/e)}var il=n=>n,Vo=new et,Ts=new et,$b=new et,Jb=new et,Yb=new et,Kb=new et,au=new su,lu=new su;function cu(n){let t=new et;t.addVectors(n.v0,Vo.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new et;return e.addVectors(n.v2,Ts.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ls(n.v0,t,e,n.v2)}function Fi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Xb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Qb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function nl(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 hu(n,t,e){return nu(n,t)&&nu(t,e)&&rl(n.position,t.position,e.position)}function rl(n,t,e){return Vo.copy(t).sub(n).cross(Ts.copy(e).sub(n))===0}function pu(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 uu(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function du(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 nl(t,n,e)>Math.PI&&(h*=-1),Fi(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 sl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function nu(n,t){return rl(n.position,n.controls[1].position,t.position)&&rl(n.position,t.controls[0].position,t.position)}function mu(n,t,e,r,o=.5){let i=Vo.subVectors(t,n).multiplyScalar(o).add(n),s=Ts.subVectors(e,t).multiplyScalar(o).add(t),a=$b.subVectors(r,e).multiplyScalar(o).add(e),l=i,c=Jb.subVectors(s,i).multiplyScalar(o).add(i),h=Yb.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=Kb.subVectors(h,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,u.x,u.y,h.x,h.y,p.x,p.y,r.x,r.y]}function fu(n,t,e=12,r=!0){let o=lu.set(0,0,0),i,s=0,a=[];for(let l=0;l<t.length;l++){let c=il(t[l]),h=Vo,p=_r(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof Ls||c instanceof ol||c instanceof Cs){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),i!==void 0&&Qb(i,o))continue;i===void 0&&(i=au),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 gu(n,t,e,r=12,o=!0){let i=lu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=il(t[l]),p=Vo,u=_r(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof Ls||h instanceof ol||h instanceof Cs){if(h.getPoint(d/u,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=au:(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 al(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=_r(s.roundedCurveCorner,t)*.5;o>0&&(r[o-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 kb?t*2:n&&(n instanceof Cs||n instanceof Hb)?1:n&&n instanceof Wb?t*n.points.length:t}function yu(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=il(t[s]),l=_r(a,e),c=Vo;for(let h=0;h<=l;h++)if(a instanceof Ls||a instanceof ol||a instanceof Cs){if(a.getPoint(h/l,c),o!==void 0&&Xb(o,c,Ri))continue;o===void 0&&(o=Ts),o.copy(c),n.push(c.x,c.y),i++}}return Fi(n[0],n[n.length-2],Ri)&&Fi(n[1],n[n.length-1],Ri)&&(n.pop(),n.pop()),r&&i>1&&!(Fi(n[i-1],n[1],Ri)&&Fi(n[i-2],n[0],Ri))&&(n.push(n[0],n[1]),i++),n}var hl=new yr,rv=new yr,ov=new yr,iv=new yr,nv=new yr,sv=new yr,be=class extends xu{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Zb;this.plane=new ev(new tv(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=ll.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new be;return i.isClosed=e.isClosed,i.points=e.points.map(s=>zt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>be.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){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,h=l.getPointIndexById(e);if(h<0)i+=c;else return h+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)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=hl.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=ll.generateUUID()){let i;e instanceof yr?i=e:i=new yr(e,r);let s=new zt(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}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}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 fu(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=al(this.points,e,!1),this.roundedCurveDivisions=al(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return gu(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),yu(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=_r(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(sl(i,s)){let p=i.position.distanceTo(s.position);return i.position.distanceTo(hl.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){sl(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){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],l=this.points[i-1]??this.points[this.points.length-1],c=this.points[i+1]??this.points[0],h=a.roundness,p=l&&c&&hu(l,a,c);if(!a.controlsMoved()&&h>0&&!p){let u=a.curveBefore,d=a.curveAfter;if(u===void 0||d===void 0)continue;let m=a.roundedCurveBefore,g=a.roundedCurveAfter,x=u.getLength(),y=d.getLength(),b=Math.min(h,x*.499),C=Math.min(h,y*.499),S=Math.min(b,C),v=1-S/x,z=S/y,w=u.getPointAt(v,hl),f=d.getPointAt(z,rv);this._subSplitCurve(u,m,v,w,void 0),this._subSplitCurve(d,g,z,void 0,f);let D;if(this.useCubicForRoundedCorners){let L=nl(w,a.position,f)/2,P=Math.tan(L)*w.distanceTo(a.position),[M,I]=pu(w,f,P,ov,iv),k=uu(M,I,a.position),[q,oe]=du(k,w,f,P,nv,sv);D=new Ms(w.clone(),q.clone(),oe.clone(),f.clone())}else D=new bu(w.clone(),a.position.clone(),f.clone());a.roundedCurveCorner=D,this.roundedCurves.splice(i+o,0,D),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof cl)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=mu(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 be(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],a=e.points[i+1],l=e.points[i+2],c=e.points[i+3],h=e.points[i+4],p=e.points[i+5],u=e.points[i+6],d=new zt(ll.generateUUID(),new yr(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(h,p),d.roundness=u,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new be;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Ms&&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 bu&&(i[a]=cu(i[a]));for(a=0,l=i.length;a<l;a++){let p=i[a],u=a>0?i[a-1]:null,d;p instanceof Ms?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof cl&&(d=this.createPoint(p.v1)),d!==void 0&&(u!==null&&r(d,u),s.push(d))}let c=i[i.length-1],h=!1;return c instanceof Ms?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof cl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof xu&&(this.shapeHoles=e.holes.map(i=>{let s=new be;return s.fromShape(i),s})),this.update(),this}};var ul=Math.PI*2;function pl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function av(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 vu(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 lv(n,t,e,r,o,i,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(i,2),u=Math.pow(s,2),d=Math.pow(a,2),m=h*p-h*d-p*u;m<0&&(m=0),m/=h*d+p*u,m=Math.sqrt(m)*(l===c?-1:1);let g=m*o/i*a,x=m*-i/o*s,y=g+(n+e)/2,b=x+(t+r)/2,C=(s-g)/o,S=(a-x)/i,v=(-s-g)/o,z=(-a-x)/i,w=vu(1,0,C,S),f=vu(C,S,v,z);return!c&&f>0&&(f-=ul),c&&f<0&&(f+=ul),{centerx:y,centery:b,ang1:w,ang2:f}}function Su({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 u=lv(n,t,e,r,o,i,c,h,s,a),{ang1:d,ang2:m}=u,{centerx:g,centery:x}=u,y=Math.abs(m)/(ul/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);m/=b;for(let C=0;C<b;C++)l.push(av(d,m)),d+=m;return l.map(C=>{let{x:S,y:v}=pl(C[0],o,i,g,x),{x:z,y:w}=pl(C[1],o,i,g,x),{x:f,y:D}=pl(C[2],o,i,g,x);return{x1:S,y1:v,x2:z,y2:w,x:f,y:D}})}import{BufferAttribute as Is,BufferGeometry as dv}from"three";var Ie;(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"})(Ie||(Ie={}));var je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(je||(je={}));function he(n,t){if(!n)throw t||"Assertion Failed!"}var se=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){he(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){he(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){he(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){he(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}(),Vi=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}(),Ps=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}(),Uo=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}(),wu=function(){function n(){var t=new Uo,e=new Vi,r=new Ps(0),o=new Ps(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 Ps(0),r=new Ps(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;he(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;he(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 Uo,e=new Uo,r=new Vi,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 Uo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Vi;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 Vi;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 Uo;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 Vi;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&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.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){he(o.prev===i),l=o.anEdge;do he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l),he(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(he(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){he(s.prev===a),l=s.anEdge;do he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l),he(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(he(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)he(l.Sym.next===c.Sym),he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Org!==null),he(l.Dst!==null),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l);he(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Nu=function(){function n(){this.handle=null}return n}(),Lu=function(){function n(){this.key=null,this.node=0}return n}(),cv=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 Nu,this.handles[r]=new Lu;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,he(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 Nu;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Lu}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;he(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}(),dl=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}(),Cu=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),hv=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Cu,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 Cu;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}(),pv=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?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var a=se.edgeEval(i.Dst,o,i.Org),l=se.edgeEval(s.Dst,o,s.Org);return a>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&he(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){he(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 dl;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 Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.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 he(se.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,he(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=se.vertL1dist(e,t),i=se.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(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.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(se.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(he(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.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(se.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,u=new Uo,d,m;if(he(!se.vertEq(c,l)),he(se.edgeSign(l,t.event,s)<=0),he(se.edgeSign(c,t.event,a)>=0),he(s!==t.event&&a!==t.event),he(!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(se.vertLeq(s,a)){if(se.edgeSign(c,s,a)>0)return!1}else if(se.edgeSign(l,a,s)<0)return!1;return n.debugEvent(t),se.intersect(l,s,c,a,u),he(Math.min(s.t,l.t)<=u.t),he(u.t<=Math.max(a.t,c.t)),he(Math.min(c.s,l.s)<=u.s),he(u.s<=Math.max(a.s,s.s)),se.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=se.vertLeq(s,a)?s:a,se.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),se.vertEq(u,s)||se.vertEq(u,a)?(n.checkForRightSplice(t,e),!1):!se.vertEq(l,t.event)&&se.edgeSign(l,t.event,u)>=0||!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,u)<=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),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(se.edgeSign(l,t.event,u)>=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),se.edgeSign(c,t.event,u)<=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=u.s,o.Org.t=u.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),se.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),se.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}se.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,se.vertEq(o.Org,r)){he(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.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}he(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,i=a=s.Onext,l.fixUpperEdge&&(he(i!==s),n.deleteRegion(t,l),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.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 dl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.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);he(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 dl,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 hv(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||(he(e.fixUpperEdge),he(++r===1)),he(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,se.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 cv(i,se.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,he(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||!se.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}(),uv=function(){function n(){this.mesh=new wu,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=Ie.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],u=[0,0,0],d=[null,null,null],m=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)i=e.coords[x],c[x]=i,m[x]=e,l[x]=i,d[x]=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,m[y]=e),i>l[y]&&(l[y]=i,d[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=m[b],o=d[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],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[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(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.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&&(se.edgeGoesRight(r.Lprev)||se.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===je.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 u=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[u++]=c.n,l++,i=i.Lnext}while(i!==h.anEdge);for(var d=l;d<r;++d)this.elements[u++]=-1;if(e===je.CONNECTED_POLYGONS){i=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==h.anEdge);for(var m=l;m<r;++m)this.elements[u++]=-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 wu),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=Ie.ODD),e===void 0&&(e=je.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_(),pv.computeInterior(this,s);var a=this.mesh;return e===je.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===je.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function eo(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?je.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,u=p===void 0?[]:p,d=n.strict,m=d===void 0?!0:d,g=n.debug,x=g===void 0?!1:g;if(!u&&m)throw new Error("Contours can't be empty");if(!!u){var y=new uv;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[b]);return y.tesselate(e,o,s,l,h,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var $2=Ie.ODD,J2=Ie.NONZERO,Y2=Ie.POSITIVE,K2=Ie.NEGATIVE,X2=Ie.ABS_GEQ_TWO,Q2=je.POLYGONS,Z2=je.CONNECTED_POLYGONS,eD=je.BOUNDARY_CONTOURS;var jo=class extends dv{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let m=0,g=i.length/2;m<g;m++){let x=m*2,y=i[x+0],b=i[x+1];if(h!==void 0&&y!==h&&(l=!1),p!==void 0&&b!==p&&(c=!1),h=y,p=b,!l&&!c)break}!l&&!c&&(a=eo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new Is(new Float32Array(u*3),3),this._normalAttribute=new Is(new Float32Array(u*3),3),this._uvAttribute=new Is(new Float32Array(u*2),2),this._indexAttribute=new Is(new Uint32Array(d*3),1),a){let m=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,v=u;S<v;S++){let z=S*2,w=a.vertices[z+0],f=a.vertices[z+1];w<m&&(m=w),w>g&&(g=w),f<x&&(x=f),f>y&&(y=f)}let b=g-m,C=y-x;for(let S=0,v=u;S<v;S++){let z=S*2,w=a.vertices[z+0],f=a.vertices[z+1],D=(w-m)/b,L=(f-x)/C;this._positionAttribute.setXYZ(S,w,f,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,D,L)}for(let S=0,v=d;S<v;S++){let z=S*3,w=a.elements[z+0],f=a.elements[z+1],D=a.elements[z+2];this._indexAttribute.setX(z+0,w),this._indexAttribute.setX(z+1,f),this._indexAttribute.setX(z+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new jo(this._shape,this._curveSegments);return e.userData=Ci(this.userData),e}};import{BufferAttribute as As,BufferGeometry as mv}from"three";var Os=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*Os.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*Os.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)}},Ui=Os;Ui.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ml=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),ko=class extends mv{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(w=>{let f=w.extractShapePointsToFlatArray([],i),D=[];for(let L=f.length-1;L>=1;L-=2){let P=f[L-1],M=f[L-0];D.push(P,M)}return D}),c=eo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=eo({windingRule:Ie.ODD,elementType:je.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 w=0;w<h.elements.length;w++){let f=h.elements[w],D=w%2===0?c.vertexCount:0;c.elements.push(f+D)}for(let w=0;w<h.vertexIndices.length;w++){let f=h.vertexIndices[w],D=c.vertexCount;c.vertexIndices.push(f+D)}for(let w=0;w<h.vertices.length;w++){let f=h.vertices[w];c.vertices.push(f)}}let u=1/0,d=-1/0,m=1/0,g=-1/0;for(let w=0,f=c.vertexCount;w<f;w++){let D=w*2,L=c.vertices[D+0],P=c.vertices[D+1];L<u&&(u=L),L>d&&(d=L),P<m&&(m=P),P>g&&(g=P)}this._minX=u,this._minY=m,this._width=d-u,this._height=g-m;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new Ui(x);let y=[],b=[];for(let w=c.elementCount-1;w>=0;w--){let f=w>=p,D=w*2,L=c.elements[D+0],P=c.elements[D+1],M=L+P,I={start:L,count:P,normals:[],continuous:[],concave:[]},k=L,q=M-1,oe=L+1,ce=this._shape.roundedCurves.length;do{let R=k-L,E=c.vertices[q*2+0],B=c.vertices[q*2+1],O=c.vertices[k*2+0],_=c.vertices[k*2+1],Y=c.vertices[oe*2+0],j=c.vertices[oe*2+1],F=O-E,V=_-B,A=Math.sqrt(F*F+V*V);F/=A,V/=A;let W=O-Y,X=_-j,Q=Math.sqrt(W*W+X*X);W/=Q,X/=Q,I.normals[R*2+0]=-X,I.normals[R*2+1]=W,I.concave[R]=F*X-V*W>0;let H=c.vertexIndices[k];if(Array.isArray(H))I.continuous[R]=!1;else{let[K,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)I.continuous[R]=!0;else{let re=$===1?K+1:K-1;re=(re+ce)%ce;let ae=$===1?0:1,ie=this._shape.roundedCurves[K].getTangent($),me=this._shape.roundedCurves[re].getTangent(ae);I.continuous[R]=ie.dot(me)>.95}}f&&(I.normals[R*2+0]*=-1,I.normals[R*2+1]*=-1),[q,k,oe]=[k,oe,oe+1],oe>=M&&(oe-=P)}while(oe!==L+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(L*2,M*2),vertexCount:P,vertexIndices:new Array(P).fill(!0).map((R,E)=>[E,E]),elements:[0,P],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(L*2,M*2)});for(let R=1;R<=this._bevelSegments;R++){let E=R/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,O=[],_=[],Y=[],j=[],F=0;for(let A=0;A<P;A++){let W=A*2,X=(A-1+P)%P*2,Q=c.vertices[I.start*2+W+0],H=c.vertices[I.start*2+W+1],K=-I.normals[X+0]*B,$=-I.normals[X+1]*B,re=-I.normals[W+0]*B,ae=-I.normals[W+1]*B;if(I.concave[A]||!I.concave[A]&&f){let ie=Math.atan2($,K),me=Math.atan2(ae,re);me>ie&&(me-=Math.PI*2);let De=me-ie;if(I.continuous[A]||f){let ge=ie+De/2,Re=Math.cos(ge)*B,Se=Math.sin(ge)*B;O[2*F+0]=Q+Re*(f?-1:1),O[2*F+1]=H+Se*(f?-1:1),j[F]=A,F++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(De)/Math.PI));for(let Re=0;Re<=ge;Re++){let Se=ie+De*(Re/ge),pt=Math.cos(Se)*B,Ct=Math.sin(Se)*B;O[2*F+0]=Q+pt,O[2*F+1]=H+Ct,j[F]=A,F++}}}else O[2*F+0]=Q+K,O[2*F+1]=H+$,j[F]=A,_[A]=F,F++,O[2*F+0]=Q,O[2*F+1]=H,j[F]=A,F++,O[2*F+0]=Q+re,O[2*F+1]=H+ae,j[F]=A,Y[A]=F,F++}let V=eo({windingRule:Ie.POSITIVE,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:A=>{let X=A.Org.idx,Q=j[X],H=j[(X+1)%j.length];A.idx=[Q,H],A.Sym.idx=[H,Q]},vertexIdCallback:A=>{let W=A.Lprev.idx;return[W?W[1]:0,A.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!V.vertexCount)break;for(let A=0;A<V.vertexIndices.length;A++){let[W,X]=V.vertexIndices[A];if(W===X)continue;let Q=X;X<W&&(Q+=P);for(let H=W;H<Q;H++){let K=H%P,$=(H+1)%P;if(!I.continuous[K]||!I.continuous[$]){V.vertexIndices[A]=[W,K],V.vertexIndices.splice(A+1,0,[$,X]),V.vertices.splice((A+1)*2,0,V.vertices[A*2],V.vertices[A*2+1]);break}}}ne.push({bevelI:R,angle:E,size:B,boundary:V,reverseMap:j,insetPoints:O})}let J=(R,E,B)=>{let O=0,_=R.boundary.vertexIndices.length;for(;O<_&&B(R.boundary.vertexIndices[E]);)E=(E+1)%_,O++;return O},U=y.length;for(let R=1;R<ne.length;R++){let E=ne[R-1],B=ne[R],O=E.boundary.vertexIndices.length,_=B.boundary.vertexIndices.length;if(!O||!_)break;let Y=I.concave.length,j=0,F=ml(j,P);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=ml(j,P);let V=E.boundary.vertexIndices.findIndex(F),A=B.boundary.vertexIndices.findIndex(F);do V=(V+1)%O;while(F(E.boundary.vertexIndices[V]));do A=(A+1)%_;while(F(B.boundary.vertexIndices[A]));j=(j+1)%P;let W=j,X=this.buildBevelVert(I,E,(V-1+O)%O),Q=this.buildBevelVert(I,B,(A-1+_)%_),H=X,K=Q,$,re,ae=!1;do{F=ml(j,P);let ie=J(E,V,F),me=J(B,A,F),De=ae;if(ae=!1,ie&&!me){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(I,E,(V+ge)%O,ge/(ie-1)),y.push(H.topN,$.topP,K.topN),y.push($.bottomP,H.bottomN,K.bottomN),H=$;ae=!0}else if(!ie&&me)for(let ge=0;ge<me;ge++)re=this.buildBevelVert(I,B,(A+ge)%_,ge/(me-1)),y.push(K.topN,H.topP,re.topP),y.push(H.bottomP,K.bottomN,re.bottomP),K=re;else if(ie&&me)if($=this.buildBevelVert(I,E,V,0),re=this.buildBevelVert(I,B,A,0),De?(y.push(H.topN,re.topP,K.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,K.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(K.topN,H.topN,$.topP),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,K.bottomN),y.push($.bottomP,K.bottomN,re.bottomP)),H=$,K=re,ie===me)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(I,E,(V+ge)%O,ge/(ie-1)),re=this.buildBevelVert(I,B,(A+ge)%_,ge/(me-1)),y.push(H.topN,$.topP,K.topN),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,K.bottomN),y.push($.bottomP,K.bottomN,re.bottomP),H=$,K=re;else if(ie>me){let ge=ie/me,Re=0;for(let Se=1;Se<ie;Se++)$=this.buildBevelVert(I,E,(V+Se)%O,Se/(ie-1)),y.push(H.topN,$.topP,K.topN),y.push($.bottomP,H.bottomN,K.bottomN),H=$,Se>(Re+1)*ge&&(Re++,re=this.buildBevelVert(I,B,(A+Re)%_,Re/(me-1)),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,K.bottomN,re.bottomP),K=re)}else{let ge=me/ie,Re=0;for(let Se=1;Se<me;Se++)re=this.buildBevelVert(I,B,(A+Se)%_,Se/(me-1)),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,K.bottomN,re.bottomP),K=re,Se>(Re+1)*ge&&(Re++,$=this.buildBevelVert(I,E,(V+Re)%O,Re/(ie-1)),y.push(H.topN,$.topP,K.topN),y.push($.bottomP,H.bottomN,K.bottomN),H=$)}V=(V+ie)%O,A=(A+me)%_,j=(j+1)%Y}while(j!==W)}{let R=ne[0];for(let E=0,B=R.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(I,R,E),_=this.buildBevelVert(I,R,(E+1)%B);y.push(_.topP,O.topN,O.bottomN),y.push(_.topP,O.bottomN,_.bottomP)}}if(f){let R=[];for(let E=y.length-1;E>=U+2;E-=3){let B=y[E-2],O=y[E-1],_=y[E-0];R.push(_,O,B)}y.splice(U,y.length-U,...R)}if(f){let R=[];for(let E=ne[ne.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ne[ne.length-1].boundary.vertices[E-1],O=ne[ne.length-1].boundary.vertices[E-0];R.push(B,O)}b.push(R)}if(!f){let R=ne[ne.length-1],E=eo({windingRule:ne.length>1?Ie.POSITIVE:Ie.ODD,elementType:je.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...b]});if(!E)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let B=0;B<E.elementCount*3;B+=3){let O=this.buildSurfaceVert(E,E.elements[B+0]),_=this.buildSurfaceVert(E,E.elements[B+1]),Y=this.buildSurfaceVert(E,E.elements[B+2]);y.push(O.top,_.top,Y.top),y.push(Y.bottom,_.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let C=new As(Uint32Array.from(y),1),S=new As(this._buffer.positions,3),v=new As(this._buffer.normals,3),z=new As(this._buffer.uvs,2);S.needsUpdate=!0,v.needsUpdate=!0,z.needsUpdate=!0,C.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",v),this.setAttribute("uv",z),this.setIndex(C)}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,u={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]=u,u}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,u;a!==l?(h=a,c=l,u=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,u=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||u);let d=Math.cos(r.angle),m=Math.sin(r.angle),g=o*2,x=c*2,y=h*2,b=r.boundary.vertices[g+0],C=r.boundary.vertices[g+1],S=(1-m)*this._bevelSize,v=(b-this._minX)/this._width,z=(C-this._minY)/this._height,w=e.normals[x+0],f=e.normals[x+1],D=e.normals[y+0],L=e.normals[y+1];if(u){let q=D-w,oe=L-f;w=w+q*(1-i),f=f+oe*(1-i);let ce=Math.sqrt(w*w+f*f);w/=ce,f/=ce}let P=this._buffer.get(p?2:4),M=P*3,I=P*2,k={i:o,fi:c,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[M+0]=b,this._buffer.positions[M+1]=C,this._buffer.positions[M+2]=this._depth-S,this._buffer.normals[M+0]=w*d,this._buffer.normals[M+1]=f*d,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=v,this._buffer.uvs[I+1]=z,this._buffer.positions[M+3]=b,this._buffer.positions[M+4]=C,this._buffer.positions[M+5]=S,this._buffer.normals[M+3]=w*d,this._buffer.normals[M+4]=f*d,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=z,this._buffer.uvs[I+3]=v,p||(P+=2,M+=6,I+=4,k.topP=P+0,k.bottomP=P+1,this._buffer.positions[M+0]=b,this._buffer.positions[M+1]=C,this._buffer.positions[M+2]=this._depth-S,this._buffer.normals[M+0]=D*d,this._buffer.normals[M+1]=L*d,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=v,this._buffer.uvs[I+1]=z,this._buffer.positions[M+3]=b,this._buffer.positions[M+4]=C,this._buffer.positions[M+5]=S,this._buffer.normals[M+3]=D*d,this._buffer.normals[M+4]=L*d,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=z,this._buffer.uvs[I+3]=v),this.vertexCache[s]=k,k}clone(){let e=new ko(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ci(this.userData),e}};var Je=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof be?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new be(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let l=s??new be(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:a}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new jo(n.shape,o):s=new ko(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Mu,Vector2 as Pu}from"three";var Iu=Math.PI*2,Ou=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width: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,u=fv(c,h,p,o*Math.PI/180,r,i);c.isClosed=!0,c.update();let d=Je.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...n,type:"EllipseGeometry"}})}};function fv(n,t,e,r,o,i){if(r>=Iu)return o>30||o%4===0?(yv(n,t,e,i),Math.round(o/4)):Tu(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=Su({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?gv(n,s.x,s.y,c,o,t,e,i):Tu(n,r,o,t,e,i)}function gv(n,t,e,r,o,i,s,a){let l=Math.round(o/r.length);n.addPoint(Ho(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=n.points[c],d=Ho(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),n.addPoint(d)}return a>0?Au(n,i,s,a):n.addPoint(Ho(0,0)),l}function Tu(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(Ho(c,h))}return t<Iu?i>0?Au(n,r,o,i):n.addPoint(Ho(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Du(n,r,o,i)),1}function yv(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,l=e*s;n.addPoint(Ds(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Ds(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Ds(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Ds(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Du(n,t,e,r)}function Ho(n,t){return new zt(Mu.generateUUID(),new Pu(n,t))}function Ds(n,t,e,r,o,i){let s=Ho(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Au(n,t,e,r){Bu(n,t,e,r).forEach(i=>n.addPoint(i))}function Du(n,t,e,r){let o=Bu(n,t,e,r),i=new be;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Bu(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Pu(o/t,i/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=Mu.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 xv,Float32BufferAttribute as fl,Vector3 as Eu}from"three";var _u=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{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(e.height??r),i=Math.abs(e.depth??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,u=new ji(!1,t,e,r,o,i,s,a,l,c,h,p);return Object.assign(u,{userData:{...n,type:"HelixGeometry"}})}},ji=class extends xv{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,l=1,c=1,h=1,p=1,u=1){super();let d=t&&s===1;d&&(u=0),p>100&&(p=100);let m=()=>new Eu,g=new Eu,x=m(),y=m(),b=m(),C,S,v,z,w,f,D,L,P=m(),M=m(),I=m(),k=m(),q=m(),oe=m(),ce=m(),ne=m(),J=r-2*l+.001,U=J/s,R=Math.ceil(a*s),E=R+1,B=J/R,O=-J/2,_=h+1,Y=2*Math.PI/h,j=Math.PI/2/u,F=.01,V=Math.min((1-p/100)*l,l-F),A=l-V,W=0,X=2,Q=u*X+X,H=_*Q/X,K=H+_*E,$=_*(E+Q),[re,ae,ie]=[3,3,2].map(Ee=>Array($*Ee).fill(0)),me=[],De=i-l;function ge(Ee,bt){let Ht=Math.PI/2;f=bt*B,L=2*Math.PI*(f%U)/U+Ht,f+=O,D=Math.sin(L)*De,w=Math.cos(L)*De,t?Ee.set(w,D,f):Ee.set(w,f,D)}ge(g,-1e-10),ge(x,0),P.copy(g),ge(g,1);let Re=g.distanceTo(x),Se=A+V,pt=Re*R+2*Se,Ct=V,lo=pt-Se;for(let Ee=0;Ee<=R;Ee++){ge(y,Ee),ne.subVectors(y,P).normalize(),P.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),ce.crossVectors(ne,oe).normalize();let bt=Ee===0,Ht=Ee===R,Om=bt?3*Math.PI/2:j,Am=bt?Ct:lo,Dm=bt?_:K,Bm=bt?0:$-_,Em=ne.clone().multiplyScalar(bt?-A:A).add(y),_m=ne.clone().multiplyScalar(bt?-1:1).normalize();for(let hr=0;hr<_;hr++){let lc=hr*Y;if(M.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(lc)),x.copy(ce).multiplyScalar(l*Math.sin(lc))),I.copy(M).normalize(),bt||Ht){d||(W=Bm+hr,[0,1,2].forEach(ut=>{re[W*3+ut]=Em.getComponent(ut),ae[W*3+ut]=_m.getComponent(ut)}),ie[W*2]=+Ht,ie[W*2+1]=hr/h),x.copy(I).multiplyScalar(V),b.addVectors(y,x);for(let ut=0;ut<u;ut++){let va=ut*j+Om;k.addVectors(g.copy(ne).multiplyScalar(A*Math.sin(va)),x.copy(I).multiplyScalar(A*Math.cos(va))),q.copy(k).normalize(),x.addVectors(b,k),k.normalize(),W=Dm+ut*_+hr,[0,1,2].forEach(vn=>{re[W*3+vn]=x.getComponent(vn),ae[W*3+vn]=q.getComponent(vn)});let Gm=+bt+Math.sin(va);ie[W*2]=(Am+A*Gm)/pt,ie[W*2+1]=hr/h}}x.addVectors(y,M),W=H+Ee*_+hr,[0,1,2].forEach(ut=>{re[W*3+ut]=x.getComponent(ut),ae[W*3+ut]=I.getComponent(ut)}),ie[W*2]=(Se+Ee*Re)/pt,ie[W*2+1]=hr/h}}let xt=E+2*u+X,co=1,[xn,bn]=d?[co,co+E-1]:[0,xt-1];for(let Ee=xn;Ee<=bn-1;Ee++){let bt=d&&Ee===bn-1;for(let Ht=0;Ht<_-1;Ht++)C=Ee*_+Ht,S=C+1,v=(bt?Ht:C)+_,z=(bt?Ht+1:S)+_,Ee===0?me.push(S,z,v):Ee===xt-2?me.push(C,S,v):me.push(C,S,v,S,z,v)}this.setIndex(me),this.setAttribute("position",new fl(re,3)),this.setAttribute("normal",new fl(ae,3)),this.setAttribute("uv",new fl(ie,2))}};import{IcosahedronBufferGeometry as bv}from"three";var Gu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new ki(t*.5,i,s):new bv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},ki=class extends Er{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 ki(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as vv,Shape as Sv}from"three";var zu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new Sv;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 vv(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as ku,BufferGeometryLoader as Av,Vector3 as Dv,BoxBufferGeometry as Hu}from"three";import{BufferGeometry as Mv,Vector2 as xl,Vector3 as ju}from"three";import{Box3 as wv,BufferAttribute as Hi,BufferGeometry as Ru,Color as Vu,EventDispatcher as Nv,Float32BufferAttribute as qo,Matrix3 as Fu,Matrix4 as Uu,MathUtils as Lv,Object3D as Cv,Sphere as Tv,Vector2 as Ot,Vector3 as tt}from"three";var Qt=new Uu,gl=new Cv,Bs=new tt,Gr=class extends Nv{constructor(){super(),this.uuid=Lv.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new Fu().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Qt.makeRotationX(t),this.applyMatrix4(Qt),this}rotateY(t){return Qt.makeRotationY(t),this.applyMatrix4(Qt),this}rotateZ(t){return Qt.makeRotationZ(t),this.applyMatrix4(Qt),this}translate(t,e,r){return Qt.makeTranslation(t,e,r),this.applyMatrix4(Qt),this}scale(t,e,r){return Qt.makeScale(t,e,r),this.applyMatrix4(Qt),this}lookAt(t){return gl.lookAt(t),gl.updateMatrix(),this.applyMatrix4(gl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let u=0;u<i.count;u++)e.vertices.push(new tt().fromBufferAttribute(i,u)),a!==void 0&&e.colors.push(new Vu().fromBufferAttribute(a,u));function h(u,d,m,g){let x=a===void 0?[]:[e.colors[u].clone(),e.colors[d].clone(),e.colors[m].clone()],y=s===void 0?[]:[new tt().fromBufferAttribute(s,u),new tt().fromBufferAttribute(s,d),new tt().fromBufferAttribute(s,m)],b=new Wo(u,d,m,y,x,g);e.faces.push(b),l!==void 0&&e.faceVertexUvs[0].push([new Ot().fromBufferAttribute(l,u),new Ot().fromBufferAttribute(l,d),new Ot().fromBufferAttribute(l,m)]),c!==void 0&&e.faceVertexUvs[1].push([new Ot().fromBufferAttribute(c,u),new Ot().fromBufferAttribute(c,d),new Ot().fromBufferAttribute(c,m)])}let p=t.groups;if(p.length>0)for(let u=0;u<p.length;u++){let d=p[u],m=d.start,g=d.count;for(let x=m,y=m+g;x<y;x+=3)r!==void 0?h(r.getX(x),r.getX(x+1),r.getX(x+2),d.materialIndex):h(x,x+1,x+2,d.materialIndex)}else if(r!==void 0)for(let u=0;u<r.count;u+=3)h(r.getX(u),r.getX(u+1),r.getX(u+2));else for(let u=0;u<i.count;u+=3)h(u,u+1,u+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Bs).negate(),this.translate(Bs.x,Bs.y,Bs.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Uu;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new tt,e=new tt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],a=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,a),e.subVectors(s,a),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new tt;if(t){let r=new tt,o=new tt;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],l=this.vertices[a.a],c=this.vertices[a.b],h=this.vertices[a.c];r.subVectors(h,c),o.subVectors(l,c),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new Gr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new tt,h={a:new tt,b:new tt,c:new tt};i.push(c),s.push(h)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new wv),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Tv),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,a=t.vertices,l=this.faces,c=t.faces,h=this.colors,p=t.colors;e!==void 0&&(o=new Fu().getNormalMatrix(e));for(let u=0,d=a.length;u<d;u++){let g=a[u].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let u=0,d=p.length;u<d;u++)h.push(p[u].clone());for(let u=0,d=c.length;u<d;u++){let m=c[u],g,x,y=m.vertexNormals,b=m.vertexColors,C=new Wo(m.a+i,m.b+i,m.c+i);C.normal.copy(m.normal),o!==void 0&&C.normal.applyMatrix3(o).normalize();for(let S=0,v=y.length;S<v;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),C.vertexNormals.push(g);C.color.copy(m.color);for(let S=0,v=b.length;S<v;S++)x=b[S],C.vertexColors.push(x.clone());C.materialIndex=m.materialIndex+r,l.push(C)}for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],b=[];for(let C=0,S=y.length;C<S;C++)b.push(y[C].clone());this.faceVertexUvs[u].push(b)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let h=this.vertices[l],p=Math.round(h.x*i)+"_"+Math.round(h.y*i)+"_"+Math.round(h.z*i);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let h=this.faces[l];h.a=o[h.a],h.b=o[h.b],h.c=o[h.c];let p=[h.a,h.b,h.c];for(let u=0;u<3;u++)if(p[u]===p[(u+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let h=0,p=this.faceVertexUvs.length;h<p;h++)this.faceVertexUvs[h].splice(c,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new tt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let l=0;l<e;l++){let c=t[l]._id;s&&s.push(o[c]),a&&a.push(i[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let g in m)m[g]!==void 0&&(t[g]=m[g]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let g=this.vertices[m];e.push(g.x,g.y,g.z)}let r=[],o=[],i={},s=[],a={},l=[],c={};for(let m=0;m<this.faces.length;m++){let g=this.faces[m],x=!0,y=!1,b=this.faceVertexUvs[0][m]!==void 0,C=g.normal.length()>0,S=g.vertexNormals.length>0,v=g.color.r!==1||g.color.g!==1||g.color.b!==1,z=g.vertexColors.length>0,w=0;if(w=h(w,0,0),w=h(w,1,x),w=h(w,2,y),w=h(w,3,b),w=h(w,4,C),w=h(w,5,S),w=h(w,6,v),w=h(w,7,z),r.push(w),r.push(g.a,g.b,g.c),r.push(g.materialIndex),b){let f=this.faceVertexUvs[0][m];r.push(d(f[0]),d(f[1]),d(f[2]))}if(C&&r.push(p(g.normal)),S){let f=g.vertexNormals;r.push(p(f[0]),p(f[1]),p(f[2]))}if(v&&r.push(u(g.color)),z){let f=g.vertexColors;r.push(u(f[0]),u(f[1]),u(f[2]))}}function h(m,g,x){return x?m|1<<g:m&~(1<<g)}function p(m){let g=m.x.toString()+m.y.toString()+m.z.toString();return i[g]!==void 0||(i[g]=o.length/3,o.push(m.x,m.y,m.z)),i[g]}function u(m){let g=m.r.toString()+m.g.toString()+m.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(m.getHex())),a[g]}function d(m){let g=m.x.toString()+m.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(m.x,m.y)),c[g]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Gr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let u=0,d=e.length;u<d;u++)this.vertices.push(e[u].clone());let r=t.colors;for(let u=0,d=r.length;u<d;u++)this.colors.push(r[u].clone());let o=t.faces;for(let u=0,d=o.length;u<d;u++)this.faces.push(o[u].clone());for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],b=[];for(let C=0,S=y.length;C<S;C++){let v=y[C];b.push(v.clone())}this.faceVertexUvs[u].push(b)}}let i=t.morphTargets;for(let u=0,d=i.length;u<d;u++){let m={};if(m.name=i[u].name,i[u].vertices!==void 0){m.vertices=[];for(let g=0,x=i[u].vertices.length;g<x;g++)m.vertices.push(i[u].vertices[g].clone())}if(i[u].normals!==void 0){m.normals=[];for(let g=0,x=i[u].normals.length;g<x;g++)m.normals.push(i[u].normals[g].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let u=0,d=s.length;u<d;u++){let m={};if(s[u].vertexNormals!==void 0){m.vertexNormals=[];for(let g=0,x=s[u].vertexNormals.length;g<x;g++){let y=s[u].vertexNormals[g],b={};b.a=y.a.clone(),b.b=y.b.clone(),b.c=y.c.clone(),m.vertexNormals.push(b)}}if(s[u].faceNormals!==void 0){m.faceNormals=[];for(let g=0,x=s[u].faceNormals.length;g<x;g++)m.faceNormals.push(s[u].faceNormals[g].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let u=0,d=a.length;u<d;u++)this.skinWeights.push(a[u].clone());let l=t.skinIndices;for(let u=0,d=l.length;u<d;u++)this.skinIndices.push(l[u].clone());let c=t.lineDistances;for(let u=0,d=c.length;u<d;u++)this.lineDistances.push(c[u]);let h=t.boundingBox;h!==null&&(this.boundingBox=h.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new yl().fromGeometry(this),e=new Ru,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Hi(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Hi(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Hi(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Hi(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Hi(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],h=new qo(c.data.length*3,3);h.name=c.name,i.push(h.copyVector3sArray(c.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new qo(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new qo(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Ru,r=t.geometry;if(t.isPoints||t.isLine){let o=new qo(r.vertices.length*3,3),i=new qo(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new qo(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Gr.prototype.isGeometry=!0;var yl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let h=t.morphNormals,p=h.length,u;if(p>0){u=[];for(let y=0;y<p;y++)u[y]={name:h[y].name,data:[]};this.morphTargets.normal=u}let d=t.skinIndices,m=t.skinWeights,g=d.length===r.length,x=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let b=e[y];this.vertices.push(r[b.a],r[b.b],r[b.c]);let C=b.vertexNormals;if(C.length===3)this.normals.push(C[0],C[1],C[2]);else{let v=b.normal;this.normals.push(v,v,v)}let S=b.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let v=b.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][y];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new Ot,new Ot,new Ot))}if(s===!0){let v=o[1][y];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new Ot,new Ot,new Ot))}for(let v=0;v<l;v++){let z=a[v].vertices;c[v].data.push(z[b.a],z[b.b],z[b.c])}for(let v=0;v<p;v++){let z=h[v].vertexNormals[y];u[v].data.push(z.a,z.b,z.c)}g&&this.skinIndices.push(d[b.a],d[b.b],d[b.c]),x&&this.skinWeights.push(m[b.a],m[b.b],m[b.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Wo=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new tt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Vu,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var Pv=["a","b","c"];function Iv(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function bl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function vl(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 Ov(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],vl(s.a,s.b,n,r,s,e),vl(s.b,s.c,n,r,s,e),vl(s.c,s.a,n,r,s,e)}function Es(n,t,e,r,o){n.push(new Wo(t,e,r,void 0,void 0,o))}function $o(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function _s(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Gs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Mv?t=new Gr().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 ju,r,o,i,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],d=new Map;Ov(l,c,u,d);let m=[],g,x,y,b,C,S,v;for(let F of Array.from(d.keys())){for(x=d.get(F),y=new ju,C=3/8,S=1/8,v=x.faces.length,v!=2&&(C=.5,S=0,v!=1),y.addVectors(x.a,x.b).multiplyScalar(C),e.set(0,0,0),s=0;s<v;s++){for(b=x.faces[s],a=0;a<3&&(g=l[Iv(b,Pv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=m.length,m.push(y)}let z,w,f,D,L,P,M,I=[];for(o=0,i=l.length;o<i;o++){for(P=l[o],L=u[o].edges,r=L.length,r==3?z=3/16:r>3&&(z=3/(8*r)),w=1-r*Number(z),f=z,r<=2&&(r==2?(w=3/4,f=1/8):r==1||r==0),M=P.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)D=L[s],g=D.a!==P?D.a:D.b,e.add(g);e.multiplyScalar(Number(f)),M.add(e),I.push(M)}let k=I.concat(m),q=I.length,oe,ce,ne,J=[],U=[],R,E,B,O,_=new xl,Y=new xl,j=new xl;for(o=0,i=c.length;o<i;o++)b=c[o],oe=Number(bl(b.a,b.b,d).newEdge)+q,ce=Number(bl(b.b,b.c,d).newEdge)+q,ne=Number(bl(b.c,b.a,d).newEdge)+q,Es(J,oe,ce,ne,b.materialIndex),Es(J,b.a,oe,ne,b.materialIndex),Es(J,b.b,ce,oe,b.materialIndex),Es(J,b.c,ne,ce,b.materialIndex),p&&(R=h[o],E=R[0],B=R[1],O=R[2],_.set($o(E.x,B.x),$o(E.y,B.y)),Y.set($o(B.x,O.x),$o(B.y,O.y)),j.set($o(E.x,O.x),$o(E.y,O.y)),_s(U,_,Y,j),_s(U,E,_,j),_s(U,B,Y,_),_s(U,O,j,Y));t.vertices=k,t.faces=J,p&&(t.faceVertexUvs[0]=U)}};var ke=new Dv,qu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new ku().copy(new Hu(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.z,subdivisions:0}):r=t.parameters;let o={...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){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new ku().copy(new Hu(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Gs(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:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new Av(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var Wu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width: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,u=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let x=d*g,y=p+Math.sin(x)*c,b=u+Math.cos(x)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let m=Je.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as Bv,Float32BufferAttribute as Sl,Vector2 as Zt,Vector3 as We}from"three";var $u=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Nl(t*.5,e,o,i,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function qi(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function wl(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 Ev(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Nl=class extends Bv{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=[],u=0,d=e/2,m=Math.PI/r,g=t*Math.cos(Math.PI/r),x=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,C=new We(0,-d,0),S=new We(0,d,0),v=new Zt(t,-d),z=new Zt(g,-d),w=new Zt(0,S.y).sub(z),f=new Zt(0,S.y).sub(v),D=new Zt(w.y,-w.x).normalize(),L=new Zt(f.y,-f.x).normalize(),M=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,M);let I;{let U=new We(D.x,D.y,0),R=new We(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);I=U.angleTo(R)}let k=s/Math.tan((Math.PI-w.angle())/2),q=s/Math.tan((Math.PI-I)/2),oe=new We;if(!i){c.push(C.x,C.y,C.z),h.push(0,-1,0),p.push(0,0);let U=u++,R=[],E=v.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let _=O/r*Math.PI*2+m,Y=new Zt(Math.sin(_),Math.cos(_));qi(E,Y,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),R.push(u++)}for(let O=0;O<R.length;O++)l.push(R[O],U,R[(O+1)%R.length])}let ce=[];{let U=new We,R=new We,E=new We,B=new We,O=new We,_=new We;for(let Y=0;Y<r;Y++){let j=Y/r*Math.PI*2+m,F=(Y+.5)/r*Math.PI*2+m,V=(Y+1)/r*Math.PI*2+m,A=new Zt(Math.sin(j),Math.cos(j)),W=new Zt(Math.sin(F),Math.cos(F)),X=new Zt(Math.sin(V),Math.cos(V));qi(v,A,R),qi(v,X,E),qi(D,W,U),wl(S,R,E,q,q,B),c.push(B.x,B.y,B.z),wl(R,S,E,q,k,O),c.push(O.x,O.y,O.z),wl(E,R,S,k,q,_),c.push(_.x,_.y,_.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),p.push(0,0),p.push(0,0),p.push(0,0);let Q=u++,H=u++,K=u++;if(l.push(Q,H,K),s>0){{let ae=R.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ae).normalize(),De=C.clone().sub(ae).normalize().add(ie).normalize().multiplyScalar(-1),ge=_.clone().sub(O);ne(ae,ge,De,w.angle())}let $,re;{let ae=new We;qi(L,X,ae);let ie=_.clone().add(B).multiplyScalar(.5);ie=Ev(ie,E,S);let me=_.clone().sub(B);[$,re]=ne(ie,me,ae,I,B.y)}{let ae=$,ie=ae.clone().setY(0).normalize(),me=new We(0,-1,0),De=ie.clone().cross(me);J(ae,ie,me,De)}ce.concat(re);{let ae=w.angle(),ie=Math.PI-ae,me=S.clone();me.y-=s/Math.sin(ae-Math.PI/2);let De=new We,ge=[];for(let Se=0;Se<a;Se++){let pt=[],Ct=Math.PI/2-ie*Se/a,lo=Math.cos(Ct),xt=Math.sin(Ct),co=F;for(let xn=0;xn<=Se;xn++){let bn=Math.cos(co),Ee=Math.sin(co);U.x=lo*Ee,U.y=xt,U.z=lo*bn,De.copy(me).addScaledVector(U,s),c.push(De.x,De.y,De.z),h.push(U.x,U.y,U.z),p.push(0,0),pt.push(u++),co+=Math.PI*2/Se/r}ge.push(pt)}re.reverse(),ge.push(re);let Re=ge.length-1;for(let Se=0;Se<Re;Se++){let pt=ge[Se],Ct=ge[Se+1],lo=pt.length-1;l.push(Ct[1],pt[0],Ct[0]);for(let xt=1;xt<=lo;xt++)l.push(pt[xt],pt[xt-1],Ct[xt]),l.push(Ct[xt+1],pt[xt],Ct[xt])}}}}}this.setIndex(l),this.setAttribute("position",new Sl(c,3)),this.setAttribute("normal",new Sl(h,3)),this.setAttribute("uv",new Sl(p,2));function ne(U,R,E,B,O){let _=-B/2,Y=(Math.PI-B)/2,j=R.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Y));let F=new We,V=new We,A=1,W=u,X=[];for(let Q=0;Q<=a;Q++){let H=_+Q/a*B;V.set(0,0,0),V.addScaledVector(j,Math.sin(H)),V.addScaledVector(E,Math.cos(H));for(let K=0;K<=A;K++){let $=K/A-.5;if(F.copy(U),F.addScaledVector(R,$),F.addScaledVector(V,s),O!=null){let re=Math.max(0,F.y-O);F.addScaledVector(R,-re/R.y)}c.push(F.x,F.y,F.z),h.push(V.x,V.y,V.z),p.push(0,0),K===0&&X.push(u),u++}}for(let Q=0;Q<a;Q++)for(let H=0;H<A;H++){let K=W+H+(A+1)*Q,$=K+(A+1),re=$+1,ae=K+1;l.push(K,$,ae),l.push($,re,ae)}return[U.clone().addScaledVector(R,.5),X]}function J(U,R,E,B){let O=Math.PI/2,_=f.angle()-O,Y=[],j=new We,F=new We;for(let A=0;A<=a;A++){let W=[],X=A/a;for(let Q=0;Q<=A;Q++){let K=((A?Q/A:0)-.5)*b,$=Math.cos(K),re=Math.sin(K),ae=Math.atan(Math.tan(_)*$),ie=(O+ae)*X,me=Math.cos(ie),De=Math.sin(ie);j.set(0,0,0),j.addScaledVector(R,De*$),j.addScaledVector(E,me),j.addScaledVector(B,De*re),F.copy(U).addScaledVector(j,s),c.push(F.x,F.y,F.z),h.push(j.x,j.y,j.z),p.push(0,0),W.push(u++)}Y.push(W)}let V=Y.length-1;for(let A=0;A<V;A++){let W=Y[A],X=Y[A+1],Q=W.length-1;l.push(W[0],X[1],X[0]);for(let H=1;H<=Q;H++)l.push(W[H-1],W[H],X[H]),l.push(W[H],X[H+1],X[H])}}}};var zs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(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 u(S,v,z){return v>e&&z>r?Math.min(S*e/v,S*r/z):v>e?S*e/v:z>r?S*r/z:S}let d=[];d[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let m=h.x,g=p.x,x=p.y,y=h.y;t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(g,x)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(m,y)),t.isClosed=!0;let b=!0;for(let S=0,v=t.points.length;S<v;S++)t.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(b=!1);b&&(t.roundness=d[0]),t.useCubicForRoundedCorners=i!==1,t.update();let C=Je.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(C,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as _v}from"three";var Ju=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{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(e.height??e.width),depth:Math.abs(e.depth??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 _v(.5*t,o,i,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as Gv}from"three";var Yu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Gv(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as zv,Float32BufferAttribute as Ll,Vector3 as Rv}from"three";var Ku=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,a=new Cl(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Cl=class extends zv{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],h=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-h,o),o*=Math.PI/180;let p=[],u=(F=0,V=0,A=0)=>new Rv(F,V,A),d=u(),m=u(),[g,x,y]=[e/2,t/2,r/2],b=-x,C=+x,[S,v,z]=[u(b,-g,+y),u(b,-g,-y),u(b,+g,-y)],[w,f]=[F=>Math.sin(F),F=>Math.cos(F)],D=(F,V=!1)=>Math.sin(F-Math.PI/(1+ +V)),L=(F,V=!1)=>Math.cos(F-Math.PI/(1+ +V));z.y=w(o)*e-g;let P=f(o)*e-y;o<=Math.PI/2?z.z=Math.min(P,S.z-h):v.z=Math.min(v.z-P-y,S.z-h),d.subVectors(S,v),m.subVectors(z,v);let M=Math.min(d.length(),m.length())*i/100,I=M*Math.tan(o/2),k=M/Math.cos(o/2),q=d.clone().normalize().add(m.normalize()).setLength(k).add(v);d.set(0,D(o,!0),L(o,!0)),p.push([z,d.clone()]);let oe=(Math.PI-o)/s;for(let F=0;F<=s;F++){let V=Math.PI/2+o+F*oe;d.set(0,w(V)*I,f(V)*I),d.add(q),m.set(0,D(V),L(V)),p.push([d.clone(),m.clone()])}p.push([S,u(0,1,0)]);let ce=Math.sin(oe/2)*I*2,ne=p.length-1,J=p[0][0].distanceTo(p[1][0]),U=p[ne-1][0].distanceTo(p[ne][0]),R=J+ce*s+U;p[0].push(1);for(let F=0;F<=s;F++)p[F+1].push(1-(J+F*ce)/R);p[ne].push(0);let[E,B,O]=p[0],_,Y,j;for(let F=1;F<p.length;F++)[_,Y,j]=p[F],a.push(b,E.y,E.z,b,_.y,_.z,C,E.y,E.z,C,E.y,E.z,b,_.y,_.z,C,_.y,_.z),l.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),c.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[_,Y,j];this.setAttribute("position",new Ll(a,3)),this.setAttribute("normal",new Ll(l,3)),this.setAttribute("uv",new Ll(c,2))}};var Xu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width: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,u=e*.5,d=0,m=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let v=g*S,z=d+Math.sin(v)*p,w=m+Math.cos(v)*u;h.addPoint(h.createPoint(z,w))}}else for(let S=0;S<o;S++){let v=d+Math.cos(x)*p,z=m+Math.sin(x)*u;h.addPoint(h.createPoint(v,z)),x+=g,v=d+Math.cos(x)*y,z=m+Math.sin(x)*b,S<=o,h.addPoint(h.createPoint(v,z)),x+=g}h.isClosed=!0;for(let S=0,v=h.points.length;S<v;S++)h.points[S].roundness=i;h.roundness=i,h.update();let C=Je.create({shape:h,parameters:{roundness:i,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(C,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as Fv}from"three";var Rs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new Fv(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Qu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??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=Vv(t,e,r,t*.5,s,i,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function Vv(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 ji(!0,n,t,e,r,o,i,s,a,l,c,h)}import{TorusKnotBufferGeometry as Uv}from"three";var Zu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let l=new Uv(a,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var ed=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width: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 u=0,d=l.points.length;u<d;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=Je.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Fs={};cc(Fs,{addBarycentricAttribute:()=>Wv,fixUvs:()=>Jv,loadFromUrl:()=>$v,resizeGeometry:()=>qv,roundShapePolygon:()=>Hv});import{BufferGeometryLoader as jv,Float32BufferAttribute as kv,Vector3 as Tl}from"three";var td=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}},Hv=(n,t,e)=>{let r,o,i,s,a,l,c,h,p,u,d,m,g,x,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=td(a,s),C=td(a,l);c=b.nx*C.ny-b.ny*C.nx,h=b.nx*C.nx-b.ny*-C.ny,d=Math.asin(c),p=1,u=!1,h<0?d<0?d=Math.PI+d:(d=Math.PI-d,p=-1,u=!0):d>0&&(p=-1,u=!0),m=d/2,x=Math.abs(Math.cos(m)*e/Math.sin(m)),x>Math.min(b.len/2,C.len/2)?(x=Math.min(b.len/2,C.len/2),g=Math.abs(x*Math.sin(m)/Math.cos(m))):g=e,o=a.x+C.nx*x,i=a.y+C.ny*x,o+=-C.ny*g*p,i+=C.nx*g*p,n.absarc(o,i,g,b.ang+Math.PI/2*p,C.ang-Math.PI/2*p,u),s=a,a=l}n.closePath()},qv=(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},Wv=(n,t)=>{let e=[new Tl(1,0,0),new Tl(0,1,0),new Tl(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 kv(o,3))},$v=n=>new Promise(t=>{new jv().load(n,r=>t(r))}),Jv=(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 _d,BufferAttribute as Gd,Uint32BufferAttribute as Wl,Float32BufferAttribute as $l,Matrix4 as sw,Vector3 as na}from"three";var Yv,Vs=new Promise(n=>{Yv=n});import{BufferGeometryLoader as iw}from"three";import{DoubleSide as ew,EventDispatcher as tw,Matrix3 as rw,Vector3 as ql}from"three";import{NormalBlending as yS,ShaderMaterial as xS,FrontSide as bS}from"three";import{CubeReflectionMapping as lS,CubeRefractionMapping as cS,CubeUVReflectionMapping as hS,LinearEncoding as sd,sRGBEncoding as pS}from"three";var Wi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as Kv}from"three";var le=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Kv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,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?.materials&&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 le&&(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){return this.getJSONNode(t)??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 Ml=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}},He=new Ml;import{Vector2 as rd}from"three";import{MathUtils as Xv}from"three";var pe=class extends le{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Xv.generateUUID()),o=e.getUUID(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??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Me=class extends pe{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}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??this.getUUID()),i=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 rt=class extends Me{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof rd?e:new rd(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 od}from"three";var ot=class extends Me{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof od?e:new od(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 Qv}from"three";var ft=class extends Qv{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 xr=class extends Me{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ft?e:new ft(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 Zv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,id=/[a-z_0-9]+/gi,te=class extends pe{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=id.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],d=u[0],m=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&m&&He.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=He.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||He.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&He.contains(g)&&e.include(He.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??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=Zv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(id);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){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 i in this.keywords)o[i]=this.keywords[i].toJSON(e).uuid;if(r.keywords=o,this.includes?.length){let i=[];for(let s=0;s<this.includes.length;s++)i.push(this.includes[s].toJSON(e).uuid);r.includes=i}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 eS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Pl=class extends pe{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Pl.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=eS.exec(e);this.useDefine=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}},xe=Pl;xe.PI="PI",xe.PI2="PI2",xe.RECIPROCAL_PI="RECIPROCAL_PI",xe.RECIPROCAL_PI2="RECIPROCAL_PI2",xe.LOG2="LOG2",xe.EPSILON="EPSILON";var tS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
+ )*?)}`,"gim"),rS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Jo=class extends pe{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=tS.exec(e);if(r){let o=r[2],i;for(;i=rS.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Yo=class extends pe{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",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}};He.addKeyword("uv",function(){return new Yo});He.addKeyword("uv2",function(){return new Yo(1)});import{LinearEncoding as oS,sRGBEncoding as iS}from"three";var to=class extends pe{constructor(e=new le,r){super("v4");this.nodeType="ColorSpace";this.factor=new le;this.input=e,this.method=r??to.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case oS:return["Linear"];case iS:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=to.Nodes[this.method],a=e.include(s);if(a===to.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",i,r)}else return e.format(a+"( "+o+" )",i,r)}fromEncoding(e){let r=to.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=to.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}},at=to;at.Nodes={LinearToLinear:new te(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
+ `)),sRGBToLinear:new te(["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
+ `)),LinearTosRGB:new te(["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
+ `))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";var Le=class extends te{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as nS}from"three";var er=class extends nS{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]=nd(o[i])}else t.images[o.uuid].url=nd(o)}return e}};function nd(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?sS(n):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var Ko;function sS(n){if(/^data:/i.test(n.src))return n.src;let t;if(n instanceof HTMLCanvasElement)t=n;else{Ko===void 0&&(Ko=document.createElement("canvas")),Ko.width=n.width,Ko.height=n.height;let r=Ko.getContext("2d");n instanceof ImageData?r.putImageData(n,0,0):r.drawImage(n,0,0,n.width,n.height),t=Ko}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 lt=class extends Me{constructor(e=new er,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Yo,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){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=this.colorSpace??new at(new Le("",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 ee=class extends Me{constructor(e){super("f");this.nodeType="Float";this.value=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 $i=class extends pe{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=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],u=this.inputs[h]||this.inputs[p.name];c.push(u.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){let r=this.getJSONNode(e);if(!r){let o=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,o.inputs?.length){r.inputs={};for(let i=0;i<o.inputs.length;i++){let s=o.inputs[i],a=this.inputs[i];r.inputs[s.name]=a.toJSON(e).uuid}}}return r}};var Il=class extends pe{constructor(e=new le,r=new le,o=Il.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}},gt=Il;gt.ADD="+",gt.SUB="-",gt.MUL="*",gt.DIV="/";var Ne=class extends pe{constructor(e=new le,r=Ne.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 Ne.MIX:case Ne.CLAMP:case Ne.REFRACT:case Ne.SMOOTHSTEP:case Ne.FACEFORWARD:return 3;case Ne.MIN:case Ne.MAX:case Ne.MOD:case Ne.STEP:case Ne.REFLECT:case Ne.DISTANCE:case Ne.DOT:case Ne.CROSS:case Ne.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 Ne.LENGTH:case Ne.DISTANCE:case Ne.DOT:return"f";case Ne.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 Ne.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Ne.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Ne.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ne.STEP:o=this.a.build(e,a===1?"f":h),i=this.b.build(e,h);break;case Ne.MIN:case Ne.MAX:case Ne.MOD:o=this.a.build(e,h),i=this.b.build(e,l===1?"f":h);break;case Ne.REFRACT:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,"f");break;case Ne.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 u=[];u.push(o),i&&u.push(i),s&&u.push(s);let d=this.getNumInputs(e);if(u.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${u.length}.`);return e.format(this.method+"( "+u.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof le?e.b.clone():e.b,this.c=e.c instanceof le?e.c.clone():e.c,this.method=e.method,this}},de=Ne;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var Xo=class extends pe{constructor(e=new le,r=new le,o=new le){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let s=new $i(Xo.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new at(new Le("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new at(new Le("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new at(new Le("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new at(new Le("","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 Le(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Le(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Le(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Le(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Le("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 $i(Xo.Nodes.roughnessToMip,[i]),a=new de(s,Xo.Nodes.m0,Xo.Nodes.cubeUV_maxMipLevel,de.CLAMP),l=new de(a,de.FLOOR),c=new de(a,de.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new gt(l,new ee(1).setReadonly(!0),gt.ADD)),u=new de(h,p,c,de.MIX);return e.format(u.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}},Qo=Xo;Qo.Nodes=function(){let e=new Jo(`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 Ne("float cubeUV_maxMipLevel 8.0",!0),o=new Ne("float cubeUV_minMipLevel 4.0",!0),n=new Ne("float cubeUV_maxTileSize 256.0",!0),s=new Ne("float cubeUV_minTileSize 16.0",!0),a=new re(`float getFace(vec3 direction) {
11
+ }`),r=new xe("float cubeUV_maxMipLevel 8.0",!0),o=new xe("float cubeUV_minMipLevel 4.0",!0),i=new xe("float cubeUV_maxTileSize 256.0",!0),s=new xe("float cubeUV_minTileSize 16.0",!0),a=new te(`float getFace(vec3 direction) {
12
12
  vec3 absDirection = abs(direction);
13
13
  float face = -1.0;
14
14
  if (absDirection.x > absDirection.z) {
@@ -23,7 +23,7 @@ var kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=
23
23
  face = direction.y > 0.0 ? 1.0 : 4.0;
24
24
  }
25
25
  return face;
26
- }`);a.useKeywords=!1;let l=new re(`vec2 getUV(vec3 direction, float face) {
26
+ }`);a.useKeywords=!1;let l=new te(`vec2 getUV(vec3 direction, float face) {
27
27
  vec2 uv;
28
28
  if (face == 0.0) {
29
29
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -39,7 +39,7 @@ var kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=
39
39
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
40
40
  }
41
41
  return 0.5 * (uv + 1.0);
42
- }`);l.useKeywords=!1;let c=new re(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
42
+ }`);l.useKeywords=!1;let c=new te(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
43
43
  float face = getFace(direction);
44
44
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
45
45
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -67,7 +67,7 @@ var kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=
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,o,n,s]);c.useKeywords=!1;let h=new Ne("float r0 1.0",!0),p=new Ne("float v0 0.339",!0),u=new Ne("float m0 -2.0",!0),m=new Ne("float r1 0.8",!0),f=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),v=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),S=new Ne("float m5 3.0",!0),k=new Ne("float r6 0.21",!0),T=new Ne("float v6 0.0038",!0),d=new Ne("float m6 4.0",!0),O=[h,p,u,m,f,g,v,y,b,A,N,S,k,T,d],x=new re(`float roughnessToMip(float roughness) {
70
+ }`,[e,a,l,r,o,i,s]);c.useKeywords=!1;let h=new xe("float r0 1.0",!0),p=new xe("float v0 0.339",!0),u=new xe("float m0 -2.0",!0),d=new xe("float r1 0.8",!0),m=new xe("float v1 0.276",!0),g=new xe("float m1 -1.0",!0),x=new xe("float r4 0.4",!0),y=new xe("float v4 0.046",!0),b=new xe("float m4 2.0",!0),C=new xe("float r5 0.305",!0),S=new xe("float v5 0.016",!0),v=new xe("float m5 3.0",!0),z=new xe("float r6 0.21",!0),w=new xe("float v6 0.0038",!0),f=new xe("float m6 4.0",!0),D=[h,p,u,d,m,g,x,y,b,C,S,v,z,w,f],L=new te(`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 kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=
81
81
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
82
  }
83
83
  return mip;
84
- }`,O);return{bilinearCubeUV:c,roughnessToMip:x,m0:u,cubeUV_maxMipLevel:r}}();var Lo=class extends de{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:Lo.VIEW}getShared(){return this.scope===Lo.WORLD}build(e,r,o,n){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,n):super.build(e,r,o)}generate(e,r,o,n,s){let a;switch(this.scope){case Lo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case Lo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case Lo.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=Lo;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 xr=class extends de{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:xr.LOCAL}getType(){switch(this.scope){case xr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case xr.LOCAL:case xr.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case xr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case xr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case xr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case xr.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}},mt=xr;mt.LOCAL="local",mt.WORLD="world",mt.VIEW="view",mt.PROJECTION="projection";nt.addKeyword("position",function(){return new mt});nt.addKeyword("worldPosition",function(){return new mt(mt.WORLD)});nt.addKeyword("viewPosition",function(){return new mt(mt.VIEW)});var ir=class extends de{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:ir.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case ir.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case ir.VECTOR:{let s=new ct(ct.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new mt(mt.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 u=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${u};`),n="reflectVec"):n=u;break}case ir.CUBE:{let s=new ir(ir.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case ir.SPHERE:{let s=new ir(ir.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};`),n="reflectSphereVec"):n=a;break}}return e.format(n,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}},br=ir;br.CUBE="cube",br.SPHERE="sphere",br.VECTOR="vector";var sa=class extends de{constructor(e=new Ot,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new fi(this.value,r!=null?r:new br(br.VECTOR),o),this.irradianceNode=new fi(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 uS}from"three";var aa=class extends Fe{constructor(e=new uS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new br,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),n=(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+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=(p=this.colorSpace)!=null?p:new Pt(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 Sm=["x","y","z","w"],gS=["float","vec2","vec3","vec4"],xS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},bS={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[]"},la=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 n=this.getIncludes(r,o);if(!n)return"";let s="";n=n.sort(t);for(let a=0;a<n.length;a++)n[a].src&&(s+=n[a].src+`
84
+ }`,D);return{bilinearCubeUV:c,roughnessToMip:L,m0:u,cubeUV_maxMipLevel:r}}();var ro=class extends pe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??ro.VIEW}getShared(){return this.scope===ro.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 ro.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case ro.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case ro.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}},$e=ro;$e.LOCAL="local",$e.WORLD="world",$e.VIEW="view",$e.NORMAL="normal";He.addKeyword("viewNormal",function(){return new $e($e.VIEW)});He.addKeyword("localNormal",function(){return new $e($e.NORMAL)});He.addKeyword("worldNormal",function(){return new $e($e.WORLD)});var tr=class extends pe{constructor(e){super("v3");this.nodeType="Position";this.scope=e??tr.LOCAL}getType(){switch(this.scope){case tr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case tr.LOCAL:case tr.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case tr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case tr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case tr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case tr.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}},Ye=tr;Ye.LOCAL="local",Ye.WORLD="world",Ye.VIEW="view",Ye.PROJECTION="projection";He.addKeyword("position",function(){return new Ye});He.addKeyword("worldPosition",function(){return new Ye(Ye.WORLD)});He.addKeyword("viewPosition",function(){return new Ye(Ye.VIEW)});var Rt=class extends pe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Rt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Rt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Rt.VECTOR:{let s=new $e($e.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new Ye(Ye.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 u=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${u};`),i="reflectVec"):i=u;break}case Rt.CUBE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Rt.SPHERE:{let s=new Rt(Rt.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}},rr=Rt;rr.CUBE="cube",rr.SPHERE="sphere",rr.VECTOR="vector";var Us=class extends pe{constructor(e=new lt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Qo(this.value,r??new rr(rr.VECTOR),o),this.irradianceNode=new Qo(this.value,new $e($e.WORLD),new ee(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 aS}from"three";var js=class extends Me{constructor(e=new aS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new rr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.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=this.colorSpace??new at(new Le("",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 ad=["x","y","z","w"],uS=["float","vec2","vec3","vec4"],dS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},mS={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[]"},ks=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,15 +119,15 @@ var kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=
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 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.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
- `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e!=null?e:this.shader]+=t+`
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
- `}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,o="varying",n="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+n+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,n=t.length;o<n;++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}];
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.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??"",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??this.shader]+=t+`
123
+ `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
124
+ `}clearNodeCode(t){t=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??this.shader]+=t+`
125
+ `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[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,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??"";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
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 ue?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new hn({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:n});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 hn({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:n});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,n){return this.createUniform("vertex",t,e,r,o,n)}createFragmentUniform(t,e,r,o,n){return this.createUniform("fragment",t,e,r,o,n)}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 pi&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let a=n[t.name];if(a||(a=n[t.name]={node:t,deps:[]},n.push(a),a.src=t.build(this,"source")),t instanceof re&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[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 gS[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 mS:case dS:return new aa(r);case fS:return new sa(new Ot(r));default:return new Ot(r)}else{if(r.isVector2)return new wt(r);if(r.isVector3)return new Lt(r);if(r.isVector4)return new _r(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 xS[t]||t}getFormatByType(t){return bS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Sm[t]}getIndexByElement(t){return Sm.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=vm,e===vm&&this.context.gamma&&(e=yS),e}};var un=class extends ue{constructor(e=new ue){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,n){super("c");this.nodeType="Color";this.value=e instanceof Et?e:new Et(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,s,a){o=e.getUUID(o!=null?o:this.getUUID()),n=n!=null?n: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,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};import{MathUtils as Gr,Vector2 as eo,Vector3 as to,Vector4 as ca}from"three";import{Texture as vS}from"three";var ve=class extends Fe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e!=null?e:0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,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 n in r)n!=="type"&&n!=="calpha"&&(this.uniforms[`f${this.id}_${n}`]=r[n]);for(let n in o)this.defines[n]=o[n]}}copy(t){this.id=t.id,this.type=t.type,this.defines=I({},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=I({},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 Lt(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new wt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new ve(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new ve(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new ve(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new ve(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new Lt(-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 n=this.uniforms[`f${this.id}_${r}`].value;n!==void 0&&(Array.isArray(n)?t[r]=n.map(s=>s.clone?s.clone():s):t[r]=n.clone?n.clone():n)}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),n=t.uniforms[e].value;if(n.value instanceof vS){if(o.image!==n.image)return!1}else if(Array.isArray(n)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==n[a])return!1}else{let s=o;if(s.equals){if(!s.equals(n))return!1}else if(o!==n)return!1}}return!0}dispose(){}};function wm(i){let t=i instanceof We?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}var mn=class extends Fe{constructor(e){super("b");this.nodeType="Bool";this.value=e!=null?e:!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}copy(e){return super.copy(e),this.value=e.value,this}};import{Vector4 as Lm}from"three";var Co=class extends Fe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Lm?new Array(e).fill(r):new Array(e).fill(new Lm(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var dt=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 SS}from"three";var yi=class extends Fe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e!=null?e:new SS}generateReadonly(e,r,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,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 fn=class extends de{constructor(e=new Ot,r,o,n,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=n,this.axis=s,this.side=a,this.size=l,this.mat=new yi(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,"")}`,n;switch(this.projection.value){case 3:n=e.include(fn.Nodes.cylindrical);break;case 2:n=e.include(fn.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(`
129
+ `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof le?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 Wi({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 Wi({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){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof te?o=this.includes.functions:t instanceof xe?o=this.includes.consts:t instanceof Jo&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let s=i[t.name];if(s||(s=i[t.name]={node:t,deps:[]},i.push(s),s.src=t.build(this,"source")),t instanceof te&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.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 uS[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?.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 lS:case cS:return new js(r);case hS:return new Us(new lt(r));default:return new lt(r)}else{if(r.isVector2)return new rt(r);if(r.isVector3)return new ot(r);if(r.isVector4)return new xr(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 dS[t]||t}getFormatByType(t){return mS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return ad[t]}getIndexByElement(t){return ad.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=sd,e===sd&&this.context.gamma&&(e=pS),e}};var Ji=class extends le{constructor(e=new le){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 Ce=class extends Me{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof ft?e:new ft(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??this.getUUID()),i=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 br,Vector2 as zr,Vector3 as Rr,Vector4 as Hs}from"three";import{Texture as fS}from"three";var fe=class extends Me{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(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 Oe=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={...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 Oe(this.id).copy(this)}fromJSON(t,e){this.id=t.id,this.defines={...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 ot(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new rt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new fe(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new fe(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new fe(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new fe(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new ot(-1,-1,-1))):t.type==="depth"&&(`f${t.id}_isWorldSpace`in this.uniforms||(this.uniforms[`f${t.id}_isWorldSpace`]=new ee(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 fS){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 ld(n){let t=n instanceof Oe?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}var Yi=class extends Me{constructor(e){super("b");this.nodeType="Bool";this.value=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 cd}from"three";var oo=class extends Me{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof cd?new Array(e).fill(r):new Array(e).fill(new cd(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var Ke=class extends Me{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 gS}from"three";var Zo=class extends Me{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new gS}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 Xi=class extends pe{constructor(e=new lt,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 Zo(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(Xi.Nodes.cylindrical);break;case 2:i=e.include(Xi.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 te(`
131
131
  vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
132
132
 
133
133
  vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -146,7 +146,7 @@ var kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=
146
146
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
147
147
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
148
148
  return col;
149
- }`);n=e.include(l);break;default:n=e.include(fn.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(n+"("+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}},dn=fn;dn.Nodes=function(){let e=new re(`
149
+ }`);i=e.include(l);break;default:i=e.include(Xi.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}},Ki=Xi;Ki.Nodes=function(){let e=new te(`
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);
@@ -176,7 +176,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
176
176
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
177
177
  return col;
178
178
  }
179
- `),r=new re(`
179
+ `),r=new te(`
180
180
  vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
181
181
  vec3 posN = normalize(vPosition);
182
182
  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
- `),o=new re(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
207
+ `),o=new te(`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:o}}();var Hl=class extends de{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=n,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(Hl.Nodes.fresnel),n=[];return n.push(this.color.build(e,"c")),n.push(this.bias.build(e,"f")),n.push(this.scale.build(e,"f")),n.push(this.intensity.build(e,"f")),n.push(this.factor.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.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}},yn=Hl;yn.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 Ol=class extends pe{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(Ol.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}},Qi=Ol;Qi.Nodes=function(){return{fresnel:new te(`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 gn=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(gn||{}),Gt=function(){let t=new re(`vec3 random3(vec3 c) {
230
+ }`)}}();var Zi=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Zi||{}),yt=function(){let t=new te(`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);
@@ -236,7 +236,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
236
236
  j *= .125;
237
237
  r.y = fract(512.0*j);
238
238
  return r-0.5;
239
- }`),e=new re(`float simplex3d(vec3 p) {
239
+ }`),e=new te(`float simplex3d(vec3 p) {
240
240
  vec3 s = floor(p + dot(p, vec3(F3)));
241
241
  vec3 x = p - s + dot(s, vec3(G3));
242
242
 
@@ -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 Ne("float F3 0.3333333"),e.keywords.G3=new Ne("float G3 0.1666667");let r=new re(`float simplex3dFractal(vec3 m) {
270
+ }`,[t]);e.keywords.F3=new xe("float F3 0.3333333"),e.keywords.G3=new xe("float G3 0.1666667");let r=new te(`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]),o=new re("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),n=new re("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new re(`float simplexAshima(vec3 v) {
278
+ }`,[e]),o=new te("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new te("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new te(`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
- }`,[o,n]),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 te("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new te("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new te(`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]),h=new re(`float fbm(vec3 x) {
338
+ }`,[l]),h=new te(`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]);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);}"),u=new re(`float perlin(vec3 P){
348
+ }`,[c]);h.keywords.NUM_OCTAVES=new xe(`int NUM_OCTAVES ${5}`);let p=new te("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),u=new te(`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
- }`,[o,n,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:u}}();var ql=class extends de{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=n,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(ql.Nodes.rainbow),n=[];return n.push(this.filmThickness.build(e,"f")),n.push(this.movement.build(e,"f")),n.push(this.wavelengths.build(e,"v3")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.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}},xn=ql;xn.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:u}}();var Al=class extends pe{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(Al.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}},en=Al;en.Nodes=function(){let e=new te(`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
- }`,[Gt.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
+ }`,[yt.simplex]);return{rainbow:new te(`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,11 +426,11 @@ 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 Wl=class extends de{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=n,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(Wl.Nodes.transmission),n=[];return n.push(this.thickness.build(e,"f")),n.push(this.ior.build(e,"f")),n.push(this.roughness.build(e,"f")),n.push(this.transmissionSamplerSize.build(e,"v2")),n.push(this.transmissionSamplerMap.getTexture(e,"t")),n.push(this.transmissionDepthMap.getTexture(e,"t")),n.push(this.aspectRatio.build(e,"v2")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.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}},bn=Wl;bn.Nodes=function(){let e=new re(`
429
+ }`,[e])}}();var Dl=class extends pe{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(Dl.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}},tn=Dl;tn.Nodes=function(){let e=new te(`
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 );
433
- }`),r=new re(`
433
+ }`),r=new te(`
434
434
  vec4 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
435
435
  // Slightly modified version of this:
436
436
  // https://www.shadertoy.com/view/ltScRG
@@ -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]),o=new re(`
460
+ }`,[e]),o=new te(`
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,18 +468,18 @@ 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
- }`),n=new re(`
471
+ }`),i=new te(`
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.
475
475
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
476
- } `),s=new re(`
476
+ } `),s=new te(`
477
477
  vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
478
478
  float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
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
- }`,[n,r]),a=new re(`
482
+ }`,[i,r]),a=new te(`
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,o]);return{transmission:new re(`
502
+ }`,[s,o]);return{transmission:new te(`
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 $l=class extends de{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($l.Nodes.customNormal),n=[];return n.push(this.cnormal.build(e,"v3")),n.push("normal"),n.push(this.alpha.build(e,"f")),e.format(o+"("+n.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}},vn=$l;vn.Nodes=function(){return{customNormal:new re(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
516
+ }`,[a])}}();var Bl=class extends pe{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(Bl.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}},rn=Bl;rn.Nodes=function(){return{customNormal:new te(`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 Jl=class extends de{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=n,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),n=[];return n.push(this.gradientType.build(e,"i")),n.push(this.smooth.build(e,"b")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.offset.build(e,"v2")),n.push(this.morph.build(e,"v2")),n.push(this.angle.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.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}},Sn=Jl;Sn.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 El=class extends pe{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(El.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}},on=El;on.Nodes=function(){return{gradient:new te(`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 Yl=(e=>(e.NOISE="noise",e.MAP="map",e))(Yl||{}),Kl=class extends de{constructor(e=new ve(0),r,o,n,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=o,Object.values(Yl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new yi(this.movementOrTexture.value.matrix)),this.cropOrOffset=n,this.scale=s,this.noiseFunctionIndex=a}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,n=[];switch(n.push("displaced_position"),n.push("displaced_normal"),Object.values(Yl)[this.displacementTypeIndex.value]){case"map":{o=e.include(Kl.Nodes.map),n.push(this.movementOrTexture.getTexture(e,"t")),n.push("uv"),n.push(this.cropOrOffset.build(e,"f")),this.mat&&n.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(gn)[this.noiseFunctionIndex.value],l=new re(`vec3 orthogonal(vec3 v) {
565
+ }`)}}();var _l=(e=>(e.NOISE="noise",e.MAP="map",e))(_l||{}),Gl=class extends pe{constructor(e=new fe(0),r,o,i,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=o,Object.values(_l)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Zo(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(_l)[this.displacementTypeIndex.value]){case"map":{o=e.include(Gl.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(Zi)[this.noiseFunctionIndex.value],l=new te(`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
- }`),c=new re(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
567
+ }`),c=new te(`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
- }`,[Gt.simplex,Gt.simplexFractal,Gt.simplexAshima,Gt.fbm,Gt.perlin]),h=new re(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
569
+ }`,[yt.simplex,yt.simplexFractal,yt.simplexAshima,yt.fbm,yt.perlin]),h=new te(`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,9 +582,9 @@ 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]);o=e.include(h),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f"));break}}return n.push(this.intensity.build(e,"f")),n.push("displaced_normal"),e.format(o+"("+n.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}},gi=Kl;gi.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){return super.copy(e),this.noiseFunctionIndex=e.noiseFunctionIndex?.clone(),this.scale=e.scale?.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},ei=Gl;ei.Nodes=function(){let e=new te(`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
- }`),r=new re(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
587
+ }`),r=new te(`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;
589
589
  vec4 tmp = texture2D(tex, uvs);
590
590
  vec3 col = tmp.rgb;
@@ -594,7 +594,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
594
594
  }
595
595
  }
596
596
  return col.r;
597
- }`);return{map:new re(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
597
+ }`);return{map:new te(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
598
598
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
599
599
  vec3 tangent1 = normalize(orthogonal(normal));
600
600
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -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 wn=class extends de{constructor(e=new ue,r=new ue,o=new ue,n=new ue,s=new ue,a=new ue,l=new ue,c=new ue,h=new ue,p=new ue,u=new ue,m=new ue){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=n,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=h,this.colorD=p,this.alpha=u,this.noiseType=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,n,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(gn)[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 nn=class extends pe{constructor(e=new le,r=new le,o=new le,i=new le,s=new le,a=new le,l=new le,c=new le,h=new le,p=new le,u=new le,d=new le){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=u,this.noiseType=d,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(Zi)[this.noiseType.value],l=new te(`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,7 +624,7 @@ 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
- }`,[Gt.simplex,Gt.simplexFractal,Gt.simplexAshima,Gt.fbm,Gt.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}};wn.numOctaves=5;var Ln=class extends de{constructor(e=new ue,r=new ue,o=new ue,n=new ue){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=n}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 xi=class extends de{constructor(e,r,o,n,s,a,l,c,h,p,u,m){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=n,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=h,this.steps=p,this.num=u,this.alpha=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new re(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
627
+ }`,[yt.simplex,yt.simplexFractal,yt.simplexAshima,yt.fbm,yt.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}};nn.numOctaves=5;var sn=class extends pe{constructor(e=new le,r=new le,o=new le,i=new le){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 ti=class extends pe{constructor(e,r,o,i,s,a,l,c,h,p,u,d){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=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new te(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
628
628
  vec4 color = colors[0];
629
629
  #ifdef ${o}_IS_VECTOR
630
630
  #ifdef ${o}_LINEAR
@@ -664,21 +664,21 @@ 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
- }`,[xi.Nodes.vectorLinearWorldSpaceDepth,xi.Nodes.vectorLinearObjectSpaceDepth,xi.Nodes.vectorSphericalObjectSpaceDepth,xi.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(n),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}},Cn=xi;Cn.Nodes=function(){let e=new re(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
667
+ }`,[ti.Nodes.vectorLinearWorldSpaceDepth,ti.Nodes.vectorLinearObjectSpaceDepth,ti.Nodes.vectorSphericalObjectSpaceDepth,ti.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}},an=ti;an.Nodes=function(){let e=new te(`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 );
671
- }`),r=new re(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
671
+ }`),r=new te(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
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
- }`),o=new re(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
675
+ }`),o=new te(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
676
676
  float dist = length(vWPosition - origin);
677
677
  return ( dist - near ) / ( far - near );
678
- }`),n=new re(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
678
+ }`),i=new te(`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:o,vectorSphericalObjectSpaceDepth:n}}();var Xl=class extends de{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(Xl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.getTexture(e,"t")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.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}},Tn=Xl;Tn.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 zl=class extends pe{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(zl.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}},ln=zl;ln.Nodes=function(){return{matcap:new te(`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 Ct=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Gr.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 ve(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 n;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((n=t.userData.layers)==null?void 0:n.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 n=this.createLightLayer(t);return this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let n=this.head;for(;n.next!=null;)n=n.next;n.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=Gr.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),n=o.layer;n.next=e;let s=0;if(r===e)this.head=n,o.color&&this._layerNodes.splice(0,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:n.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=n,o.color&&this._layerNodes.splice(s,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:n.id,type:"position",position:o.position})}return this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){var n;e.id=(n=e.id)!=null?n:++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=Gr.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=Gr.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if((o==null?void 0:o.id)==t){let s=this._createLayer(I({id:t,uuid:o.uuid},e));n=s.layer,n.next=o.next,this.head=n,s.color&&(this._layerNodes[0]={id:n.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:n.id,type:"position",position:s.position}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.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(I({id:t,uuid:o.uuid},e));n=a.layer,r.next=n,n.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}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}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,n;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)n=o,o=o.next;n.next=o.next,r=o}if(o=this.head,n=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=Gr.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Gr.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 ve(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 n=this.head;for(;n.next!=null;)n=n.next;n.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),n=r?e.uniforms[`f${e.id}_mode`]:new ve(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=n,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:n}),this.head===void 0?this.head=new We(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new We(e.id,e.uuid,{type:"light",alpha:o,mode:n})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let n in e.uniforms){let s=e.getName(n);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,n,s,a,l,c,h,p,u,m,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((n=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?n: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((u=t==null?void 0:t.getValue("roughness"))!=null?u:.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(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new Ct(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),n=t.head.next,s=o;for(;n!=null;)s.next=new We(n.id,void 0,{type:n.type}).fromJSON(n,e),n=n.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,n,s,a,l,c,h,p,u,m,f,g,v,y,b,A,N,S,k,T,d,O,x,L,C,P,$,Y,oe,ae,ne,ge,j,R,B,E,D,_,W,K,G,V,z,U,se,q,J,X,Q,Z,le,ie,pe,Ge,xe,$e,Te,ht,Tt,Tr,gt,Nr,co,ho,ke,xt,zt,_n,Gn,zn,Rn,Fn,Vn,Ht,Ri,pt,Oo,jn,po;let e=t.type;switch(e){case"color":{let be=new _e((r=t.color)!=null?r:5855577),Ce=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Ce;let we=new ve((n=t.mode)!=null?n:0);return be.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,color:be,alpha:Ce,calpha:Se,mode:we}),color:be,alpha:Se,mode:we}}case"texture":{let be=(s=t.texture)!=null?s:new gr,Ce=be.matrix;t.mat&&Ce.copy(t.mat),be.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new ve((l=t.projection)!=null?l:0),Me=new ve((c=t.axis)!=null?c:0),Be=new ve((h=t.side)!=null?h:0),ze=new wt(t.size?new eo(t.size[0],t.size[1]):new eo(100,100)),je=new te((p=t.alpha)!=null?p:1),Ie=new ve((u=t.mode)!=null?u:0),He=new Ot(be),st=new Lt((m=t.textureSize)!=null?m:new to(be.image?be.image.width:0,be.image?be.image.height:0)),Rt=new dn(He,st,Se,we,Me,Be,ze,je,Ie),tr=new Ee(Rt.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:Rt.mat,alpha:je,calpha:tr,mode:Ie}),color:Rt,alpha:tr,mode:Ie}}case"matcap":{let be=(f=t.texture)!=null?f:new gr;be.needsUpdate=!0;let Ce=new te((g=t.alpha)!=null?g:1),Se=new Ot(be),we=new ve((v=t.mode)!=null?v:0),Me=new Tn(Se,Ce,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Ce,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let be=new _e((y=t.color)!=null?y:16777215),Ce=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((S=t.factor)!=null?S:1),Be=new te((k=t.alpha)!=null?k:1),ze=new ve((T=t.mode)!=null?T:0),je=new yn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:be,bias:Ce,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:Ie,mode:ze}),color:je,alpha:Ie,mode:ze}}case"rainbow":{let be=new te((d=t.filmThickness)!=null?d:30),Ce=new te((O=t.movement)!=null?O:0),Se=new Lt((x=t.wavelengths)!=null?x:new to(0,0,0)),we=new te((L=t.noiseStrength)!=null?L:0),Me=new te((C=t.noiseScale)!=null?C:1),Be=new Lt((P=t.offset)!=null?P:new to(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new xn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f"),He=new ve((Y=t.mode)!=null?Y:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:be,movement:Ce,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:Ie,mode:He}),color:je,alpha:Ie,mode:He}}case"transmission":{let be=new te((oe=t.thickness)!=null?oe:10),Ce=new te((ae=t.ior)!=null?ae:1.5),Se=new te((ne=t.roughness)!=null?ne:.5),we=new wt((ge=t.transmissionSamplerSize)!=null?ge:new eo(2048,2048)),Me=(j=t.transmissionSamplerMap)!=null?j:new gr,Be=(R=t.transmissionDepthMap)!=null?R:new gr,ze=new Ot(Me),je=new Ot(Be),Ie=window.innerWidth,He=window.innerHeight,st=Ie>=He?new wt(He/Ie,1):new wt(1,Ie/He),Rt=new te((B=t.alpha)!=null?B:1),tr=new bn(be,Ce,Se,we,ze,je,st,Rt),Mr=new Ee(tr.calpha,"f"),jr=new ve((E=t.mode)!=null?E:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:be,ior:Ce,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Rt,calpha:Mr,mode:jr}),color:tr,alpha:Mr,mode:jr}}case"depth":{let be=new ve((D=t.gradientType)!=null?D:0),Ce=new mn((_=t.smooth)!=null?_:!1),Se=new te((W=t.near)!=null?W:50),we=new te((K=t.far)!=null?K:200),Me=new te((G=t.isVector)!=null?G:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new Lt((z=t.origin)!=null?z:new to),je=new Lt((U=t.direction)!=null?U:new to),Ie=new ve((se=t.num)!=null?se:0),He;t.colors?He=new Co(Ie.value+1,t.colors):(He=new Co(Ie.value+1,new ca(0,0,0,1)),He.value[1]=new ca(1,1,1,1));let st;t.steps?st=new dt(Ie.value+1,t.steps):(st=new dt(Ie.value+1,1),st.value[0]=0);let Rt=new te((q=t.alpha)!=null?q:1),tr=new ve((J=t.mode)!=null?J:0),Mr=new Cn(be,Ce,Se,we,Me,Be,ze,je,He,st,Ie,Rt),jr=new Ee(Mr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:Ie,alpha:Rt,calpha:jr,mode:tr}),color:Mr,alpha:jr,mode:tr}}case"noise":{let be=new te((X=t.scale)!=null?X:1),Ce=new Lt((Q=t.size)!=null?Q:new to(100,100,100)),Se=new te((Z=t.move)!=null?Z:1),we=new wt((le=t.fA)!=null?le:new eo(1.7,9.2)),Me=new wt((ie=t.fB)!=null?ie:new eo(8.3,2.8)),Be=new wt((pe=t.distortion)!=null?pe:new eo(1,1)),ze=new _r(t.colorA),je=new _r(t.colorB),Ie=new _r(t.colorC),He=new _r(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Rt=new ve((xe=t.mode)!=null?xe:0),tr=new ve(($e=t.noiseType)!=null?$e:0),Mr=new wn(be,Ce,Se,we,Me,Be,ze,je,Ie,He,st,tr),jr=new Ee(Mr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:be,size:Ce,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:Ie,colorD:He,alpha:st,calpha:jr,mode:Rt,noiseType:tr}),color:Mr,alpha:jr,mode:Rt}}case"normal":{let be=new Lt((Te=t.cnormal)!=null?Te:new to(1,1,1)),Ce=new te((ht=t.alpha)!=null?ht:1),Se=new ve((Tt=t.mode)!=null?Tt:0),we=new vn(be,Ce),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,cnormal:be,alpha:Ce,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let be=new ve((Tr=t.gradientType)!=null?Tr:0),Ce=new mn((gt=t.smooth)!=null?gt:!1),Se;t.colors?Se=new Co(t.colors.length,t.colors):(Se=new Co(10,new ca(0,0,0,1)),Se.value[1]=new ca(1,1,1,1));let we;t.steps?we=new dt(t.steps.length,t.steps):(we=new dt(10,1),we.value[0]=0);let Me=new wt((Nr=t.offset)!=null?Nr:new eo(0,0)),Be=new wt((co=t.morph)!=null?co:new eo(0,0)),ze=new te((ho=t.angle)!=null?ho:0),je=new te((ke=t.alpha)!=null?ke:1),Ie=new ve((xt=t.mode)!=null?xt:0),He=new Sn(be,Ce,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:Ie}),color:He,alpha:st,mode:Ie}}case"displace":{let be=new ve((zt=t.displacementType)!=null?zt:0);if(be.value===0){let Ce=new Lt((_n=t.offset)!=null?_n:new to(0,0,0)),Se=new te((Gn=t.scale)!=null?Gn:10),we=new te((zn=t.intensity)!=null?zn:8),Me=new te((Rn=t.movement)!=null?Rn:1),Be=new te((Fn=t.alpha)!=null?Fn:1),ze=new ve((Vn=t.mode)!=null?Vn:0),je=new ve((Ht=t.noiseType)!=null?Ht:0),Ie=new gi(be,we,Me,Ce,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,offset:Ce,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:Ie}}else if(be.value===1){let Ce=(Ri=t.texture)!=null?Ri:new gr,Se=Ce.matrix;t.mat&&Se.copy(t.mat),Ce.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Ot(Ce),Be=new te((Oo=t.crop)!=null?Oo:0),ze=new te((jn=t.alpha)!=null?jn:1),je=new ve((po=t.mode)!=null?po:0),Ie=new gi(be,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,intensity:we,texture:Me,crop:Be,mat:Ie.mat,alpha:ze,mode:je}),position:Ie}}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 n=this._layerNodes[o];n.type==="color"&&(r=new Ln(r,n.color,n.alpha,n.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 Ln(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 _t(e,t[r].position,_t.ADD),e=new _t(e,new te(.5).setReadonly(!0),_t.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 Ut=class extends LS{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 un(new mt(mt.PROJECTION)),this.fragment=r!=null?r:new un(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 Ct(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=(n,s,a)=>Math.min(Math.max(n,s),a);if(this.userData.layers){for(let n of this.userData.layers.getLayers())if(n.type=="displace"){this.uniformsBackup[`f${n.id}_intensity`]=n.uniforms[`f${n.id}_intensity`].value;let s=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.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 la;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>wS,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:CS,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)}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(Ut.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});import{UniformsLib as TS,UniformsUtils as NS}from"three";var ha=class extends ue{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(NS.merge([TS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
694
- `));let n=["#include <beginnormal_vertex>",`
693
+ `)}}();var it=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=br.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 ee(1));let r=new ee(1),o=new fe(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 Oe(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){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(t.userData.layers?.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){if(t.id=t.id??++this.id,this.layerCount++,t.type==="light"){let o=this.createLightLayer(t);return this.uuid=br.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=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){let r=this.head;t.id=t.id??++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?.next!==e;)r=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=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}addLayerAt(t,e){e.id=e.id??++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 i=this.head,s=this.head.next;for(let a=0;a<t-1;a++)i=s,s=s.next;o.next=s,i.next=o}return this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if(e?.id==t)this.head=e.next;else for(o=1,r=e,e=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=br.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,i;if(o?.id==t){let s=this._createLayer({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({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=br.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?.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=br.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 ee(t.alpha),r=new fe(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 Oe(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 ee(e.uniforms[`f${e.id}_alpha`].value),i=r?e.uniforms[`f${e.id}_mode`]:new fe(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 Oe(e.id,e.uuid,{type:"light",alpha:o,mode:i}):t&&(t.next=new Oe(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){let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new Ce(t?.getValue("emissive")?.clone()??0);break;case"Phong":e.shininess=new ee(t?.getValue("shininess")??30),e.specular=new Ce(t?.getValue("specular")?.clone()??1118481);break;case"Toon":e.shininess=new ee(t?.getValue("shininess")??30),e.specular=new Ce(t?.getValue("specular")?.clone()??1118481);break;case"Physical":e.roughness=new ee(t?.getValue("roughness")??.3),e.metalness=new ee(t?.getValue("metalness")??0),e.reflectivity=new ee(t?.getValue("reflectivity")??.5);break;default:break}Object.keys(e).forEach(o=>{this._material[o]=e[o],r.uniforms[`f${r.id}_${o}`]=e[o]})}clone(t){return new it(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new Oe(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 Oe(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(){let t=this.head;for(;t!==void 0&&t.type!=="light";)t=t.next??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){let e=t.type;switch(e){case"color":{let r=new Ce(t.color??5855577),o=new ee(t.alpha??1),i=new Le("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");i.keywords.alpha=o;let s=new fe(t.mode??0);return r.alpha=o,{layer:new Oe(t.id,t.uuid,{type:e,color:r,alpha:o,calpha:i,mode:s}),color:r,alpha:i,mode:s}}case"texture":{let r=t.texture??new er,o=r.matrix;t.mat&&o.copy(t.mat),r.needsUpdate=!0;let i=new ee(t.crop??0),s=new fe(t.projection??0),a=new fe(t.axis??0),l=new fe(t.side??0),c=new rt(t.size?new zr(t.size[0],t.size[1]):new zr(100,100)),h=new ee(t.alpha??1),p=new fe(t.mode??0),u=new lt(r),d=new ot(t.textureSize??new Rr(r.image?r.image.width:0,r.image?r.image.height:0)),m=new Ki(u,d,i,s,a,l,c,h,p),g=new Le(m.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,texture:u,textureSize:d,crop:i,projection:s,axis:a,side:l,size:c,mat:m.mat,alpha:h,calpha:g,mode:p}),color:m,alpha:g,mode:p}}case"matcap":{let r=t.texture??new er;r.needsUpdate=!0;let o=new ee(t.alpha??1),i=new lt(r),s=new fe(t.mode??0),a=new ln(i,o,s),l=new Le(a.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,texture:i,alpha:o,calpha:l,mode:s}),color:a,alpha:l,mode:s}}case"fresnel":{let r=new Ce(t.color??16777215),o=new ee(t.bias??.1),i=new ee(t.scale??1),s=new ee(t.intensity??2),a=new ee(t.factor??1),l=new ee(t.alpha??1),c=new fe(t.mode??0),h=new Qi(r,o,i,s,a,l,c),p=new Le(h.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,color:r,bias:o,scale:i,intensity:s,factor:a,alpha:l,calpha:p,mode:c}),color:h,alpha:p,mode:c}}case"rainbow":{let r=new ee(t.filmThickness??30),o=new ee(t.movement??0),i=new ot(t.wavelengths??new Rr(0,0,0)),s=new ee(t.noiseStrength??0),a=new ee(t.noiseScale??1),l=new ot(t.offset??new Rr(0,0,0)),c=new ee(t.alpha??1),h=new en(r,o,i,s,a,l,c),p=new Le(h.calpha,"f"),u=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,filmThickness:r,movement:o,wavelengths:i,noiseStrength:s,noiseScale:a,offset:l,alpha:c,calpha:p,mode:u}),color:h,alpha:p,mode:u}}case"transmission":{let r=new ee(t.thickness??10),o=new ee(t.ior??1.5),i=new ee(t.roughness??.5),s=new rt(t.transmissionSamplerSize??new zr(2048,2048)),a=t.transmissionSamplerMap??new er,l=t.transmissionDepthMap??new er,c=new lt(a),h=new lt(l),p=window.innerWidth,u=window.innerHeight,d=p>=u?new rt(u/p,1):new rt(1,p/u),m=new ee(t.alpha??1),g=new tn(r,o,i,s,c,h,d,m),x=new Le(g.calpha,"f"),y=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,thickness:r,ior:o,roughness:i,transmissionSamplerSize:s,transmissionSamplerMap:c,transmissionDepthMap:h,aspectRatio:d,alpha:m,calpha:x,mode:y}),color:g,alpha:x,mode:y}}case"depth":{let r=new fe(t.gradientType??0),o=new Yi(t.smooth??!1),i=new ee(t.near??50),s=new ee(t.far??200),a=new ee(t.isVector??1),l=new ee(t.isWorldSpace??0),c=new ot(t.origin??new Rr),h=new ot(t.direction??new Rr),p=new fe(t.num??0),u;t.colors?u=new oo(p.value+1,t.colors):(u=new oo(p.value+1,new Hs(0,0,0,1)),u.value[1]=new Hs(1,1,1,1));let d;t.steps?d=new Ke(p.value+1,t.steps):(d=new Ke(p.value+1,1),d.value[0]=0);let m=new ee(t.alpha??1),g=new fe(t.mode??0),x=new an(r,o,i,s,a,l,c,h,u,d,p,m),y=new Le(x.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,gradientType:r,smooth:o,near:i,far:s,isVector:a,isWorldSpace:l,origin:c,direction:h,colors:u,steps:d,num:p,alpha:m,calpha:y,mode:g}),color:x,alpha:y,mode:g}}case"noise":{let r=new ee(t.scale??1),o=new ot(t.size??new Rr(100,100,100)),i=new ee(t.move??1),s=new rt(t.fA??new zr(1.7,9.2)),a=new rt(t.fB??new zr(8.3,2.8)),l=new rt(t.distortion??new zr(1,1)),c=new xr(t.colorA),h=new xr(t.colorB),p=new xr(t.colorC),u=new xr(t.colorD),d=new ee(t.alpha??1),m=new fe(t.mode??0),g=new fe(t.noiseType??0),x=new nn(r,o,i,s,a,l,c,h,p,u,d,g),y=new Le(x.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,scale:r,size:o,move:i,fA:s,fB:a,distortion:l,colorA:c,colorB:h,colorC:p,colorD:u,alpha:d,calpha:y,mode:m,noiseType:g}),color:x,alpha:y,mode:m}}case"normal":{let r=new ot(t.cnormal??new Rr(1,1,1)),o=new ee(t.alpha??1),i=new fe(t.mode??0),s=new rn(r,o),a=new Le("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return a.keywords.alpha=o,{layer:new Oe(t.id,t.uuid,{type:e,cnormal:r,alpha:o,calpha:a,mode:i}),color:s,alpha:a,mode:i}}case"gradient":{let r=new fe(t.gradientType??0),o=new Yi(t.smooth??!1),i;t.colors?i=new oo(t.colors.length,t.colors):(i=new oo(10,new Hs(0,0,0,1)),i.value[1]=new Hs(1,1,1,1));let s;t.steps?s=new Ke(t.steps.length,t.steps):(s=new Ke(10,1),s.value[0]=0);let a=new rt(t.offset??new zr(0,0)),l=new rt(t.morph??new zr(0,0)),c=new ee(t.angle??0),h=new ee(t.alpha??1),p=new fe(t.mode??0),u=new on(r,o,i,s,a,l,c,h),d=new Le(u.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,gradientType:r,smooth:o,colors:i,steps:s,offset:a,morph:l,angle:c,alpha:h,calpha:d,mode:p}),color:u,alpha:d,mode:p}}case"displace":{let r=new fe(t.displacementType??0);if(r.value===0){let o=new ot(t.offset??new Rr(0,0,0)),i=new ee(t.scale??10),s=new ee(t.intensity??8),a=new ee(t.movement??1),l=new ee(t.alpha??1),c=new fe(t.mode??0),h=new fe(t.noiseType??0),p=new ei(r,s,a,o,i,h);return{layer:new Oe(t.id,t.uuid,{displacementType:r,type:e,offset:o,scale:i,intensity:s,movement:a,alpha:l,mode:c,noiseType:h}),position:p}}else if(r.value===1){let o=t.texture??new er,i=o.matrix;t.mat&&i.copy(t.mat),o.needsUpdate=!0;let s=new ee(t.intensity??8),a=new lt(o),l=new ee(t.crop??0),c=new ee(t.alpha??1),h=new fe(t.mode??0),p=new ei(r,s,a,l);return{layer:new Oe(t.id,t.uuid,{displacementType:r,type:e,intensity:s,texture:a,crop:l,mat:p.mat,alpha:c,mode:h}),position:p}}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 sn(r,i.color,i.alpha,i.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Le("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 sn(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 gt(e,t[r].position,gt.ADD),e=new gt(e,new ee(.5).setReadonly(!0),gt.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 Nt=class extends xS{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??new Ji(new Ye(Ye.PROJECTION)),this.fragment=r??new Ji(new Ce(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 it(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){e=e??{};let r=e.builder??new ks;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>yS,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){this.defines=e.defines??{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:bS,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)}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(Nt.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 vS,UniformsUtils as SS}from"three";var qs=class extends le{constructor(){super("basic");this.nodeType="Basic";this.color=new Ce(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(SS.merge([vS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#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
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
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"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
712
- `));let a=["#include <normal_fragment_begin>",o.code];n&&a.push(n.code,"#ifdef ALPHATEST"," if ( "+n.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};`),n?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.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 pa=class extends Ut{constructor(e=new ha,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 ft=class extends pa{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 Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new ft(void 0,o);return n.fromJSON(e,r),n}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 Tm,UniformsUtils as MS}from"three";var ua=class extends ue{constructor(){super("phong");this.nodeType="Phong";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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(MS.merge([Tm.fog,Tm.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
714
- `));let n=["#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>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
711
+ `)}else{this.color===void 0&&(this.color=new Ce(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(["varying vec3 vWPosition;","#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 Ws=class extends Nt{constructor(e=new qs,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 Xe=class extends Ws{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r??this._getLayerStack(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 it){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 Xe(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new Xe(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 pd,UniformsUtils as wS}from"three";var $s=class extends le{constructor(){super("phong");this.nodeType="Phong";this.color=new Ce(5855577),this.specular=new Ce(1118481),this.shininess=new ee(30),this.penumbraSize=new Ke(5,.5),this.shadingAlpha=new ee(1),this.shadingBlend=new fe(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(wS.merge([pd.fog,pd.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#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
@@ -728,8 +728,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
728
728
  #ifndef USE_LAYER_DISPLACE
729
729
  #include <begin_vertex>
730
730
  #endif
731
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
732
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),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"}),n=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(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#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(`
731
+ `];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>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
732
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ce(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(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#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(`
733
733
  `));let p=["#include <normal_fragment_begin>",`
734
734
  // NOTE: gl_FrontFacing alternative using face normal estimation.
735
735
  vec3 viewdx = dFdx(vViewPosition);
@@ -738,15 +738,15 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
738
738
  if (dot(normal, faceNormal) < 0.0) {
739
739
  normal *= -1.0;
740
740
  }
741
- `," 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;",n.code," vec3 specular = "+n.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
+ `," 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(`
742
742
  if (outgoingLight != diffuseColor) {
743
743
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
744
744
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
745
745
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
746
746
  }
747
747
  `),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(`
748
- `)}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 ma=class extends Ut{constructor(e=new ua,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 It=class extends ma{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 Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,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),n=new It(void 0,o);return n.fromJSON(e,r),n}static fromMaterial(t){let e=new It(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 Nm,UniformsUtils as PS}from"three";var da=class extends ue{constructor(){super("lambert");this.nodeType="Lambert";this.color=new _e(5855577),this.emissive=new _e(0),this.emissiveIntensity=new te(1),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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([Nm.fog,Nm.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
749
- `));let n=["#include <beginnormal_vertex>",`
748
+ `)}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 Js=class extends Nt{constructor(e=new $s,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 ct=class extends Js{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r??this._getLayerStack(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 it){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 ct(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new ct(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 ud,UniformsUtils as NS}from"three";var Ys=class extends le{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ce(5855577),this.emissive=new Ce(0),this.emissiveIntensity=new ee(1),this.penumbraSize=new Ke(5,.5),this.shadingAlpha=new ee(1),this.shadingBlend=new fe(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(NS.merge([ud.fog,ud.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
749
+ `));let i=["#include <beginnormal_vertex>",`
750
750
  #ifndef USE_LAYER_DISPLACE
751
751
  #include <defaultnormal_vertex>
752
752
  #endif
@@ -762,7 +762,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
762
762
  #ifndef USE_LAYER_DISPLACE
763
763
  #include <begin_vertex>
764
764
  #endif
765
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
765
+ `];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>",`
766
766
  vec3 diffuse = vec3( 1.0 );
767
767
  GeometricContext geometry;
768
768
  geometry.position = mvPosition.xyz;
@@ -836,23 +836,23 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
836
836
  }
837
837
  #pragma unroll_loop_end
838
838
  #endif
839
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
840
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),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"}),n=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([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
839
+ `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
840
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ce(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([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
841
841
  `));let p=["#include <normal_fragment_begin>",`
842
842
  // NOTE: gl_FrontFacing alternative using face normal estimation.
843
843
  vec3 viewdx = dFdx(vViewPosition);
844
844
  vec3 viewdy = dFdy(vViewPosition);
845
845
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
846
846
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
847
- `,"#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();"),n&&p.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
847
+ `,"#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(`
848
848
  if (outgoingLight != diffuseColor) {
849
849
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
850
850
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
851
851
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
852
852
  }
853
853
  `),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(`
854
- `)}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 fa=class extends Ut{constructor(e=new da,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 bi=class extends fa{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 Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,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),n=new bi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{UniformsLib as Mm,UniformsUtils as OS}from"three";var ya=class extends ue{constructor(){super("toon");this.nodeType="Toon";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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(OS.merge([Mm.fog,Mm.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
855
- `));let n=["#include <beginnormal_vertex>",`
854
+ `)}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 Ks=class extends Nt{constructor(e=new Ys,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 ri=class extends Ks{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r??this._getLayerStack(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 it){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 ri(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as dd,UniformsUtils as LS}from"three";var Xs=class extends le{constructor(){super("toon");this.nodeType="Toon";this.color=new Ce(5855577),this.specular=new Ce(1118481),this.shininess=new ee(30),this.penumbraSize=new Ke(5,.5),this.shadingAlpha=new ee(1),this.shadingBlend=new fe(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(LS.merge([dd.fog,dd.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
855
+ `));let i=["#include <beginnormal_vertex>",`
856
856
  #ifndef USE_LAYER_DISPLACE
857
857
  #include <defaultnormal_vertex>
858
858
  #endif
@@ -868,8 +868,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
868
868
  #ifndef USE_LAYER_DISPLACE
869
869
  #include <begin_vertex>
870
870
  #endif
871
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
872
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),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"}),n=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 float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
871
+ `];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>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
872
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ce(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 float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
873
873
  varying vec3 vViewPosition;
874
874
  struct ToonMaterial {
875
875
  vec3 diffuseColor;
@@ -898,15 +898,15 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
898
898
  if (dot(normal, faceNormal) < 0.0) {
899
899
  normal *= -1.0;
900
900
  }
901
- `," 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 ) );",n.code," vec3 specular = "+n.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
+ `," 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(`
902
902
  if (outgoingLight != diffuseColor) {
903
903
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
904
904
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
905
905
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
906
906
  }
907
907
  `),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(`
908
- `)}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 ga=class extends Ut{constructor(e=new ya,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 vi=class extends ga{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 Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,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),n=new vi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{UniformsLib as Ql,UniformsUtils as IS}from"three";var xa=class extends ue{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.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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(IS.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;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
909
- `));let n=["#include <beginnormal_vertex>",`
908
+ `)}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 Qs=class extends Nt{constructor(e=new Xs,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 oi=class extends Qs{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r??this._getLayerStack(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 it){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 oi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as Rl,UniformsUtils as CS}from"three";var Zs=class extends le{constructor(){super("standard");this.nodeType="Standard";this.color=new Ce(5855577),this.roughness=new ee(.3),this.metalness=new ee(0),this.reflectivity=new ee(.5),this.penumbraSize=new Ke(5,.5),this.shadingAlpha=new ee(1),this.shadingBlend=new fe(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(CS.merge([Rl.fog,Rl.lights])),Rl.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
909
+ `));let i=["#include <beginnormal_vertex>",`
910
910
  #if !defined( USE_LAYER_DISPLACE )
911
911
  #include <defaultnormal_vertex>
912
912
  #endif
@@ -922,9 +922,9 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
922
922
  #if !defined( USE_LAYER_DISPLACE )
923
923
  #include <begin_vertex>
924
924
  #endif /* !USE_LAYER_DISPLACE */
925
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
926
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize});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 n=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,u=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#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(`
927
- `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
925
+ `];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>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
926
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ce(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,u=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#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(`
927
+ `));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
928
928
  // NOTE: gl_FrontFacing alternative using face normal estimation.
929
929
  vec3 viewdx = dFdx(vViewPosition);
930
930
  vec3 viewdy = dFdy(vViewPosition);
@@ -932,12 +932,12 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
932
932
  if (dot(normal, faceNormal) < 0.0) {
933
933
  normal *= -1.0;
934
934
  }
935
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];m.push(n.code," vec3 diffuseColor = "+n.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&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.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 );"),u?m.push(u.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+u.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(`
935
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.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&&d.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.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 );"),u?d.push(u.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+u.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
936
936
  if (outgoingLight != diffuseColor) {
937
937
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
938
938
  accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
939
939
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
940
940
  }
941
- `),h&&m.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
942
- `)}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 ba=class extends Ut{constructor(e=new xa,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 Si=class extends ba{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 Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,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),n=new Si(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{Color as ec}from"three";function Xe(i,t){let e;if(typeof i=="string"){let r=t==null?void 0:t.getColor(i);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 Et(0,0,0,0))}else return"a"in i?new Et(i.r,i.g,i.b,i.a):new Et(i.r,i.g,i.b,1);return e}import{Matrix3 as Pm,Texture as Zl,Vector2 as Nn,Vector3 as oo,Vector4 as Om}from"three";function Im(i,t){switch(i.data.type){case"light":return sr(i);case"fresnel":return DS(i,t);case"gradient":return BS(i);case"depth":return ES(i);case"normal":return _S(i);case"noise":return GS(i,t);case"texture":return zS(i,t);case"rainbow":return RS(i);case"transmission":return FS(i,t);case"matcap":return VS(i,t);case"displace":return jS(i);case"color":default:return AS(i,t)}}function Am(i){return{type:i.data.type}}function sr(i){let{alpha:t,mode:e}=i.data;return H(I({},Am(i)),{alpha:t,mode:e})}function AS(i,t){return H(I({},sr(i)),{color:Xe(i.data.color,t)})}function DS(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return H(I({},sr(i)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:n})}function BS(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return H(I({},sr(i)),{gradientType:t,smooth:e,colors:r.map(l=>new Om(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Nn(...s),morph:new Nn(...a),angle:n})}function ES(i){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=i.data;return H(I({},sr(i)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new oo(...s),direction:a?new oo(...a):new oo(1,0,0),num:p,colors:l.map(u=>new Om(u[0],u[1],u[2],u[3])),steps:c,smooth:h})}function _S(i){let{cnormal:t}=i.data;return H(I({},sr(i)),{cnormal:new oo(t[0],t[1],t[2])})}function GS(i,t){let{data:e}=i;return H(I({},sr(i)),{scale:e.scale,move:e.move,fA:new Nn(...e.fA),fB:new Nn(...e.fB),size:new oo(...e.size),distortion:new Nn(...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 zS(i,t){let{projection:e,axis:r,side:o,crop:n,size:s}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,p=new Zl,u;if(typeof a=="string")u=t==null?void 0:t.getImage(a);else{let m=new Image;m.src=wi(a.data),m.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},u=m}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,H(I({},sr(i)),{texture:p,mat:new Pm().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:n,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s})}function RS(i){let{data:t}=i;return H(I({},sr(i)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new oo(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new oo(...t.offset)})}function FS(i,t){let{data:e}=i;return H(I({},sr(i)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function VS(i,t){let e=new Zl,{image:r}=i.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=wi(r.data),s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},o=s}e.image=o;let n=16777215;return H(I({},sr(i)),{color:n,texture:e})}function jS(i){let{data:t}=i,e=H(I({},Am(i)),{intensity:t.intensity});if(t.displacementType==="noise")return H(I({},e),{offset:new oo(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Zl,o=new Pm().setUvTransform(0,0,1,1,0,0,0);return H(I({},e),{texture:r,mat:o,crop:t.crop})}}function Dm(i,t,e){if(e.type==="displace"&&(i==="intensity"||i==="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"&&(i==="alpha"||i==="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 _m,Vector4 as US}from"three";var Li;(t=>{function i(e){return new _m(e.x,e.y,e.z).getHex()}t.getHex=i})(Li||(Li={}));var Bm;(t=>{function i(e){return new US(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(Bm||(Bm={}));var Em;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new _m(r.r,r.g,r.b).getHex()}e.getHex=t})(Em||(Em={}));function Mn(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):tc(i,t)}function Gm(i,t){return i.map(e=>Mn(e,t))}function tc(i,t){var s,a;let e=(s=i.layers)!=null?s:vo.defaultTwoLayerData("phong").layers,r=kS(e),o;switch(r.category){case"basic":o=new ft;break;case"lambert":{o=new bi;break}case"toon":{o=new vi;break}case"physical":o=new Si;break;case"phong":default:{o=new It;break}}o.name=(a=i.name)!=null?a:"Untitled Material";let n=o.userData.layers;HS(n);for(let l=e.length-1;l>=0;l--)qS(n,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,u=Xe(r.emissive,t);u instanceof ec?h.emissive.value=u:h.emissive.value.setHex(Li.getHex(u));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof ec?h.specular.value=u:h.specular.value.setHex(Li.getHex(u));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 u=Xe(p.specular,t);u instanceof ec?h.specular.value=u:h.specular.value.setHex(Li.getHex(u));break}}return o.penumbraSizeNode=t.penumbraSizeNode,n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function kS(i){for(let t of i)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function HS(i){for(let t of i.getLayers())i.removeLayer(t.id)}function qS(i,t,e){let r=Im(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Dm(n,o,t.data)}import{Mesh as ew,Matrix4 as tw}from"three";import{Matrix4 as oc}from"three";import{Box3 as Um,Line3 as Yt,Matrix4 as rc,Vector3 as Ve}from"three";import{HemisphereLight as zm}from"three";var va=i=>"isEntity"in i,vr=i=>"isAbstractMesh"in i,Sr=i=>i!==null&&i.isBooleanMesh,Rm=i=>i.objectType==="CombinedCamera";var zr=i=>"objectHelper"in i;function WS(i,t){var r;let e=!1;t.position&&(i.position.fromArray(t.position),e=!0),t.rotation&&(i.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,i.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(e=!0,i.hiddenMatrix.fromArray((r=t.hiddenMatrix)!=null?r:Jr.identity)),e&&(i.updateMatrix(),Sr(i.parent)&&vr(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=t.isUpVectorFlipped),i.updateUp())}function $S(i,t){WS(i,t),t.name!==void 0&&(i.name=t.name),t.visible!==void 0&&(i.isEntity?i.visibility=t.visible:i.visible=t.visible)}function Fm(i,t,e){$S(i,t),t.color!==void 0&&(i.color=Xe(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof zm)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof zm)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&zr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function Vm(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var Ci=new Um,yt=new Ve,he=new Ve,tt=new rc;function JS(i,t,e=0,r=t.count){let o=1/0,n=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),u=t.getY(h),m=t.getZ(h);p<o&&(o=p),u<n&&(n=u),m<s&&(s=m),p>a&&(a=p),u>l&&(l=u),m>c&&(c=m)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var jm=(i,t,e,r)=>{var o;if(vr(i)){let n=i.geometry.userData.parameters,s=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?yt.copy(i.originalGeometry.boundingSphere.center):s!==void 0&&(JS(Ci,s,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:s.count),Ci.getCenter(yt)),i.forceComputeSize?Ci.getSize(he).multiplyScalar(.5):he.set(n.width,n.height,(o=n.depth)!=null?o:0).multiplyScalar(.5)}else if(zr(i)&&r===!0){let n=i.geometryHelper.getAttribute("position");Ci.setFromArray(n.array),Ci.getCenter(yt),Ci.getSize(he).multiplyScalar(.5)}else yt.setScalar(0),he.setScalar(0);tt.copy(t).multiply(i.matrixWorld),he.x===0&&he.y===0&&he.z===0?e.push(new Ve(yt.x,yt.y,yt.z).applyMatrix4(tt)):e.push(new Ve(-he.x,he.y,he.z).add(yt).applyMatrix4(tt),new Ve(-he.x,-he.y,he.z).add(yt).applyMatrix4(tt),new Ve(he.x,-he.y,he.z).add(yt).applyMatrix4(tt),new Ve(he.x,he.y,he.z).add(yt).applyMatrix4(tt),new Ve(-he.x,he.y,-he.z).add(yt).applyMatrix4(tt),new Ve(-he.x,-he.y,-he.z).add(yt).applyMatrix4(tt),new Ve(he.x,-he.y,-he.z).add(yt).applyMatrix4(tt),new Ve(he.x,he.y,-he.z).add(yt).applyMatrix4(tt))},Pn=class extends Um{constructor(){super(...arguments);this.matrix=new rc;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 rc().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(s=>{s.visible&&jm(s,r,n,e.enableHelper===!0)}):jm(e,r,n,e.enableHelper===!0),this.setFromPoints(n)}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(he).multiplyScalar(.5),this.getCenter(yt),tt.copy(this.matrix).setPosition(yt),this.vertices=[new Ve(-he.x,he.y,he.z).applyMatrix4(tt),new Ve(-he.x,-he.y,he.z).applyMatrix4(tt),new Ve(he.x,-he.y,he.z).applyMatrix4(tt),new Ve(he.x,he.y,he.z).applyMatrix4(tt),new Ve(-he.x,he.y,-he.z).applyMatrix4(tt),new Ve(-he.x,-he.y,-he.z).applyMatrix4(tt),new Ve(he.x,-he.y,-he.z).applyMatrix4(tt),new Ve(he.x,he.y,-he.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Yt(this.vertices[0],this.vertices[3]),new Yt(this.vertices[1],this.vertices[2]),new Yt(this.vertices[5],this.vertices[6]),new Yt(this.vertices[4],this.vertices[7]),new Yt(this.vertices[0],this.vertices[1]),new Yt(this.vertices[3],this.vertices[2]),new Yt(this.vertices[7],this.vertices[6]),new Yt(this.vertices[4],this.vertices[5]),new Yt(this.vertices[0],this.vertices[4]),new Yt(this.vertices[1],this.vertices[5]),new Yt(this.vertices[2],this.vertices[6]),new Yt(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 YS,Matrix4 as KS,Light as XS}from"three";function On(i){let t=[];for(let e in i){let r=i[e];delete r.metadata,t.push(r)}return t}function QS(i){let t=[];for(let e in i)t.push(i[e]);return t}var Sa=i=>class extends i{hasEntityChild(){return this.children.some(e=>va(e))}isDescendantOf(e){e instanceof YS&&(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 KS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),va(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 n=e.children[o];this.add(n.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 n={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(n.name=this.name),n.matrix=this.matrix.toArray(),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),n.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData),this.children.length>0){n.children=[];for(let s of this.children)(va(s)||s instanceof XS)&&n.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),h=On(e.interactionStates),p=QS(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=n,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 Kt=i=>"isEntity"in i,km=i=>"isAbstractMesh"in i,Xt=i=>class extends Sa(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new oc;this._singleBBox=new Pn;this._recursiveBBox=new Pn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Kt(o)&&o.traverseEntity(n=>{zr(n)&&n.visible&&(n.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=>{Kt(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)Kt(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 n=this.parent;if(r&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let 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 n of r.children)Kt(n)&&this.add(n.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 n of r.children)Kt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new oc,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)Kt(n)&&n.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),n=o.object;return this.raycastLock===!0&&(n.raycastLock=!0),this.scaleLock===!0&&(n.scaleLock=!0),n.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 oc}),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 Jo(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=I({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return Jo(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 ZS,Vector3 as In,Euler as Hm,MathUtils as io}from"three";var To=class extends ZS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new In),n=.1;this.parameters=bs.defaultData(o.toArray(),n),fo(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 n=this.object.shallowClone(!1);n.visible=!0,this.add(n),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*io.DEG2RAD,n=r.end*io.DEG2RAD,s=o-n,a=new Hm(r.rotation[0]*io.DEG2RAD,r.rotation[1]*io.DEG2RAD,r.rotation[2]*io.DEG2RAD),l;switch(r.axis){case"z":l=new In(0,0,1);break;case"y":l=new In(0,1,0);break;default:case"x":l=new In(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 Hm(r.rotation[0]*io.DEG2RAD,r.rotation[1]*io.DEG2RAD,r.rotation[2]*io.DEG2RAD);for(let[n,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*n,s.scale.y=1+(r.scale[1]-1)*n,s.scale.z=1+(r.scale[2]-1)*n,s.rotation.x=o.x*n,s.rotation.y=o.y*n,s.rotation.z=o.z*n,s.position.x=r.position[0]*n,s.position.y=r.position[1]*n,s.position.z=r.position[2]*n}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let n={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 In(o.size[0]*(o.count[0]-n.x)*.5,o.size[1]*(o.count[1]-n.y)*.5,o.size[2]*(o.count[2]-n.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 n=0;n<o.count[0];n++)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]*n,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),fo(this.parameters,e),this.update(),this}};var rt=class extends Xt(ew){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new tw;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=ic[r.userData.type],n=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,n)),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){cn.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=An(r),n=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new To(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new To(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,n,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(n=e.receiveShadow)!=null?n:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Qt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Sr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)vr(e)&&(e.freeBooleanPointer(),Sr(e)&&e.invalidateUpstreamBooleanData())}};var nw=new nc(0,0,1),qm=new nc,Wm=new nc,$m=new iw,no=class extends rt{constructor(e=ut.create({}),r=new ft({side:rw})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new ow;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),$m.getNormalMatrix(this.matrixWorld),qm.copy(nw).applyMatrix3($m).normalize(),Wm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(qm,Wm)}clone(e){let r=this.shape.clone(),o=this.material.clone(),n=this.geometry.userData,s=ut.create(Object.assign({},n,{shape:r})),a=new no(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function wa(i,t){return aw(i)}function aw(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Pe.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new sw().parse(i));let e;try{e=An(t)}catch(r){console.error(r)}if(!e){let r=Pe.createFromState(ri.defaultData(),100,100);t.shape=r,e=An(t)}return e}var fe;na.then(i=>{fe=i});var Km=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Xm=new Uint32Array([0,1,2,3]),Qm=new Uint8Array([4]),Zt=class{static build(i,t,e,r,o){var c,h;let n,s,a,l=(h=(c=i==null?void 0:i.phongAngle)!=null?c:t==null?void 0:t.phongAngle)!=null?h:35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(fe.free_bvh(e),fe.free_subdivision_surface(e));try{n=Zt.allocate(i,o)}catch(p){console.error(p,i),n=Zt.allocate({positionWASM:Km,indexWASM:Xm,verticesPerFaceWASM:Qm},o)}fe.set_destination_refinement_level(n,0),s=Zt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Zt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(fe.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Zt.buildLevel(n,!1,l):a=null),{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(i,t){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let e=i.shape!==void 0?t.geometry:wa(i),r,o,n,s;return{positions:r,triIndices:s}=pc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=uc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){var N;let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=Km,r=Xm,o=Qm);let a=e.length,l=r.length,c=o.length,h=e.length+n.length+s.length,p=r.length+o.length,u=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,m=h*Float32Array.BYTES_PER_ELEMENT,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(u),v=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+m,p);v.set(e,0),v.set(n,e.length),v.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let b;(N=i==null?void 0:i.scaleBaked)!=null&&N.some(S=>S!==1)&&(b=new lw().makeScale(...i.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+m,l,g+m+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+m,l,g+m+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(i,t,e,r,o){let n=o?fe.get_mesh_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e,o.elements):fe.get_mesh_data(i,t?fe.Level.CONTROL:fe.Level.REFINED,e),s=8,a=fe.HEAPU32.subarray(n>>2,(n>>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 u=fe.HEAPU32[a[c]>>2],m=fe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let v=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(v>>2,(v>>2)+l[c]);if(c++,r===void 0){let b=new Jm;if(b.setIndex(new sc(y,1)),b.setAttribute("position",new ac(p,3)),b.setAttribute("normal",new ac(m,3)),t){b.setAttribute("faceMap",new sc(g,1));let A=new Float32Array(m.length/3*4).fill(0);b.setAttribute("color",new Ym(A,4))}return fe.free_mesh_data(n),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=fe.get_wireframe_data_for_base_level(i),o=4,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=fe.HEAPU32[n[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[n[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new Jm;u.setAttribute("position",new ac(c,3));let m=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return u.setAttribute("color",new Ym(m,3)),u.setIndex(new sc(p,1)),fe.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||fe.set_destination_refinement_level(i,1);let r=e?fe.get_topological_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(i,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=fe.HEAPU32[n[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[n[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=fe.HEAPU32[n[a]>>2],m=new Uint8Array(fe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:m}}};var Zm=["getX","getY","getZ"];function pc(i,t){let e={},r=t?t.count:i.count,o=0,n=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let u=0;u<3;u++)p+=`${~~(i[Zm[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Zm[u]](h));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:s,triIndices:l}}var La=new Ca,lc=new Ca,cc=new Ca,hc=new Ca;function uc(i,t,e){var n;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]);i.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)i.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)i.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(n=e.capStartIndex)!=null?n: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]){La.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),lc.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),cc.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),hc.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),lc.sub(La).normalize(),cc.sub(La).normalize(),hc.sub(La).normalize();let l=lc.cross(cc).dot(hc);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<i.length;c+=3,h++)i[c+2]===0&&(s.push(h),l++),i[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 Qt={};Nc(Qt,{calcBoolean:()=>mw,calcBooleanTopological:()=>uw,freeMeshSet:()=>yw,getMeshSet:()=>dw,transformMeshSet:()=>fw});var cw,ed=new Promise(i=>{cw=i});import{Float32BufferAttribute as td,Sphere as hw}from"three";var Le,Ti;ed.then(i=>Le=i);function pw(i,t){let e,{positions:r,triIndices:o}=pc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=uc(r,o,i);n=a.length,e=[];for(let l=0,c=0;l<n;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),n=0;for(let a=0,l=0;l<e.length;)e[l++]=3,n++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:n}}function rd(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Le._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Le.HEAPU32.buffer,n,t):new Float32Array(Le.HEAPF32.buffer,n,t)).set(i,0),n}function od(i){switch(i){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function uw(i,t){Ti===void 0&&(Ti=Le.init_csg());let e=rd(i),r=Le.csg_calc_topological(Ti,e,i.length,od(t));Le._free(e);let o=6,n=Le.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=Le.HEAPU32[n[a]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=Le.HEAPU32[n[a]>>2],p=new Uint32Array(Le.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=Le.HEAPU32[n[a]>>2],m=new Uint8Array(Le.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return Le.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:m}}function mw(i,t,e,r){Ti===void 0&&(Ti=Le.init_csg());let o=rd(i),n=Le.csg_calc(Ti,o,i.length,r,od(t));Le._free(o);let s=5,a=Le.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=Le.HEAPU32[a[c]>>2],p=Le.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=Le.HEAPU32[a[c]>>2],m=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new td(p,3)),e.setAttribute("normal",new td(m,3));let g=Le.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new hw),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},Le.free_mesh_data(n),f}function dw(i,t){if(Le===void 0)return-1;let e,r,o;if(t&&i.userData.positions!==void 0){let g=i.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((v,y)=>v+y,0)+o);for(let v=0,y=0,b=0;v<g.verticesPerFace.length;v++){r[b++]=g.verticesPerFace[v];for(let A=0;A<g.verticesPerFace[v];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=pw(i,t));let n=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,u=Le._malloc(c),m=new Float32Array(Le.HEAPF32.buffer,u,a),f=new Uint32Array(Le.HEAPU32.buffer,u+h,l);return m.set(e,0),f.set(r,0),Le.get_csg_mesh(u,n,u+h,s,o)}function fw(i,t){Le.transform_csg_mesh(i,t.elements)}function yw(i){Le.free_csg_mesh(i)}var ic={ConeGeometry:bu,CubeGeometry:vu,CylinderGeometry:xu,DodecahedronGeometry:Su,EllipseGeometry:Ju,HelixGeometry:Zu,IcosahedronGeometry:em,LatheGeometry:tm,NonParametricGeometry:nm,PolygonGeometry:sm,PyramidGeometry:am,RectangleGeometry:oa,SphereGeometry:lm,PlaneGeometry:cm,BackdropGeometry:hm,StarGeometry:pm,TextFrameGeometry:ia,TorusGeometry:um,TorusKnotGeometry:mm,TriangleGeometry:dm,VectorGeometry:ut},An=i=>ic[i.type].create(i);import{BufferGeometry as id,Matrix4 as gw}from"three";var nd=new gw;var Ta=class extends rt{constructor(e=new id,r=new It){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){var o;if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];Sr(s)&&s.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(km(s)&&s.booleanExclude===!1&&((o=s.geometry.attributes.position)==null?void 0:o.count)>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Qt.getMeshSet(s.geometry,e===!0),s.booleanMeshSetAddress===-1)return;Qt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else Sr(s)&&s.needsTransformForDownstream===!0?(Qt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(nd.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Qt.transformMeshSet(s.booleanMeshSetAddress,nd),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Qt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new id,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Qt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as Bw,OrthographicCamera as Ew,PerspectiveCamera as _w,Vector3 as kt,Object3D as ld,Quaternion as Gw}from"three";import{BoxBufferGeometry as xw}from"three";var wr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new xw(30,30,30),t};import{Camera as Lw,LineSegments as Cw,BufferGeometry as Tw,LineBasicMaterial as Nw,Color as dc,Vector3 as Mw,Float32BufferAttribute as ad}from"three";import{Ray as bw,Sphere as vw,Matrix4 as Sw,Vector3 as Rr}from"three";var Na=new bw,mc=new vw,sd=new Sw,Lr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),mc.copy(n.boundingSphere),mc.applyMatrix4(s),e.ray.intersectsSphere(mc)===!1||(sd.copy(s).invert(),Na.copy(e.ray).applyMatrix4(sd),n.boundingBox!==null&&Na.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,m=n.drawRange,f,g;if(o===!1){let y=Math.max(0,m.start),b=Math.min(p.count,m.start+m.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=v(i,e,Na,u,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=n.attributes.position,A=new Rr,N=new Rr,S=new Rr,k=new Rr,T=2,O=1/((i.scale.x+i.scale.y+i.scale.z)/3),x=O*O,L=Math.max(0,m.start),C=Math.min(b.count,m.start+m.count);for(let P=L,$=C-1;P<$;P+=T){if(A.fromBufferAttribute(b,P),N.fromBufferAttribute(b,P+1),Na.distanceSqToSegment(A,N,k,S)>x)continue;k.applyMatrix4(i.matrixWorld);let oe=e.ray.origin.distanceTo(k);oe<e.near||oe>e.far||r.push({distance:oe,point:S.clone().applyMatrix4(i.matrixWorld),object:i})}}function v(y,b,A,N,S,k,T){let d=new Rr,O=new Rr,x=new Rr,L=new Rr,C=new Rr;if(d.fromBufferAttribute(N,S),O.fromBufferAttribute(N,k),x.fromBufferAttribute(N,T),A.intersectTriangle(d,O,x,!1,L)===null)return null;C.copy(L),C.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(C);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:C.clone(),object:y}}};var Ma=new Mw,er=new Lw,fc=class extends Cw{constructor(e){let r=new Tw,o=new Nw({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new dc(15711266),c=new dc(15711266),h=new dc(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(m,f,g){u(m,g),u(f,g)}function u(m,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(n.length/3-1)}r.setAttribute("position",new ad(n,3)),r.setAttribute("color",new ad(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;er.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,s=1,a=o?.8:1e-4;ar("n1",r,e,er,-n,-s,a),ar("n2",r,e,er,n,-s,a),ar("n3",r,e,er,-n,s,a),ar("n4",r,e,er,n,s,a);let l=a;ar("f1",r,e,er,-n,-s,l),ar("f2",r,e,er,n,-s,l),ar("f3",r,e,er,-n,s,l),ar("f4",r,e,er,n,s,l);let c=l,h=.5;ar("u1",r,e,er,n*.7*h,s*1.1,c),ar("u2",r,e,er,-n*.7*h,s*1.1,c),ar("u3",r,e,er,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ar(i,t,e,r,o,n,s){Ma.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],Ma.x,Ma.y,Ma.z)}}var Pa=class extends wr(fc){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){Lr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Pw}from"three";var Ni=class extends wr(Pw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Lr(this.object,Ni.geometryHelper,e,r)}};import{AxesHelper as Ow}from"three";var Mi=class extends wr(Ow){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){Lr(this.object,Mi.geometryHelper,e,r)}update(){}};import{PointLightHelper as Iw}from"three";var Pi=class extends wr(Iw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Lr(this.object,Pi.geometryHelper,e,r)}};import{SpotLightHelper as Aw,Vector3 as Dw}from"three";var Oa=class extends wr(Aw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Lr(this.object,Oa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Oa._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 n=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(n);else this.cone.material.color.set(n)}}},Dn=Oa;Dn._vector=new Dw;var Cr=(i,t)=>class extends i{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 n of this.children)Kt(n)&&n.traverseEntity(s=>{zr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}copy(o,n=!0){return super.copy(o,n),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let n=super.toJSON(o),s=n.object;return s.enableHelper=this.enableHelper,n}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(o.color,n)),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 Oi=new kt,yc=new kt,Fr=class extends Cr(Xt(Bw),Pa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=yo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ew(e*-.5,e*.5,r*.5,r*-.5,n!=null?n:-5e4,s),this.perspCamera=new _w(o,e/r,n!=null?n: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 Fr().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(Oi),this.targetOffset=Oi.distanceTo(e)}getTarget(e=new kt){return this.getWorldDirection(yc),this.getWorldPosition(Oi),yc.multiplyScalar(this.targetOffset),e.copy(Oi).add(yc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Oi),Oi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Gw),r=new kt(0,0,1).applyQuaternion(e),o=new kt().copy(ld.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new kt().copy(ld.DefaultUp).projectOnPlane(r),s=new kt().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new kt),n=e.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new kt),n=this.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(n),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,n,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,s,a):this.orthoCamera.setViewOffset(e,r,o,n,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 kt),n=new kt().fromArray(e.orbitControlsTarget);this.targetOffset=n.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 Jo(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(I(I({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as zw}from"three";var Vr=class extends Cr(Xt(zw),Mi){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Vr().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 Rw,CameraHelper as Ia}from"three";var Ii=class extends Cr(Xt(Rw),Ni){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let n=new Ia(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Ii().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ia&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ia&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ia&&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 n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n: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&&Vm(this,e.size),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)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Fw,Vector3 as Aa,Box3 as Vw,Box3Helper as Da,Color as jw}from"three";var Ai=class extends Cr(Xt(Fw),Pi){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new Aa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Aa(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Vw(n,s),l=new Da(a,new jw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new Ai().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&(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 Da){let o=this.shadow.camera,n=new Aa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Aa(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(n,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 n,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n: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 Uw,CameraHelper as Ba,MathUtils as kw,Vector3 as ud,Quaternion as Hw}from"three";var cd=new ud,hd=new ud,pd=new Hw,Di=class extends Cr(Xt(Uw),Dn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=kw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Ba(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Di().fromState(r,o);return n.uuid=e,n}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),hd.setFromMatrixPosition(this.matrixWorld),pd.setFromRotationMatrix(this.matrixWorld),cd.copy(this.up).applyQuaternion(pd).negate().multiplyScalar(this.distance),this.target.position.copy(hd).add(cd),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 n;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=(n=e.shadow.normalBias)!=null?n: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),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.fromSpotLightState(e,r),this}};import{VideoTexture as qw}from"three";var md=i=>i.tagName==="VIDEO",No=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;md(s)?n=s.videoWidth/s.videoHeight:n=s.width/s.height,o>n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*n/o):r.repeat.set(1,1*n/o)),o<n&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/n*-1,1):r.repeat.set(1*o/n,1)),o==n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,n=r.image!==void 0?r.image.width/r.image.height:1,s;o>n?s={x:1,y:n/o}:o<n?s={x:o/n,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,n=o.getLayers();for(let s=0;s<n.length;s++){let a=n[s];wm(a)&&(No.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;md(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/n):r.repeat.set(1/t,1/e*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*n/s*-1,1/e):r.repeat.set(1/t*n/s,1/e)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Bi=class extends rt{constructor(e,r=new ft){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&No.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&&No.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 qw){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 n=oa.create({parameters:{width:r,height:o}}),s=new ft;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Bi(n,s)}};var Ei=class extends rt{constructor(e,r=new It){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 _i=class extends Ei{constructor(e,r=new It){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Ww,Mesh as $w,MeshBasicMaterial as Jw,ShapeBufferGeometry as Yw,Vector2 as Kw,Vector3 as Xw}from"three";import{FontLoader as Qw}from"three/examples/jsm/loaders/FontLoader.js";var Qe=class extends $w{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new Jw({color:0,opacity:1,visible:!0,transparent:!0,side:Ww})){let c=Qe.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?r:e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new Kw,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 Qe._fontPath}static set FONTS_PATH(e){Qe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Xw(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=Qe.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=Qe.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=Qe.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 Qe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Qe.fontCache[e]?r(Qe.fontCache[e]):new Qw().load(Qe.FONTS_PATH+e+".json",s=>{Qe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Qe.charCache[e]){if(Qe.charCache[e][o]&&Qe.charCache[e][o].fontFamily===r)return Qe.charCache[e][o]}else Qe.charCache[e]={};let n=Qe.fontCache[r],s=n.generateShapes(e,1);return Qe.charCache[e][o]={geometry:new Yw(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Qe.charCache[e][o]}},At=Qe;At.charCache={},At.fontCache={},At._fontPath="/_assets/_fonts/";import{DoubleSide as _a,MeshBasicMaterial as fd,Vector3 as yd,Object3D as Zw}from"three";import{Vector2 as dd}from"three";var Ea=new dd,so=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new dd(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,n){switch(r){case 1:this.leftAlign(t,n);break;case 3:this.centerAlign(this.spaceLeft(e),t,n);break;case 2:this.rightAlign(this.spaceLeft(e),t,n);break;case 4:this.justifyAlign(this.spaceLeft(e),t,n);break}}offsetCharacters(t,e,r){Ea.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Ea),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 n=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),Ea.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Ea),e)}clone(){let t=new so(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 gc=class extends rt{constructor(e,r=new ft({transparent:!0,opacity:1,visible:!1,side:_a})){super(e,r);this.objectType="TextFrame";this.charContainer=new Zw,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 yd(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=ia.create({parameters:{width:r.width,height:r.height}}),s=new gc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await At.loadFont(o),r.text=e;let n=r.textOrigin,s=new fd({visible:r.visible,transparent:!0,side:_a}),a=e.split(`
943
- `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new so(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let m={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new At(m,f);return p.addChar3D(g,n),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 n=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof At&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){var h,p,u,m;let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:n,l=(m=(u=e.parameters)==null?void 0:u.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!==n&&(n<a?this.checkCapacity():n>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.textLines;for(let s=e;s<n.length;s++){n[s].updateYLinePos(this.getNewLinePosition(s)),n[s].fullUpdate(o);let a=[];for(;n[s].checkOverFlow(r.textFrame.maxLineSize);)n[s].containSpaceOverFlow()?a.unshift(n[s].getWord(n[s].message.length-1,-1)):a.unshift(n[s].popChar());if(a.length>0){n[s+1]===void 0?(n[s].isEndLine(!1),this.createTextLine()):n[s].endLine&&(this.createTextLine(s+1),n[s].isEndLine(!1),n[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)n[s+1].addChar3D(a[c][h],o,l),l+=1;n[s+1].fullUpdate(o)}n[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=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(n);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 so(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,n=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<n.length;a++)n[a].updateYLinePos(this.getNewLinePosition(a)),n[a].fullUpdate(o.textOrigin),n[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,n=0;for(let s=0;s<e;s+=1)n+=o[s].maxCharSize*o[s].lineHeight;return n}updateColor(e){var n;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;(n=c.color)!=null&&n.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].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 n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await At.loadFont(e);let o=this.userData.textFrame,n=o.textLines;o.fontFamily=e;for(let s=0;s<n.length;s++){let a=n[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,n=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<n.length;a++)n[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await At.loadFont(o.fontFamily);let n=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[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 n=0;n<o.length;n++){let s=o[n].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 n=0;n<o.length;n++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let n=0;n<o.length;n++)o[n].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 At.loadFont(r.fontFamily),r.textOrigin=new yd(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new fd({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:_a});r.textLinesData&&(r.textLines=r.textLinesData.map((n,s)=>{let a=new so(Number(n.yLinePos),Number(n.lineHeight),Number(n.maxCharSize)),l=n.message.map((c,h)=>{if(c.char===void 0){let m=r.textLines[s].message[h];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 p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new At(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});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 Vr;o.name="Text Shape";let n=At.fontCache[e];for(let s of this.charContainer.children)s instanceof At&&n.generateShapes(s.char,1).forEach(a=>{let l=new Pe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ut.create({shape:l}),h=new ft({side:_a});h.color=r;let p=new no(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},Mo=gc;Mo.VerticalAlign=hl,Mo.HorizontalAlign=cl,Mo.TextTransform=pl;import{HemisphereLight as m1,Scene as d1,Vector3 as f1,Color as Od,Fog as y1,Box3 as g1}from"three";import{Box3 as e1,Matrix4 as Po,Sphere as bd,Vector3 as t1}from"three";var Sd=Qd(xd());var xc;na.then(i=>{xc=i});var wd=new Po,r1=new Po,o1=new Po,lr=new e1,ao=new t1,i1=new Po,n1=new Po,Gi=class extends rt{constructor(e,r,o,n=new It){super(o!=null?o:r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Po;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Po;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Zt.build(r.geometry,void 0,void 0,!r.flatShading),l=Mn(r.material,o),c=new Gi(n,s,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new _i(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e,r){var a,l,c;let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Zt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&((a=this.originalGeometry)==null||a.dispose(),this.originalGeometry=o),n!==void 0&&((l=this.subdividedGeometry)==null||l.dispose(),this.subdividedGeometry=n!=null?n:void 0),this.geometry=(c=this.subdividedGeometry)!=null?c:this.originalGeometry,this.cloner)for(let h of this.cloner.children)h.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Zt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Zt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=Zt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Zt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),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:n,q:s}=(0,Sd.SVD)(r),a=wd.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=r1.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=o1.copy(l).transpose();this.shearScale=i1.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=n1.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 bd);let r=e.attributes.position,o=e.boundingSphere.center;lr.setFromBufferAttribute(r),lr.getCenter(o),e.boundingSphere.radius=o.distanceTo(lr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),lr.getSize(ao);let n={width:ao.x,height:ao.y,depth:ao.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;lr.min.set(e[0],e[2],e[4]),lr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(lr.min.applyMatrix4(this.shearScaleInv),lr.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new bd);let o=r.boundingSphere.center;lr.getCenter(o),r.boundingSphere.radius=o.distanceTo(lr.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),lr.getSize(ao);let n={width:ao.x,height:ao.y,depth:ao.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(xc.free_bvh(this.subdivPointer),xc.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,vd(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(vd(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=I({},e.parameters)}};function vd(i,t,e,r){let o=i.position.array,n=i.normal.array,s=wd.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=n[h],l=n[h+1],c=n[h+2],n[h]=s[0]*a+s[4]*l+s[8]*c,n[h+1]=s[1]*a+s[5]*l+s[9]*c,n[h+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as s1,BufferGeometry as a1,DoubleSide as l1,FrontSide as c1}from"three";function Ld(i,t){t.flatShading!==void 0&&(i.flatShading=t.flatShading,i.needsUpdate=!0),t.wireframe!==void 0&&(i.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?i.side=c1:t.side===1?i.side=s1:i.side=l1)}function h1(i,t){if(Array.isArray(i.material))for(let e of i.material)Ld(e,t);else{let e=i.material;Ld(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function Cd(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Gi.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new a1:wa(t.geometry,e),n="materials"in t?Gm(t.materials,e):Mn(t.material,e);js.is2DParametricMesh(o.userData.type)?r=new Bi(o,n):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new no(o,n):t.geometry.type==="NonParametricGeometry"?r=new _i(o,n):t.geometry.type==="BooleanGeometry"?(r=new Ta(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Ei(o,n),r.uuid=i,r.fromState(t)}return h1(r,t),r}function Td(i,t,e){return t.type==="Mesh"?Cd(i,t,e):t.type==="TextFrame"?Mo.createFromState(i,t,e):t.type==="Empty"?Vr.createFromState(i,t):t.type==="PointLight"?Ai.createFromState(i,t,e):t.type==="SpotLight"?Di.createFromState(i,t,e):t.type==="DirectionalLight"?Ii.createFromState(i,t,e):Yo.is(t.type)?Fr.createFromState(i,t):(console.error(t),new Vr)}function p1(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Nd(i,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,i!==void 0&&o.forEach(n=>p1(i,n))):t.layers.set(0),r}function Md(i,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++)Nd(i,r,r.material[o])&&(e=!0);else Nd(i,r,r.material)&&(e=!0)}),e}function Pd(i,t){"material"in i&&u1(i.material,t),"geometry"in i&&i.geometry.dispose()}function u1(i,t){Mc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Id=new f1,bc=class extends Sa(d1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new y1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new Od(1,0,0);this.bgColor=new Od(1,1,1);this.entityByUuid={};this.ambientLight=new m1(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=Md(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 Fr&&this.switchActiveCamera(o)}this.traverse(o=>{Sr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Pd(r,e)});for(let r of this.children)Kt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Fr.createFromState(bc.PERSONAL_CAMERA_ID,H(I({},ks.defaultData),{name:"Personal Camera"}));return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=n=>{for(let s of n.children)Kt(s)&&!s.raycastLock&&s.visible&&((vr(s)||zr(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)Kt(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){Fm(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 n of e)this.createChildObject(n.id,n.data,n.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,n,s){let a=Td(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),Sr(n)&&vr(a)&&(a.prevBooleanObjectParent=n),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let n=0,s=e.length;n<s;++n){let{id:a,recursive:l}=e[n],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new g1;return o.setFromPoints(r),o.getCenter(Id),Id}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 n;if(e===null){r.identity();return}let o=(n=this.find(e))==null?void 0:n.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,n;e>=r?(o=r/e,n=1):(o=1,n=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=n})})}},Bn=bc;Bn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as x1}from"three/examples/jsm/loaders/DRACOLoader.js";var lo;function b1(){return lo||(lo=new x1,lo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),lo.decoderPending}async function v1(i){if(lo){let t={attributeIDs:lo.defaultAttributeIDs,attributeTypes:lo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await lo.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Ad(i){let[t,e]=$a(Gs.deserialize(new Uint8Array(i))),r=[];t.scene.objects.traverse((o,n)=>{n.type==="Mesh"&&n.geometry.type==="NonParametricGeometry"&&n.geometry.data.draco!==void 0&&r.push(n)}),r.length&&await b1();for(let o of r){let n=await v1(Ya(o.geometry.data.draco));if(n){n.index&&(o.geometry.data.index={array:n.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};n.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}var vc=new Map,En={url:"head",time:0,data:null,next:null,prev:null},zi={url:"tail",time:1/0,data:null,next:null,prev:null};En.next=zi;zi.prev=En;var Dd=0;function wi(i){if(typeof i=="string")return i;let t=Date.now(),e=vc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},vc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=zi.prev,e.next=zi,zi.prev.next=e,zi.prev=e,t-Dd>1e3*10&&(Dd=t+1e3,setTimeout(()=>{let r=Date.now(),o=En.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),vc.delete(o.data),o=o.next,o.prev=En,En.next=o},900)),e.url}import{WebGLRenderTarget as S1,LinearMipmapLinearFilter as w1,LinearFilter as L1,ClampToEdgeWrapping as Bd,DepthTexture as C1}from"three";var Ed=new ft,za=class extends Et{},Ra=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new S1(2048,2048,{generateMipmaps:!0,minFilter:w1,magFilter:L1,wrapS:Bd,wrapT:Bd}),this.transmissionRenderTarget.depthTexture=new C1(2048,2048),this.penumbraSizeNode=new dt(5,t.penumbraSize),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,tc(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===Ed}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:Ed}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=wi(e),!0;{let r=new Image;return r.src=wi(e),r.onload=()=>{this.onImageLoad&&this.onImageLoad()},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 za(e.r,e.g,e.b,e.a):this.colors[t]=new za(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,n,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=(n=e.b)!=null?n: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 yH}from"three";import{mergeBufferGeometries as bH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function _d(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as Gd,ShaderLib as T1}from"three";function zd(i){let t=new Set;return i.traverse(e=>{if(vr(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);N1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Gd,specularColor:new Gd}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(T1.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)})}):M1(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function N1(i){return i.userData.layers.getLayersOfType("transmission").length>0}function M1(i){let t=i.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 Rd(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Fd(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,n)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as P1}from"three/examples/jsm/utils/BufferGeometryUtils";function Vd(i){let t=[];return i.traverse(e=>{e instanceof To&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,n=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&_d(l),l}),s=P1(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function jd(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}var Ud="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Sc=class extends I1{load(t,e,r,o=console.error){let n=new O1(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Ud+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Ud),n.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 Ad(t),r=new Ra(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Bn(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let n=e.scene.publish.playCamera;if(n){let s=o.find(n);s&&Rm(s)&&Object.assign(s,{makeDefault:!0})}return o=Vd(o),o=zd(o),o=Rd(o),o=Fd(o),o=jd(o),o}};export{Sc as default};
941
+ `),h&&d.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
942
+ `)}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 ea=class extends Nt{constructor(e=new Zs,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 ii=class extends ea{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r??this._getLayerStack(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 it){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 ii(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{Color as Vl}from"three";function Ge(n,t){let e;if(typeof n=="string"){let r=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 ft(0,0,0,0))}else return"a"in n?new ft(n.r,n.g,n.b,n.a):new ft(n.r,n.g,n.b,1);return e}import{Matrix3 as md,Texture as Fl,Vector2 as cn,Vector3 as Vr,Vector4 as fd}from"three";function gd(n,t){switch(n.data.type){case"light":return Vt(n);case"fresnel":return MS(n,t);case"gradient":return PS(n);case"depth":return IS(n);case"normal":return OS(n);case"noise":return AS(n,t);case"texture":return DS(n,t);case"rainbow":return BS(n);case"transmission":return ES(n,t);case"matcap":return _S(n,t);case"displace":return GS(n);case"color":default:return TS(n,t)}}function yd(n){return{type:n.data.type}}function Vt(n){let{alpha:t,mode:e}=n.data;return{...yd(n),alpha:t,mode:e}}function TS(n,t){return{...Vt(n),color:Ge(n.data.color,t)}}function MS(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n.data;return{...Vt(n),color:Ge(s,t),bias:e,scale:r,intensity:o,factor:i}}function PS(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n.data;return{...Vt(n),gradientType:t,smooth:e,colors:r.map(l=>new fd(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new cn(...s),morph:new cn(...a),angle:i}}function IS(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{...Vt(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Vr(...s),direction:a?new Vr(...a):new Vr(1,0,0),num:p,colors:l.map(u=>new fd(u[0],u[1],u[2],u[3])),steps:c,smooth:h}}function OS(n){let{cnormal:t}=n.data;return{...Vt(n),cnormal:new Vr(t[0],t[1],t[2])}}function AS(n,t){let{data:e}=n;return{...Vt(n),scale:e.scale,move:e.move,fA:new cn(...e.fA),fB:new cn(...e.fB),size:new Vr(...e.size),distortion:new cn(...e.distortion),colorA:Ge(e.colorA,t),colorB:Ge(e.colorB,t),colorC:Ge(e.colorC,t),colorD:Ge(e.colorD,t),noiseType:e.noiseType}}function DS(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 Fl,u;if(typeof a=="string")u=t?.getImage(a);else{let d=new Image;d.src=ni(a.data),d.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},u=d}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,{...Vt(n),texture:p,mat:new md().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 BS(n){let{data:t}=n;return{...Vt(n),filmThickness:t.filmThickness,movement:t.movement,wavelengths:new Vr(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new Vr(...t.offset)}}function ES(n,t){let{data:e}=n;return{...Vt(n),thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}function _S(n,t){let e=new Fl,{image:r}=n.data.texture,o;if(typeof r=="string")o=t?.getImage(r);else{let s=new Image;s.src=ni(r.data),s.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},o=s}e.image=o;let i=16777215;return{...Vt(n),color:i,texture:e}}function GS(n){let{data:t}=n,e={...yd(n),intensity:t.intensity};if(t.displacementType==="noise")return{...e,offset:new Vr(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType};{let r=new Fl,o=new md().setUvTransform(0,0,1,1,0,0,0);return{...e,texture:r,mat:o,crop:t.crop}}}function xd(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 Sd,Vector4 as zS}from"three";var si;(t=>{function n(e){return new Sd(e.x,e.y,e.z).getHex()}t.getHex=n})(si||(si={}));var bd;(t=>{function n(e){return new zS(e.r,e.g,e.b,e.a)}t.getThreeVector4=n})(bd||(bd={}));var vd;(e=>{function n(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=n;function t(r){return new Sd(r.r,r.g,r.b).getHex()}e.getHex=t})(vd||(vd={}));function hn(n,t){return typeof n=="string"?t.getMaterialOrDeletedPlaceholder(n):Ul(n,t)}function wd(n,t){return n.map(e=>hn(e,t))}function Ul(n,t){let e=n.layers??Zr.defaultTwoLayerData("phong").layers,r=RS(e),o;switch(r.category){case"basic":o=new Xe;break;case"lambert":{o=new ri;break}case"toon":{o=new oi;break}case"physical":o=new ii;break;case"phong":default:{o=new ct;break}}o.name=n.name??"Untitled Material";let i=o.userData.layers;FS(i);for(let s=e.length-1;s>=0;s--)VS(i,e[s],t);switch(r.category){case"basic":break;case"lambert":{let l=o,h=Ge(r.emissive,t);h instanceof Vl?l.emissive.value=h:l.emissive.value.setHex(si.getHex(h));break}case"toon":{let l=o,c=r;l.shininess.value=c.shininess;let h=Ge(c.specular,t);h instanceof Vl?l.specular.value=h:l.specular.value.setHex(si.getHex(h));break}case"physical":let s=o,a=r;s.metalness.value=a.metalness,s.roughness.value=a.roughness,s.reflectivity.value=a.reflectivity;break;case"phong":default:{let l=o,c=r;l.shininess.value=c.shininess;let h=Ge(c.specular,t);h instanceof Vl?l.specular.value=h:l.specular.value.setHex(si.getHex(h));break}}return o.penumbraSizeNode=t.penumbraSizeNode,i.blendColors(),i.blendAfterColors(),i.blendPositions(),o}function RS(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 FS(n){for(let t of n.getLayers())n.removeLayer(t.id)}function VS(n,t,e){let r=gd(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e?.transmissionSamplerMap,r.transmissionDepthMap=e?.transmissionDepthMap);let o=n.addLayer(r);o.uuid=t.id;for(let i in t.data)xd(i,o,t.data)}import{Mesh as QS,Matrix4 as ZS}from"three";import{Matrix4 as kl}from"three";import{Box3 as Pd,Line3 as kS,Matrix4 as jl,Vector3 as At}from"three";import{HemisphereLight as Nd}from"three";var ta=n=>"isEntity"in n,or=n=>"isAbstractMesh"in n,ir=n=>n!==null&&n.isBooleanMesh,Ld=n=>n.objectType==="CombinedCamera";var vr=n=>"objectHelper"in n;function US(n,t){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(t.hiddenMatrix??Or.identity)),e&&(n.updateMatrix(),ir(n.parent)&&or(n)&&n.invalidateDownstreamBooleanData(!0).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 jS(n,t){US(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 Cd(n,t,e){jS(n,t),t.color!==void 0&&(n.color=Ge(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Nd)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Nd)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0),t.helper!==void 0&&vr(n)&&(n.enableHelper=t.helper,n.gizmos.shadowmap.visible=t.helper)}function Td(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 ai=new Pd,nr=new At,sr=new At,li=new jl,Id=[new At(-1,1,1),new At(-1,-1,1),new At(1,-1,1),new At(1,1,1),new At(-1,1,-1),new At(-1,-1,-1),new At(1,-1,-1),new At(1,1,-1)],HS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],qS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function WS(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),u=t.getY(h),d=t.getZ(h);p<o&&(o=p),u<i&&(i=u),d<s&&(s=d),p>a&&(a=p),u>l&&(l=u),d>c&&(c=d)}return n.min.set(o,i,s),n.max.set(a,l,c),n}var Md=(n,t,e,r)=>{if(or(n)){let o=n.geometry.userData.parameters,i=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?nr.copy(n.originalGeometry.boundingSphere.center):i!==void 0&&(WS(ai,i,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:i.count),ai.getCenter(nr)),n.forceComputeSize?ai.getSize(sr).multiplyScalar(.5):sr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(vr(n)&&r===!0){let o=n.geometryHelper.getAttribute("position");ai.setFromArray(o.array),ai.getCenter(nr),ai.getSize(sr).multiplyScalar(.5)}else nr.setScalar(0),sr.setScalar(0);li.copy(t).multiply(n.matrixWorld),sr.x===0&&sr.y===0&&sr.z===0?e.push(new At(nr.x,nr.y,nr.z).applyMatrix4(li)):Id.forEach(o=>{e.push(o.clone().multiply(sr).add(nr).applyMatrix4(li))})},pn=class extends Pd{constructor(){super(...arguments);this.matrix=new jl;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 jl().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&&Md(s,r,i,e.enableHelper===!0)}):Md(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(li.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(sr).multiplyScalar(.5),this.getCenter(nr),li.copy(this.matrix).setPosition(nr),this.vertices=Id.map(e=>e.clone().multiply(sr).applyMatrix4(li))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=HS.map(([e,r])=>new kS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new At))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=qS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};import{Object3D as $S,Matrix4 as JS,Light as YS}from"three";function un(n){let t=[];for(let e in n){let r=n[e];delete r.metadata,t.push(r)}return t}function KS(n){let t=[];for(let e in n)t.push(n[e]);return t}var ra=n=>class extends n{hasEntityChild(){return this.children.some(e=>ta(e))}isDescendantOf(e){e instanceof $S&&(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 JS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),ta(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)(ta(s)||s instanceof YS)&&i.children.push(s.toJSON(e).object)}if(r){let s=un(e.geometries),a=un(e.materials),l=un(e.textures),c=un(e.images),h=un(e.interactionStates),p=KS(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 Dt=n=>"isEntity"in n,Od=n=>"isAbstractMesh"in n,Bt=n=>class extends ra(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new kl;this._singleBBox=new pn;this._recursiveBBox=new pn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Dt(o)&&o.traverseEntity(i=>{vr(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=>{Dt(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)Dt(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)Dt(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)Dt(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new kl,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)Dt(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 kl}),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 Io(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={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Io(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 XS,Vector3 as dn,Euler as Ad,MathUtils as Ur}from"three";var io=class extends XS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new dn),i=.1;this.parameters=Xn.defaultData(o.toArray(),i),Jr(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*Ur.DEG2RAD,i=r.end*Ur.DEG2RAD,s=o-i,a=new Ad(r.rotation[0]*Ur.DEG2RAD,r.rotation[1]*Ur.DEG2RAD,r.rotation[2]*Ur.DEG2RAD),l;switch(r.axis){case"z":l=new dn(0,0,1);break;case"y":l=new dn(0,1,0);break;default:case"x":l=new dn(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 Ad(r.rotation[0]*Ur.DEG2RAD,r.rotation[1]*Ur.DEG2RAD,r.rotation[2]*Ur.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 dn(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),Jr(this.parameters,e),this.update(),this}};var Ue=class extends Bt(QS){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ZS;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??0),this.material[e??this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r??0),r=r??this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=Hl[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){Fs.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=mn(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 io(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new io(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Ut.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ir(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)or(e)&&(e.freeBooleanPointer(),ir(e)&&e.invalidateUpstreamBooleanData())}};var ow=new ql(0,0,1),Dd=new ql,Bd=new ql,Ed=new rw,jr=class extends Ue{constructor(e=Je.create({}),r=new Xe({side:ew})){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new tw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.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){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Ed.getNormalMatrix(this.matrixWorld),Dd.copy(ow).applyMatrix3(Ed).normalize(),Bd.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Dd,Bd)}clone(e){let r=this.shape.clone(),o=this.material.clone(),i=this.geometry.userData,s=Je.create(Object.assign({},i,{shape:r})),a=new jr(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){Ue.prototype.raycast.call(this,e,r)}};function oa(n,t){return nw(n)}function nw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=be.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new iw().parse(n));let e;try{e=mn(t)}catch(r){console.error(r)}if(!e){let r=be.createFromState(zo.defaultData(),100,100);t.shape=r,e=mn(t)}return e}var ue;Vs.then(n=>{ue=n});var zd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Rd=new Uint32Array([0,1,2,3]),Fd=new Uint8Array([4]),Et=class{static build(n,t,e,r,o){let i,s,a,l=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(l=-1),n.positionWASM!==void 0){e&&e!==0&&(ue.free_bvh(e),ue.free_subdivision_surface(e));try{i=Et.allocate(n,o)}catch(c){console.error(c,n),i=Et.allocate({positionWASM:zd,indexWASM:Rd,verticesPerFaceWASM:Fd},o)}ue.set_destination_refinement_level(i,0),s=Et.buildLevel(i,!0,l)}else i=e,n.phongAngle!==void 0&&(s=Et.buildLevel(i,!0,l));return n.subdivisions!==void 0&&(ue.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Et.buildLevel(i,!1,l):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}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:oa(n),r,o,i,s;return{positions:r,triIndices:s}=Xl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=Ql(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=zd,r=Rd,o=Fd);let a=e.length,l=r.length,c=o.length,h=e.length+i.length+s.length,p=r.length+o.length,u=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,m=p*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(u),x=new Float32Array(ue.HEAPF32.buffer,g,h),y=new Uint32Array(ue.HEAPU32.buffer,g+d,p);x.set(e,0),x.set(i,e.length),x.set(s,e.length+i.length),y.set(r,0),y.set(o,r.length);let b;n?.scaleBaked?.some(S=>S!==1)&&(b=new sw().makeScale(...n.scaleBaked)),t&&(b?b.premultiply(t):b=t);let C=b?ue.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):ue.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return ue._free(g),C}static buildLevel(n,t,e,r,o){let i=o?ue.get_mesh_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e,o.elements):ue.get_mesh_data(n,t?ue.Level.CONTROL:ue.Level.REFINED,e),s=8,a=ue.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(4,4+4),c=0,h=ue.HEAPU32[a[c]>>2],p=ue.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=ue.HEAPU32[a[c]>>2],d=ue.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=ue.HEAPU32[a[c]>>2],g=ue.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let x=ue.HEAPU32[a[c]>>2],y=ue.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,r===void 0){let b=new _d;if(b.setIndex(new Wl(y,1)),b.setAttribute("position",new $l(p,3)),b.setAttribute("normal",new $l(d,3)),t){b.setAttribute("faceMap",new Wl(g,1));let C=new Float32Array(d.length/3*4).fill(0);b.setAttribute("color",new Gd(C,4))}return ue.free_mesh_data(i),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,ue.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=ue.get_wireframe_data_for_base_level(n),o=4,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,l=ue.HEAPU32[i[a]>>2],c=ue.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=ue.HEAPU32[i[a]>>2],p=ue.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new _d;u.setAttribute("position",new $l(c,3));let d=new Float32Array(c.length);for(let m=0,g=c.length;m<g;)d[m++]=e.r,d[m++]=e.g,d[m++]=e.b;return u.setAttribute("color",new Gd(d,3)),u.setIndex(new Wl(p,1)),ue.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||ue.set_destination_refinement_level(n,1);let r=e?ue.get_topological_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e.elements):ue.get_topological_data(n,t?ue.Level.CONTROL:ue.Level.REFINED),o=6,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=ue.HEAPU32[i[a]>>2],c=new Float32Array(ue.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=ue.HEAPU32[i[a]>>2],p=new Uint32Array(ue.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=ue.HEAPU32[i[a]>>2],d=new Uint8Array(ue.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return ue.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};var Vd=["getX","getY","getZ"];function Xl(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 u=0;u<3;u++)p+=`${~~(n[Vd[u]](h)*a)},`;if(p in e)i.push(e[p]);else{for(let u=0;u<3;u++)s.push(n[Vd[u]](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 ia=new na,Jl=new na,Yl=new na,Kl=new na;function Ql(n,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let i=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<i.length;l+=2)s+=(i[l]-i[(l===0?i.length:l)-2])*(i[l+1]+i[(l===0?i.length:l)-1]);n.length=0;let a=0;if(s<0)for(let l=0;l<i.length;l+=2)n.push(i[l],i[l+1],0),r.push(a++);else for(let l=i.length-2;l>=0;l-=2)n.push(i[l],i[l+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let i=0,s=e.capStartIndex??t.length;i<s;)if(t[i+1]===t[i+3]&&t[i+2]===t[i+5]||t[i+0]===t[i+3]&&t[i+2]===t[i+4]){ia.set(n[t[i]*3],n[t[i]*3+1],n[t[i]*3+2]),Jl.set(n[t[i+1]*3],n[t[i+1]*3+1],n[t[i+1]*3+2]),Yl.set(n[t[i+4]*3],n[t[i+4]*3+1],n[t[i+4]*3+2]),Kl.set(n[t[i+5]*3],n[t[i+5]*3+1],n[t[i+5]*3+2]),Jl.sub(ia).normalize(),Yl.sub(ia).normalize(),Kl.sub(ia).normalize();let a=Jl.cross(Yl).dot(Kl);Math.abs(a)>.005?(r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3):(r.push(t[i],t[i+1],t[i+4],t[i+5]),o.push(4),i+=6)}else r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3;if(e.capStartIndex!==void 0){let i=[],s=[],a=0;for(let l=0,c=0;l<n.length;l+=3,c++)n[l+2]===0&&(i.push(c),a++),n[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}i.reverse(),r.push(...i,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Ut={};cc(Ut,{calcBoolean:()=>pw,calcBooleanTopological:()=>hw,freeMeshSet:()=>mw,getMeshSet:()=>uw,transformMeshSet:()=>dw});var aw,Ud=new Promise(n=>{aw=n});import{Float32BufferAttribute as jd,Sphere as lw}from"three";var ye,ci;Ud.then(n=>ye=n);function cw(n,t){let e,{positions:r,triIndices:o}=Xl(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=Ql(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 kd(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=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,t):new Float32Array(ye.HEAPF32.buffer,i,t)).set(n,0),i}function Hd(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function hw(n,t){ci===void 0&&(ci=ye.init_csg());let e=kd(n),r=ye.csg_calc_topological(ci,e,n.length,Hd(t));ye._free(e);let o=6,i=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=ye.HEAPU32[i[a]>>2],c=new Float32Array(ye.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=ye.HEAPU32[i[a]>>2],p=new Uint32Array(ye.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=ye.HEAPU32[i[a]>>2],d=new Uint8Array(ye.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return ye.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function pw(n,t,e,r){ci===void 0&&(ci=ye.init_csg());let o=kd(n),i=ye.csg_calc(ci,o,n.length,r,Hd(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(2,2+3),c=0,h=ye.HEAPU32[a[c]>>2],p=ye.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=ye.HEAPU32[a[c]>>2],d=ye.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=l[c];e.setAttribute("position",new jd(p,3)),e.setAttribute("normal",new jd(d,3));let g=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new lw),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},ye.free_mesh_data(i),m}function uw(n,t){if(ye===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((x,y)=>x+y,0)+o);for(let x=0,y=0,b=0;x<g.verticesPerFace.length;x++){r[b++]=g.verticesPerFace[x];for(let C=0;C<g.verticesPerFace[x];C++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=cw(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,u=ye._malloc(c),d=new Float32Array(ye.HEAPF32.buffer,u,a),m=new Uint32Array(ye.HEAPU32.buffer,u+h,l);return d.set(e,0),m.set(r,0),ye.get_csg_mesh(u,i,u+h,s,o)}function dw(n,t){ye.transform_csg_mesh(n,t.elements)}function mw(n){ye.free_csg_mesh(n)}var Hl={ConeGeometry:tu,CubeGeometry:ru,CylinderGeometry:eu,DodecahedronGeometry:ou,EllipseGeometry:Ou,HelixGeometry:_u,IcosahedronGeometry:Gu,LatheGeometry:zu,NonParametricGeometry:qu,PolygonGeometry:Wu,PyramidGeometry:$u,RectangleGeometry:zs,SphereGeometry:Ju,PlaneGeometry:Yu,BackdropGeometry:Ku,StarGeometry:Xu,TextFrameGeometry:Rs,TorusGeometry:Qu,TorusKnotGeometry:Zu,TriangleGeometry:ed,VectorGeometry:Je},mn=n=>Hl[n.type].create(n);import{BufferGeometry as qd,Matrix4 as fw}from"three";var Wd=new fw;var sa=class extends Ue{constructor(e=new qd,r=new ct){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];ir(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Od(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Ut.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Ut.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else ir(i)&&i.needsTransformForDownstream===!0?(Ut.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Wd.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Ut.transformMeshSet(i.booleanMeshSetAddress,Wd),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 Ut.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new qd,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Ut.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as Aw,OrthographicCamera as Dw,PerspectiveCamera as Bw,Vector3 as Lt,Object3D as Yd,Quaternion as Ew}from"three";import{BoxBufferGeometry as gw}from"three";var ar=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new gw(30,30,30),t};import{Camera as Sw,LineSegments as ww,BufferGeometry as Nw,LineBasicMaterial as Lw,Color as ec,Vector3 as Cw,Float32BufferAttribute as Jd}from"three";import{Ray as yw,Sphere as xw,Matrix4 as bw,Vector3 as Sr}from"three";var aa=new yw,Zl=new xw,$d=new bw,lr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Zl.copy(i.boundingSphere),Zl.applyMatrix4(s),e.ray.intersectsSphere(Zl)===!1||($d.copy(s).invert(),aa.copy(e.ray).applyMatrix4($d),i.boundingBox!==null&&aa.intersectsBox(i.boundingBox)===!1))return;let a,l,c,h,p=i.index,u=i.attributes.position,d=i.drawRange,m,g;if(o===!1){let y=Math.max(0,d.start),b=Math.min(p.count,d.start+d.count);for(m=y,g=b;m<g;m+=3)if(l=p.getX(m),c=p.getX(m+1),h=p.getX(m+2),a=x(n,e,aa,u,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let b=i.attributes.position,C=new Sr,S=new Sr,v=new Sr,z=new Sr,w=2,D=1/((n.scale.x+n.scale.y+n.scale.z)/3),L=D*D,P=Math.max(0,d.start),M=Math.min(b.count,d.start+d.count);for(let I=P,k=M-1;I<k;I+=w){if(C.fromBufferAttribute(b,I),S.fromBufferAttribute(b,I+1),aa.distanceSqToSegment(C,S,z,v)>L)continue;z.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(z);oe<e.near||oe>e.far||r.push({distance:oe,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function x(y,b,C,S,v,z,w){let f=new Sr,D=new Sr,L=new Sr,P=new Sr,M=new Sr;if(f.fromBufferAttribute(S,v),D.fromBufferAttribute(S,z),L.fromBufferAttribute(S,w),C.intersectTriangle(f,D,L,!1,P)===null)return null;M.copy(P),M.applyMatrix4(y.matrixWorld);let k=b.ray.origin.distanceTo(M);return k<b.near||k>b.far?null:{faceIndex:1,distance:k,point:M.clone(),object:y}}};var la=new Cw,_t=new Sw,tc=class extends ww{constructor(e){let r=new Nw,o=new Lw({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},l=new ec(15711266),c=new ec(15711266),h=new ec(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(d,m,g){u(d,g),u(m,g)}function u(d,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(i.length/3-1)}r.setAttribute("position",new Jd(i,3)),r.setAttribute("color",new Jd(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;_t.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;jt("n1",r,e,_t,-i,-s,a),jt("n2",r,e,_t,i,-s,a),jt("n3",r,e,_t,-i,s,a),jt("n4",r,e,_t,i,s,a);let l=a;jt("f1",r,e,_t,-i,-s,l),jt("f2",r,e,_t,i,-s,l),jt("f3",r,e,_t,-i,s,l),jt("f4",r,e,_t,i,s,l);let c=l,h=.5;jt("u1",r,e,_t,i*.7*h,s*1.1,c),jt("u2",r,e,_t,-i*.7*h,s*1.1,c),jt("u3",r,e,_t,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function jt(n,t,e,r,o,i,s){la.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],la.x,la.y,la.z)}}var ca=class extends ar(tc){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){lr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Tw}from"three";var hi=class extends ar(Tw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){lr(this.object,hi.geometryHelper,e,r)}};import{AxesHelper as Mw}from"three";var pi=class extends ar(Mw){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){lr(this.object,pi.geometryHelper,e,r)}update(){}};import{PointLightHelper as Pw}from"three";var ui=class extends ar(Pw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){lr(this.object,ui.geometryHelper,e,r)}};import{SpotLightHelper as Iw,Vector3 as Ow}from"three";var ha=class extends ar(Iw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){lr(this.object,ha.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=ha._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)}}},fn=ha;fn._vector=new Ow;var cr=(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)Dt(i)&&i.traverseEntity(s=>{vr(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=Ge(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 di=new Lt,rc=new Lt,wr=class extends cr(Bt(Aw),ca){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Yr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Dw(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new Bw(o,e/r,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 wr().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(di),this.targetOffset=di.distanceTo(e)}getTarget(e=new Lt){return this.getWorldDirection(rc),this.getWorldPosition(di),rc.multiplyScalar(this.targetOffset),e.copy(di).add(rc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(di),di.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ew),r=new Lt(0,0,1).applyQuaternion(e),o=new Lt().copy(Yd.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Lt().copy(Yd.DefaultUp).projectOnPlane(r),s=new Lt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Lt),i=e.getWorldDirection(new Lt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Lt),i=this.getWorldDirection(new Lt).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){if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let r=this.getWorldPosition(new Lt),o=new Lt().fromArray(e.orbitControlsTarget);this.targetOffset=o.distanceTo(r)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=e.angleOffsetFromUp??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 Io(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{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as _w}from"three";var Nr=class extends cr(Bt(_w),pi){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Nr().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 Gw,CameraHelper as pa}from"three";var mi=class extends cr(Bt(Gw),hi){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new pa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new mi().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 pa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&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){super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=e.shadow.normalBias??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&&Td(this,e.size),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)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as zw,Vector3 as ua,Box3 as Rw,Box3Helper as da,Color as Fw}from"three";var fi=class extends cr(Bt(zw),ui){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ua(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ua(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Rw(i,s),l=new da(a,new Fw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let i=new fi().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 da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof da&&(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 da){let o=this.shadow.camera,i=new ua(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ua(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){super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=e.shadow.normalBias??0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize??[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 Vw,CameraHelper as ma,MathUtils as Uw,Vector3 as Zd,Quaternion as jw}from"three";var Kd=new Zd,Xd=new Zd,Qd=new jw,gi=class extends cr(Bt(Vw),fn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=Uw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ma(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new gi().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(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Xd.setFromMatrixPosition(this.matrixWorld),Qd.setFromRotationMatrix(this.matrixWorld),Kd.copy(this.up).applyQuaternion(Qd).negate().multiplyScalar(this.distance),this.target.position.copy(Xd).add(Kd),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){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=e.shadow.normalBias??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),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.fromSpotLightState(e,r),this}};import{VideoTexture as kw}from"three";var em=n=>n.tagName==="VIDEO",no=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;em(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];ld(a)&&(no.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;em(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 yi=class extends Ue{constructor(e,r=new Xe){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&no.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&&no.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 kw){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 Xe;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new yi(i,s)}};var xi=class extends Ue{constructor(e,r=new ct){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 bi=class extends xi{constructor(e,r=new ct){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Hw,Mesh as qw,MeshBasicMaterial as Ww,ShapeBufferGeometry as $w,Vector2 as Jw,Vector3 as Yw}from"three";import{FontLoader as Kw}from"three/examples/jsm/loaders/FontLoader.js";var ze=class extends qw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},l=new Ww({color:0,opacity:1,visible:!0,transparent:!0,side:Hw})){let c=ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=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 Jw,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 Yw(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 Kw().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 $w(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},ze.charCache[e][o]}},ht=ze;ht.charCache={},ht.fontCache={},ht._fontPath="/_assets/_fonts/";import{DoubleSide as ga,MeshBasicMaterial as rm,Vector3 as om,Object3D as Xw}from"three";import{Vector2 as tm}from"three";var fa=new tm,kr=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){fa.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(fa),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),fa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(fa),e)}clone(){let t=new kr(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 oc=class extends Ue{constructor(e,r=new Xe({transparent:!0,opacity:1,visible:!1,side:ga})){super(e,r);this.objectType="TextFrame";this.charContainer=new Xw,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=Rs.create({parameters:{width:r.width,height:r.height}}),s=new oc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await ht.loadFont(o),r.text=e;let i=r.textOrigin,s=new rm({visible:r.visible,transparent:!0,side:ga}),a=e.split(`
943
+ `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new kr(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let d={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let g=new ht(d,m);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 ht&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,l=e.parameters?.height??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 kr(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){let r=this.userData;r.textFrame.hexColor=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.color?.isColor&&(l.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 ht.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 ht.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 ht.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:ga});r.textLinesData&&(r.textLines=r.textLinesData.map((i,s)=>{let a=new kr(Number(i.yLinePos),Number(i.lineHeight),Number(i.maxCharSize)),l=i.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[s].message[h];if("geometries"in d){let m=d.geometries[0].userData.parameters;Object.assign(c,{LOD:m.lod,char:m.char,fontFamily:m.fontFamily,fontSize:m.fontSize,letterSpacing:m.letterSpacing,originalChar:m.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new ht(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ge(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 Nr;o.name="Text Shape";let i=ht.fontCache[e];for(let s of this.charContainer.children)s instanceof ht&&i.generateShapes(s.char,1).forEach(a=>{let l=new be().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=Je.create({shape:l}),h=new Xe({side:ga});h.color=r;let p=new jr(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},so=oc;so.VerticalAlign=Ja,so.HorizontalAlign=$a,so.TextTransform=Ya;import{HemisphereLight as p1,Scene as u1,Vector3 as d1,Color as gm,Fog as m1,Box3 as f1}from"three";import{Box3 as Qw,Matrix4 as ao,Sphere as sm,Vector3 as Zw}from"three";var lm=Hm(nm());var ic;Vs.then(n=>{ic=n});var cm=new ao,e1=new ao,t1=new ao,kt=new Qw,Hr=new Zw,r1=new ao,o1=new ao,vi=class extends Ue{constructor(e,r,o,i=new ct){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ao;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ao;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Et.build(r.geometry,void 0,void 0,!r.flatShading),l=hn(r.material,o),c=new vi(i,s,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new bi(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Et.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,this.cloner)for(let a of this.cloner.children)a.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Et.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Et.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Et.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Et.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ue.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??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=e1.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=t1.copy(l).transpose();this.shearScale=r1.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=o1.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;kt.setFromBufferAttribute(r),kt.getCenter(o),e.boundingSphere.radius=o.distanceTo(kt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kt.getSize(Hr);let i={width:Hr.x,height:Hr.y,depth:Hr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;kt.min.set(e[0],e[2],e[4]),kt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(kt.min.applyMatrix4(this.shearScaleInv),kt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new sm);let o=r.boundingSphere.center;kt.getCenter(o),r.boundingSphere.radius=o.distanceTo(kt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kt.getSize(Hr);let i={width:Hr.x,height:Hr.y,depth:Hr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(ic.free_bvh(this.subdivPointer),ic.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={...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 i1,BufferGeometry as n1,DoubleSide as s1,FrontSide as a1}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=a1:t.side===1?n.side=i1:n.side=s1)}function l1(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=vi.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new n1:oa(t.geometry,e),i="materials"in t?wd(t.materials,e):hn(t.material,e);vs.is2DParametricMesh(o.userData.type)?r=new yi(o,i):o?.userData.type==="VectorGeometry"?r=new jr(o,i):t.geometry.type==="NonParametricGeometry"?r=new bi(o,i):t.geometry.type==="BooleanGeometry"?(r=new sa(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new xi(o,i),r.uuid=n,r.fromState(t)}return l1(r,t),r}function um(n,t,e){return t.type==="Mesh"?pm(n,t,e):t.type==="TextFrame"?so.createFromState(n,t,e):t.type==="Empty"?Nr.createFromState(n,t):t.type==="PointLight"?fi.createFromState(n,t,e):t.type==="SpotLight"?gi.createFromState(n,t,e):t.type==="DirectionalLight"?mi.createFromState(n,t,e):Oo.is(t.type)?wr.createFromState(n,t):(console.error(t),new Nr)}function c1(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function dm(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=>c1(n,i))):t.layers.set(0),r}function mm(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Ue)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)dm(n,r,r.material[o])&&(e=!0);else dm(n,r,r.material)&&(e=!0)}),e}function fm(n,t){"material"in n&&h1(n.material,t),"geometry"in n&&n.geometry.dispose()}function h1(n,t){hc(n).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var ym=new d1,nc=class extends ra(u1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new m1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new gm(1,0,0);this.bgColor=new gm(1,1,1);this.entityByUuid={};this.ambientLight=new p1(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(Ge(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 wr&&this.switchActiveCamera(o)}this.traverse(o=>{ir(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{fm(r,e)});for(let r of this.children)Dt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=wr.createFromState(nc.PERSONAL_CAMERA_ID,{...ws.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)Dt(s)&&!s.raycastLock&&s.visible&&((or(s)||vr(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)Dt(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=Ge(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){Cd(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ge(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=um(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),ir(i)&&or(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 f1;return o.setFromPoints(r),o.getCenter(ym),ym}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Ue)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})})}},gn=nc;gn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as g1}from"three/examples/jsm/loaders/DRACOLoader.js";var qr;function y1(){return qr||(qr=new g1,qr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qr.decoderPending}async function x1(n){if(qr){let t={attributeIDs:qr.defaultAttributeIDs,attributeTypes:qr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await qr.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]=Oa(fs.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 y1();for(let o of r){let i=await x1(Da(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}var sc=new Map,yn={url:"head",time:0,data:null,next:null,prev:null},Si={url:"tail",time:1/0,data:null,next:null,prev:null};yn.next=Si;Si.prev=yn;var bm=0;function ni(n){if(typeof n=="string")return n;let t=Date.now(),e=sc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},sc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Si.prev,e.next=Si,Si.prev.next=e,Si.prev=e,t-bm>1e3*10&&(bm=t+1e3,setTimeout(()=>{let r=Date.now(),o=yn.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),sc.delete(o.data),o=o.next,o.prev=yn,yn.next=o},900)),e.url}import{WebGLRenderTarget as b1,LinearMipmapLinearFilter as v1,LinearFilter as S1,ClampToEdgeWrapping as vm,DepthTexture as w1}from"three";var Sm=new Xe,xa=class extends ft{},ba=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new b1(2048,2048,{generateMipmaps:!0,minFilter:v1,magFilter:S1,wrapS:vm,wrapT:vm}),this.transmissionRenderTarget.depthTexture=new w1(2048,2048),this.penumbraSizeNode=new Ke(5,t.penumbraSize),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,Ul(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===Sm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??Sm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=ni(e),!0;{let r=new Image;return r.src=ni(e),r.onload=()=>{this.onImageLoad&&this.onImageLoad()},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 xa(e.r,e.g,e.b,e.a):this.colors[t]=new xa(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as yH}from"three";import{mergeBufferGeometries as vH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function wm(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 Nm,ShaderLib as N1}from"three";function Lm(n){let t=new Set;return n.traverse(e=>{if(or(e))if(Ve(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);L1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Nm,specularColor:new Nm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(N1.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)})}):C1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function L1(n){return n.userData.layers.getLayersOfType("transmission").length>0}function C1(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 T1}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Mm(n){let t=[];return n.traverse(e=>{e instanceof io&&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&&wm(l),l}),s=T1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.material=o[0].material,r.remove(e)}),n}function Pm(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}var Im="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",ac=class extends P1{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(Im+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Im),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 gn(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&&Ld(s)&&Object.assign(s,{makeDefault:!0})}return o=Mm(o),o=Lm(o),o=Cm(o),o=Tm(o),o=Pm(o),o}};export{ac as default};