@splinetool/loader 0.9.75 → 0.9.78

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,132 +1,4 @@
1
- var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDescriptor;var Af=Object.getOwnPropertyNames;var Pf=Object.getPrototypeOf,Mf=Object.prototype.hasOwnProperty;var Of=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),pc=(i,t)=>{for(var e in t)ki(i,e,{get:t[e],enumerable:!0})},mc=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Af(t))!Mf.call(i,o)&&o!==e&&ki(i,o,{get:()=>t[o],enumerable:!(r=If(t,o))||r.enumerable});return i};var _f=(i,t,e)=>(e=i!=null?Lf(Pf(i)):{},mc(t||!i||!i.__esModule?ki(e,"default",{value:i,enumerable:!0}):e,i)),Df=i=>mc(ki({},"__esModule",{value:!0}),i);var tf=Of((Pa,ef)=>{(function(i,t){typeof Pa=="object"&&typeof ef<"u"?t(Pa):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Pa,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,u,m,p,d,f,g,x,y,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],B=[],w=e==="f"?A:v,h=g=p=0;h<A;h++)b[h]=new Array(w).fill(0);for(h=0;h<v;h++)B[h]=new Array(v).fill(0);var _,N=new Array(v).fill(0);for(h=0;h<A;h++)for(s=0;s<v;s++)b[h][s]=t[h][s];for(h=0;h<v;h++){for(S[h]=p,f=0,l=h+1,s=h;s<A;s++)f+=Math.pow(b[s][h],2);if(f<n)p=0;else for(d=(m=b[h][h])*(p=m<0?Math.sqrt(f):-Math.sqrt(f))-f,b[h][h]=m-p,s=l;s<v;s++){for(f=0,a=h;a<A;a++)f+=b[a][h]*b[a][s];for(m=f/d,a=h;a<A;a++)b[a][s]=b[a][s]+m*b[a][h]}for(N[h]=p,f=0,s=l;s<v;s++)f+=Math.pow(b[h][s],2);if(f<n)p=0;else{for(d=(m=b[h][h+1])*(p=m<0?Math.sqrt(f):-Math.sqrt(f))-f,b[h][h+1]=m-p,s=l;s<v;s++)S[s]=b[h][s]/d;for(s=l;s<A;s++){for(f=0,a=l;a<v;a++)f+=b[s][a]*b[h][a];for(a=l;a<v;a++)b[s][a]=b[s][a]+f*S[a]}}g<(x=Math.abs(N[h])+Math.abs(S[h]))&&(g=x)}if(r)for(h=v-1;0<=h;h--){if(p!==0){for(d=b[h][h+1]*p,s=l;s<v;s++)B[s][h]=b[h][s]/d;for(s=l;s<v;s++){for(f=0,a=l;a<v;a++)f+=b[h][a]*B[a][s];for(a=l;a<v;a++)B[a][s]=B[a][s]+f*B[a][h]}}for(s=l;s<v;s++)B[h][s]=0,B[s][h]=0;B[h][h]=1,p=S[h],l=h}if(e){if(e==="f")for(h=v;h<A;h++){for(s=v;s<A;s++)b[h][s]=0;b[h][h]=1}for(h=v-1;0<=h;h--){for(l=h+1,p=N[h],s=l;s<w;s++)b[h][s]=0;if(p!==0){for(d=b[h][h]*p,s=l;s<w;s++){for(f=0,a=l;a<A;a++)f+=b[a][h]*b[a][s];for(m=f/d,a=h;a<A;a++)b[a][s]=b[a][s]+m*b[a][h]}for(s=h;s<A;s++)b[s][h]=b[s][h]/p}else for(s=h;s<A;s++)b[s][h]=0;b[h][h]=b[h][h]+1}}for(o*=g,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(_=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){_=!0;break}if(Math.abs(N[l-1])<=o)break}if(!_){for(u=0,c=l-(f=1),h=l;h<a+1&&(m=f*S[h],S[h]=u*S[h],!(Math.abs(m)<=o));h++)if(p=N[h],N[h]=Math.sqrt(m*m+p*p),u=p/(d=N[h]),f=-m/d,e)for(s=0;s<A;s++)x=b[s][c],y=b[s][h],b[s][c]=x*u+y*f,b[s][h]=-x*f+y*u}if(y=N[a],l===a){if(y<0&&(N[a]=-y,r))for(s=0;s<v;s++)B[s][a]=-B[s][a];break}for(g=N[l],m=(((x=N[a-1])-y)*(x+y)+((p=S[a-1])-(d=S[a]))*(p+d))/(2*d*x),p=Math.sqrt(m*m+1),m=((g-y)*(g+y)+d*(x/(m<0?m-p:m+p)-d))/g,h=l+(f=u=1);h<a+1;h++){if(p=S[h],x=N[h],d=f*p,p*=u,y=Math.sqrt(m*m+d*d),m=g*(u=m/(S[h-1]=y))+p*(f=d/y),p=-g*f+p*u,d=x*f,x*=u,r)for(s=0;s<v;s++)g=B[s][h-1],y=B[s][h],B[s][h-1]=g*u+y*f,B[s][h]=-g*f+y*u;if(y=Math.sqrt(m*m+d*d),m=(u=m/(N[h-1]=y))*p+(f=d/y)*x,g=-f*p+u*x,e)for(s=0;s<A;s++)x=b[s][h-1],y=b[s][h],b[s][h-1]=x*u+y*f,b[s][h]=-x*f+y*u}S[l]=0,S[a]=m,N[a]=g}for(h=0;h<v;h++)N[h]<o&&(N[h]=0);return{u:b,q:N,v:B}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var Jb={};pc(Jb,{default:()=>Ma});module.exports=Df(Jb);var Oa=require("three");function Da(i,t){return Object.setPrototypeOf(i,t),i}function dc(i){return Array.isArray(i)?i:[i]}var Bf=typeof global=="object"&&global&&global.Object===Object&&global,Hi=Bf;var Ef=typeof self=="object"&&self&&self.Object===Object&&self,Gf=Hi||Ef||Function("return this")(),$e=Gf;var Rf=$e.Symbol,xt=Rf;var fc=Object.prototype,Vf=fc.hasOwnProperty,zf=fc.toString,Vn=xt?xt.toStringTag:void 0;function Ff(i){var t=Vf.call(i,Vn),e=i[Vn];try{i[Vn]=void 0;var r=!0}catch{}var o=zf.call(i);return r&&(t?i[Vn]=e:delete i[Vn]),o}var hc=Ff;var Uf=Object.prototype,jf=Uf.toString;function kf(i){return jf.call(i)}var gc=kf;var Hf="[object Null]",Wf="[object Undefined]",yc=xt?xt.toStringTag:void 0;function qf(i){return i==null?i===void 0?Wf:Hf:yc&&yc in Object(i)?hc(i):gc(i)}var Bt=qf;function $f(i){return i!=null&&typeof i=="object"}var dt=$f;var Xf="[object Symbol]";function Yf(i){return typeof i=="symbol"||dt(i)&&Bt(i)==Xf}var _o=Yf;function Kf(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 Wi=Kf;var Qf=Array.isArray,Xe=Qf;var Jf=1/0,xc=xt?xt.prototype:void 0,vc=xc?xc.toString:void 0;function bc(i){if(typeof i=="string")return i;if(Xe(i))return Wi(i,bc)+"";if(_o(i))return vc?vc.call(i):"";var t=i+"";return t=="0"&&1/i==-Jf?"-0":t}var Sc=bc;function Zf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ft=Zf;function eh(i){return i}var qi=eh;var th="[object AsyncFunction]",rh="[object Function]",oh="[object GeneratorFunction]",nh="[object Proxy]";function ih(i){if(!ft(i))return!1;var t=Bt(i);return t==rh||t==oh||t==th||t==nh}var Do=ih;var sh=$e["__core-js_shared__"],$i=sh;var wc=function(){var i=/[^.]+$/.exec($i&&$i.keys&&$i.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function ah(i){return!!wc&&wc in i}var Tc=ah;var lh=Function.prototype,ch=lh.toString;function uh(i){if(i!=null){try{return ch.call(i)}catch{}try{return i+""}catch{}}return""}var Ar=uh;var ph=/[\\^$.*+?()[\]{}|]/g,mh=/^\[object .+?Constructor\]$/,dh=Function.prototype,fh=Object.prototype,hh=dh.toString,gh=fh.hasOwnProperty,yh=RegExp("^"+hh.call(gh).replace(ph,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function xh(i){if(!ft(i)||Tc(i))return!1;var t=Do(i)?yh:mh;return t.test(Ar(i))}var Nc=xh;function vh(i,t){return i?.[t]}var Cc=vh;function bh(i,t){var e=Cc(i,t);return Nc(e)?e:void 0}var Ct=bh;var Sh=Ct($e,"WeakMap"),Xi=Sh;var Lc=Object.create,wh=function(){function i(){}return function(t){if(!ft(t))return{};if(Lc)return Lc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Ic=wh;function Th(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 Ac=Th;function Nh(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Yi=Nh;var Ch=800,Lh=16,Ih=Date.now;function Ah(i){var t=0,e=0;return function(){var r=Ih(),o=Lh-(r-e);if(e=r,o>0){if(++t>=Ch)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Pc=Ah;function Ph(i){return function(){return i}}var Mc=Ph;var Mh=function(){try{var i=Ct(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Bo=Mh;var Oh=Bo?function(i,t){return Bo(i,"toString",{configurable:!0,enumerable:!1,value:Mc(t),writable:!0})}:qi,Oc=Oh;var _h=Pc(Oc),Ki=_h;function Dh(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var _c=Dh;var Bh=9007199254740991,Eh=/^(?:0|[1-9]\d*)$/;function Gh(i,t){var e=typeof i;return t=t??Bh,!!t&&(e=="number"||e!="symbol"&&Eh.test(i))&&i>-1&&i%1==0&&i<t}var Qi=Gh;function Rh(i,t,e){t=="__proto__"&&Bo?Bo(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Eo=Rh;function Vh(i,t){return i===t||i!==i&&t!==t}var zr=Vh;var zh=Object.prototype,Fh=zh.hasOwnProperty;function Uh(i,t,e){var r=i[t];(!(Fh.call(i,t)&&zr(r,e))||e===void 0&&!(t in i))&&Eo(i,t,e)}var Ji=Uh;function jh(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?Eo(e,a,l):Ji(e,a,l)}return e}var Ft=jh;var Dc=Math.max;function kh(i,t,e){return t=Dc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Dc(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),Ac(i,this,a)}}var Zi=kh;function Hh(i,t){return Ki(Zi(i,t,qi),i+"")}var Bc=Hh;var Wh=9007199254740991;function qh(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=Wh}var es=qh;function $h(i){return i!=null&&es(i.length)&&!Do(i)}var Fr=$h;function Xh(i,t,e){if(!ft(e))return!1;var r=typeof t;return(r=="number"?Fr(e)&&Qi(t,e.length):r=="string"&&t in e)?zr(e[t],i):!1}var Ec=Xh;function Yh(i){return Bc(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&&Ec(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 Gc=Yh;var Kh=Object.prototype;function Qh(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||Kh;return i===e}var Go=Qh;function Jh(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Rc=Jh;var Zh="[object Arguments]";function eg(i){return dt(i)&&Bt(i)==Zh}var Ba=eg;var Vc=Object.prototype,tg=Vc.hasOwnProperty,rg=Vc.propertyIsEnumerable,og=Ba(function(){return arguments}())?Ba:function(i){return dt(i)&&tg.call(i,"callee")&&!rg.call(i,"callee")},lo=og;function ng(){return!1}var zc=ng;var jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fc=jc&&typeof module=="object"&&module&&!module.nodeType&&module,ig=Fc&&Fc.exports===jc,Uc=ig?$e.Buffer:void 0,sg=Uc?Uc.isBuffer:void 0,ag=sg||zc,Ro=ag;var lg="[object Arguments]",cg="[object Array]",ug="[object Boolean]",pg="[object Date]",mg="[object Error]",dg="[object Function]",fg="[object Map]",hg="[object Number]",gg="[object Object]",yg="[object RegExp]",xg="[object Set]",vg="[object String]",bg="[object WeakMap]",Sg="[object ArrayBuffer]",wg="[object DataView]",Tg="[object Float32Array]",Ng="[object Float64Array]",Cg="[object Int8Array]",Lg="[object Int16Array]",Ig="[object Int32Array]",Ag="[object Uint8Array]",Pg="[object Uint8ClampedArray]",Mg="[object Uint16Array]",Og="[object Uint32Array]",_e={};_e[Tg]=_e[Ng]=_e[Cg]=_e[Lg]=_e[Ig]=_e[Ag]=_e[Pg]=_e[Mg]=_e[Og]=!0;_e[lg]=_e[cg]=_e[Sg]=_e[ug]=_e[wg]=_e[pg]=_e[mg]=_e[dg]=_e[fg]=_e[hg]=_e[gg]=_e[yg]=_e[xg]=_e[vg]=_e[bg]=!1;function _g(i){return dt(i)&&es(i.length)&&!!_e[Bt(i)]}var kc=_g;function Dg(i){return function(t){return i(t)}}var Vo=Dg;var Hc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zn=Hc&&typeof module=="object"&&module&&!module.nodeType&&module,Bg=zn&&zn.exports===Hc,Ea=Bg&&Hi.process,Eg=function(){try{var i=zn&&zn.require&&zn.require("util").types;return i||Ea&&Ea.binding&&Ea.binding("util")}catch{}}(),Pr=Eg;var Wc=Pr&&Pr.isTypedArray,Gg=Wc?Vo(Wc):kc,ts=Gg;var Rg=Object.prototype,Vg=Rg.hasOwnProperty;function zg(i,t){var e=Xe(i),r=!e&&lo(i),o=!e&&!r&&Ro(i),n=!e&&!r&&!o&&ts(i),s=e||r||o||n,a=s?Rc(i.length,String):[],l=a.length;for(var c in i)(t||Vg.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Qi(c,l)))&&a.push(c);return a}var rs=zg;function Fg(i,t){return function(e){return i(t(e))}}var os=Fg;var Ug=os(Object.keys,Object),qc=Ug;var jg=Object.prototype,kg=jg.hasOwnProperty;function Hg(i){if(!Go(i))return qc(i);var t=[];for(var e in Object(i))kg.call(i,e)&&e!="constructor"&&t.push(e);return t}var $c=Hg;function Wg(i){return Fr(i)?rs(i):$c(i)}var zo=Wg;function qg(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var Xc=qg;var $g=Object.prototype,Xg=$g.hasOwnProperty;function Yg(i){if(!ft(i))return Xc(i);var t=Go(i),e=[];for(var r in i)r=="constructor"&&(t||!Xg.call(i,r))||e.push(r);return e}var Yc=Yg;function Kg(i){return Fr(i)?rs(i,!0):Yc(i)}var ir=Kg;var Qg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Jg=/^\w*$/;function Zg(i,t){if(Xe(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||_o(i)?!0:Jg.test(i)||!Qg.test(i)||t!=null&&i in Object(t)}var Kc=Zg;var ey=Ct(Object,"create"),Mr=ey;function ty(){this.__data__=Mr?Mr(null):{},this.size=0}var Qc=ty;function ry(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var Jc=ry;var oy="__lodash_hash_undefined__",ny=Object.prototype,iy=ny.hasOwnProperty;function sy(i){var t=this.__data__;if(Mr){var e=t[i];return e===oy?void 0:e}return iy.call(t,i)?t[i]:void 0}var Zc=sy;var ay=Object.prototype,ly=ay.hasOwnProperty;function cy(i){var t=this.__data__;return Mr?t[i]!==void 0:ly.call(t,i)}var eu=cy;var uy="__lodash_hash_undefined__";function py(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mr&&t===void 0?uy:t,this}var tu=py;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=Qc;Fo.prototype.delete=Jc;Fo.prototype.get=Zc;Fo.prototype.has=eu;Fo.prototype.set=tu;var Ga=Fo;function my(){this.__data__=[],this.size=0}var ru=my;function dy(i,t){for(var e=i.length;e--;)if(zr(i[e][0],t))return e;return-1}var Ur=dy;var fy=Array.prototype,hy=fy.splice;function gy(i){var t=this.__data__,e=Ur(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():hy.call(t,e,1),--this.size,!0}var ou=gy;function yy(i){var t=this.__data__,e=Ur(t,i);return e<0?void 0:t[e][1]}var nu=yy;function xy(i){return Ur(this.__data__,i)>-1}var iu=xy;function vy(i,t){var e=this.__data__,r=Ur(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var su=vy;function Uo(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])}}Uo.prototype.clear=ru;Uo.prototype.delete=ou;Uo.prototype.get=nu;Uo.prototype.has=iu;Uo.prototype.set=su;var jr=Uo;var by=Ct($e,"Map"),kr=by;function Sy(){this.size=0,this.__data__={hash:new Ga,map:new(kr||jr),string:new Ga}}var au=Sy;function wy(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var lu=wy;function Ty(i,t){var e=i.__data__;return lu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Hr=Ty;function Ny(i){var t=Hr(this,i).delete(i);return this.size-=t?1:0,t}var cu=Ny;function Cy(i){return Hr(this,i).get(i)}var uu=Cy;function Ly(i){return Hr(this,i).has(i)}var pu=Ly;function Iy(i,t){var e=Hr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var mu=Iy;function jo(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])}}jo.prototype.clear=au;jo.prototype.delete=cu;jo.prototype.get=uu;jo.prototype.has=pu;jo.prototype.set=mu;var Fn=jo;var Ay="Expected a function";function Ra(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Ay);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(Ra.Cache||Fn),e}Ra.Cache=Fn;var du=Ra;var Py=500;function My(i){var t=du(i,function(r){return e.size===Py&&e.clear(),r}),e=t.cache;return t}var fu=My;var Oy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_y=/\\(\\)?/g,Dy=fu(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Oy,function(e,r,o,n){t.push(o?n.replace(_y,"$1"):r||e)}),t}),hu=Dy;function By(i){return i==null?"":Sc(i)}var gu=By;function Ey(i,t){return Xe(i)?i:Kc(i,t)?[i]:hu(gu(i))}var ko=Ey;var Gy=1/0;function Ry(i){if(typeof i=="string"||_o(i))return i;var t=i+"";return t=="0"&&1/i==-Gy?"-0":t}var ns=Ry;function Vy(i,t){t=ko(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[ns(t[e++])];return e&&e==r?i:void 0}var yu=Vy;function zy(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Ho=zy;var xu=xt?xt.isConcatSpreadable:void 0;function Fy(i){return Xe(i)||lo(i)||!!(xu&&i&&i[xu])}var vu=Fy;function bu(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=vu),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?bu(a,t-1,e,r,o):Ho(o,a):r||(o[o.length]=a)}return o}var Su=bu;function Uy(i){var t=i==null?0:i.length;return t?Su(i,1):[]}var wu=Uy;function jy(i){return Ki(Zi(i,void 0,wu),i+"")}var Tu=jy;var ky=os(Object.getPrototypeOf,Object),Wo=ky;var Hy="[object Object]",Wy=Function.prototype,qy=Object.prototype,Nu=Wy.toString,$y=qy.hasOwnProperty,Xy=Nu.call(Object);function Yy(i){if(!dt(i)||Bt(i)!=Hy)return!1;var t=Wo(i);if(t===null)return!0;var e=$y.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Nu.call(e)==Xy}var is=Yy;function Ky(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 Cu=Ky;function Qy(){this.__data__=new jr,this.size=0}var Lu=Qy;function Jy(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Iu=Jy;function Zy(i){return this.__data__.get(i)}var Au=Zy;function ex(i){return this.__data__.has(i)}var Pu=ex;var tx=200;function rx(i,t){var e=this.__data__;if(e instanceof jr){var r=e.__data__;if(!kr||r.length<tx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Fn(r)}return e.set(i,t),this.size=e.size,this}var Mu=rx;function qo(i){var t=this.__data__=new jr(i);this.size=t.size}qo.prototype.clear=Lu;qo.prototype.delete=Iu;qo.prototype.get=Au;qo.prototype.has=Pu;qo.prototype.set=Mu;var ss=qo;function ox(i,t){return i&&Ft(t,zo(t),i)}var Ou=ox;function nx(i,t){return i&&Ft(t,ir(t),i)}var _u=nx;var Gu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Du=Gu&&typeof module=="object"&&module&&!module.nodeType&&module,ix=Du&&Du.exports===Gu,Bu=ix?$e.Buffer:void 0,Eu=Bu?Bu.allocUnsafe:void 0;function sx(i,t){if(t)return i.slice();var e=i.length,r=Eu?Eu(e):new i.constructor(e);return i.copy(r),r}var as=sx;function ax(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 Ru=ax;function lx(){return[]}var ls=lx;var cx=Object.prototype,ux=cx.propertyIsEnumerable,Vu=Object.getOwnPropertySymbols,px=Vu?function(i){return i==null?[]:(i=Object(i),Ru(Vu(i),function(t){return ux.call(i,t)}))}:ls,$o=px;function mx(i,t){return Ft(i,$o(i),t)}var zu=mx;var dx=Object.getOwnPropertySymbols,fx=dx?function(i){for(var t=[];i;)Ho(t,$o(i)),i=Wo(i);return t}:ls,cs=fx;function hx(i,t){return Ft(i,cs(i),t)}var Fu=hx;function gx(i,t,e){var r=t(i);return Xe(i)?r:Ho(r,e(i))}var us=gx;function yx(i){return us(i,zo,$o)}var Uu=yx;function xx(i){return us(i,ir,cs)}var ps=xx;var vx=Ct($e,"DataView"),ms=vx;var bx=Ct($e,"Promise"),ds=bx;var Sx=Ct($e,"Set"),fs=Sx;var ju="[object Map]",wx="[object Object]",ku="[object Promise]",Hu="[object Set]",Wu="[object WeakMap]",qu="[object DataView]",Tx=Ar(ms),Nx=Ar(kr),Cx=Ar(ds),Lx=Ar(fs),Ix=Ar(Xi),co=Bt;(ms&&co(new ms(new ArrayBuffer(1)))!=qu||kr&&co(new kr)!=ju||ds&&co(ds.resolve())!=ku||fs&&co(new fs)!=Hu||Xi&&co(new Xi)!=Wu)&&(co=function(i){var t=Bt(i),e=t==wx?i.constructor:void 0,r=e?Ar(e):"";if(r)switch(r){case Tx:return qu;case Nx:return ju;case Cx:return ku;case Lx:return Hu;case Ix:return Wu}return t});var Xo=co;var Ax=Object.prototype,Px=Ax.hasOwnProperty;function Mx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Px.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var $u=Mx;var Ox=$e.Uint8Array,Va=Ox;function _x(i){var t=new i.constructor(i.byteLength);return new Va(t).set(new Va(i)),t}var Yo=_x;function Dx(i,t){var e=t?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var Xu=Dx;var Bx=/\w*$/;function Ex(i){var t=new i.constructor(i.source,Bx.exec(i));return t.lastIndex=i.lastIndex,t}var Yu=Ex;var Ku=xt?xt.prototype:void 0,Qu=Ku?Ku.valueOf:void 0;function Gx(i){return Qu?Object(Qu.call(i)):{}}var Ju=Gx;function Rx(i,t){var e=t?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var hs=Rx;var Vx="[object Boolean]",zx="[object Date]",Fx="[object Map]",Ux="[object Number]",jx="[object RegExp]",kx="[object Set]",Hx="[object String]",Wx="[object Symbol]",qx="[object ArrayBuffer]",$x="[object DataView]",Xx="[object Float32Array]",Yx="[object Float64Array]",Kx="[object Int8Array]",Qx="[object Int16Array]",Jx="[object Int32Array]",Zx="[object Uint8Array]",e0="[object Uint8ClampedArray]",t0="[object Uint16Array]",r0="[object Uint32Array]";function o0(i,t,e){var r=i.constructor;switch(t){case qx:return Yo(i);case Vx:case zx:return new r(+i);case $x:return Xu(i,e);case Xx:case Yx:case Kx:case Qx:case Jx:case Zx:case e0:case t0:case r0:return hs(i,e);case Fx:return new r;case Ux:case Hx:return new r(i);case jx:return Yu(i);case kx:return new r;case Wx:return Ju(i)}}var Zu=o0;function n0(i){return typeof i.constructor=="function"&&!Go(i)?Ic(Wo(i)):{}}var gs=n0;var i0="[object Map]";function s0(i){return dt(i)&&Xo(i)==i0}var ep=s0;var tp=Pr&&Pr.isMap,a0=tp?Vo(tp):ep,rp=a0;var l0="[object Set]";function c0(i){return dt(i)&&Xo(i)==l0}var op=c0;var np=Pr&&Pr.isSet,u0=np?Vo(np):op,ip=u0;var p0=1,m0=2,d0=4,sp="[object Arguments]",f0="[object Array]",h0="[object Boolean]",g0="[object Date]",y0="[object Error]",ap="[object Function]",x0="[object GeneratorFunction]",v0="[object Map]",b0="[object Number]",lp="[object Object]",S0="[object RegExp]",w0="[object Set]",T0="[object String]",N0="[object Symbol]",C0="[object WeakMap]",L0="[object ArrayBuffer]",I0="[object DataView]",A0="[object Float32Array]",P0="[object Float64Array]",M0="[object Int8Array]",O0="[object Int16Array]",_0="[object Int32Array]",D0="[object Uint8Array]",B0="[object Uint8ClampedArray]",E0="[object Uint16Array]",G0="[object Uint32Array]",Oe={};Oe[sp]=Oe[f0]=Oe[L0]=Oe[I0]=Oe[h0]=Oe[g0]=Oe[A0]=Oe[P0]=Oe[M0]=Oe[O0]=Oe[_0]=Oe[v0]=Oe[b0]=Oe[lp]=Oe[S0]=Oe[w0]=Oe[T0]=Oe[N0]=Oe[D0]=Oe[B0]=Oe[E0]=Oe[G0]=!0;Oe[y0]=Oe[ap]=Oe[C0]=!1;function ys(i,t,e,r,o,n){var s,a=t&p0,l=t&m0,c=t&d0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!ft(i))return i;var u=Xe(i);if(u){if(s=$u(i),!a)return Yi(i,s)}else{var m=Xo(i),p=m==ap||m==x0;if(Ro(i))return as(i,a);if(m==lp||m==sp||p&&!o){if(s=l||p?{}:gs(i),!a)return l?Fu(i,_u(s,i)):zu(i,Ou(s,i))}else{if(!Oe[m])return o?i:{};s=Zu(i,m,a)}}n||(n=new ss);var d=n.get(i);if(d)return d;n.set(i,s),ip(i)?i.forEach(function(x){s.add(ys(x,t,e,x,i,n))}):rp(i)&&i.forEach(function(x,y){s.set(y,ys(x,t,e,y,i,n))});var f=c?l?ps:Uu:l?ir:zo,g=u?void 0:f(i);return _c(g||i,function(x,y){g&&(y=x,x=i[y]),Ji(s,y,ys(x,t,e,y,i,n))}),s}var xs=ys;var R0=1,V0=4;function z0(i){return xs(i,R0|V0)}var Un=z0;function F0(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 cp=F0;var U0=cp(),up=U0;function j0(i,t,e){(e!==void 0&&!zr(i[t],e)||e===void 0&&!(t in i))&&Eo(i,t,e)}var jn=j0;function k0(i){return dt(i)&&Fr(i)}var pp=k0;function H0(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var kn=H0;function W0(i){return Ft(i,ir(i))}var mp=W0;function q0(i,t,e,r,o,n,s){var a=kn(i,e),l=kn(t,e),c=s.get(l);if(c){jn(i,e,c);return}var u=n?n(a,l,e+"",i,t,s):void 0,m=u===void 0;if(m){var p=Xe(l),d=!p&&Ro(l),f=!p&&!d&&ts(l);u=l,p||d||f?Xe(a)?u=a:pp(a)?u=Yi(a):d?(m=!1,u=as(l,!0)):f?(m=!1,u=hs(l,!0)):u=[]:is(l)||lo(l)?(u=a,lo(a)?u=mp(a):(!ft(a)||Do(a))&&(u=gs(l))):m=!1}m&&(s.set(l,u),o(u,l,r,n,s),s.delete(l)),jn(i,e,u)}var dp=q0;function fp(i,t,e,r,o){i!==t&&up(t,function(n,s){if(o||(o=new ss),ft(n))dp(i,t,s,e,fp,r,o);else{var a=r?r(kn(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),jn(i,s,a)}},ir)}var hp=fp;function $0(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var gp=$0;function X0(i,t){return t.length<2?i:yu(i,Cu(t,0,-1))}var yp=X0;var Y0=Gc(function(i,t,e){hp(i,t,e)}),uo=Y0;function K0(i,t){return t=ko(t,i),i=yp(i,t),i==null||delete i[ns(gp(t))]}var xp=K0;function Q0(i){return is(i)?void 0:i}var vp=Q0;var J0=1,Z0=2,ev=4,tv=Tu(function(i,t){var e={};if(i==null)return e;var r=!1;t=Wi(t,function(n){return n=ko(n,i),r||(r=n.length>1),n}),Ft(i,ps(i),e),r&&(e=xs(e,J0|Z0|ev,vp));for(var o=t.length;o--;)xp(e,t[o]);return e}),Ko=tv;var Qo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Qo||(Qo={}));var po;(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})(po||(po={}));var bp;(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})(bp||(bp={}));var Jo;(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})(Jo||(Jo={}));var Sp;(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})(Sp||(Sp={}));var Wr;(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??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 u=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])/u,a[l+1]=(n[1]*s[l]+n[5]*s[l+1]+n[9]*s[l+2]+n[13])/u,a[l+2]=(n[2]*s[l]+n[6]*s[l+1]+n[10]*s[l+2]+n[14])/u}return a}o.applyMatrix4=r})(Wr||(Wr={}));var Et;(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,u){return c.r===u.r&&c.g===u.g&&c.b===u.b}l.equals=s;function a(c,u,m){return{r:c.r+(u.r-c.r)*m,g:c.g+(u.g-c.g)*m,b:c.b+(u.b-c.b)*m}}l.lerp=a})(Et||(Et={}));var Gt;(s=>{s.white={...Et.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{...Et.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 Et.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})(Gt||(Gt={}));var vs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(vs||(vs={}));var wp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(wp||(wp={}));var Tp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Tp||(Tp={}));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 Je=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,Je.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a={...e,[n]:s};return Object.setPrototypeOf(a,Je.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={...e};return Object.setPrototypeOf(n,Je.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Hn(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"&&Hn(r)}return Object.freeze(i)}function Np(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 Ss=class extends Error{};function sr(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 ws(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 Cp(){return typeof process<"u"}function Lp(i,t){for(let e of i)t(e.id,e.data),Lp(e.children,t)}function Ip(i,t){t(i.id,i.data);for(let e of i.children)Ip(e,t)}var Ut=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ut.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hn(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&&Ip(o,r)}}traverse(e){Lp(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(u=>u.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...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(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:a}}Object.setPrototypeOf(n,Ut.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),u={fi:o,id:n,data:s,children:a};return c=[...c,u],c.sort((p,d)=>p.fi-d.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),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:{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 d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===n)throw new Ss("cyclic tree");d=this.parent(d)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===n);l=[...l];let u=l.splice(c,1)[0],m=this.modifyArrayBy(s,l);s=r,l=m.childrenArray(s);let p=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((d,f)=>d.fi-f.fi),e.localIndex=l.indexOf(u),m=m.modifyArrayBy(s,l),{data:m,actual:e,reverse:{type:9,parent:a,fi:p,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({...o,...n})}r.sort((o,n)=>Np(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{...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 sr(0,o,o);{let s=n[0].fi;return sr(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 sr(l,l+o,o)}else return sr(s.fi,a.fi,o)}}};var Ts;(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={...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})(Ts||(Ts={}));var Ee=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ee.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,s=n.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ee.prototype);let r=e;return Cp()||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,u)=>c.fi-u.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:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(u=>u.id===o);if(s===-1)return null;let a=n[s].fi,l={...n[s],fi:r};return n[s]=l,n.sort((u,m)=>u.fi-m.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 sr(0,r,r);{let n=o[0].fi;return sr(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 sr(a,a+r,r)}else return sr(n.fi,s.fi,r)}}};var Ap=Symbol(),Cs=Symbol(),Zo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Ns);){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[Cs];r&&r(),delete this._children[t]}}}},Fa=class extends Zo{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,Ts.runOp(this._current,t))}},Ua=class extends Zo{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,Je.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Pp={get(i,t){if(t===Cs)return()=>{i._parent=null};if(t===Ap)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=Ls(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]}}},rv={...Pp,set(i,t,e){let r={type:0,props:{[t]:Ha(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},ov={...Pp,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}},en=class extends Zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Cs]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=Ls(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)}},tn=class extends Zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Cs]=()=>{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 n=e.get(t)?.data,s=Ls(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 za(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Is.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Ns=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){za(this.ts,e,t),za(this.actual,r,t),za(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Ls(i,t,e){return e instanceof Ut?new en(i,t,e):e instanceof Ee?new tn(i,t,e):e instanceof Je?new Proxy(new Ua(i,t,e),ov):e!==null&&typeof e=="object"?ws(e)?e:new Proxy(new Fa(i,t,e),rv):e}function ja(i){let t=new Ns(i);return[Ls(t,"",i),t]}function ka(i,t){let[e,r]=ja(i);return t(e),r.result()}function Ha(i){return i instanceof en||i instanceof tn?i._current:i!==null&&typeof i=="object"?i[Ap]:i}var Is;(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={...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 Ut||o instanceof en)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Ee||o instanceof tn)&&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})(Is||(Is={}));var As=class{},Wn=class extends As{constructor(e){super();this.id=e}},qn=class extends As{constructor(e){super();this.data=e}};var qa;try{qa=new TextDecoder}catch{}var te,$r,T=0;var Rp=[],$a=Rp,Xa=0,Lt={},Te,qr,jt=0,ar=0,Rt,Or,vt=[],Ae,Mp={useRecords:!1,mapsAsObjects:!0},$n=class{},Ka=new $n;Ka.name="MessagePack 0xC1";var rn=!1,lr=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(te)return jp(()=>(Ms(),this?this.unpack(t,e):lr.prototype.unpack.call(Mp,t,e)));$r=e>-1?e:t.length,T=0,Xa=0,ar=0,qr=null,$a=Rp,Rt=null,te=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=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 lr){if(Lt=this,this.structures)return Te=this.structures,Ps();(!Te||Te.length>0)&&(Te=[])}else Lt=Mp,(!Te||Te.length>0)&&(Te=[]);return Ps()}unpackMultiple(t,e){let r,o=0;try{rn=!0;let n=t.length,s=this?this.unpack(t,n):Ds.unpack(t,n);if(e){for(e(s);T<n;)if(o=T,e(Ps())===!1)return}else{for(r=[s];T<n;)o=T,r.push(Ps());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{rn=!1,Ms()}}_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 Ps(){try{if(!Lt.trusted&&!rn){let t=Te.sharedLength||0;t<Te.length&&(Te.length=t)}let i=Ve();if(T==$r)Te.restoreStructures&&Op(),Te=null,te=null,Or&&(Or=null);else if(T>$r){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!rn)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Te.restoreStructures&&Op(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Op(){for(let i in Te.restoreStructures)Te[i]=Te.restoreStructures[i];Te.restoreStructures=null}function Ve(){let i=te[T++];if(i<160)if(i<128){if(i<64)return i;{let t=Te[i&63]||Lt.getStructures&&Vp()[i&63];return t?(t.read||(t.read=Qa(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Lt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Fp()]=Ve();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ve(),Ve());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ve();return t}else if(i<192){let t=i-160;if(ar>=T)return qr.slice(T-jt,(T+=t)-jt);if(ar==0&&$r<140){let e=t<16?Ja(t):zp(t);if(e!=null)return e}return Ya(t)}else{let t;switch(i){case 192:return null;case 193:return Rt?(t=Ve(),t>0?Rt[1].slice(Rt.position1,Rt.position1+=t):Rt[0].slice(Rt.position0,Rt.position0-=t)):Ka;case 194:return!1;case 195:return!0;case 196:return Wa(te[T++]);case 197:return t=Ae.getUint16(T),T+=2,Wa(t);case 198:return t=Ae.getUint32(T),T+=4,Wa(t);case 199:return mo(te[T++]);case 200:return t=Ae.getUint16(T),T+=2,mo(t);case 201:return t=Ae.getUint32(T),T+=4,mo(t);case 202:if(t=Ae.getFloat32(T),Lt.useFloat32>2){let e=_s[(te[T]&127)<<1|te[T+1]>>7];return T+=4,(e*t+(t>0?.5:-.5)>>0)/e}return T+=4,t;case 203:return t=Ae.getFloat64(T),T+=8,t;case 204:return te[T++];case 205:return t=Ae.getUint16(T),T+=2,t;case 206:return t=Ae.getUint32(T),T+=4,t;case 207:return Lt.int64AsNumber?(t=Ae.getUint32(T)*4294967296,t+=Ae.getUint32(T+4)):t=Ae.getBigUint64(T),T+=8,t;case 208:return Ae.getInt8(T++);case 209:return t=Ae.getInt16(T),T+=2,t;case 210:return t=Ae.getInt32(T),T+=4,t;case 211:return Lt.int64AsNumber?(t=Ae.getInt32(T)*4294967296,t+=Ae.getUint32(T+4)):t=Ae.getBigInt64(T),T+=8,t;case 212:if(t=te[T++],t==114)return Gp(te[T++]&63);{let e=vt[t];if(e)return e.read?(T++,e.read(Ve())):e.noBuffer?(T++,e()):e(te.subarray(T,++T));throw new Error("Unknown extension "+t)}case 213:return t=te[T],t==114?(T++,Gp(te[T++]&63,te[T++])):mo(2);case 214:return mo(4);case 215:return mo(8);case 216:return mo(16);case 217:return t=te[T++],ar>=T?qr.slice(T-jt,(T+=t)-jt):iv(t);case 218:return t=Ae.getUint16(T),T+=2,ar>=T?qr.slice(T-jt,(T+=t)-jt):sv(t);case 219:return t=Ae.getUint32(T),T+=4,ar>=T?qr.slice(T-jt,(T+=t)-jt):av(t);case 220:return t=Ae.getUint16(T),T+=2,Dp(t);case 221:return t=Ae.getUint32(T),T+=4,Dp(t);case 222:return t=Ae.getUint16(T),T+=2,Bp(t);case 223:return t=Ae.getUint32(T),T+=4,Bp(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 nv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Qa(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>nv.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Ve);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]=Ve()}return r}return e.count=0,i.highByte===0?_p(t,e):e}var _p=(i,t)=>function(){let e=te[T++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Te[r]||Vp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Qa(o,i)),o.read()};function Vp(){let i=jp(()=>(te=null,Lt.getStructures()));return Te=Lt._mergeStructures(i,Te)}var Ya=Os,iv=Os,sv=Os,av=Os;function Os(i){let t;if(i<16&&(t=Ja(i)))return t;if(i>64&&qa)return qa.decode(te.subarray(T,T+=i));let e=T+i,r=[];for(t="";T<e;){let o=te[T++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=te[T++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=te[T++]&63,s=te[T++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[T++]&63,s=te[T++]&63,a=te[T++]&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+=it.apply(String,r),r.length=0)}return r.length>0&&(t+=it.apply(String,r)),t}function Dp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ve();return t}function Bp(i){if(Lt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Fp()]=Ve();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ve(),Ve());return t}}var it=String.fromCharCode;function zp(i){let t=T,e=new Array(i);for(let r=0;r<i;r++){let o=te[T++];if((o&128)>0){T=t;return}e[r]=o}return it.apply(String,e)}function Ja(i){if(i<4)if(i<2){if(i===0)return"";{let t=te[T++];if((t&128)>1){T-=1;return}return it(t)}}else{let t=te[T++],e=te[T++];if((t&128)>0||(e&128)>0){T-=2;return}if(i<3)return it(t,e);let r=te[T++];if((r&128)>0){T-=3;return}return it(t,e,r)}else{let t=te[T++],e=te[T++],r=te[T++],o=te[T++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){T-=4;return}if(i<6){if(i===4)return it(t,e,r,o);{let n=te[T++];if((n&128)>0){T-=5;return}return it(t,e,r,o,n)}}else if(i<8){let n=te[T++],s=te[T++];if((n&128)>0||(s&128)>0){T-=6;return}if(i<7)return it(t,e,r,o,n,s);let a=te[T++];if((a&128)>0){T-=7;return}return it(t,e,r,o,n,s,a)}else{let n=te[T++],s=te[T++],a=te[T++],l=te[T++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){T-=8;return}if(i<10){if(i===8)return it(t,e,r,o,n,s,a,l);{let c=te[T++];if((c&128)>0){T-=9;return}return it(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=te[T++],u=te[T++];if((c&128)>0||(u&128)>0){T-=10;return}if(i<11)return it(t,e,r,o,n,s,a,l,c,u);let m=te[T++];if((m&128)>0){T-=11;return}return it(t,e,r,o,n,s,a,l,c,u,m)}else{let c=te[T++],u=te[T++],m=te[T++],p=te[T++];if((c&128)>0||(u&128)>0||(m&128)>0||(p&128)>0){T-=12;return}if(i<14){if(i===12)return it(t,e,r,o,n,s,a,l,c,u,m,p);{let d=te[T++];if((d&128)>0){T-=13;return}return it(t,e,r,o,n,s,a,l,c,u,m,p,d)}}else{let d=te[T++],f=te[T++];if((d&128)>0||(f&128)>0){T-=14;return}if(i<15)return it(t,e,r,o,n,s,a,l,c,u,m,p,d,f);let g=te[T++];if((g&128)>0){T-=15;return}return it(t,e,r,o,n,s,a,l,c,u,m,p,d,f,g)}}}}}function Wa(i){return Lt.copyBuffers?Uint8Array.prototype.slice.call(te,T,T+=i):te.subarray(T,T+=i)}function mo(i){let t=te[T++];if(vt[t])return vt[t](te.subarray(T,T+=i));throw new Error("Unknown extension type "+t)}var Ep=new Array(4096);function Fp(){let i=te[T++];if(i>=160&&i<192){if(i=i-160,ar>=T)return qr.slice(T-jt,(T+=i)-jt);if(!(ar==0&&$r<180))return Ya(i)}else return T--,Ve();let t=(i<<5^(i>1?Ae.getUint16(T):i>0?te[T]:0))&4095,e=Ep[t],r=T,o=T+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=te[r++],n!=e[s++]){r=1879048192;break}if(r===o)return T=r,e.string;o-=3,r=T}for(e=[],Ep[t]=e,e.bytes=i;r<o;)n=Ae.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=te[r++],e.push(n);let a=i<16?Ja(i):zp(i);return a!=null?e.string=a:e.string=Ya(i)}var Gp=(i,t)=>{var e=Ve();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Te[i];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[i]=o),Te[i]=e,e.read=Qa(e,r),e.read()},Up=typeof self=="object"?self:global;vt[0]=()=>{};vt[0].noBuffer=!0;vt[101]=()=>{let i=Ve();return(Up[i[0]]||Error)(i[1])};vt[105]=i=>{let t=Ae.getUint32(T-4);Or||(Or=new Map);let e=te[T],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Or.set(t,o);let n=Ve();return o.used?Object.assign(r,n):(o.target=n,n)};vt[112]=i=>{let t=Ae.getUint32(T-4),e=Or.get(t);return e.used=!0,e.target};vt[115]=()=>new Set(Ve());var Za=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");vt[116]=i=>{let t=i[0],e=Za[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Up[e](Uint8Array.prototype.slice.call(i,1).buffer)};vt[120]=()=>{let i=Ve();return new RegExp(i[0],i[1])};vt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=T;T+=t-4,Rt=[Ve(),Ve()],Rt.position0=0,Rt.position1=0;let r=T;T=e;try{return Ve()}finally{T=r}};vt[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 jp(i){let t=$r,e=T,r=Xa,o=jt,n=ar,s=qr,a=$a,l=Or,c=Rt,u=new Uint8Array(te.slice(0,$r)),m=Te,p=Te.slice(0,Te.length),d=Lt,f=rn,g=i();return $r=t,T=e,Xa=r,jt=o,ar=n,qr=s,$a=a,Or=l,Rt=c,te=u,rn=f,Te=m,Te.splice(0,Te.length,...p),Lt=d,Ae=new DataView(te.buffer,te.byteOffset,te.byteLength),g}function Ms(){te=null,Or=null,Te=null}function kp(i){i.unpack?vt[i.type]=i.unpack:vt[i.type]=i}var _s=new Array(147);for(let i=0;i<256;i++)_s[i]=+("1e"+Math.floor(45.15-i*.30103));var Ds=new lr({useRecords:!1}),lv=Ds.unpack,cv=Ds.unpackMultiple,uv=Ds.unpack,Bs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},pv=new Float32Array(1),PA=new Uint8Array(pv.buffer,0,4);var Es;try{Es=new TextEncoder}catch{}var Gs,tl,Rs=typeof Buffer<"u",el=Rs?Buffer.allocUnsafeSlow:Uint8Array,$p=Rs?Buffer:Uint8Array,Hp=Rs?4294967296:2144337920,R,ke,C=0,cr,ur=null,mv=/[\u0080-\uFFFF]/,Xn=Symbol("record-id"),fo=class extends lr{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=$p.prototype.utf8Write?function(h,_,N){return R.utf8Write(h,_,N)}:Es&&Es.encodeInto?function(h,_){return Es.encodeInto(h,R.subarray(_)).written}:!1,u=this;t||(t={});let m=t&&t.sequential,p=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=p?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=p?32:64),m&&!t.saveStructures&&(this.structures=[]);let g=d>32||f+d>64,x=d+64,y=d+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,S=0;this.pack=this.encode=function(h,_){if(R||(R=new el(8192),ke=new DataView(R.buffer,0,8192),C=0),cr=R.length-10,cr-C<2048?(R=new el(R.length),ke=new DataView(R.buffer,0,R.length),cr=R.length-10,C=0):C=C+7&2147483640,r=C,a=u.structuredClone?new Map:null,u.bundleStrings?(ur=["",""],R[C++]=214,R[C++]=98,ur.position=C-r,C+=4):ur=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>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 I=0;I<N;I++){let L=o[I];if(!L)continue;let P,k=o.transitions;for(let W=0,ne=L.length;W<ne;W++){let ue=L[W];P=k[ue],P||(P=k[ue]=Object.create(null)),k=P}k[Xn]=I+64}l=N}m||(o.nextId=N+64)}n&&(n=!1),s=o||[];try{if(b(h),ur){ke.setUint32(ur.position+r,C-ur.position-r);let N=ur;ur=null,b(N[0]),b(N[1])}if(u.offset=C,a&&a.idsToInsert){C+=a.idsToInsert.length*6,C>cr&&w(C),u.offset=C;let N=fv(R.subarray(r,C),a.idsToInsert);return a=null,N}return _&Yp?(R.start=r,R.end=C,R):R.subarray(r,C)}finally{if(o){if(S<10&&S++,A>1e4)o.transitions=null,S=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!m){for(let N=0,I=v.length;N<I;N++)v[N][Xn]=0;v=[]}if(n&&u.saveStructures){let N=o.sharedLength||d;o.length>N&&(o=o.slice(0,N));let I=R.subarray(r,C);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(h)):(l=N,I)}}_&Sv&&(C=r)}};let b=h=>{C>cr&&(R=w(C));var _=typeof h,N;if(_==="string"){let I=h.length;if(ur&&I>=8&&I<4096){let k=mv.test(h);ur[k?0:1]+=h,R[C++]=193,b(k?-I:I);return}let L;I<32?L=1:I<256?L=2:I<65536?L=3:L=5;let P=I*3;if(C+P>cr&&(R=w(C+P)),I<64||!c){let k,W,ne,ue=C+L;for(k=0;k<I;k++)W=h.charCodeAt(k),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=h.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),k++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);N=ue-C-L}else N=c(h,C+L,P);N<32?R[C++]=160|N:N<256?(L<2&&R.copyWithin(C+2,C+1,C+1+N),R[C++]=217,R[C++]=N):N<65536?(L<3&&R.copyWithin(C+3,C+2,C+2+N),R[C++]=218,R[C++]=N>>8,R[C++]=N&255):(L<5&&R.copyWithin(C+5,C+3,C+3+N),R[C++]=219,ke.setUint32(C,N),C+=4),C+=N}else if(_==="number")if(h>>>0===h)h<64?R[C++]=h:h<256?(R[C++]=204,R[C++]=h):h<65536?(R[C++]=205,R[C++]=h>>8,R[C++]=h&255):(R[C++]=206,ke.setUint32(C,h),C+=4);else if(h>>0===h)h>=-32?R[C++]=256+h:h>=-128?(R[C++]=208,R[C++]=h+256):h>=-32768?(R[C++]=209,ke.setInt16(C,h),C+=2):(R[C++]=210,ke.setInt32(C,h),C+=4);else{let I;if((I=this.useFloat32)>0&&h<4294967296&&h>=-2147483648){R[C++]=202,ke.setFloat32(C,h);let L;if(I<4||(L=h*_s[(R[C]&127)<<1|R[C+1]>>7])>>0===L){C+=4;return}else C--}R[C++]=203,ke.setFloat64(C,h),C+=8}else if(_==="object")if(!h)R[C++]=192;else{if(a){let L=a.get(h);if(L){if(!L.id){let P=a.idsToInsert||(a.idsToInsert=[]);L.id=P.push(L)}R[C++]=214,R[C++]=112,ke.setUint32(C,L.id),C+=4;return}else a.set(h,{offset:C-r})}let I=h.constructor;if(I===Object)B(h,!0);else if(I===Array){N=h.length,N<16?R[C++]=144|N:N<65536?(R[C++]=220,R[C++]=N>>8,R[C++]=N&255):(R[C++]=221,ke.setUint32(C,N),C+=4);for(let L=0;L<N;L++)b(h[L])}else if(I===Map){N=h.size,N<16?R[C++]=128|N:N<65536?(R[C++]=222,R[C++]=N>>8,R[C++]=N&255):(R[C++]=223,ke.setUint32(C,N),C+=4);for(let[L,P]of h)b(L),b(P)}else{for(let L=0,P=Gs.length;L<P;L++){let k=tl[L];if(h instanceof k){let W=Gs[L];if(W.write){W.type&&(R[C++]=212,R[C++]=W.type,R[C++]=0),b(W.write.call(this,h));return}let ne=R,ue=ke,se=C;R=null;let K;try{K=W.pack.call(this,h,U=>(R=ne,ne=null,C+=U,C>cr&&w(C),{target:R,targetView:ke,position:C-U}),b)}finally{ne&&(R=ne,ke=ue,C=se,cr=R.length-10)}K&&(K.length+C>cr&&w(K.length+C),C=dv(K,R,C,W.type));return}}B(h,!h.hasOwnProperty)}}else if(_==="boolean")R[C++]=h?195:194;else if(_==="bigint"){if(h<BigInt(1)<<BigInt(63)&&h>=-(BigInt(1)<<BigInt(63)))R[C++]=211,ke.setBigInt64(C,h);else if(h<BigInt(1)<<BigInt(64)&&h>0)R[C++]=207,ke.setBigUint64(C,h);else if(this.largeBigIntToFloat)R[C++]=203,ke.setFloat64(C,Number(h));else throw new RangeError(h+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");C+=8}else if(_==="undefined")this.encodeUndefinedAsNil?R[C++]=192:(R[C++]=212,R[C++]=0,R[C++]=0);else if(_==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+_)},B=this.useRecords===!1?this.variableMapSize?h=>{let _=Object.keys(h),N=_.length;N<16?R[C++]=128|N:N<65536?(R[C++]=222,R[C++]=N>>8,R[C++]=N&255):(R[C++]=223,ke.setUint32(C,N),C+=4);let I;for(let L=0;L<N;L++)b(I=_[L]),b(h[I])}:(h,_)=>{R[C++]=222;let N=C-r;C+=2;let I=0;for(let L in h)(_||h.hasOwnProperty(L))&&(b(L),b(h[L]),I++);R[N+++r]=I>>8,R[N+r]=I&255}:h=>{let _=Object.keys(h),N,I=s.transitions||(s.transitions=Object.create(null)),L=0;for(let k=0,W=_.length;k<W;k++){let ne=_[k];N=I[ne],N||(N=I[ne]=Object.create(null),L++),I=N}let P=I[Xn];if(P)P>=96&&g?(R[C++]=((P-=96)&31)+96,R[C++]=P>>5):R[C++]=P;else{P=s.nextId,P||(P=64),P<x&&this.shouldShareStructure&&!this.shouldShareStructure(_)?(P=s.nextOwnId,P<y||(P=x),s.nextOwnId=P+1):(P>=y&&(P=x),s.nextId=P+1);let k=_.highByte=P>=96&&g?P-96>>5:-1;I[Xn]=P,s[P-64]=_,P<x?(_.isShared=!0,s.sharedLength=P-63,n=!0,k>=0?(R[C++]=(P&31)+96,R[C++]=k):R[C++]=P):(k>=0?(R[C++]=213,R[C++]=114,R[C++]=(P&31)+96,R[C++]=k):(R[C++]=212,R[C++]=114,R[C++]=P),L&&(A+=S*L),v.length>=f&&(v.shift()[Xn]=0),v.push(I),b(_))}for(let k=0,W=_.length;k<W;k++)b(h[_[k]])},w=h=>{let _;if(h>16777216){if(h-r>Hp)throw new Error("Packed buffer would be larger than maximum buffer size");_=Math.min(Hp,Math.round(Math.max((h-r)*(h>67108864?1.25:2),4194304)/4096)*4096)}else _=(Math.max(h-r<<2,R.length-1)>>12)+1<<12;let N=new el(_);return ke=new DataView(N.buffer,0,_),R.copy?R.copy(N,0,r,h):N.set(R.slice(r,h)),C-=r,r=0,cr=N.length-10,R=N}}useBuffer(t){R=t,ke=new DataView(R.buffer,R.byteOffset,R.byteLength),C=0}};tl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,$n];Gs=[{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?Wp(i,16,t):qp(Rs?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==$p&&this.structuredClone?Wp(i,Za.indexOf(e.name),t):qp(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function Wp(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 qp(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 dv(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 fv(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 ho(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)");tl.unshift(i.Class),Gs.unshift(i)}kp(i)}var Xp=new fo({useRecords:!1}),hv=Xp.pack,gv=Xp.pack;var{NEVER:yv,ALWAYS:xv,DECIMAL_ROUND:vv,DECIMAL_FIT:bv}=Bs,Yp=512,Sv=1024;var Kp=new fo({structuredClone:!0});ho({Class:Je.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});ho({Class:Ee.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ee.prototype),i}});ho({Class:Ut.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ut.prototype),i}});ho({Class:Wn.prototype.constructor,type:4,write(i){return i.id},read(i){return new Wn(i)}});ho({Class:qn.prototype.constructor,type:5,write(i){return i.data},read(i){return new qn(i)}});function wv(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function rl(i){if(ws(i))return i;if(Array.isArray(i))return i.map(rl);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=rl(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var Vs;(r=>{function i(o){return Kp.pack(o)}r.serialize=i;function t(o){return Kp.unpack(o)}r.deserialize=t;function e(o){return wv(i(rl(o))).toString()}r.checksum=e})(Vs||(Vs={}));var zs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(zs||(zs={}));var Fs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:Gt.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:Gt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Fs||(Fs={}));var ol;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(ol||(ol={}));var nl;(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})(nl||(nl={}));var Us;(t=>t.defaultData={...nl.defaultData,...ol.defaultData,cloner:null,booleanExclude:null})(Us||(Us={}));var il=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(il||{}),sl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(sl||{}),al=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(al||{}),js;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Gt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(js||(js={}));var Xr;(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:Et.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:{...Et.fromHex(6710886),a:1},colorB:{...Et.fromHex(6710886),a:1},colorC:{...Et.fromHex(16777215),a:1},colorD:{...Et.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:Gt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Gt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Gt.fromHexAndA(0,1),contourColor:Gt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Xr||(Xr={}));var _r;(a=>{function i(l){return!l.layers.some(u=>{if(u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")return!0})&&!e(l)}a.isMergable=i;function t(l){let c="";return l.layers.forEach(u=>{Object.entries(u.data).forEach(([m,p])=>{c+=`${m}${p}`,Array.isArray(p)?p.forEach(d=>c+=`${d}`):typeof p=="object"?Object.values(p).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${p}`})}),c}a.getHash=t;function e(l){let c=0;for(let u of l.layers)"alpha"in u.data&&u.data.type!=="light"&&u.data.type!=="fresnel"&&(c+=(1-c)*u.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Ee}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",u="layer2"){let m=new Ee;return m.push({fi:0,data:Xr.defaultData("light",l),id:c}),m.push({fi:1,data:Xr.defaultData("color"),id:u}),{layers:m}}a.defaultTwoLayerData=n;function s(l,c="basic",u="layer1",m="layer2"){let p=Xr.defaultData("texture");Object.assign(p.texture,{image:l});let d=new Ee;return d.push({fi:0,data:p,id:u}),d.push({fi:1,data:Xr.defaultData("light",c),id:m}),{layers:d}}a.defaultTwoLayerTextureData=s})(_r||(_r={}));var on;(t=>{function i(){return{points:new Ee,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(on||(on={}));var ks;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(ks||(ks={}));var Yn;(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:on.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})(Yn||(Yn={}));var Kn;(o=>{o.identity={...vs.identity,hiddenMatrix:Wr.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?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Jo.isEqual(n.position,s.position)?null:s.position,rotation:Jo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Jo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Kn||(Kn={}));var Dr;(t=>t.defaultData={states:new Ee,events:new Ee,visible:!0,raycastLock:!1,...Kn.identity})(Dr||(Dr={}));var Qp;(t=>t.defaultData={type:"Empty",...Dr.defaultData})(Qp||(Qp={}));var Hs;(t=>t.defaultData={type:"Mesh",...Dr.defaultData,...Us.defaultData})(Hs||(Hs={}));var Jp;(t=>t.defaultData={type:"TextFrame",...Dr.defaultData,...js.defaultData})(Jp||(Jp={}));var Ws;(t=>t.defaultData={...Dr.defaultData,...Kn.identity,...po.defaultData})(Ws||(Ws={}));var Zp;(t=>{function i(e){return{...Dr.defaultData,...Fs.defaultData(e)}}t.defaultData=i})(Zp||(Zp={}));var em;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ee,events:new Ee,...po.defaultData},r.defaultMeshObject={name:"Rectangle",...Dr.defaultData,...Hs.defaultData,geometry:Yn.defaultData("RectangleGeometry"),material:_r.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Dr.defaultData,...Hs.defaultData,geometry:Yn.defaultData("BooleanGeometry"),material:_r.defaultTwoLayerData("phong","layer1","layer2")}))(em||(em={}));var tm;(e=>{function i(r,o){if(o===void 0)return r;let n={...r};return"material"in n&&"material"in o&&o.material&&(n.material=ka(n.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&uo(c,l)}}).data),n.materials&&o.materials&&(n.materials=ka(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,u]of Object.entries(l.layers)){let m=s[a]?.layers?.data(c);m&&uo(m,u)}}}).data),n}e.patchMaterialState=i;function t(r,o){if(o===void 0)return r;let n={...r};if(Object.assign(n,Kn.merge(n,o)),Qo.is(r.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(r.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(zs.is(r.type)){let s=o;s.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=Et.clone(s.color))}return n}e.patch=t})(tm||(tm={}));var qs;(s=>{let i=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let a={},l=0;for(let c of i)a[`image_${l}`]={data:c,name:`Image ${l}`,asset:!1},l++;l=0;for(let c of t)a[`matcap_${l}`]={data:c,name:`Matcap ${l}`,asset:!1},l++;return a}s.defaultImages=e;function r(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},a}s.defaultColors=r;function o(){return{materials:new Je,images:new Je,colors:new Je,penumbraSize:[.5,.5,.5]}}s.emptyData=o;function n(){return{materials:new Je,images:Da(e(),Je.prototype),colors:Da(r(),Je.prototype),penumbraSize:new Array(5).fill(.5)}}s.defaultData=n})(qs||(qs={}));var $s;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})($s||($s={}));var rm=require("three"),ut=class extends rm.Color{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 im=require("three");var De=require("three"),nm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.parameters),r=e.width/2,o=e.radiusTop??r,n=e.radiusBottom??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(e.height??e.width),depth:Math.abs(e.depth??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:u,cornerRadius:m,cornerSegments:p,hollow:d}=i.parameters,f;return m||d?f=new Qn(c,u,r,o,n,s,a,l*Math.PI/180,m,m,p,d):f=new De.CylinderBufferGeometry(c,u,r,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...i,type:"CylinderGeometry"}})}};function Yr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function om(i){return new De.Vector2(i.y,-i.x)}var Qn=class extends De.BufferGeometry{constructor(t,e,r,o,n,s,a,l,c,u,m,p,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,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,u=0);let f=[],g=[],x=[],y=[],v=0,A=r/2,S=new De.Vector3,b=new De.Vector3;d&&t==0&&(t=c),d&&e==0&&(e=u);let B=new De.Vector2(t,A),w=new De.Vector2(e,-A),h=null,_=null,N=null,I=null,L=B.clone().sub(w),P=0,k=0,W=0;p>0&&(P=Math.min(t,e)*(1-p),k=t-P,W=e-P);let ne=B.clone();ne.x-=P;let ue=Math.PI-L.angle(),se=L.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),V=K+U,E=p?V:U,D=p?V:K;if(c=Math.min(c,(t-k)/E,L.length()/V),u=Math.min(u,(e-W)/D,L.length()/V),c>0){let F=c/K;h=B.clone().sub(new De.Vector2(F,c)),p&&(N=h.clone(),N.x-=P-V*c),B.sub(L.clone().setLength(F))}if(u>0){let F=u/U;_=w.clone().sub(new De.Vector2(F,-u)),w.add(L.clone().setLength(F)),p&&(I=_.clone(),I.x-=P-V*u,ne.sub(L.clone().setLength(F)))}L=B.clone().sub(w);let M=L.length()<.5,G=[];for(let F=0;F<=o;F++){let O=[],q=F/o,Z=q*l+a,ee=new De.Vector2(Math.sin(Z),Math.cos(Z));I&&_?(Q(O,q,ee,ue,u,I,-1,!0),Q(O,q,ee,se,u,_,-1,!1)):_?(j(O,ee,_.x,0,-1),Q(O,q,ee,se,u,_,-1,!1)):s||j(O,ee,e,W,-1);let H=om(L).normalize();if(Yr(H,ee,S),!M)for(let J=0;J<=n;J++){let $=J/n,re=L.clone().multiplyScalar($).add(w);Yr(re,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}if(N&&h?(Q(O,q,ee,ue,c,h,1,!1),Q(O,q,ee,se,c,N,1,!0)):h?(Q(O,q,ee,ue,c,h,1,!1),j(O,ee,h.x,0,1)):s||j(O,ee,t,k,1),p&&!M){let J=om(L).multiplyScalar(-1).normalize();Yr(J,ee,S);for(let $=0;$<=n;$++){let re=$/n,ce=L.clone().multiplyScalar(-re).add(ne);Yr(ce,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}}p&&!s&&O.push(O[0]),G.push(O)}for(let F=0;F<G.length-1;F++)for(let O=0;O<G[0].length-1;O++){if(s&&p&&O==n)continue;let q=G[F][O],Z=G[F+1][O],ee=G[F+1][O+1],H=G[F][O+1],J=g[ee*3+0],$=g[ee*3+2];f.push(q,Z,H),(J!=0||$!=0)&&f.push(Z,ee,H)}l<Math.PI*2&&(z(-1,G[0],a),z(1,G[G.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new De.Float32BufferAttribute(g,3)),this.setAttribute("normal",new De.Float32BufferAttribute(x,3)),this.setAttribute("uv",new De.Float32BufferAttribute(y,2));function Q(F,O,q,Z,ee,H,J,$){for(let re=0;re<m+1;re++){let ce=re/m,ie=J<0?ce:1-ce;$&&(ie-=1),ie*=Z;let fe=new De.Vector2(Math.sin(ie),Math.cos(ie)*J),Re=fe.clone().multiplyScalar(ee).add(H);Yr(Re,q,b),g.push(b.x,b.y,b.z),Yr(fe,q,S),x.push(S.x,S.y,S.z),y.push(O,.5+b.y/r),F.push(v++)}}function j(F,O,q,Z,ee){let H=new De.Vector3,J=new De.Vector2,$=[q,Z];ee<0&&$.reverse();for(let re of $)J.set(re,A*ee),Yr(J,O,H),g.push(H.x,H.y,H.z),x.push(0,ee,0),y.push(.5,.5),F.push(v++)}function z(F,O,q){let Z=new De.Vector2(Math.sin(q),Math.cos(q)),ee=new De.Vector2(-Math.cos(q),Math.sin(q)),H=new De.Vector3,J=F<0?(ce,ie,fe)=>f.push(ce,ie,fe):(ce,ie,fe)=>f.push(ce,fe,ie),$=new De.Vector2((t+e+k+W)/4,0);Yr($,Z,H),g.push(H.x,H.y,H.z),x.push(ee.x,0,ee.y),y.push(.5,.5);let re=v++;for(let ce of O){let ie=g.slice(ce*3,ce*3+3);g.push(...ie),x.push(ee.x,0,ee.y);let fe=y.slice(ce*2,ce*2+2);y.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)J(re,ce,ce+1);J(re,v-1,re+1)}}};var sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:m}=i.parameters,p;return c>0||u>0||l<360?p=new Qn(0,t/2,r,o,n,s,a,l*Math.PI/180,c,u,m,0,!0):p=new im.ConeBufferGeometry(t/2,r,o,n,s),p.scale(1,1,e/t),Object.assign(p,{userData:{...i,type:"ConeGeometry"}})}};var It=require("three"),am=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:l}=i.parameters,c;return a==0?c=new It.BoxBufferGeometry(t,e,r,o,n,s):c=new cl(t,e,r,o,n,s,a,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},ll=Math.PI/2,cl=class extends It.BufferGeometry{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 u=[],m=[],p=[],d=[],f=0,g=0;x("z","y","x",-1,-1,r,e,t,s,n,0),x("z","y","x",1,-1,r,e,-t,s,n,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,n,4),x("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),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new It.Float32BufferAttribute(m,3)),this.setAttribute("normal",new It.Float32BufferAttribute(p,3)),this.setAttribute("uv",new It.Float32BufferAttribute(d,2));function x(A,S,b,B,w,h,_,N,I,L,P){let k=(h-2*a)/I,W=(_-2*a)/L,ne=h/2-a,ue=_/2-a,se=N/2,K=I+1,U=L+1,V=0,E=0,D=new It.Vector3;for(let M=0;M<U;M++){let G=M*W-ue;for(let Q=0;Q<K;Q++){let j=Q*k-ne;D[A]=j*B,D[S]=G*w,D[b]=se,m.push(D.x,D.y,D.z),D[A]=0,D[S]=0,D[b]=N>0?1:-1,p.push(D.x,D.y,D.z),d.push(Q/I),d.push(1-M/L),V+=1}}for(let M=0;M<L;M++)for(let G=0;G<I;G++){let Q=f+G+K*M,j=f+G+K*(M+1),z=f+(G+1)+K*(M+1),F=f+(G+1)+K*M;u.push(Q,j,F),u.push(j,z,F),E+=6}c.addGroup(g,E,P),g+=E,f+=V}function y(A,S,b,B,w,h,_,N,I,L,P){let k=(_-2*a)/L,W=_/2-a,ne=N/2-a,ue=I/2,se=L+1,K=0,U=0,V=new It.Vector3,E=new It.Vector3;for(let D=0;D<l+1;D++){let M=D/l*ll,G=Math.sin(M)*a,Q=(1-Math.cos(M))*a,j=Math.sin(M),z=Math.cos(M);V[S]=(ne+G)*w,V[b]=(ue-Q)*h,E[A]=0,E[S]=j*Math.sign(V[S]),E[b]=z*Math.sign(V[b]);for(let F=0;F<se;F++){let O=F*k-W;V[A]=O*B,m.push(V.x,V.y,V.z),p.push(E.x,E.y,E.z),d.push(F/L),d.push(0),K+=1}}for(let D=0;D<l;D++)for(let M=0;M<L;M++){let G=f+M+se*D,Q=f+M+se*(D+1),j=f+(M+1)+se*(D+1),z=f+(M+1)+se*D;u.push(G,Q,z),u.push(Q,j,z),U+=6}c.addGroup(g,U,P),g+=U,f+=K}function v(A,S,b){let B=new It.Vector3,w=new It.Vector3(t/2,e/2,r/2);w.subScalar(a);let h=[],_=A*S*b>0?(I,L,P)=>u.push(I,L,P):(I,L,P)=>u.push(I,P,L);for(let I=0;I<=l;I++){let L=[],P=ll*(1-I/l),k=Math.cos(P),W=Math.sin(P),ne=0;for(let ue=0;ue<=I;ue++){let se=Math.cos(ne),K=Math.sin(ne);B.x=k*se,B.y=W,B.z=k*K;let U=w.clone().addScaledVector(B,a);m.push(A*U.x,S*U.y,b*U.z),p.push(A*B.x,S*B.y,b*B.z),d.push(0,0),L.push(f++),ne+=ll/I}h.push(L)}let N=h.length-1;for(let I=0;I<N;I++){let L=h[I],P=h[I+1],k=L.length-1;_(L[0],P[1],P[0]);for(let W=1;W<=k;W++)_(L[W-1],L[W],P[W]),_(L[W],P[W+1],P[W])}}}};var ze=require("three"),Kr=class extends ze.BufferGeometry{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];u(),m(),this.setAttribute("position",new ze.Float32BufferAttribute(a,3)),this.setAttribute("normal",new ze.Float32BufferAttribute(c,3)),this.setAttribute("uv",new ze.Float32BufferAttribute(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new ze.Vector3,g=f.clone(),x=new ze.Triangle,y=n*o,v=o-y,A=s+1,S=new ze.Vector3,b=(K,U)=>S.subVectors(K,U).normalize(),B=(K,U)=>Array(K).fill(void 0).map(U),w=B(t.length/3,(K,U)=>new ze.Vector3().fromArray(t,U*3).setLength(o)),h=[],_=1e6;for(let K=0;K<w.length;K++){let U=w[K],V=[],E,D,M,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let O=Q-Q%3;E=e[O+(Q+1)%3],D=e[O+(Q+2)%3],M=U.distanceToSquared(w[E]),G=Math.min(G,M),V.push([E,D,M])}G+=1e-6;let j=[],z=0,F=V.length;for(let O=0;O<F;O++){[E,D,M]=V[z];let q=h[E]?.includes(K)==!0;M<=G&&j.push(E+ +q*_),z=V.findIndex(Z=>Z[0]==D)}h.push(j)}let N=[];{let K=0,U=0,V,E,D=d==3;for(let M=0;M<=s;M++){V=M*(M+1)/2,E=(M+1)*(M+2)/2;for(let G=0;G<s-M;G++)[K,U]=[V+G+M+2,E+G+M+3],N.push(V,E,...D?[U,V]:[K,E],U,K),[V,E]=[K,U];N.push(V,E,V+s+2)}}let I=f.clone(),L=f.clone(),P=f.clone(),k=f.clone(),W=f.clone(),ne=[],ue=B(w.length,()=>B(d,()=>f.clone()));for(let K=0;K<w.length;K++){f.copy(w[K]).normalize(),I.copy(f).multiplyScalar(v);let U=h[K];for(let j=0;j<U.length;j++){let z=U[j],F=U[(j+1)%d];x.setFromPointsAndIndices(w,K,z%_,F%_),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(I,ue[K][j])}let V=[],E=[],D=[],M=new ze.Vector3;s==0&&[...ue[K]].reduce((j,z)=>j.add(z),M).multiplyScalar(1/d);for(let j=0;j<d;j++){let z=[],F=(j-1+d)%d,O=ue[K][F],q=ue[K][j];f.copy(O).sub(I),g.copy(q).sub(I);let Z=I.angleTo(f),ee=f.angleTo(g),H=Math.cos(Z)*y;s==0?L.copy(M):L.copy(I).setLength(v+H),E.push(H);let J=[L,O,q];for(let $=0;$<2;$++){let re=J[$],ce=J[$+1];k.subVectors(re,I),W.subVectors(ce,I),P.crossVectors(k,W).normalize();for(let ie=0;ie<A;ie++){let fe=[Z,ee][$]*ie/A;f.copy(k).applyAxisAngle(P,fe).add(I),V.push(f.clone()),$&&(b(f,I),z.push([ie==0?re:f.clone(),S.clone()]))}$&&(b(ce,I),z.push([ce,S.clone()]))}D.push(z)}ne.push(D);let G=2*A,Q=2;for(let j=0;j<d;j++){let z=G*j,F=G*((j+1)%d),O=[V[z]];for(let Z=1;Z<A;Z++){k=V[z+Z],W=V[F+Z],O.push(k);for(let ee=1,H=Z-Q+1;ee<=H;ee++)f.lerpVectors(k,W,ee/(H+1)),f.sub(I).setLength(E[j]).add(I),O.push(f.clone());O.push(W)}for(let Z=0;Z<A;Z++)O.push(V[Z+A+z]);O.push(V[F+A]);let q=N.map(Z=>O[Z]);a.push(...q.map(Z=>[Z.x,Z.y,Z.z]).flat()),c.push(...q.map(Z=>(b(Z,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let K=0;K<h.length;K++)for(let U=0;U<d;U++){let V=h[K][U];if(V<_){let E=h[V].findIndex(G=>G%_==K),D=ne[K][U],M=ne[V][E];for(let G=0;G<A;G++){let Q=D[G],j=M[A-G],z=D[G+1],F=M[A-(G+1)];[Q,j,z,z,j,F].forEach(O=>{a.push(O[0].x,O[0].y,O[0].z),c.push(O[1].x,O[1].y,O[1].z)})}se.push(D[0][0],M[A][0],D[A][0],M[0][0])}}for(;se.length;){let K,U,V,E;[K,U]=se.splice(0,2);let D=[K];for(;K!=U;)D.push(U),V=se.indexOf(U),E=V%2,U=se.splice(V-E,2)[1-E];S.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let M=S.dot(D[0])<0;M&&S.negate();for(let G=1;G<=D.length-2;G++)[D[G+ +M],D[G+1-+M],D[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),c.push(S.x,S.y,S.z)})}}function m(){let p=new ze.Vector3;for(let w=0;w<a.length;w+=3){p.x=a[w+0],p.y=a[w+1],p.z=a[w+2];let h=b(p)/2/Math.PI+.5,_=B(p)/Math.PI+.5;l.push(h,1-_)}let d=new ze.Vector3,f=new ze.Vector3,g=new ze.Vector3,x=new ze.Vector3,y=new ze.Vector2,v=new ze.Vector2,A=new ze.Vector2,S=(w,h,_,N)=>{N<0&&w.x===1&&(l[h]=w.x-1),_.x===0&&_.z===0&&(l[h]=N/2/Math.PI+.5)};for(let w=0,h=0;w<a.length;w+=9,h+=6){d.set(a[w+0],a[w+1],a[w+2]),f.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[h+0],l[h+1]),v.set(l[h+2],l[h+3]),A.set(l[h+4],l[h+5]),x.copy(d).add(f).add(g).divideScalar(3);let _=b(x);S(y,h+0,d,_),S(v,h+2,f,_),S(A,h+4,g,_)}for(let w=0;w<l.length;w+=6){let h=l[w+0],_=l[w+2],N=l[w+4],I=Math.max(h,_,N),L=Math.min(h,_,N);I>.9&&L<.1&&(h<.2&&(l[w+0]+=1),_<.2&&(l[w+2]+=1),N<.2&&(l[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function B(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new Kr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var lm=require("three"),cm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Jn(t*.5,n,s):new lm.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Jn=class extends Kr{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 Jn(t.radius,t.corner,t.cornerSides)}};var be=require("three");var he=require("three"),Zn=1e-12,nn=class{constructor(t){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.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 nn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},sn=class extends nn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new sn(this.parent).copy(this)}},Xt=class extends nn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new sn(this),new sn(this))}static create(e,r){let o=new Xt(e,new he.Vector2(...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 Xt(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 he.Vector2,r=new he.Vector2){let[o,n]=this.computeTangents();return o&&n&&(um(o,e),um(n,r)),[e,r]}computeTangent(e=new he.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function um(i,t=new he.Vector2){let e=i.length();return t.set(-i.y/e,i.x/e)}var pl=i=>i,an=new he.Vector2,Xs=new he.Vector2,Tv=new he.Vector2,Nv=new he.Vector2,Cv=new he.Vector2,Lv=new he.Vector2,mm=new he.Vector3,dm=new he.Vector3;function fm(i){let t=new he.Vector2;t.addVectors(i.v0,an.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(i.v2,Xs.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(i.v0,t,e,i.v2)}function ei(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function Iv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function Av(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function ml(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 hm(i,t,e){return pm(i,t)&&pm(t,e)&&ul(i.position,t.position,e.position)}function ul(i,t,e){return an.copy(t).sub(i).cross(Xs.copy(e).sub(i))===0}function gm(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 ym(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function xm(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,u=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),m;return ml(t,i,e)>Math.PI&&(u*=-1),ei(c,a)?m=(a+c)*(r/u-.5)*8/3/(s-l):m=(s+l)*(r/u-.5)*8/3/(c-a),o.set(t.x-m*a,t.y+m*s),n.set(e.x+m*c,e.y-m*l),[o,n]}function dl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function pm(i,t){return ul(i.position,i.controls[1].position,t.position)&&ul(i.position,t.controls[0].position,t.position)}function vm(i,t,e,r,o=.5){let n=an.subVectors(t,i).multiplyScalar(o).add(i),s=Xs.subVectors(e,t).multiplyScalar(o).add(t),a=Tv.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=Nv.subVectors(s,n).multiplyScalar(o).add(n),u=Cv.subVectors(a,s).multiplyScalar(o).add(s),m=a,p=Lv.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,p.x,p.y,u.x,u.y,m.x,m.y,r.x,r.y]}function bm(i,t,e=12,r=!0){let o=dm.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=pl(t[l]),u=an,m=Qr(c,e);a.push(m);for(let p=0;p<=m;p++)if(c instanceof he.CubicBezierCurve||c instanceof he.QuadraticBezierCurve||c instanceof he.LineCurve){if(c.getPoint(p/m,u),o.set(u.x,u.y,0),n!==void 0&&Av(n,o))continue;n===void 0&&(n=mm),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 Sm(i,t,e,r=12,o=!0){let n=dm.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=pl(t[l]),m=an,p=Qr(u,r);a.push(p);for(let d=0;d<=p;d++)if(u instanceof he.CubicBezierCurve||u instanceof he.QuadraticBezierCurve||u instanceof he.LineCurve){if(u.getPoint(d/p,m),n.set(m.x,m.y,0),c?.equals(n))continue;c===void 0?c=mm:(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 fl(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=Qr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Qr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Qr(i[0].roundedCurveCorner,t)*.5),r}function Qr(i,t=12){return i&&i instanceof he.EllipseCurve?t*2:i&&(i instanceof he.LineCurve||i instanceof he.LineCurve3)?1:i&&i instanceof he.SplineCurve?t*i.points.length:t}function wm(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=pl(t[s]),l=Qr(a,e),c=an;for(let u=0;u<=l;u++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(u/l,c),o!==void 0&&Iv(o,c,Zn))continue;o===void 0&&(o=Xs),o.copy(c),i.push(c.x,c.y),n++}}return ei(i[0],i[i.length-2],Zn)&&ei(i[1],i[i.length-1],Zn)&&(i.pop(),i.pop()),r&&n>1&&!(ei(i[n-1],i[1],Zn)&&ei(i[n-2],i[0],Zn))&&(i.push(i[0],i[1]),n++),i}var hl=new be.Vector2,Pv=new be.Vector2,Mv=new be.Vector2,Ov=new be.Vector2,_v=new be.Vector2,Dv=new be.Vector2,Le=class extends be.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.Vector3(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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Le;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Xt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Le.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,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)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=hl.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=be.MathUtils.generateUUID()){let n;e instanceof be.Vector2?n=e:n=new be.Vector2(e,r);let s=new Xt(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 bm(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=fl(this.points,e,!1),this.roundedCurveDivisions=fl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Sm(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),wm(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=Qr(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 u=n[l];if(a<o+u)return[l,(a-o+1)/u];o+=u}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(dl(n,s)){let m=n.position.distanceTo(s.position);return n.position.distanceTo(hl.set(o.x,o.y))/m}let c=0;for(let m=0;m<e;m++)c+=a[m];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){dl(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){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;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],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],l=this.points[n-1]??this.points[this.points.length-1],c=this.points[n+1]??this.points[0],u=a.roundness,m=l&&c&&hm(l,a,c);if(!a.controlsMoved()&&u>0&&!m){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,g=a.roundedCurveAfter,x=p.getLength(),y=d.getLength(),v=Math.min(u,x*.499),A=Math.min(u,y*.499),S=Math.min(v,A),b=1-S/x,B=S/y,w=p.getPointAt(b,hl),h=d.getPointAt(B,Pv);this._subSplitCurve(p,f,b,w,void 0),this._subSplitCurve(d,g,B,void 0,h);let _;if(this.useCubicForRoundedCorners){let N=ml(w,a.position,h)/2,I=Math.tan(N)*w.distanceTo(a.position),[L,P]=gm(w,h,I,Mv,Ov),k=ym(L,P,a.position),[W,ne]=xm(k,w,h,I,_v,Dv);_=new be.CubicBezierCurve(w.clone(),W.clone(),ne.clone(),h.clone())}else _=new be.QuadraticBezierCurve(w.clone(),a.position.clone(),h.clone());a.roundedCurveCorner=_,this.roundedCurves.splice(n+o,0,_),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,n,s){if(e instanceof be.LineCurve)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),u=vm(a.v0,a.v1,a.v2,a.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),s!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,s=e.points[n+0],a=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],m=e.points[n+5],p=e.points[n+6],d=new Xt(be.MathUtils.generateUUID(),new be.Vector2(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(u,m),d.roundness=p,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Le;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof be.CubicBezierCurve&&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 be.QuadraticBezierCurve&&(n[a]=fm(n[a]));for(a=0,l=n.length;a<l;a++){let m=n[a],p=a>0?n[a-1]:null,d;m instanceof be.CubicBezierCurve?(d=this.createPoint(m.v0),d.controls[1].position.copy(m.v1)):m instanceof be.LineCurve&&(d=this.createPoint(m.v1)),d!==void 0&&(p!==null&&r(d,p),s.push(d))}let c=n[n.length-1],u=!1;return c instanceof be.CubicBezierCurve?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof be.LineCurve&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(n=>{let s=new Le;return s.fromShape(n),s})),this.update(),this}};var yl=Math.PI*2;function gl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function Bv(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 Tm(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 Ev(i,t,e,r,o,n,s,a,l,c){let u=Math.pow(o,2),m=Math.pow(n,2),p=Math.pow(s,2),d=Math.pow(a,2),f=u*m-u*d-m*p;f<0&&(f=0),f/=u*d+m*p,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,x=f*-n/o*s,y=g+(i+e)/2,v=x+(t+r)/2,A=(s-g)/o,S=(a-x)/n,b=(-s-g)/o,B=(-a-x)/n,w=Tm(1,0,A,S),h=Tm(A,S,b,B);return!c&&h>0&&(h-=yl),c&&h<0&&(h+=yl),{centerx:y,centery:v,ang1:w,ang2:h}}function Nm({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,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let m=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);m>1&&(o*=Math.sqrt(m),n*=Math.sqrt(m));let p=Ev(i,t,e,r,o,n,c,u,s,a),{ang1:d,ang2:f}=p,{centerx:g,centery:x}=p,y=Math.abs(f)/(yl/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);f/=v;for(let A=0;A<v;A++)l.push(Bv(d,f)),d+=f;return l.map(A=>{let{x:S,y:b}=gl(A[0],o,n,g,x),{x:B,y:w}=gl(A[1],o,n,g,x),{x:h,y:_}=gl(A[2],o,n,g,x);return{x1:S,y1:b,x2:B,y2:w,x:h,y:_}})}var yo=require("three");var Be;(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"})(Be||(Be={}));var Ze;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function pe(i,t){if(!i)throw t||"Assertion Failed!"}var ae=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var 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}(),ti=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}(),ln=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}(),Cm=function(){function i(){var t=new ln,e=new ti,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;pe(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;pe(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var 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 ln,e=new ln,r=new ti,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 ln;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ti;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 ti;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 ln;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 ti;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&&ae.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ae.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){pe(o.prev===n),l=o.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(pe(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),l=s.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)pe(l.Sym.next===c.Sym),pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Org!==null),pe(l.Dst!==null),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l);pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),Lm=function(){function i(){this.handle=null}return i}(),Im=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 Lm,this.handles[r]=new Im;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,pe(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 Lm;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Im}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;pe(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),xl=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}(),Am=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),Rv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Am,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 Am;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}(),Vv=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?ae.vertLeq(n.Org,s.Org)?ae.edgeSign(s.Dst,n.Org,s.Org)<=0:ae.edgeSign(n.Dst,s.Org,n.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(n.Dst,o,n.Org)>=0;var a=ae.edgeEval(n.Dst,o,n.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new xl;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 Be.ODD:return(e&1)!==0;case Be.NONZERO:return e!==0;case Be.POSITIVE:return e>0;case Be.NEGATIVE:return e<0;case Be.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,u,m=!0;c=r;do pe(ae.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,u=n;a=i.regionBelow(l),c=a.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=i.isWindingInside(t,a.windingNumber),l.dirty=!0,!m&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),m=!1,l=a,u=c;l.dirty=!0,pe(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=ae.vertL1dist(e,t),n=ae.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(ae.vertLeq(o.Org,n.Org)){if(ae.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ae.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(ae.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(pe(!ae.vertEq(o.Dst,n.Dst)),ae.vertLeq(o.Dst,n.Dst)){if(ae.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(ae.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,u,m,p=new ln,d,f;if(pe(!ae.vertEq(c,l)),pe(ae.edgeSign(l,t.event,s)<=0),pe(ae.edgeSign(c,t.event,a)>=0),pe(s!==t.event&&a!==t.event),pe(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(u=Math.min(s.t,l.t),m=Math.max(a.t,c.t),u>m))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),ae.intersect(l,s,c,a,p),pe(Math.min(s.t,l.t)<=p.t),pe(p.t<=Math.max(a.t,c.t)),pe(Math.min(c.s,l.s)<=p.s),pe(p.s<=Math.max(a.s,s.s)),ae.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),d=ae.vertLeq(s,a)?s:a,ae.vertLeq(d,p)&&(p.s=d.s,p.t=d.t),ae.vertEq(p,s)||ae.vertEq(p,a)?(i.checkForRightSplice(t,e),!1):!ae.vertEq(l,t.event)&&ae.edgeSign(l,t.event,p)>=0||!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,p)<=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):(ae.edgeSign(l,t.event,p)>=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),ae.edgeSign(c,t.event,p)<=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=p.s,o.Org.t=p.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),ae.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),ae.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}ae.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,ae.vertEq(o.Org,r)){pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}pe(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(pe(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ae.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 xl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ae.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 u=t.mesh.connect(a.Dnext,e.anEdge);l=u.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);pe(o!==null);var n=i.regionBelow(o),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 xl,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 Rv(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||(pe(e.fixUpperEdge),pe(++r===1)),pe(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ae.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,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.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}(),zv=function(){function i(){this.mesh=new Cm,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=Be.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],u=[0,0,0],m=[0,0,0],p=[0,0,0],d=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)n=e.coords[x],c[x]=n,f[x]=e,l[x]=n,d[x]=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,d[y]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[v],o=d[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)m[0]=e.coords[0]-o.coords[0],m[1]=e.coords[1]-o.coords[1],m[2]=e.coords[2]-o.coords[2],p[0]=u[1]*m[2]-u[2]*m[1],p[1]=u[2]*m[0]-u[0]*m[2],p[2]=u[0]*m[1]-u[1]*m[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,t[0]=p[0],t[1]=p[1],t[2]=p[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,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(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.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 u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=a,a++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=s,++s}this.elementCount=s,e===Ze.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 m=c.n*o;this.vertices[m+0]=c.coords[0],this.vertices[m+1]=c.coords[1],o>2&&(this.vertices[m+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var p=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[p++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var d=l;d<r;++d)this.elements[p++]=-1;if(e===Ze.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[p++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-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,u=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[u++]=n,this.elements[u++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Cm),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=Be.ODD),e===void 0&&(e=Ze.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_(),Vv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function go(i){var t=i.windingRule,e=t===void 0?Be.ODD:t,r=i.elementType,o=r===void 0?Ze.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,l=a===void 0?2:a,c=i.normal,u=c===void 0?[0,0,1]:c,m=i.contours,p=m===void 0?[]:m,d=i.strict,f=d===void 0?!0:d,g=i.debug,x=g===void 0?!1:g;if(!p&&f)throw new Error("Contours can't be empty");if(!!p){var y=new zv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<p.length;v++)y.addContour(l||2,p[v]);return y.tesselate(e,o,s,l,u,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var hM=Be.ODD,gM=Be.NONZERO,yM=Be.POSITIVE,xM=Be.NEGATIVE,vM=Be.ABS_GEQ_TWO,bM=Ze.POLYGONS,SM=Ze.CONNECTED_POLYGONS,wM=Ze.BOUNDARY_CONTOURS;var cn=class extends yo.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Be.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Be.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,u,m;for(let f=0,g=n.length/2;f<g;f++){let x=f*2,y=n[x+0],v=n[x+1];if(u!==void 0&&y!==u&&(l=!1),m!==void 0&&v!==m&&(c=!1),u=y,m=v,!l&&!c)break}!l&&!c&&(a=go({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let p=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new yo.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new yo.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new yo.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new yo.BufferAttribute(new Uint32Array(d*3),1),a){let f=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,b=p;S<b;S++){let B=S*2,w=a.vertices[B+0],h=a.vertices[B+1];w<f&&(f=w),w>g&&(g=w),h<x&&(x=h),h>y&&(y=h)}let v=g-f,A=y-x;for(let S=0,b=p;S<b;S++){let B=S*2,w=a.vertices[B+0],h=a.vertices[B+1],_=(w-f)/v,N=(h-x)/A;this._positionAttribute.setXYZ(S,w,h,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,_,N)}for(let S=0,b=d;S<b;S++){let B=S*3,w=a.elements[B+0],h=a.elements[B+1],_=a.elements[B+2];this._indexAttribute.setX(B+0,w),this._indexAttribute.setX(B+1,h),this._indexAttribute.setX(B+2,_)}}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 cn(this._shape,this._curveSegments);return e.userData=Un(this.userData),e}};var xo=require("three");var Ks=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*Ks.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*Ks.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)}},ri=Ks;ri.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var vl=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),un=class extends xo.BufferGeometry{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(w=>{let h=w.extractShapePointsToFlatArray([],n),_=[];for(let N=h.length-1;N>=1;N-=2){let I=h[N-1],L=h[N-0];_.push(I,L)}return _}),c=go({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),u=go({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let m=c.elementCount;if(u){c.elementCount+=u.elementCount;for(let w=0;w<u.elements.length;w++){let h=u.elements[w],_=w%2===0?c.vertexCount:0;c.elements.push(h+_)}for(let w=0;w<u.vertexIndices.length;w++){let h=u.vertexIndices[w],_=c.vertexCount;c.vertexIndices.push(h+_)}for(let w=0;w<u.vertices.length;w++){let h=u.vertices[w];c.vertices.push(h)}}let p=1/0,d=-1/0,f=1/0,g=-1/0;for(let w=0,h=c.vertexCount;w<h;w++){let _=w*2,N=c.vertices[_+0],I=c.vertices[_+1];N<p&&(p=N),N>d&&(d=N),I<f&&(f=I),I>g&&(g=I)}this._minX=p,this._minY=f,this._width=d-p,this._height=g-f;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new ri(x);let y=[],v=[];for(let w=c.elementCount-1;w>=0;w--){let h=w>=m,_=w*2,N=c.elements[_+0],I=c.elements[_+1],L=N+I,P={start:N,count:I,normals:[],continuous:[],concave:[]},k=N,W=L-1,ne=N+1,ue=this._shape.roundedCurves.length;do{let V=k-N,E=c.vertices[W*2+0],D=c.vertices[W*2+1],M=c.vertices[k*2+0],G=c.vertices[k*2+1],Q=c.vertices[ne*2+0],j=c.vertices[ne*2+1],z=M-E,F=G-D,O=Math.sqrt(z*z+F*F);z/=O,F/=O;let q=M-Q,Z=G-j,ee=Math.sqrt(q*q+Z*Z);q/=ee,Z/=ee,P.normals[V*2+0]=-Z,P.normals[V*2+1]=q,P.concave[V]=z*Z-F*q>0;let H=c.vertexIndices[k];if(Array.isArray(H))P.continuous[V]=!1;else{let[J,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)P.continuous[V]=!0;else{let re=$===1?J+1:J-1;re=(re+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[J].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);P.continuous[V]=ie.dot(fe)>.95}}h&&(P.normals[V*2+0]*=-1,P.normals[V*2+1]*=-1),[W,k,ne]=[k,ne,ne+1],ne>=L&&(ne-=I)}while(ne!==N+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(N*2,L*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((V,E)=>[E,E]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(N*2,L*2)});for(let V=1;V<=this._bevelSegments;V++){let E=V/this._bevelSegments*Math.PI/2,D=(1-Math.cos(E))*this._bevelSize,M=[],G=[],Q=[],j=[],z=0;for(let O=0;O<I;O++){let q=O*2,Z=(O-1+I)%I*2,ee=c.vertices[P.start*2+q+0],H=c.vertices[P.start*2+q+1],J=-P.normals[Z+0]*D,$=-P.normals[Z+1]*D,re=-P.normals[q+0]*D,ce=-P.normals[q+1]*D;if(P.concave[O]||!P.concave[O]&&h){let ie=Math.atan2($,J),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Re=fe-ie;if(P.continuous[O]||h){let ge=ie+Re/2,qe=Math.cos(ge)*D,Ce=Math.sin(ge)*D;M[2*z+0]=ee+qe*(h?-1:1),M[2*z+1]=H+Ce*(h?-1:1),j[z]=O,z++}else{let ge=Math.max(1,Math.floor(n/4*Math.abs(Re)/Math.PI));for(let qe=0;qe<=ge;qe++){let Ce=ie+Re*(qe/ge),Tt=Math.cos(Ce)*D,zt=Math.sin(Ce)*D;M[2*z+0]=ee+Tt,M[2*z+1]=H+zt,j[z]=O,z++}}}else M[2*z+0]=ee+J,M[2*z+1]=H+$,j[z]=O,G[O]=z,z++,M[2*z+0]=ee,M[2*z+1]=H,j[z]=O,z++,M[2*z+0]=ee+re,M[2*z+1]=H+ce,j[z]=O,Q[O]=z,z++}let F=go({windingRule:Be.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[M],edgeCreateCallback:O=>{let Z=O.Org.idx,ee=j[Z],H=j[(Z+1)%j.length];O.idx=[ee,H],O.Sym.idx=[H,ee]},vertexIdCallback:O=>{let q=O.Lprev.idx;return[q?q[1]:0,O.idx[0]]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!F.vertexCount)break;for(let O=0;O<F.vertexIndices.length;O++){let[q,Z]=F.vertexIndices[O];if(q===Z)continue;let ee=Z;Z<q&&(ee+=I);for(let H=q;H<ee;H++){let J=H%I,$=(H+1)%I;if(!P.continuous[J]||!P.continuous[$]){F.vertexIndices[O]=[q,J],F.vertexIndices.splice(O+1,0,[$,Z]),F.vertices.splice((O+1)*2,0,F.vertices[O*2],F.vertices[O*2+1]);break}}}se.push({bevelI:V,angle:E,size:D,boundary:F,reverseMap:j,insetPoints:M})}let K=(V,E,D)=>{let M=0,G=V.boundary.vertexIndices.length;for(;M<G&&D(V.boundary.vertexIndices[E]);)E=(E+1)%G,M++;return M},U=y.length;for(let V=1;V<se.length;V++){let E=se[V-1],D=se[V],M=E.boundary.vertexIndices.length,G=D.boundary.vertexIndices.length;if(!M||!G)break;let Q=P.concave.length,j=0,z=vl(j,I);for(;!E.boundary.vertexIndices.filter(z).length||!D.boundary.vertexIndices.filter(z).length;)j++,z=vl(j,I);let F=E.boundary.vertexIndices.findIndex(z),O=D.boundary.vertexIndices.findIndex(z);do F=(F+1)%M;while(z(E.boundary.vertexIndices[F]));do O=(O+1)%G;while(z(D.boundary.vertexIndices[O]));j=(j+1)%I;let q=j,Z=this.buildBevelVert(P,E,(F-1+M)%M),ee=this.buildBevelVert(P,D,(O-1+G)%G),H=Z,J=ee,$,re,ce=!1;do{z=vl(j,I);let ie=K(E,F,z),fe=K(D,O,z),Re=ce;if(ce=!1,ie&&!fe){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(P,E,(F+ge)%M,ge/(ie-1)),y.push(H.topN,$.topP,J.topN),y.push($.bottomP,H.bottomN,J.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let ge=0;ge<fe;ge++)re=this.buildBevelVert(P,D,(O+ge)%G,ge/(fe-1)),y.push(J.topN,H.topP,re.topP),y.push(H.bottomP,J.bottomN,re.bottomP),J=re;else if(ie&&fe)if($=this.buildBevelVert(P,E,F,0),re=this.buildBevelVert(P,D,O,0),Re?(y.push(H.topN,re.topP,J.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,J.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(J.topN,H.topN,$.topP),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,J.bottomN),y.push($.bottomP,J.bottomN,re.bottomP)),H=$,J=re,ie===fe)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(P,E,(F+ge)%M,ge/(ie-1)),re=this.buildBevelVert(P,D,(O+ge)%G,ge/(fe-1)),y.push(H.topN,$.topP,J.topN),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,J.bottomN),y.push($.bottomP,J.bottomN,re.bottomP),H=$,J=re;else if(ie>fe){let ge=ie/fe,qe=0;for(let Ce=1;Ce<ie;Ce++)$=this.buildBevelVert(P,E,(F+Ce)%M,Ce/(ie-1)),y.push(H.topN,$.topP,J.topN),y.push($.bottomP,H.bottomN,J.bottomN),H=$,Ce>(qe+1)*ge&&(qe++,re=this.buildBevelVert(P,D,(O+qe)%G,qe/(fe-1)),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,J.bottomN,re.bottomP),J=re)}else{let ge=fe/ie,qe=0;for(let Ce=1;Ce<fe;Ce++)re=this.buildBevelVert(P,D,(O+Ce)%G,Ce/(fe-1)),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,J.bottomN,re.bottomP),J=re,Ce>(qe+1)*ge&&(qe++,$=this.buildBevelVert(P,E,(F+qe)%M,qe/(ie-1)),y.push(H.topN,$.topP,J.topN),y.push($.bottomP,H.bottomN,J.bottomN),H=$)}F=(F+ie)%M,O=(O+fe)%G,j=(j+1)%Q}while(j!==q)}{let V=se[0];for(let E=0,D=V.boundary.vertexCount;E<D;E++){let M=this.buildBevelVert(P,V,E),G=this.buildBevelVert(P,V,(E+1)%D);y.push(G.topP,M.topN,M.bottomN),y.push(G.topP,M.bottomN,G.bottomP)}}if(h){let V=[];for(let E=y.length-1;E>=U+2;E-=3){let D=y[E-2],M=y[E-1],G=y[E-0];V.push(G,M,D)}y.splice(U,y.length-U,...V)}if(h){let V=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let D=se[se.length-1].boundary.vertices[E-1],M=se[se.length-1].boundary.vertices[E-0];V.push(D,M)}v.push(V)}if(!h){let V=se[se.length-1],E=go({windingRule:se.length>1?Be.POSITIVE:Be.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let D=0;D<E.elementCount*3;D+=3){let M=this.buildSurfaceVert(E,E.elements[D+0]),G=this.buildSurfaceVert(E,E.elements[D+1]),Q=this.buildSurfaceVert(E,E.elements[D+2]);y.push(M.top,G.top,Q.top),y.push(Q.bottom,G.bottom,M.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new xo.BufferAttribute(Uint32Array.from(y),1),S=new xo.BufferAttribute(this._buffer.positions,3),b=new xo.BufferAttribute(this._buffer.normals,3),B=new xo.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,B.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",B),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),u=c*3,m=c*2,p={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=n,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this._depth,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[m+0]=a,this._buffer.uvs[m+1]=l,this._buffer.positions[u+3]=n,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=0,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[m+2]=a,this._buffer.uvs[m+3]=l,this.vertexCache[o]=p,p}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,u,m,p;a!==l?(u=a,c=l,p=!1,m=e.continuous[u]&&e.continuous[c]):(c=a,u=(c-1+e.count)%e.count,p=e.concave[c]&&r.bevelI>0,m=e.continuous[c]||p);let d=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,x=c*2,y=u*2,v=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],S=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,B=(A-this._minY)/this._height,w=e.normals[x+0],h=e.normals[x+1],_=e.normals[y+0],N=e.normals[y+1];if(p){let W=_-w,ne=N-h;w=w+W*(1-n),h=h+ne*(1-n);let ue=Math.sqrt(w*w+h*h);w/=ue,h/=ue}let I=this._buffer.get(m?2:4),L=I*3,P=I*2,k={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=A,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=w*d,this._buffer.normals[L+1]=h*d,this._buffer.normals[L+2]=f,this._buffer.uvs[P+0]=b,this._buffer.uvs[P+1]=B,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=A,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=w*d,this._buffer.normals[L+4]=h*d,this._buffer.normals[L+5]=-f,this._buffer.uvs[P+2]=B,this._buffer.uvs[P+3]=b,m||(I+=2,L+=6,P+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=A,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=_*d,this._buffer.normals[L+1]=N*d,this._buffer.normals[L+2]=f,this._buffer.uvs[P+0]=b,this._buffer.uvs[P+1]=B,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=A,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=_*d,this._buffer.normals[L+4]=N*d,this._buffer.normals[L+5]=-f,this._buffer.uvs[P+2]=B,this._buffer.uvs[P+3]=b),this.vertexCache[s]=k,k}clone(){let e=new un(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Un(this.userData),e}};var bt=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Le?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Le(r,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let l=s??new Le(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 cn(i.shape,o):s=new un(i.shape,t,e,o,r),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};var mn=require("three"),Mm=Math.PI*2,Om=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,m=e*.5,p=Fv(c,u,m,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let d=bt.create({shape:c,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...i,type:"EllipseGeometry"}})}};function Fv(i,t,e,r,o,n){if(r>=Mm)return o>30||o%4===0?(jv(i,t,e,n),Math.round(o/4)):Pm(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=Nm({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?Uv(i,s.x,s.y,c,o,t,e,n):Pm(i,r,o,t,e,n)}function Uv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(pn(t,e));for(let c=0,u=r.length;c<u;c++){let m=r[c],p=i.points[c],d=pn(m.x,m.y);p.controls[1].position.set(m.x1,m.y1),d.controls[0].position.set(m.x2,m.y2),i.addPoint(d)}return a>0?_m(i,n,s,a):i.addPoint(pn(0,0)),l}function Pm(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,u=Math.cos(l)*o;i.addPoint(pn(c,u))}return t<Mm?n>0?_m(i,r,o,n):i.addPoint(pn(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Dm(i,r,o,n)),1}function jv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Qs(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Qs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Qs(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Qs(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Dm(i,t,e,r)}function pn(i,t){return new Xt(mn.MathUtils.generateUUID(),new mn.Vector2(i,t))}function Qs(i,t,e,r,o,n){let s=pn(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function _m(i,t,e,r){Bm(i,t,e,r).forEach(n=>i.addPoint(n))}function Dm(i,t,e,r){let o=Bm(i,t,e,r),n=new Le;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Bm(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new mn.Vector2(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=mn.MathUtils.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),u=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),a}var Er=require("three"),Em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),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:u,cornerSegments:m}=i.parameters,p=new oi(!1,t,e,r,o,n,s,a,l,c,u,m);return Object.assign(p,{userData:{...i,type:"HelixGeometry"}})}},oi=class extends Er.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,n=1,s=1,a=1,l=1,c=1,u=1,m=1,p=1){super();let d=t&&s===1;d&&(p=0),m>100&&(m=100);let f=()=>new Er.Vector3,g=new Er.Vector3,x=f(),y=f(),v=f(),A,S,b,B,w,h,_,N,I=f(),L=f(),P=f(),k=f(),W=f(),ne=f(),ue=f(),se=f(),K=r-2*l+.001,U=K/s,V=Math.ceil(a*s),E=V+1,D=K/V,M=-K/2,G=u+1,Q=2*Math.PI/u,j=Math.PI/2/p,z=.01,F=Math.min((1-m/100)*l,l-z),O=l-F,q=0,Z=2,ee=p*Z+Z,H=G*ee/Z,J=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(je=>Array($*je).fill(0)),fe=[],Re=n-l;function ge(je,Dt){let nr=Math.PI/2;h=Dt*D,N=2*Math.PI*(h%U)/U+nr,h+=M,_=Math.sin(N)*Re,w=Math.cos(N)*Re,t?je.set(w,_,h):je.set(w,h,_)}ge(g,-1e-10),ge(x,0),I.copy(g),ge(g,1);let qe=g.distanceTo(x),Ce=O+F,Tt=qe*V+2*Ce,zt=F,Mo=Tt-Ce;for(let je=0;je<=V;je++){ge(y,je),se.subVectors(y,I).normalize(),I.copy(y),ne.copy(y).setComponent(+t+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Dt=je===0,nr=je===V,vf=Dt?3*Math.PI/2:j,bf=Dt?zt:Mo,Sf=Dt?G:J,wf=Dt?0:$-G,Tf=se.clone().multiplyScalar(Dt?-O:O).add(y),Nf=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Ir=0;Ir<G;Ir++){let uc=Ir*Q;if(L.addVectors(g.copy(ne).multiplyScalar(l*Math.cos(uc)),x.copy(ue).multiplyScalar(l*Math.sin(uc))),P.copy(L).normalize(),Dt||nr){d||(q=wf+Ir,[0,1,2].forEach(Nt=>{re[q*3+Nt]=Tf.getComponent(Nt),ce[q*3+Nt]=Nf.getComponent(Nt)}),ie[q*2]=+nr,ie[q*2+1]=Ir/u),x.copy(P).multiplyScalar(F),v.addVectors(y,x);for(let Nt=0;Nt<p;Nt++){let _a=Nt*j+vf;k.addVectors(g.copy(se).multiplyScalar(O*Math.sin(_a)),x.copy(P).multiplyScalar(O*Math.cos(_a))),W.copy(k).normalize(),x.addVectors(v,k),k.normalize(),q=Sf+Nt*G+Ir,[0,1,2].forEach(ji=>{re[q*3+ji]=x.getComponent(ji),ce[q*3+ji]=W.getComponent(ji)});let Cf=+Dt+Math.sin(_a);ie[q*2]=(bf+O*Cf)/Tt,ie[q*2+1]=Ir/u}}x.addVectors(y,L),q=H+je*G+Ir,[0,1,2].forEach(Nt=>{re[q*3+Nt]=x.getComponent(Nt),ce[q*3+Nt]=P.getComponent(Nt)}),ie[q*2]=(Ce+je*qe)/Tt,ie[q*2+1]=Ir/u}}let _t=E+2*p+Z,Oo=1,[Fi,Ui]=d?[Oo,Oo+E-1]:[0,_t-1];for(let je=Fi;je<=Ui-1;je++){let Dt=d&&je===Ui-1;for(let nr=0;nr<G-1;nr++)A=je*G+nr,S=A+1,b=(Dt?nr:A)+G,B=(Dt?nr+1:S)+G,je===0?fe.push(S,B,b):je===_t-2?fe.push(A,S,b):fe.push(A,S,b,S,B,b)}this.setIndex(fe),this.setAttribute("position",new Er.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Er.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Er.Float32BufferAttribute(ie,2))}};var Gm=require("three");var Rm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new ni(t*.5,n,s):new Gm.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},ni=class extends Kr{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 ni(t.radius,t.corner,t.cornerSides)}};var Js=require("three"),Vm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new Js.Shape;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 Js.LatheBufferGeometry(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};var mr=require("three");var Gr=require("three");var oe=require("three"),pr=new oe.Matrix4,bl=new oe.Object3D,Zs=new oe.Vector3,Jr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.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 oe.Matrix3().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.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 pr.makeRotationX(t),this.applyMatrix4(pr),this}rotateY(t){return pr.makeRotationY(t),this.applyMatrix4(pr),this}rotateZ(t){return pr.makeRotationZ(t),this.applyMatrix4(pr),this}translate(t,e,r){return pr.makeTranslation(t,e,r),this.applyMatrix4(pr),this}scale(t,e,r){return pr.makeScale(t,e,r),this.applyMatrix4(pr),this}lookAt(t){return bl.lookAt(t),bl.updateMatrix(),this.applyMatrix4(bl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<n.count;p++)e.vertices.push(new oe.Vector3().fromBufferAttribute(n,p)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,p));function u(p,d,f,g){let x=a===void 0?[]:[e.colors[p].clone(),e.colors[d].clone(),e.colors[f].clone()],y=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,p),new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,f)],v=new dn(p,d,f,y,x,g);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(l,p),new oe.Vector2().fromBufferAttribute(l,d),new oe.Vector2().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(c,p),new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,f)])}let m=t.groups;if(m.length>0)for(let p=0;p<m.length;p++){let d=m[p],f=d.start,g=d.count;for(let x=f,y=f+g;x<y;x+=3)r!==void 0?u(r.getX(x),r.getX(x+1),r.getX(x+2),d.materialIndex):u(x,x+1,x+2,d.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)u(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<n.count;p+=3)u(p,p+1,p+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(Zs).negate(),this.translate(Zs.x,Zs.y,Zs.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;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 oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=this.vertices[n.a],a=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,a),e.subVectors(s,a),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=this.vertices[a.a],c=this.vertices[a.b],u=this.vertices[a.c];r.subVectors(u,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 n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Jr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new oe.Vector3,u={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};n.push(c),s.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];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 oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,s=this.vertices,a=t.vertices,l=this.faces,c=t.faces,u=this.colors,m=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,d=a.length;p<d;p++){let g=a[p].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let p=0,d=m.length;p<d;p++)u.push(m[p].clone());for(let p=0,d=c.length;p<d;p++){let f=c[p],g,x,y=f.vertexNormals,v=f.vertexColors,A=new dn(f.a+n,f.b+n,f.c+n);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let S=0,b=y.length;S<b;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),A.vertexNormals.push(g);A.color.copy(f.color);for(let S=0,b=v.length;S<b;S++)x=v[S],A.vertexColors.push(x.clone());A.materialIndex=f.materialIndex+r,l.push(A)}for(let p=0,d=t.faceVertexUvs.length;p<d;p++){let f=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let g=0,x=f.length;g<x;g++){let y=f[g],v=[];for(let A=0,S=y.length;A<S;A++)v.push(y[A].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],m=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[m]===void 0?(e[m]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[m]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let m=[u.a,u.b,u.c];for(let p=0;p<3;p++)if(m[p]===m[(p+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 u=0,m=this.faceVertexUvs.length;u<m;u++)this.faceVertexUvs[u].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 oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let l=0;l<e;l++){let c=t[l]._id;s&&s.push(o[c]),a&&a.push(n[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 f=this.parameters;for(let g in f)f[g]!==void 0&&(t[g]=f[g]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let g=this.vertices[f];e.push(g.x,g.y,g.z)}let r=[],o=[],n={},s=[],a={},l=[],c={};for(let f=0;f<this.faces.length;f++){let g=this.faces[f],x=!0,y=!1,v=this.faceVertexUvs[0][f]!==void 0,A=g.normal.length()>0,S=g.vertexNormals.length>0,b=g.color.r!==1||g.color.g!==1||g.color.b!==1,B=g.vertexColors.length>0,w=0;if(w=u(w,0,0),w=u(w,1,x),w=u(w,2,y),w=u(w,3,v),w=u(w,4,A),w=u(w,5,S),w=u(w,6,b),w=u(w,7,B),r.push(w),r.push(g.a,g.b,g.c),r.push(g.materialIndex),v){let h=this.faceVertexUvs[0][f];r.push(d(h[0]),d(h[1]),d(h[2]))}if(A&&r.push(m(g.normal)),S){let h=g.vertexNormals;r.push(m(h[0]),m(h[1]),m(h[2]))}if(b&&r.push(p(g.color)),B){let h=g.vertexColors;r.push(p(h[0]),p(h[1]),p(h[2]))}}function u(f,g,x){return x?f|1<<g:f&~(1<<g)}function m(f){let g=f.x.toString()+f.y.toString()+f.z.toString();return n[g]!==void 0||(n[g]=o.length/3,o.push(f.x,f.y,f.z)),n[g]}function p(f){let g=f.r.toString()+f.g.toString()+f.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(f.getHex())),a[g]}function d(f){let g=f.x.toString()+f.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(f.x,f.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 Jr().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 p=0,d=e.length;p<d;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,d=r.length;p<d;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,d=o.length;p<d;p++)this.faces.push(o[p].clone());for(let p=0,d=t.faceVertexUvs.length;p<d;p++){let f=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let g=0,x=f.length;g<x;g++){let y=f[g],v=[];for(let A=0,S=y.length;A<S;A++){let b=y[A];v.push(b.clone())}this.faceVertexUvs[p].push(v)}}let n=t.morphTargets;for(let p=0,d=n.length;p<d;p++){let f={};if(f.name=n[p].name,n[p].vertices!==void 0){f.vertices=[];for(let g=0,x=n[p].vertices.length;g<x;g++)f.vertices.push(n[p].vertices[g].clone())}if(n[p].normals!==void 0){f.normals=[];for(let g=0,x=n[p].normals.length;g<x;g++)f.normals.push(n[p].normals[g].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let p=0,d=s.length;p<d;p++){let f={};if(s[p].vertexNormals!==void 0){f.vertexNormals=[];for(let g=0,x=s[p].vertexNormals.length;g<x;g++){let y=s[p].vertexNormals[g],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),f.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){f.faceNormals=[];for(let g=0,x=s[p].faceNormals.length;g<x;g++)f.faceNormals.push(s[p].faceNormals[g].clone())}this.morphNormals.push(f)}let a=t.skinWeights;for(let p=0,d=a.length;p<d;p++)this.skinWeights.push(a[p].clone());let l=t.skinIndices;for(let p=0,d=l.length;p<d;p++)this.skinIndices.push(l[p].clone());let c=t.lineDistances;for(let p=0,d=c.length;p<d;p++)this.lineDistances.push(c[p]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let m=t.boundingSphere;return m!==null&&(this.boundingSphere=m.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 Sl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],s=t.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],u=new oe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,n.push(u.copyVector3sArray(c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(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 oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),n=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",n.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new oe.Float32BufferAttribute(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}};Jr.prototype.isGeometry=!0;var Sl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,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 u=t.morphNormals,m=u.length,p;if(m>0){p=[];for(let y=0;y<m;y++)p[y]={name:u[y].name,data:[]};this.morphTargets.normal=p}let d=t.skinIndices,f=t.skinWeights,g=d.length===r.length,x=f.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 v=e[y];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!0){let b=o[0][y];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][y];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<l;b++){let B=a[b].vertices;c[b].data.push(B[v.a],B[v.b],B[v.c])}for(let b=0;b<m;b++){let B=u[b].vertexNormals[y];p[b].data.push(B.a,B.b,B.c)}g&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),x&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},dn=class{constructor(t,e,r,o,n,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new oe.Color,this.vertexColors=Array.isArray(n)?n:[],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 kv=["a","b","c"];function Hv(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function wl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Tl(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 u=e[s],m=e[a];c={a:u,b:m,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function Wv(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],Tl(s.a,s.b,i,r,s,e),Tl(s.b,s.c,i,r,s,e),Tl(s.c,s.a,i,r,s,e)}function ea(i,t,e,r,o){i.push(new dn(t,e,r,void 0,void 0,o))}function fn(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 Gr.BufferGeometry?t=new Jr().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 Gr.Vector3,r,o,n,s,a,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],m=u!==void 0&&u.length>0,p=[],d=new Map;Wv(l,c,p,d);let f=[],g,x,y,v,A,S,b;for(let z of Array.from(d.keys())){for(x=d.get(z),y=new Gr.Vector3,A=3/8,S=1/8,b=x.faces.length,b!=2&&(A=.5,S=0,b!=1),y.addVectors(x.a,x.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=x.faces[s],a=0;a<3&&(g=l[Hv(v,kv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=f.length,f.push(y)}let B,w,h,_,N,I,L,P=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],N=p[o].edges,r=N.length,r==3?B=3/16:r>3&&(B=3/(8*r)),w=1-r*Number(B),h=B,r<=2&&(r==2?(w=3/4,h=1/8):r==1||r==0),L=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)_=N[s],g=_.a!==I?_.a:_.b,e.add(g);e.multiplyScalar(Number(h)),L.add(e),P.push(L)}let k=P.concat(f),W=P.length,ne,ue,se,K=[],U=[],V,E,D,M,G=new Gr.Vector2,Q=new Gr.Vector2,j=new Gr.Vector2;for(o=0,n=c.length;o<n;o++)v=c[o],ne=Number(wl(v.a,v.b,d).newEdge)+W,ue=Number(wl(v.b,v.c,d).newEdge)+W,se=Number(wl(v.c,v.a,d).newEdge)+W,ea(K,ne,ue,se,v.materialIndex),ea(K,v.a,ne,se,v.materialIndex),ea(K,v.b,ue,ne,v.materialIndex),ea(K,v.c,se,ue,v.materialIndex),m&&(V=u[o],E=V[0],D=V[1],M=V[2],G.set(fn(E.x,D.x),fn(E.y,D.y)),Q.set(fn(D.x,M.x),fn(D.y,M.y)),j.set(fn(E.x,M.x),fn(E.y,M.y)),ta(U,G,Q,j),ta(U,E,G,j),ta(U,D,Q,G),ta(U,M,j,Q));t.vertices=k,t.faces=K,m&&(t.faceVertexUvs[0]=U)}};var et=new mr.Vector3,zm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),r={width:et.x,height:et.y,depth:et.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(t!==et.x||e!==et.y||r!==et.z)&&n.scale(et.x===0?1:t/et.x,et.y===0?1:e/et.y,et.z===0?1:r/et.z);let a=n.originalGeometry;return o>0?(a===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:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new mr.BufferGeometryLoader(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(n.parameters,{width:100,height:et.y*s,depth:et.z*s}),t(this.build(n))})}};var Fm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,l=i.shape,c=t*.5,u=e*.5,m=0,p=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let x=d*g,y=m+Math.sin(x)*c,v=p+Math.cos(x)*u;l.addPoint(l.createPoint(y,v))}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 f=bt.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...i,type:"PolygonGeometry"}})}};var ve=require("three"),Um=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=new Cl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function ii(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Nl(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 qv(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Cl=class extends ve.BufferGeometry{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=[],u=[],m=[],p=0,d=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),x=2*Math.PI/r,y=(r-2)*Math.PI/r,v=Math.PI-y,A=new ve.Vector3(0,-d,0),S=new ve.Vector3(0,d,0),b=new ve.Vector2(t,-d),B=new ve.Vector2(g,-d),w=new ve.Vector2(0,S.y).sub(B),h=new ve.Vector2(0,S.y).sub(b),_=new ve.Vector2(w.y,-w.x).normalize(),N=new ve.Vector2(h.y,-h.x).normalize(),L=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,L);let P;{let U=new ve.Vector3(_.x,_.y,0),V=new ve.Vector3(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);P=U.angleTo(V)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-P)/2),ne=new ve.Vector3;if(!n){c.push(A.x,A.y,A.z),u.push(0,-1,0),m.push(0,0);let U=p++,V=[],E=b.clone(),D=k/Math.cos(Math.PI/r);E.x-=D;for(let M=0;M<r;M++){let G=M/r*Math.PI*2+f,Q=new ve.Vector2(Math.sin(G),Math.cos(G));ii(E,Q,ne),c.push(ne.x,ne.y,ne.z),u.push(0,-1,0),m.push(0,0),V.push(p++)}for(let M=0;M<V.length;M++)l.push(V[M],U,V[(M+1)%V.length])}let ue=[];{let U=new ve.Vector3,V=new ve.Vector3,E=new ve.Vector3,D=new ve.Vector3,M=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<r;Q++){let j=Q/r*Math.PI*2+f,z=(Q+.5)/r*Math.PI*2+f,F=(Q+1)/r*Math.PI*2+f,O=new ve.Vector2(Math.sin(j),Math.cos(j)),q=new ve.Vector2(Math.sin(z),Math.cos(z)),Z=new ve.Vector2(Math.sin(F),Math.cos(F));ii(b,O,V),ii(b,Z,E),ii(_,q,U),Nl(S,V,E,W,W,D),c.push(D.x,D.y,D.z),Nl(V,S,E,W,k,M),c.push(M.x,M.y,M.z),Nl(E,V,S,k,W,G),c.push(G.x,G.y,G.z),u.push(U.x,U.y,U.z),u.push(U.x,U.y,U.z),u.push(U.x,U.y,U.z),m.push(0,0),m.push(0,0),m.push(0,0);let ee=p++,H=p++,J=p++;if(l.push(ee,H,J),s>0){{let ce=V.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),Re=A.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(M);se(ce,ge,Re,w.angle())}let $,re;{let ce=new ve.Vector3;ii(N,Z,ce);let ie=G.clone().add(D).multiplyScalar(.5);ie=qv(ie,E,S);let fe=G.clone().sub(D);[$,re]=se(ie,fe,ce,P,D.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new ve.Vector3(0,-1,0),Re=ie.clone().cross(fe);K(ce,ie,fe,Re)}ue.concat(re);{let ce=w.angle(),ie=Math.PI-ce,fe=S.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Re=new ve.Vector3,ge=[];for(let Ce=0;Ce<a;Ce++){let Tt=[],zt=Math.PI/2-ie*Ce/a,Mo=Math.cos(zt),_t=Math.sin(zt),Oo=z;for(let Fi=0;Fi<=Ce;Fi++){let Ui=Math.cos(Oo),je=Math.sin(Oo);U.x=Mo*je,U.y=_t,U.z=Mo*Ui,Re.copy(fe).addScaledVector(U,s),c.push(Re.x,Re.y,Re.z),u.push(U.x,U.y,U.z),m.push(0,0),Tt.push(p++),Oo+=Math.PI*2/Ce/r}ge.push(Tt)}re.reverse(),ge.push(re);let qe=ge.length-1;for(let Ce=0;Ce<qe;Ce++){let Tt=ge[Ce],zt=ge[Ce+1],Mo=Tt.length-1;l.push(zt[1],Tt[0],zt[0]);for(let _t=1;_t<=Mo;_t++)l.push(Tt[_t],Tt[_t-1],zt[_t]),l.push(zt[_t+1],Tt[_t],zt[_t])}}}}}this.setIndex(l),this.setAttribute("position",new ve.Float32BufferAttribute(c,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(u,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(m,2));function se(U,V,E,D,M){let G=-D/2,Q=(Math.PI-D)/2,j=V.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let z=new ve.Vector3,F=new ve.Vector3,O=1,q=p,Z=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*D;F.set(0,0,0),F.addScaledVector(j,Math.sin(H)),F.addScaledVector(E,Math.cos(H));for(let J=0;J<=O;J++){let $=J/O-.5;if(z.copy(U),z.addScaledVector(V,$),z.addScaledVector(F,s),M!=null){let re=Math.max(0,z.y-M);z.addScaledVector(V,-re/V.y)}c.push(z.x,z.y,z.z),u.push(F.x,F.y,F.z),m.push(0,0),J===0&&Z.push(p),p++}}for(let ee=0;ee<a;ee++)for(let H=0;H<O;H++){let J=q+H+(O+1)*ee,$=J+(O+1),re=$+1,ce=J+1;l.push(J,$,ce),l.push($,re,ce)}return[U.clone().addScaledVector(V,.5),Z]}function K(U,V,E,D){let M=Math.PI/2,G=h.angle()-M,Q=[],j=new ve.Vector3,z=new ve.Vector3;for(let O=0;O<=a;O++){let q=[],Z=O/a;for(let ee=0;ee<=O;ee++){let J=((O?ee/O:0)-.5)*v,$=Math.cos(J),re=Math.sin(J),ce=Math.atan(Math.tan(G)*$),ie=(M+ce)*Z,fe=Math.cos(ie),Re=Math.sin(ie);j.set(0,0,0),j.addScaledVector(V,Re*$),j.addScaledVector(E,fe),j.addScaledVector(D,Re*re),z.copy(U).addScaledVector(j,s),c.push(z.x,z.y,z.z),u.push(j.x,j.y,j.z),m.push(0,0),q.push(p++)}Q.push(q)}let F=Q.length-1;for(let O=0;O<F;O++){let q=Q[O],Z=Q[O+1],ee=q.length-1;l.push(q[0],Z[1],Z[0]);for(let H=1;H<=ee;H++)l.push(q[H-1],q[H],Z[H]),l.push(q[H],Z[H+1],Z[H])}}}};var jm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},m={x:c.x,y:c.y};function p(S,b,B){return b>e&&B>r?Math.min(S*e/b,S*r/B):b>e?S*e/b:B>r?S*r/B:S}let d=[];d[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,g=m.x,x=m.y,y=u.y;t.addPoint(t.createPoint(f,x)),t.addPoint(t.createPoint(g,x)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(v=!1);v&&(t.roundness=d[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=bt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:{...i,type:"RectangleGeometry"}})}};var km=require("three"),Hm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=i.parameters,u=new km.SphereBufferGeometry(.5*t,o,n,s,a,l,c);return u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};var Wm=require("three"),qm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Wm.PlaneBufferGeometry(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};var Zr=require("three"),$m=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Ll(t,e,r,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Ll=class extends Zr.BufferGeometry{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],u=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let m=[],p=Math.PI/2,d=(z=0,F=0,O=0)=>new Zr.Vector3(z,F,O),f=d(),g=d(),[x,y,v]=[e/2,t/2,r/2],A=-y,S=+y,[b,B,w]=[d(A,-x,+v),d(A,-x,-v),d(A,+x,-v)],h=(z,F=!1)=>Math.sin(z-Math.PI/(1+ +F)),_=(z,F=!1)=>Math.cos(z-Math.PI/(1+ +F));w.y=Math.sin(o)*e-x;let N=Math.cos(o)*e-v,I=b.z-u;o<=p?(w.z=Math.min(N,I),w.z==I&&(w.y-=(N-I)/Math.tan(p-o))):B.z=Math.min(B.z-N-v,b.z-u),f.subVectors(b,B),g.subVectors(w,B);let L=Math.min(f.length(),g.length())*n/100,P=L*Math.tan(o/2),k=L/Math.cos(o/2),W=f.clone().normalize().add(g.normalize()).setLength(k).add(B);f.set(0,h(o,!0),_(o,!0)),m.push([w,f.clone()]);let ne=(Math.PI-o)/s;for(let z=0;z<=s;z++){let F=p+o+z*ne;f.set(0,Math.sin(F)*P,Math.cos(F)*P),f.add(W),g.set(0,h(F),_(F)),m.push([f.clone(),g.clone()])}m.push([b,d(0,1,0)]);let ue=Math.sin(ne/2)*P*2,se=m.length-1,K=m[0][0].distanceTo(m[1][0]),U=m[se-1][0].distanceTo(m[se][0]),V=K+ue*s+U;m[0].push(1);for(let z=0;z<=s;z++)m[z+1].push(1-(K+z*ue)/V);m[se].push(0);let[E,D,M]=m[0],G,Q,j;for(let z=1;z<m.length;z++)[G,Q,j]=m[z],a.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,G.y,G.z),l.push(0,D.y,D.z,0,Q.y,Q.z,0,D.y,D.z,0,D.y,D.z,0,Q.y,Q.z,0,Q.y,Q.z),c.push(0,M,0,j,1,M,1,M,0,j,1,j),[E,D,M]=[G,Q,j];this.setAttribute("position",new Zr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Zr.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Zr.Float32BufferAttribute(c,2))}};var Xm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,m=t*.5,p=e*.5,d=0,f=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=m*r/100,v=p*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let b=g*S,B=d+Math.sin(b)*m,w=f+Math.cos(b)*p;u.addPoint(u.createPoint(B,w))}}else for(let S=0;S<o;S++){let b=d+Math.cos(x)*m,B=f+Math.sin(x)*p;u.addPoint(u.createPoint(b,B)),x+=g,b=d+Math.cos(x)*y,B=f+Math.sin(x)*v,S<=o,u.addPoint(u.createPoint(b,B)),x+=g}u.isClosed=!0;for(let S=0,b=u.points.length;S<b;S++)u.points[S].roundness=n;u.roundness=n,u.update();let A=bt.create({shape:u,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...i,type:"StarGeometry"}})}};var Ym=require("three"),oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new Ym.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};var Km=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=$v(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function $v(i,t,e,r,o,n,s,a,l,c,u){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new oi(!0,i,t,e,r,o,n,s,a,l,c,u)}var Qm=require("three"),Jm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let l=new Qm.TorusKnotBufferGeometry(a,e,r,o,n,s);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var Zm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,l=i.shape,c=t*.5,u=e*.5;a?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let p=0,d=l.points.length;p<d;p++)l.points[p].roundness=r;l.roundness=r,l.update();let m=bt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...i,type:"TriangleGeometry"}})}};var He=require("three");var Xv,na=new Promise(i=>{Xv=i});var _d=require("three");var no=require("three");var ya=require("three");var Pl=require("three");var ia=require("three");var Il=require("three");function Ye(i,t){return t.color(i)}var Al=i=>"isEntity"in i,dr=i=>"isAbstractMesh"in i,fr=i=>i!==null&&i.isBooleanMesh,ed=i=>i.objectType==="CombinedCamera";var Rr=i=>"objectHelper"in i;function Yv(i,t){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(t.hiddenMatrix??Wr.identity)),e&&(i.updateMatrix(),fr(i.parent)&&dr(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 Kv(i,t){Yv(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 td(i,t,e){Kv(i,t),t.color!==void 0&&(i.color=Ye(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Il.HemisphereLight)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Il.HemisphereLight)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&Rr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function rd(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 sa=i=>class extends i{hasEntityChild(){return this.children.some(e=>Al(e))}isDescendantOf(e){e instanceof ia.Object3D&&(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 ia.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Al(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}};var Fe=require("three");var hn=new Fe.Box3,hr=new Fe.Vector3,gr=new Fe.Vector3,gn=new Fe.Matrix4,nd=[new Fe.Vector3(-1,1,1),new Fe.Vector3(-1,-1,1),new Fe.Vector3(1,-1,1),new Fe.Vector3(1,1,1),new Fe.Vector3(-1,1,-1),new Fe.Vector3(-1,-1,-1),new Fe.Vector3(1,-1,-1),new Fe.Vector3(1,1,-1)],Qv=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],Jv=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function Zv(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 u=e;u<r;u++){let m=t.getX(u),p=t.getY(u),d=t.getZ(u);m<o&&(o=m),p<n&&(n=p),d<s&&(s=d),m>a&&(a=m),p>l&&(l=p),d>c&&(c=d)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var od=(i,t,e,r)=>{if(dr(i)){let o=i.geometry.userData.parameters,n=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?hr.copy(i.originalGeometry.boundingSphere.center):n!==void 0&&(Zv(hn,n,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:n.count),hn.getCenter(hr)),i.forceComputeSize?hn.getSize(gr).multiplyScalar(.5):gr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(Rr(i)&&r===!0){let o=i.geometryHelper.getAttribute("position");hn.setFromArray(o.array),hn.getCenter(hr),hn.getSize(gr).multiplyScalar(.5)}else hr.setScalar(0),gr.setScalar(0);gn.copy(t).multiply(i.matrixWorld),gr.x===0&&gr.y===0&&gr.z===0?e.push(new Fe.Vector3(hr.x,hr.y,hr.z).applyMatrix4(gn)):nd.forEach(o=>{e.push(o.clone().multiply(gr).add(hr).applyMatrix4(gn))})},si=class extends Fe.Box3{constructor(){super(...arguments);this.matrix=new Fe.Matrix4;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 Fe.Matrix4().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&&od(s,r,n,e.enableHelper===!0)}):od(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(gn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(gr).multiplyScalar(.5),this.getCenter(hr),gn.copy(this.matrix).setPosition(hr),this.vertices=nd.map(e=>e.clone().multiply(gr).applyMatrix4(gn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Qv.map(([e,r])=>new Fe.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Fe.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=Jv.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Yt=i=>"isEntity"in i,id=i=>"isAbstractMesh"in i,kt=i=>class extends sa(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Pl.Matrix4;this._singleBBox=new si;this._recursiveBBox=new si;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Yt(o)&&o.traverseEntity(n=>{Rr(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=>{Yt(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)Yt(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)}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)Yt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new Pl.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)Yt(n)&&n.hiddenMatrix.premultiply(r)}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 Ko(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 Ko(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}};var Ke=require("three");var sd=require("three"),Ml=class extends sd.Object3D{},aa=class extends Ml{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var vo=class extends Ke.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),n=.1;this.parameters=bs.defaultData(o.toArray(),n),uo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(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=new aa(this.object);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*Ke.MathUtils.DEG2RAD,n=r.end*Ke.MathUtils.DEG2RAD,s=o-n,a=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD),l;switch(r.axis){case"z":l=new Ke.Vector3(0,0,1);break;case"y":l=new Ke.Vector3(0,1,0);break;default:case"x":l=new Ke.Vector3(1,0,0);break}for(let[c,u]of this.children.entries()){u.scale.x=r.scale[0],u.scale.y=r.scale[1],u.scale.z=r.scale[2],u.position.setScalar(0);let m=s/e.count*c-o;switch(r.axis){case"x":u.rotation.set(0,m,0);break;case"y":u.rotation.set(0,0,m);break;case"z":u.rotation.set(m,0,0);break}u.translateOnAxis(l,r.radius),u.position.x+=r.position[0],u.position.y+=r.position[1],u.position.z+=r.position[2],r.alignment===!0?(u.rotation.x+=a.x,u.rotation.y+=a.y,u.rotation.z+=a.z):u.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD);for(let[n,s]of this.children.entries())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 Ke.Vector3(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 u=this.children[r++];u.scale.setScalar(1),u.rotation.set(0,0,0),u.position.x=o.size[0]*a-s.x,u.position.y=o.size[1]*l-s.y,u.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.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}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),uo(this.parameters,e),this.update(),this}};var ga=require("three");var Qt=require("three");var ai=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var ad=require("three"),st=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=ad.MathUtils.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,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}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof st&&(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}};var Ol=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}},tt=new Ol;var _l=require("three");var ld=require("three"),le=class extends st{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=ld.MathUtils.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,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var Me=class extends le{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,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))}};var rt=class extends Me{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof _l.Vector2?e:new _l.Vector2(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)}};var Dl=require("three");var pt=class extends Me{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Dl.Vector3?e:new Dl.Vector3(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)}};var Ht=class extends Me{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ut?e:new ut(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)}};var eb=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,cd=/[a-z_0-9]+/gi,X=class extends le{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 m=0;m<this.includes.length;m++)e.include(this.includes[m],this);for(let m in this.extensions)e.extensions[m]=!0;let u=[];for(;a=cd.exec(this.src);)u.push(a);for(let m=0;m<u.length;m++){let p=u[m],d=p[0],f=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&f&&tt.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=tt.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||tt.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+g+c.substring(p.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&tt.contains(g)&&e.include(tt.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??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=eb.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(cd);if(a){let l=0;for(;l<a.length;){let c=a[l++],u;c==="in"||c==="out"||c==="inout"?u=a[l++]:(u=c,c="");let m=a[l++];this.inputs.push({name:m,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var tb=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Bl=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Bl.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="",u=tb.exec(e);this.useDefine=s??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],a=u[2],c=u[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)}},Se=Bl;Se.PI="PI",Se.PI2="PI2",Se.RECIPROCAL_PI="RECIPROCAL_PI",Se.RECIPROCAL_PI2="RECIPROCAL_PI2",Se.LOG2="LOG2",Se.EPSILON="EPSILON";var rb=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
- )*?)}`,"gim"),ob=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),yn=class extends le{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=rb.exec(e);if(r){let o=r[2],n;for(;n=ob.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var xn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};tt.addKeyword("uv",function(){return new xn});tt.addKeyword("uv2",function(){return new xn(1)});var la=require("three");var bo=class extends le{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??bo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case la.LinearEncoding:return["Linear"];case la.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),s=bo.Nodes[this.method],a=e.include(s);if(a===bo.LINEAR_TO_LINEAR)return e.format(o,n,r);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=bo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=bo.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},St=bo;St.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
- `)),sRGBToLinear:new X(["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 X(["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
- `))},St.LINEAR_TO_LINEAR="LinearToLinear",St.SRGB_TO_LINEAR="sRGBToLinear",St.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends X{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};var ud=require("three"),At=class extends Me{constructor(e=new ud.Texture,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new xn,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){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},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new St(new Ne("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,r)}};var Y=class extends Me{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}};var li=class extends le{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,n,s){n=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let u=0;u<a.inputs.length;u++){let m=a.inputs[u],p=this.inputs[u]||this.inputs[m.name];c.push(p.build(e,e.getTypeByFormat(m.type)))}l+=c.join(", ")+" )"}return e.format(l,n,r)}};var El=class extends le{constructor(e,r,o=El.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)}},Pt=El;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Pe=class extends le{constructor(e,r=Pe.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 Pe.MIX:case Pe.CLAMP:case Pe.REFRACT:case Pe.SMOOTHSTEP:case Pe.FACEFORWARD:return 3;case Pe.MIN:case Pe.MAX:case Pe.MOD:case Pe.STEP:case Pe.REFLECT:case Pe.DISTANCE:case Pe.DOT:case Pe.CROSS:case Pe.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),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 Pe.LENGTH:case Pe.DISTANCE:case Pe.DOT:return"f";case Pe.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,u=this.getInputType(e),m=this.getType(e);switch(this.type=m,this.method){case Pe.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,r);case Pe.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,r);case Pe.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Pe.STEP:o=this.a.build(e,a===1?"f":u),n=this.b.build(e,u);break;case Pe.MIN:case Pe.MAX:case Pe.MOD:o=this.a.build(e,u),n=this.b.build(e,l===1?"f":u);break;case Pe.REFRACT:o=this.a.build(e,u),n=this.b.build(e,u),s=this.c.build(e,"f");break;case Pe.MIX:o=this.a.build(e,u),n=this.b.build(e,u),s=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(n=this.b.build(e,u)),this.c&&(s=this.c.build(e,u));break}let p=[];p.push(o),n&&p.push(n),s&&p.push(s);let d=this.getNumInputs(e);if(p.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",m,r)}},de=Pe;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 vn=class extends le{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let s=new li(vn.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new St(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new St(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new St(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new St(new Ne("","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 Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ne("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 li(vn.Nodes.roughnessToMip,[n]),a=new de(s,vn.Nodes.m0,vn.Nodes.cubeUV_maxMipLevel,de.CLAMP),l=new de(a,de.FLOOR),c=new de(a,de.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),m=this.bilinearCubeUV(e,this.value,o,new Pt(l,new Y(1).setReadonly(!0),Pt.ADD)),p=new de(u,m,c,de.MIX);return e.format(p.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)}},bn=vn;bn.Nodes=function(){let e=new yn(`struct TextureCubeUVData {
6
- vec4 tl;
7
- vec4 tr;
8
- vec4 br;
9
- vec4 bl;
10
- vec2 f;
11
- }`),r=new Se("float cubeUV_maxMipLevel 8.0",!0),o=new Se("float cubeUV_minMipLevel 4.0",!0),n=new Se("float cubeUV_maxTileSize 256.0",!0),s=new Se("float cubeUV_minTileSize 16.0",!0),a=new X(`float getFace(vec3 direction) {
12
- vec3 absDirection = abs(direction);
13
- float face = -1.0;
14
- if (absDirection.x > absDirection.z) {
15
- if (absDirection.x > absDirection.y)
16
- face = direction.x > 0.0 ? 0.0 : 3.0;
17
- else
18
- face = direction.y > 0.0 ? 1.0 : 4.0;
19
- } else {
20
- if (absDirection.z > absDirection.y)
21
- face = direction.z > 0.0 ? 2.0 : 5.0;
22
- else
23
- face = direction.y > 0.0 ? 1.0 : 4.0;
24
- }
25
- return face;
26
- }`);a.useKeywords=!1;let l=new X(`vec2 getUV(vec3 direction, float face) {
27
- vec2 uv;
28
- if (face == 0.0) {
29
- uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
30
- } else if (face == 1.0) {
31
- uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
32
- } else if (face == 2.0) {
33
- uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
34
- } else if (face == 3.0) {
35
- uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
36
- } else if (face == 4.0) {
37
- uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
38
- } else {
39
- uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
40
- }
41
- return 0.5 * (uv + 1.0);
42
- }`);l.useKeywords=!1;let c=new X(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
43
- float face = getFace(direction);
44
- float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
45
- mipInt = max(mipInt, cubeUV_minMipLevel);
46
- float faceSize = exp2(mipInt);
47
- float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
48
- vec2 uv = getUV(direction, face) * (faceSize - 1.0);
49
- vec2 f = fract(uv);
50
- uv += 0.5 - f;
51
- if (face > 2.0) {
52
- uv.y += faceSize;
53
- face -= 3.0;
54
- }
55
- uv.x += face * faceSize;
56
- if(mipInt < cubeUV_maxMipLevel){
57
- uv.y += 2.0 * cubeUV_maxTileSize;
58
- }
59
- uv.y += filterInt * 2.0 * cubeUV_minTileSize;
60
- uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
61
- uv *= texelSize;
62
- vec4 tl = texture2D(envMap, uv);
63
- uv.x += texelSize;
64
- vec4 tr = texture2D(envMap, uv);
65
- uv.y += texelSize;
66
- vec4 br = texture2D(envMap, uv);
67
- uv.x -= texelSize;
68
- vec4 bl = texture2D(envMap, uv);
69
- return TextureCubeUVData( tl, tr, br, bl, f );
70
- }`,[e,a,l,r,o,n,s]);c.useKeywords=!1;let u=new Se("float r0 1.0",!0),m=new Se("float v0 0.339",!0),p=new Se("float m0 -2.0",!0),d=new Se("float r1 0.8",!0),f=new Se("float v1 0.276",!0),g=new Se("float m1 -1.0",!0),x=new Se("float r4 0.4",!0),y=new Se("float v4 0.046",!0),v=new Se("float m4 2.0",!0),A=new Se("float r5 0.305",!0),S=new Se("float v5 0.016",!0),b=new Se("float m5 3.0",!0),B=new Se("float r6 0.21",!0),w=new Se("float v6 0.0038",!0),h=new Se("float m6 4.0",!0),_=[u,m,p,d,f,g,x,y,v,A,S,b,B,w,h],N=new X(`float roughnessToMip(float roughness) {
71
- float mip = 0.0;
72
- if (roughness >= r1) {
73
- mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
74
- } else if (roughness >= r4) {
75
- mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
76
- } else if (roughness >= r5) {
77
- mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
78
- } else if (roughness >= r6) {
79
- mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
80
- } else {
81
- mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
- }
83
- return mip;
84
- }`,_);return{bilinearCubeUV:c,roughnessToMip:N,m0:p,cubeUV_maxMipLevel:r}}();var So=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??So.VIEW}getShared(){return this.scope===So.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 So.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case So.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case So.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}},at=So;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";tt.addKeyword("viewNormal",function(){return new at(at.VIEW)});tt.addKeyword("localNormal",function(){return new at(at.NORMAL)});tt.addKeyword("worldNormal",function(){return new at(at.WORLD)});var yr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??yr.LOCAL}getType(){switch(this.scope){case yr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case yr.LOCAL:case yr.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case yr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case yr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case yr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case yr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}},Mt=yr;Mt.LOCAL="local",Mt.WORLD="world",Mt.VIEW="view",Mt.PROJECTION="projection";tt.addKeyword("position",function(){return new Mt});tt.addKeyword("worldPosition",function(){return new Mt(Mt.WORLD)});tt.addKeyword("viewPosition",function(){return new Mt(Mt.VIEW)});var Kt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Kt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Kt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case Kt.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new Mt(Mt.VIEW).build(e,"v3"),u=a?a.build(e,"f"):void 0,m=`reflect( -normalize( ${c} ), ${l} )`;u&&(m=`normalize( mix( ${m}, ${l}, ${u} * ${u} ) )`);let p=`inverseTransformDirection( ${m}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),n="reflectVec"):n=p;break}case Kt.CUBE:{let s=new Kt(Kt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case Kt.SPHERE:{let s=new Kt(Kt.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)}},xr=Kt;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var ca=class extends le{constructor(e=new At,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new bn(this.value,r??new xr(xr.VECTOR),o),this.irradianceNode=new bn(this.value,new at(at.WORLD),new Y(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))}};var pd=require("three");var ua=class extends Me{constructor(e=new pd.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new xr,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),n=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+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new St(new Ne("",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)}};var md=["x","y","z","w"],nb=["float","vec2","vec3","vec4"],ib={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},sb={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[]"},pa=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+`
85
- `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],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
- // NOTE: Include Spline's blending modes. This could be part of BlendNode
87
- #define SPE_BLENDING_NORMAL 0
88
- #define SPE_BLENDING_MULTIPLY 1
89
- #define SPE_BLENDING_SCREEN 2
90
- #define SPE_BLENDING_OVERLAY 3
91
-
92
- vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
93
- return mix( a, b, alpha );
94
- }
95
-
96
- vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
97
- return mix( a, a * b, alpha );
98
- }
99
-
100
- vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
101
- vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
102
- return mix( a, tmp, alpha );
103
- }
104
-
105
- vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
106
- vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
107
- return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
108
- }
109
-
110
- vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
111
- if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
112
- else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
113
- else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
114
- else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
115
- return vec3( 1.0 );
116
- }
117
- `,"#include <packing>","#include <common>"].join(`
118
- `),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
119
- `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
120
- accumAlpha += (1.0 - accumAlpha) * alpha;
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.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]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[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",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??"";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,u=this.getFormatByType(a);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?r+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
128
- `:r+=e+" "+u+" "+l+`;
129
- `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof st?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 ai({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 ai({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){let o;if(t=typeof t=="string"?tt.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof Se?o=this.includes.consts:t instanceof yn&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let s=n[t.name];if(s||(s=n[t.name]={node:t,deps:[]},n.push(s),s.src=t.build(this,"source")),t instanceof X&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[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 nb[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 Qt.CubeReflectionMapping:case Qt.CubeRefractionMapping:return new ua(r);case Qt.CubeUVReflectionMapping:return new ca(new At(r));default:return new At(r)}else{if(r.isVector2)return new rt(r);if(r.isVector3)return new pt(r);if(r.isVector4)return new Ht(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 ib[t]||t}getFormatByType(t){return sb[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return md[t]}getIndexByElement(t){return md.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=Qt.LinearEncoding,e===Qt.LinearEncoding&&this.context.gamma&&(e=Qt.sRGBEncoding),e}};var we=require("three");var Ie=class extends Me{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof ut?e:new ut(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??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,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)}};var ye=class extends Me{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,r)}};var ma=require("three");var eo=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ie(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(ma.UniformsUtils.merge([ma.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1
+ var Vf=Object.create;var Hi=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Uf=Object.getOwnPropertyNames;var kf=Object.getPrototypeOf,jf=Object.prototype.hasOwnProperty;var yc=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),xc=(i,t)=>{for(var e in t)Hi(i,e,{get:t[e],enumerable:!0})},vc=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Uf(t))!jf.call(i,o)&&o!==e&&Hi(i,o,{get:()=>t[o],enumerable:!(r=zf(t,o))||r.enumerable});return i};var bc=(i,t,e)=>(e=i!=null?Vf(kf(i)):{},vc(t||!i||!i.__esModule?Hi(e,"default",{value:i,enumerable:!0}):e,i)),Hf=i=>vc(Hi({},"__esModule",{value:!0}),i);var tf=yc(Da=>{(function(){"use strict";var i=function(){this.init()};i.prototype={init:function(){var l=this||t;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var u=this||t;if(l=parseFloat(l),u.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.volume=h._volume*l)}return u}return u._volume},mute:function(l){var u=this||t;u.ctx||p(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return u},stop:function(){for(var l=this||t,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||t,u=l._howls.length-1;u>=0;u--)l._howls[u].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,p()),l},codecs:function(l){return(this||t)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||t;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var u=new Audio;u.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),m=l._navigator?l._navigator.userAgent:"",f=m.match(/OPR\/([0-6].)/g),h=f&&parseInt(f[0].split("/")[1],10)<33,g=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,x=m.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return l._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||t;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var u=function(d){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var m=new Audio;m._unlocked=!0,l._releaseHtml5Audio(m)}catch{l.noAudio=!0;break}for(var f=0;f<l._howls.length;f++)if(!l._howls[f]._webAudio)for(var h=l._howls[f]._getSoundIds(),g=0;g<h.length;g++){var x=l._howls[f]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}l._autoResume();var v=l.ctx.createBufferSource();v.buffer=l._scratchBuffer,v.connect(l.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),v.onended=function(){v.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<l._howls.length;A++)l._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),l}},_obtainHtml5Audio:function(){var l=this||t;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var u=this||t;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var d=0;d<l._howls[u]._sounds.length;d++)if(!l._howls[u]._sounds[d]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var m=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(m,m)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!t.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var u=0;u<l._howls.length;u++)l._howls[u]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var t=new i,e=function(l){var u=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(l)};e.prototype={init:function(l){var u=this;return t.ctx||p(),u._autoplay=l.autoplay||!1,u._format=typeof l.format!="string"?l.format:[l.format],u._html5=l.html5||!1,u._muted=l.mute||!1,u._loop=l.loop||!1,u._pool=l.pool||5,u._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,u._rate=l.rate||1,u._sprite=l.sprite||{},u._src=typeof l.src!="string"?l.src:[l.src],u._volume=l.volume!==void 0?l.volume:1,u._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=l.onend?[{fn:l.onend}]:[],u._onfade=l.onfade?[{fn:l.onfade}]:[],u._onload=l.onload?[{fn:l.onload}]:[],u._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],u._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],u._onpause=l.onpause?[{fn:l.onpause}]:[],u._onplay=l.onplay?[{fn:l.onplay}]:[],u._onstop=l.onstop?[{fn:l.onstop}]:[],u._onmute=l.onmute?[{fn:l.onmute}]:[],u._onvolume=l.onvolume?[{fn:l.onvolume}]:[],u._onrate=l.onrate?[{fn:l.onrate}]:[],u._onseek=l.onseek?[{fn:l.onseek}]:[],u._onunlock=l.onunlock?[{fn:l.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var l=this,u=null;if(t.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var d=0;d<l._src.length;d++){var m,f;if(l._format&&l._format[d])m=l._format[d];else{if(f=l._src[d],typeof f!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}m=/^data:audio\/([^;,]+);/i.exec(f),m||(m=/\.([^.]+)$/.exec(f.split("?",1)[0])),m&&(m=m[1].toLowerCase())}if(m||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),m&&t.codecs(m)){u=l._src[d];break}}if(!u){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=u,l._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new r(l),l._webAudio&&n(l),l},play:function(l,u){var d=this,m=null;if(typeof l=="number")m=l,l=null;else{if(typeof l=="string"&&d._state==="loaded"&&!d._sprite[l])return null;if(typeof l>"u"&&(l="__default",!d._playLock)){for(var f=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(f++,m=d._sounds[h]._id);f===1?l=null:m=null}}var g=m?d._soundById(m):d._inactiveSound();if(!g)return null;if(m&&!l&&(l=g._sprite||"__default"),d._state!=="loaded"){g._sprite=l,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(m&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[l][0]/1e3),A=Math.max(0,(d._sprite[l][0]+d._sprite[l][1])/1e3-v),_=A*1e3/Math.abs(g._rate),b=d._sprite[l][0]/1e3,D=(d._sprite[l][0]+d._sprite[l][1])/1e3;g._sprite=l,g._ended=!1;var S=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[l][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var I=function(){d._playLock=!1,S(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,v,86400):y.bufferSource.noteGrainOn(0,v,A):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,A),_!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?I():(d._playLock=!0,d.once("resume",I),d._clearTimer(g._id))}else{var T=function(){y.currentTime=v,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,S(),N.then(function(){d._playLock=!1,y._unlocked=!0,u?d._loadQueue():d._emit("play",g._id)}).catch(function(){d._playLock=!1,d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),g._ended=!0,g._paused=!0})):u||(d._playLock=!1,S(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(j){d._emit("playerror",g._id,j)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var L=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||L)T();else{d._playLock=!0,d._state="loading";var C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),d._clearTimer(g._id)}}return g._id},pause:function(l){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(l)}}),u;for(var d=u._getSoundIds(l),m=0;m<d.length;m++){u._clearTimer(d[m]);var f=u._soundById(d[m]);if(f&&!f._paused&&(f._seek=u.seek(d[m]),f._rateSeek=0,f._paused=!0,u._stopFade(d[m]),f._node))if(u._webAudio){if(!f._node.bufferSource)continue;typeof f._node.bufferSource.stop>"u"?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),u._cleanBuffer(f._node)}else(!isNaN(f._node.duration)||f._node.duration===1/0)&&f._node.pause();arguments[1]||u._emit("pause",f?f._id:null)}return u},stop:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(l)}}),d;for(var m=d._getSoundIds(l),f=0;f<m.length;f++){d._clearTimer(m[f]);var h=d._soundById(m[f]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(m[f]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(l,u)}}),d;if(typeof u>"u")if(typeof l=="boolean")d._muted=l;else return d._muted;for(var m=d._getSoundIds(u),f=0;f<m.length;f++){var h=d._soundById(m[f]);h&&(h._muted=l,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:l),d._emit("mute",h._id))}return d},volume:function(){var l=this,u=arguments,d,m;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,u)}}),l;typeof m>"u"&&(l._volume=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)g=l._soundById(m[x]),g&&(g._volume=d,u[2]||l._stopFade(m[x]),l._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),l._emit("volume",g._id))}else return g=m?l._soundById(m):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,m){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(l,u,d,m)}}),f;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),f.volume(l,m);for(var h=f._getSoundIds(m),g=0;g<h.length;g++){var x=f._soundById(h[g]);if(x){if(m||f._stopFade(h[g]),f._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=l,x._node.gain.setValueAtTime(l,v),x._node.gain.linearRampToValueAtTime(u,A)}f._startFadeInterval(x,l,u,d,h[g],typeof m>"u")}}return f},_startFadeInterval:function(l,u,d,m,f,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),_=Math.max(4,A>0?m/A:m),b=Date.now();l._fadeTo=d,l._interval=setInterval(function(){var D=(Date.now()-b)/m;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?l._volume=x:g.volume(x,l._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,g.volume(d,l._id),g._emit("fade",l._id))},_)},_stopFade:function(l){var u=this,d=u._soundById(l);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,l),d._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,d,m,f;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return f=l._soundById(parseInt(u[0],10)),f?f._loop:!1;else u.length===2&&(d=u[0],m=parseInt(u[1],10));for(var h=l._getSoundIds(m),g=0;g<h.length;g++)f=l._soundById(h[g]),f&&(f._loop=d,l._webAudio&&f._node&&f._node.bufferSource&&(f._node.bufferSource.loop=d,d&&(f._node.bufferSource.loopStart=f._start||0,f._node.bufferSource.loopEnd=f._stop,l.playing(h[g])&&(l.pause(h[g],!0),l.play(h[g],!0)))));return l},rate:function(){var l=this,u=arguments,d,m;if(u.length===0)m=l._sounds[0]._id;else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,u)}}),l;typeof m>"u"&&(l._rate=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)if(g=l._soundById(m[x]),g){l.playing(m[x])&&(g._rateSeek=l.seek(m[x]),g._playStart=l._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,l._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=l.seek(m[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,_=A*1e3/Math.abs(g._rate);(l._endTimers[m[x]]||!g._paused)&&(l._clearTimer(m[x]),l._endTimers[m[x]]=setTimeout(l._ended.bind(l,g),_)),l._emit("rate",g._id)}}else return g=l._soundById(m),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,m;if(u.length===0)l._sounds.length&&(m=l._sounds[0]._id);else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):l._sounds.length&&(m=l._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));if(typeof m>"u")return 0;if(typeof d=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var g=l._soundById(m);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(m);x&&l.pause(m,!0),g._seek=d,g._ended=!1,l._clearTimer(m),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(m,!0),l._emit("seek",m)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var _=l.playing(m)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+_*Math.abs(g._rate))}else return g._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var d=u._soundById(l);return d?!d._paused:!1}for(var m=0;m<u._sounds.length;m++)if(!u._sounds[m]._paused)return!0;return!1},duration:function(l){var u=this,d=u._duration,m=u._soundById(l);return m&&(d=u._sprite[m._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,d=0;d<u.length;d++)u[d]._paused||l.stop(u[d]._id),l._webAudio||(l._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,l._clearTimer(u[d]._id);var m=t._howls.indexOf(l);m>=0&&t._howls.splice(m,1);var f=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){f=!1;break}return o&&f&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,m){var f=this,h=f["_on"+l];return typeof u=="function"&&h.push(m?{id:d,fn:u,once:m}:{id:d,fn:u}),f},off:function(l,u,d){var m=this,f=m["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<f.length;h++){var g=d===f[h].id;if(u===f[h].fn&&g||!u&&g){f.splice(h,1);break}}else if(l)m["_on"+l]=[];else{var x=Object.keys(m);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(m[x[h]])&&(m[x[h]]=[])}return m},once:function(l,u,d){var m=this;return m.on(l,u,d,1),m},_emit:function(l,u,d){for(var m=this,f=m["_on"+l],h=f.length-1;h>=0;h--)(!f[h].id||f[h].id===u||l==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(m,f[h].fn),0),f[h].once&&m.off(l,f[h].fn,f[h].id));return m._loadQueue(l),m},_loadQueue:function(l){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===l&&(u._queue.shift(),u._loadQueue()),l||d.action()}return u},_ended:function(l){var u=this,d=l._sprite;if(!u._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(u._ended.bind(u,l),100),u;var m=!!(l._loop||u._sprite[d][2]);if(u._emit("end",l._id),!u._webAudio&&m&&u.stop(l._id,!0).play(l._id),u._webAudio&&m){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=t.ctx.currentTime;var f=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),f)}return u._webAudio&&!m&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,u._clearTimer(l._id),u._cleanBuffer(l._node),t._autoSuspend()),!u._webAudio&&!m&&u.stop(l._id,!0),u},_clearTimer:function(l){var u=this;if(u._endTimers[l]){if(typeof u._endTimers[l]!="function")clearTimeout(u._endTimers[l]);else{var d=u._soundById(l);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,d=0;d<u._sounds.length;d++)if(l===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var l=this;l._drain();for(var u=0;u<l._sounds.length;u++)if(l._sounds[u]._ended)return l._sounds[u].reset();return new r(l)},_drain:function(){var l=this,u=l._pool,d=0,m=0;if(!(l._sounds.length<u)){for(m=0;m<l._sounds.length;m++)l._sounds[m]._ended&&d++;for(m=l._sounds.length-1;m>=0;m--){if(d<=u)return;l._sounds[m]._ended&&(l._webAudio&&l._sounds[m]._node&&l._sounds[m]._node.disconnect(0),l._sounds.splice(m,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],m=0;m<u._sounds.length;m++)d.push(u._sounds[m]._id);return d}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=t.ctx.createBufferSource(),l._node.bufferSource.buffer=o[u._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,t.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),d))try{l.bufferSource.buffer=t._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(l){this._parent=l,this.init()};r.prototype={init:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,d=t._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),l._node.gain.setValueAtTime(d,t.ctx.currentTime),l._node.paused=!0,l._node.connect(t.masterGain)):t.noAudio||(l._node=t._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(t._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=u._src,l._node.preload=u._preload===!0?"auto":u._preload,l._node.volume=d*t.volume(),l._node.load()),l},reset:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,u=l._parent;u._duration=Math.ceil(l._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),l._node.removeEventListener(t._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,u=l._parent;u._duration===1/0&&(u._duration=Math.ceil(l._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},n=function(l){var u=l._src;if(o[u]){l._duration=o[u].duration,c(l);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),m=new Uint8Array(d.length),f=0;f<d.length;++f)m[f]=d.charCodeAt(f);a(m.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,u,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(g){h.setRequestHeader(g,l._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[u],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},m=function(f){f&&u._sounds.length>0?(o[u._src]=f,c(u,f)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(l).then(m).catch(d):t.ctx.decodeAudioData(l,m,d)},c=function(l,u){u&&!l._duration&&(l._duration=u.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(l&&d&&d<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Da<"u"&&(Da.Howler=t,Da.Howl=e),typeof global<"u"?(global.HowlerGlobal=i,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=i,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,n,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,n=typeof n!="number"?c[4]:n,s=typeof s!="number"?c[5]:s,typeof t=="number")a._orientation=[t,e,r,o,n,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(n,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(t,e,r,o,n,s);else return c;return a},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var n=r._getSoundIds(e),s=0;s<n.length;s++){var a=r._soundById(n[s]);if(a)if(typeof t=="number")a._stereo=t,a._pos=[t,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&i(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(t,0,0):a._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",a._id);else return a._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var n=this;if(!n._webAudio)return n;if(n._state!=="loaded")return n._queue.push({event:"pos",action:function(){n.pos(t,e,r,o)}}),n;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")n._pos=[t,e,r];else return n._pos;for(var s=n._getSoundIds(o),a=0;a<s.length;a++){var c=n._soundById(s[a]);if(c)if(typeof t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&i(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),n._emit("pos",c._id);else return c._pos}return n},Howl.prototype.orientation=function(t,e,r,o){var n=this;if(!n._webAudio)return n;if(n._state!=="loaded")return n._queue.push({event:"orientation",action:function(){n.orientation(t,e,r,o)}}),n;if(e=typeof e!="number"?n._orientation[1]:e,r=typeof r!="number"?n._orientation[2]:r,typeof o>"u")if(typeof t=="number")n._orientation=[t,e,r];else return n._orientation;for(var s=n._getSoundIds(o),a=0;a<s.length;a++){var c=n._soundById(s[a]);if(c)if(typeof t=="number")c._orientation=[t,e,r],c._node&&(c._panner||(c._pos||(c._pos=n._pos||[0,0,-.5]),i(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),n._emit("orientation",c._id);else return c._orientation}return n},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,n;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return n=t._soundById(parseInt(e[0],10)),n?n._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),a=0;a<s.length;a++)if(n=t._soundById(s[a]),n){var c=n._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=n._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.panningModel):(n._pos||(n._pos=t._pos||[0,0,-.5]),i(n,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var i=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var cf=yc((Ea,lf)=>{(function(i,t){typeof Ea=="object"&&typeof lf<"u"?t(Ea):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Ea,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,c,p,l,u,d,m,f,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var _=[],b=[],D=[],S=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(S).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var I,T=new Array(v).fill(0);for(y=0;y<A;y++)for(s=0;s<v;s++)b[y][s]=t[y][s];for(y=0;y<v;y++){for(_[y]=d,f=0,c=y+1,s=y;s<A;s++)f+=Math.pow(b[s][y],2);if(f<n)d=0;else for(m=(u=b[y][y])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y]=u-d,s=c;s<v;s++){for(f=0,a=y;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,f=0,s=c;s<v;s++)f+=Math.pow(b[y][s],2);if(f<n)d=0;else{for(m=(u=b[y][y+1])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y+1]=u-d,s=c;s<v;s++)_[s]=b[y][s]/m;for(s=c;s<A;s++){for(f=0,a=c;a<v;a++)f+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+f*_[a]}}h<(g=Math.abs(T[y])+Math.abs(_[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(m=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/m;for(s=c;s<v;s++){for(f=0,a=c;a<v;a++)f+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+f*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=_[y],c=y}if(e){if(e==="f")for(y=v;y<A;y++){for(s=v;s<A;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=T[y],s=c;s<S;s++)b[y][s]=0;if(d!==0){for(m=b[y][y]*d,s=c;s<S;s++){for(f=0,a=c;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,a=v-1;0<=a;a--)for(var L=0;L<50;L++){for(I=!1,c=a;0<=c;c--){if(Math.abs(_[c])<=o){I=!0;break}if(Math.abs(T[c-1])<=o)break}if(!I){for(l=0,p=c-(f=1),y=c;y<a+1&&(u=f*_[y],_[y]=l*_[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(m=T[y]),f=-u/m,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*f,b[s][y]=-g*f+x*l}if(x=T[a],c===a){if(x<0&&(T[a]=-x,r))for(s=0;s<v;s++)D[s][a]=-D[s][a];break}for(h=T[c],u=(((g=T[a-1])-x)*(g+x)+((d=_[a-1])-(m=_[a]))*(d+m))/(2*m*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+m*(g/(u<0?u-d:u+d)-m))/h,y=c+(f=l=1);y<a+1;y++){if(d=_[y],g=T[y],m=f*d,d*=l,x=Math.sqrt(u*u+m*m),u=h*(l=u/(_[y-1]=x))+d*(f=m/x),d=-h*f+d*l,m=g*f,g*=l,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*l+x*f,D[s][y]=-h*f+x*l;if(x=Math.sqrt(u*u+m*m),u=(l=u/(T[y-1]=x))*d+(f=m/x)*g,h=-f*d+l*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*l+x*f,b[s][y]=-g*f+x*l}_[c]=0,_[a]=u,T[a]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var p_={};xc(p_,{default:()=>Ga});module.exports=Hf(p_);var Ra=require("three");function Wi(i,t){return Object.setPrototypeOf(i,t),i}function _c(i){return Array.isArray(i)?i:[i]}var Wf=typeof global=="object"&&global&&global.Object===Object&&global,qi=Wf;var qf=typeof self=="object"&&self&&self.Object===Object&&self,$f=qi||qf||Function("return this")(),$e=$f;var Xf=$e.Symbol,yt=Xf;var Sc=Object.prototype,Yf=Sc.hasOwnProperty,Kf=Sc.toString,Vn=yt?yt.toStringTag:void 0;function Qf(i){var t=Yf.call(i,Vn),e=i[Vn];try{i[Vn]=void 0;var r=!0}catch{}var o=Kf.call(i);return r&&(t?i[Vn]=e:delete i[Vn]),o}var wc=Qf;var Zf=Object.prototype,Jf=Zf.toString;function eh(i){return Jf.call(i)}var Tc=eh;var th="[object Null]",rh="[object Undefined]",Ac=yt?yt.toStringTag:void 0;function oh(i){return i==null?i===void 0?rh:th:Ac&&Ac in Object(i)?wc(i):Tc(i)}var Dt=oh;function nh(i){return i!=null&&typeof i=="object"}var dt=nh;var ih="[object Symbol]";function sh(i){return typeof i=="symbol"||dt(i)&&Dt(i)==ih}var Mo=sh;function ah(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 $i=ah;var lh=Array.isArray,Xe=lh;var ch=1/0,Cc=yt?yt.prototype:void 0,Nc=Cc?Cc.toString:void 0;function Oc(i){if(typeof i=="string")return i;if(Xe(i))return $i(i,Oc)+"";if(Mo(i))return Nc?Nc.call(i):"";var t=i+"";return t=="0"&&1/i==-ch?"-0":t}var Lc=Oc;function uh(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var mt=uh;function ph(i){return i}var Xi=ph;var dh="[object AsyncFunction]",mh="[object Function]",fh="[object GeneratorFunction]",hh="[object Proxy]";function gh(i){if(!mt(i))return!1;var t=Dt(i);return t==mh||t==fh||t==dh||t==hh}var Do=gh;var yh=$e["__core-js_shared__"],Yi=yh;var Ic=function(){var i=/[^.]+$/.exec(Yi&&Yi.keys&&Yi.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function xh(i){return!!Ic&&Ic in i}var Pc=xh;var vh=Function.prototype,bh=vh.toString;function _h(i){if(i!=null){try{return bh.call(i)}catch{}try{return i+""}catch{}}return""}var Or=_h;var Sh=/[\\^$.*+?()[\]{}|]/g,wh=/^\[object .+?Constructor\]$/,Th=Function.prototype,Ah=Object.prototype,Ch=Th.toString,Nh=Ah.hasOwnProperty,Oh=RegExp("^"+Ch.call(Nh).replace(Sh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Lh(i){if(!mt(i)||Pc(i))return!1;var t=Do(i)?Oh:wh;return t.test(Or(i))}var Mc=Lh;function Ih(i,t){return i?.[t]}var Dc=Ih;function Ph(i,t){var e=Dc(i,t);return Mc(e)?e:void 0}var Tt=Ph;var Mh=Tt($e,"WeakMap"),Ki=Mh;var Bc=Object.create,Dh=function(){function i(){}return function(t){if(!mt(t))return{};if(Bc)return Bc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Ec=Dh;function Bh(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 Gc=Bh;function Eh(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Qi=Eh;var Gh=800,Rh=16,Fh=Date.now;function Vh(i){var t=0,e=0;return function(){var r=Fh(),o=Rh-(r-e);if(e=r,o>0){if(++t>=Gh)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Rc=Vh;function zh(i){return function(){return i}}var Fc=zh;var Uh=function(){try{var i=Tt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Bo=Uh;var kh=Bo?function(i,t){return Bo(i,"toString",{configurable:!0,enumerable:!1,value:Fc(t),writable:!0})}:Xi,Vc=kh;var jh=Rc(Vc),Zi=jh;function Hh(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var zc=Hh;var Wh=9007199254740991,qh=/^(?:0|[1-9]\d*)$/;function $h(i,t){var e=typeof i;return t=t??Wh,!!t&&(e=="number"||e!="symbol"&&qh.test(i))&&i>-1&&i%1==0&&i<t}var Ji=$h;function Xh(i,t,e){t=="__proto__"&&Bo?Bo(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Eo=Xh;function Yh(i,t){return i===t||i!==i&&t!==t}var Vr=Yh;var Kh=Object.prototype,Qh=Kh.hasOwnProperty;function Zh(i,t,e){var r=i[t];(!(Qh.call(i,t)&&Vr(r,e))||e===void 0&&!(t in i))&&Eo(i,t,e)}var es=Zh;function Jh(i,t,e,r){var o=!e;e||(e={});for(var n=-1,s=t.length;++n<s;){var a=t[n],c=r?r(e[a],i[a],a,e,i):void 0;c===void 0&&(c=i[a]),o?Eo(e,a,c):es(e,a,c)}return e}var zt=Jh;var Uc=Math.max;function eg(i,t,e){return t=Uc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Uc(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),Gc(i,this,a)}}var ts=eg;function tg(i,t){return Zi(ts(i,t,Xi),i+"")}var kc=tg;var rg=9007199254740991;function og(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=rg}var rs=og;function ng(i){return i!=null&&rs(i.length)&&!Do(i)}var zr=ng;function ig(i,t,e){if(!mt(e))return!1;var r=typeof t;return(r=="number"?zr(e)&&Ji(t,e.length):r=="string"&&t in e)?Vr(e[t],i):!1}var jc=ig;function sg(i){return kc(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&&jc(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 Hc=sg;var ag=Object.prototype;function lg(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||ag;return i===e}var Go=lg;function cg(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Wc=cg;var ug="[object Arguments]";function pg(i){return dt(i)&&Dt(i)==ug}var Va=pg;var qc=Object.prototype,dg=qc.hasOwnProperty,mg=qc.propertyIsEnumerable,fg=Va(function(){return arguments}())?Va:function(i){return dt(i)&&dg.call(i,"callee")&&!mg.call(i,"callee")},uo=fg;function hg(){return!1}var $c=hg;var Kc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xc=Kc&&typeof module=="object"&&module&&!module.nodeType&&module,gg=Xc&&Xc.exports===Kc,Yc=gg?$e.Buffer:void 0,yg=Yc?Yc.isBuffer:void 0,xg=yg||$c,Ro=xg;var vg="[object Arguments]",bg="[object Array]",_g="[object Boolean]",Sg="[object Date]",wg="[object Error]",Tg="[object Function]",Ag="[object Map]",Cg="[object Number]",Ng="[object Object]",Og="[object RegExp]",Lg="[object Set]",Ig="[object String]",Pg="[object WeakMap]",Mg="[object ArrayBuffer]",Dg="[object DataView]",Bg="[object Float32Array]",Eg="[object Float64Array]",Gg="[object Int8Array]",Rg="[object Int16Array]",Fg="[object Int32Array]",Vg="[object Uint8Array]",zg="[object Uint8ClampedArray]",Ug="[object Uint16Array]",kg="[object Uint32Array]",Me={};Me[Bg]=Me[Eg]=Me[Gg]=Me[Rg]=Me[Fg]=Me[Vg]=Me[zg]=Me[Ug]=Me[kg]=!0;Me[vg]=Me[bg]=Me[Mg]=Me[_g]=Me[Dg]=Me[Sg]=Me[wg]=Me[Tg]=Me[Ag]=Me[Cg]=Me[Ng]=Me[Og]=Me[Lg]=Me[Ig]=Me[Pg]=!1;function jg(i){return dt(i)&&rs(i.length)&&!!Me[Dt(i)]}var Qc=jg;function Hg(i){return function(t){return i(t)}}var Fo=Hg;var Zc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zn=Zc&&typeof module=="object"&&module&&!module.nodeType&&module,Wg=zn&&zn.exports===Zc,za=Wg&&qi.process,qg=function(){try{var i=zn&&zn.require&&zn.require("util").types;return i||za&&za.binding&&za.binding("util")}catch{}}(),Lr=qg;var Jc=Lr&&Lr.isTypedArray,$g=Jc?Fo(Jc):Qc,os=$g;var Xg=Object.prototype,Yg=Xg.hasOwnProperty;function Kg(i,t){var e=Xe(i),r=!e&&uo(i),o=!e&&!r&&Ro(i),n=!e&&!r&&!o&&os(i),s=e||r||o||n,a=s?Wc(i.length,String):[],c=a.length;for(var p in i)(t||Yg.call(i,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||n&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Ji(p,c)))&&a.push(p);return a}var ns=Kg;function Qg(i,t){return function(e){return i(t(e))}}var is=Qg;var Zg=is(Object.keys,Object),eu=Zg;var Jg=Object.prototype,ey=Jg.hasOwnProperty;function ty(i){if(!Go(i))return eu(i);var t=[];for(var e in Object(i))ey.call(i,e)&&e!="constructor"&&t.push(e);return t}var tu=ty;function ry(i){return zr(i)?ns(i):tu(i)}var Vo=ry;function oy(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var ru=oy;var ny=Object.prototype,iy=ny.hasOwnProperty;function sy(i){if(!mt(i))return ru(i);var t=Go(i),e=[];for(var r in i)r=="constructor"&&(t||!iy.call(i,r))||e.push(r);return e}var ou=sy;function ay(i){return zr(i)?ns(i,!0):ou(i)}var nr=ay;var ly=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,cy=/^\w*$/;function uy(i,t){if(Xe(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Mo(i)?!0:cy.test(i)||!ly.test(i)||t!=null&&i in Object(t)}var nu=uy;var py=Tt(Object,"create"),Ir=py;function dy(){this.__data__=Ir?Ir(null):{},this.size=0}var iu=dy;function my(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var su=my;var fy="__lodash_hash_undefined__",hy=Object.prototype,gy=hy.hasOwnProperty;function yy(i){var t=this.__data__;if(Ir){var e=t[i];return e===fy?void 0:e}return gy.call(t,i)?t[i]:void 0}var au=yy;var xy=Object.prototype,vy=xy.hasOwnProperty;function by(i){var t=this.__data__;return Ir?t[i]!==void 0:vy.call(t,i)}var lu=by;var _y="__lodash_hash_undefined__";function Sy(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Ir&&t===void 0?_y:t,this}var cu=Sy;function zo(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])}}zo.prototype.clear=iu;zo.prototype.delete=su;zo.prototype.get=au;zo.prototype.has=lu;zo.prototype.set=cu;var Ua=zo;function wy(){this.__data__=[],this.size=0}var uu=wy;function Ty(i,t){for(var e=i.length;e--;)if(Vr(i[e][0],t))return e;return-1}var Ur=Ty;var Ay=Array.prototype,Cy=Ay.splice;function Ny(i){var t=this.__data__,e=Ur(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Cy.call(t,e,1),--this.size,!0}var pu=Ny;function Oy(i){var t=this.__data__,e=Ur(t,i);return e<0?void 0:t[e][1]}var du=Oy;function Ly(i){return Ur(this.__data__,i)>-1}var mu=Ly;function Iy(i,t){var e=this.__data__,r=Ur(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var fu=Iy;function Uo(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])}}Uo.prototype.clear=uu;Uo.prototype.delete=pu;Uo.prototype.get=du;Uo.prototype.has=mu;Uo.prototype.set=fu;var kr=Uo;var Py=Tt($e,"Map"),jr=Py;function My(){this.size=0,this.__data__={hash:new Ua,map:new(jr||kr),string:new Ua}}var hu=My;function Dy(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var gu=Dy;function By(i,t){var e=i.__data__;return gu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Hr=By;function Ey(i){var t=Hr(this,i).delete(i);return this.size-=t?1:0,t}var yu=Ey;function Gy(i){return Hr(this,i).get(i)}var xu=Gy;function Ry(i){return Hr(this,i).has(i)}var vu=Ry;function Fy(i,t){var e=Hr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var bu=Fy;function ko(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])}}ko.prototype.clear=hu;ko.prototype.delete=yu;ko.prototype.get=xu;ko.prototype.has=vu;ko.prototype.set=bu;var Un=ko;var Vy="Expected a function";function ka(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Vy);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(ka.Cache||Un),e}ka.Cache=Un;var _u=ka;var zy=500;function Uy(i){var t=_u(i,function(r){return e.size===zy&&e.clear(),r}),e=t.cache;return t}var Su=Uy;var ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,jy=/\\(\\)?/g,Hy=Su(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(ky,function(e,r,o,n){t.push(o?n.replace(jy,"$1"):r||e)}),t}),wu=Hy;function Wy(i){return i==null?"":Lc(i)}var Tu=Wy;function qy(i,t){return Xe(i)?i:nu(i,t)?[i]:wu(Tu(i))}var jo=qy;var $y=1/0;function Xy(i){if(typeof i=="string"||Mo(i))return i;var t=i+"";return t=="0"&&1/i==-$y?"-0":t}var ss=Xy;function Yy(i,t){t=jo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[ss(t[e++])];return e&&e==r?i:void 0}var Au=Yy;function Ky(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Ho=Ky;var Cu=yt?yt.isConcatSpreadable:void 0;function Qy(i){return Xe(i)||uo(i)||!!(Cu&&i&&i[Cu])}var Nu=Qy;function Ou(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Nu),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Ou(a,t-1,e,r,o):Ho(o,a):r||(o[o.length]=a)}return o}var Lu=Ou;function Zy(i){var t=i==null?0:i.length;return t?Lu(i,1):[]}var Iu=Zy;function Jy(i){return Zi(ts(i,void 0,Iu),i+"")}var Pu=Jy;var e0=is(Object.getPrototypeOf,Object),Wo=e0;var t0="[object Object]",r0=Function.prototype,o0=Object.prototype,Mu=r0.toString,n0=o0.hasOwnProperty,i0=Mu.call(Object);function s0(i){if(!dt(i)||Dt(i)!=t0)return!1;var t=Wo(i);if(t===null)return!0;var e=n0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Mu.call(e)==i0}var as=s0;function a0(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 Du=a0;function l0(){this.__data__=new kr,this.size=0}var Bu=l0;function c0(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Eu=c0;function u0(i){return this.__data__.get(i)}var Gu=u0;function p0(i){return this.__data__.has(i)}var Ru=p0;var d0=200;function m0(i,t){var e=this.__data__;if(e instanceof kr){var r=e.__data__;if(!jr||r.length<d0-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Un(r)}return e.set(i,t),this.size=e.size,this}var Fu=m0;function qo(i){var t=this.__data__=new kr(i);this.size=t.size}qo.prototype.clear=Bu;qo.prototype.delete=Eu;qo.prototype.get=Gu;qo.prototype.has=Ru;qo.prototype.set=Fu;var ls=qo;function f0(i,t){return i&&zt(t,Vo(t),i)}var Vu=f0;function h0(i,t){return i&&zt(t,nr(t),i)}var zu=h0;var Hu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Uu=Hu&&typeof module=="object"&&module&&!module.nodeType&&module,g0=Uu&&Uu.exports===Hu,ku=g0?$e.Buffer:void 0,ju=ku?ku.allocUnsafe:void 0;function y0(i,t){if(t)return i.slice();var e=i.length,r=ju?ju(e):new i.constructor(e);return i.copy(r),r}var cs=y0;function x0(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 Wu=x0;function v0(){return[]}var us=v0;var b0=Object.prototype,_0=b0.propertyIsEnumerable,qu=Object.getOwnPropertySymbols,S0=qu?function(i){return i==null?[]:(i=Object(i),Wu(qu(i),function(t){return _0.call(i,t)}))}:us,$o=S0;function w0(i,t){return zt(i,$o(i),t)}var $u=w0;var T0=Object.getOwnPropertySymbols,A0=T0?function(i){for(var t=[];i;)Ho(t,$o(i)),i=Wo(i);return t}:us,ps=A0;function C0(i,t){return zt(i,ps(i),t)}var Xu=C0;function N0(i,t,e){var r=t(i);return Xe(i)?r:Ho(r,e(i))}var ds=N0;function O0(i){return ds(i,Vo,$o)}var Yu=O0;function L0(i){return ds(i,nr,ps)}var ms=L0;var I0=Tt($e,"DataView"),fs=I0;var P0=Tt($e,"Promise"),hs=P0;var M0=Tt($e,"Set"),gs=M0;var Ku="[object Map]",D0="[object Object]",Qu="[object Promise]",Zu="[object Set]",Ju="[object WeakMap]",ep="[object DataView]",B0=Or(fs),E0=Or(jr),G0=Or(hs),R0=Or(gs),F0=Or(Ki),po=Dt;(fs&&po(new fs(new ArrayBuffer(1)))!=ep||jr&&po(new jr)!=Ku||hs&&po(hs.resolve())!=Qu||gs&&po(new gs)!=Zu||Ki&&po(new Ki)!=Ju)&&(po=function(i){var t=Dt(i),e=t==D0?i.constructor:void 0,r=e?Or(e):"";if(r)switch(r){case B0:return ep;case E0:return Ku;case G0:return Qu;case R0:return Zu;case F0:return Ju}return t});var Xo=po;var V0=Object.prototype,z0=V0.hasOwnProperty;function U0(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&z0.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var tp=U0;var k0=$e.Uint8Array,ja=k0;function j0(i){var t=new i.constructor(i.byteLength);return new ja(t).set(new ja(i)),t}var Yo=j0;function H0(i,t){var e=t?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var rp=H0;var W0=/\w*$/;function q0(i){var t=new i.constructor(i.source,W0.exec(i));return t.lastIndex=i.lastIndex,t}var op=q0;var np=yt?yt.prototype:void 0,ip=np?np.valueOf:void 0;function $0(i){return ip?Object(ip.call(i)):{}}var sp=$0;function X0(i,t){var e=t?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ys=X0;var Y0="[object Boolean]",K0="[object Date]",Q0="[object Map]",Z0="[object Number]",J0="[object RegExp]",ex="[object Set]",tx="[object String]",rx="[object Symbol]",ox="[object ArrayBuffer]",nx="[object DataView]",ix="[object Float32Array]",sx="[object Float64Array]",ax="[object Int8Array]",lx="[object Int16Array]",cx="[object Int32Array]",ux="[object Uint8Array]",px="[object Uint8ClampedArray]",dx="[object Uint16Array]",mx="[object Uint32Array]";function fx(i,t,e){var r=i.constructor;switch(t){case ox:return Yo(i);case Y0:case K0:return new r(+i);case nx:return rp(i,e);case ix:case sx:case ax:case lx:case cx:case ux:case px:case dx:case mx:return ys(i,e);case Q0:return new r;case Z0:case tx:return new r(i);case J0:return op(i);case ex:return new r;case rx:return sp(i)}}var ap=fx;function hx(i){return typeof i.constructor=="function"&&!Go(i)?Ec(Wo(i)):{}}var xs=hx;var gx="[object Map]";function yx(i){return dt(i)&&Xo(i)==gx}var lp=yx;var cp=Lr&&Lr.isMap,xx=cp?Fo(cp):lp,up=xx;var vx="[object Set]";function bx(i){return dt(i)&&Xo(i)==vx}var pp=bx;var dp=Lr&&Lr.isSet,_x=dp?Fo(dp):pp,mp=_x;var Sx=1,wx=2,Tx=4,fp="[object Arguments]",Ax="[object Array]",Cx="[object Boolean]",Nx="[object Date]",Ox="[object Error]",hp="[object Function]",Lx="[object GeneratorFunction]",Ix="[object Map]",Px="[object Number]",gp="[object Object]",Mx="[object RegExp]",Dx="[object Set]",Bx="[object String]",Ex="[object Symbol]",Gx="[object WeakMap]",Rx="[object ArrayBuffer]",Fx="[object DataView]",Vx="[object Float32Array]",zx="[object Float64Array]",Ux="[object Int8Array]",kx="[object Int16Array]",jx="[object Int32Array]",Hx="[object Uint8Array]",Wx="[object Uint8ClampedArray]",qx="[object Uint16Array]",$x="[object Uint32Array]",Pe={};Pe[fp]=Pe[Ax]=Pe[Rx]=Pe[Fx]=Pe[Cx]=Pe[Nx]=Pe[Vx]=Pe[zx]=Pe[Ux]=Pe[kx]=Pe[jx]=Pe[Ix]=Pe[Px]=Pe[gp]=Pe[Mx]=Pe[Dx]=Pe[Bx]=Pe[Ex]=Pe[Hx]=Pe[Wx]=Pe[qx]=Pe[$x]=!0;Pe[Ox]=Pe[hp]=Pe[Gx]=!1;function vs(i,t,e,r,o,n){var s,a=t&Sx,c=t&wx,p=t&Tx;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!mt(i))return i;var l=Xe(i);if(l){if(s=tp(i),!a)return Qi(i,s)}else{var u=Xo(i),d=u==hp||u==Lx;if(Ro(i))return cs(i,a);if(u==gp||u==fp||d&&!o){if(s=c||d?{}:xs(i),!a)return c?Xu(i,zu(s,i)):$u(i,Vu(s,i))}else{if(!Pe[u])return o?i:{};s=ap(i,u,a)}}n||(n=new ls);var m=n.get(i);if(m)return m;n.set(i,s),mp(i)?i.forEach(function(g){s.add(vs(g,t,e,g,i,n))}):up(i)&&i.forEach(function(g,x){s.set(x,vs(g,t,e,x,i,n))});var f=p?c?ms:Yu:c?nr:Vo,h=l?void 0:f(i);return zc(h||i,function(g,x){h&&(x=g,g=i[x]),es(s,x,vs(g,t,e,x,i,n))}),s}var bs=vs;var Xx=1,Yx=4;function Kx(i){return bs(i,Xx|Yx)}var kn=Kx;function Qx(i){return function(t,e,r){for(var o=-1,n=Object(t),s=r(t),a=s.length;a--;){var c=s[i?a:++o];if(e(n[c],c,n)===!1)break}return t}}var yp=Qx;var Zx=yp(),xp=Zx;function Jx(i,t,e){(e!==void 0&&!Vr(i[t],e)||e===void 0&&!(t in i))&&Eo(i,t,e)}var jn=Jx;function ev(i){return dt(i)&&zr(i)}var vp=ev;function tv(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var Hn=tv;function rv(i){return zt(i,nr(i))}var bp=rv;function ov(i,t,e,r,o,n,s){var a=Hn(i,e),c=Hn(t,e),p=s.get(c);if(p){jn(i,e,p);return}var l=n?n(a,c,e+"",i,t,s):void 0,u=l===void 0;if(u){var d=Xe(c),m=!d&&Ro(c),f=!d&&!m&&os(c);l=c,d||m||f?Xe(a)?l=a:vp(a)?l=Qi(a):m?(u=!1,l=cs(c,!0)):f?(u=!1,l=ys(c,!0)):l=[]:as(c)||uo(c)?(l=a,uo(a)?l=bp(a):(!mt(a)||Do(a))&&(l=xs(c))):u=!1}u&&(s.set(c,l),o(l,c,r,n,s),s.delete(c)),jn(i,e,l)}var _p=ov;function Sp(i,t,e,r,o){i!==t&&xp(t,function(n,s){if(o||(o=new ls),mt(n))_p(i,t,s,e,Sp,r,o);else{var a=r?r(Hn(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),jn(i,s,a)}},nr)}var wp=Sp;function nv(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Tp=nv;function iv(i,t){return t.length<2?i:Au(i,Du(t,0,-1))}var Ap=iv;var sv=Hc(function(i,t,e){wp(i,t,e)}),mo=sv;function av(i,t){return t=jo(t,i),i=Ap(i,t),i==null||delete i[ss(Tp(t))]}var Cp=av;function lv(i){return as(i)?void 0:i}var Np=lv;var cv=1,uv=2,pv=4,dv=Pu(function(i,t){var e={};if(i==null)return e;var r=!1;t=$i(t,function(n){return n=jo(n,i),r||(r=n.length>1),n}),zt(i,ms(i),e),r&&(e=bs(e,cv|uv|pv,Np));for(var o=t.length;o--;)Cp(e,t[o]);return e}),Ko=dv;var Qo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Qo||(Qo={}));var fo;(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})(fo||(fo={}));var Op;(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})(Op||(Op={}));var Zo;(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})(Zo||(Zo={}));var Lp;(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})(Lp||(Lp={}));var Wr;(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??o.identity}o.simplify=e;function r(n,s){let a=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let l=n[3]*s[c]+n[7]*s[c+1]+n[11]*s[c+2]+n[15];a[c]=(n[0]*s[c]+n[4]*s[c+1]+n[8]*s[c+2]+n[12])/l,a[c+1]=(n[1]*s[c]+n[5]*s[c+1]+n[9]*s[c+2]+n[13])/l,a[c+2]=(n[2]*s[c]+n[6]*s[c+1]+n[10]*s[c+2]+n[14])/l}return a}o.applyMatrix4=r})(Wr||(Wr={}));var Bt;(c=>{c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function n(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=n;function s(p,l){return p.r===l.r&&p.g===l.g&&p.b===l.b}c.equals=s;function a(p,l,u){return{r:p.r+(l.r-p.r)*u,g:p.g+(l.g-p.g)*u,b:p.b+(l.b-p.b)*u}}c.lerp=a})(Bt||(Bt={}));var Et;(s=>{s.white={...Bt.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,c){return{...Bt.fromHex(a),a:c}}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,c){return Bt.equals(a,c)&&a.a===c.a}s.equals=o;function n(a,c,p){return{r:a.r+(c.r-a.r)*p,g:a.g+(c.g-a.g)*p,b:a.b+(c.b-a.b)*p,a:a.a+(c.a-a.a)*p}}s.lerp=n})(Et||(Et={}));var _s;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(_s||(_s={}));var Ip;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ip||(Ip={}));var Pp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Pp||(Pp={}));var Ss;(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})(Ss||(Ss={}));var ke=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ke.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a={...e,[n]:s};return Object.setPrototypeOf(a,ke.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={...e};return Object.setPrototypeOf(n,ke.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Wn(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"&&Wn(r)}return Object.freeze(i)}function Mp(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 ws=class extends Error{};function ir(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 Ts(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 Dp(){return typeof process<"u"}function Bp(i,t){for(let e of i)t(e.id,e.data),Bp(e.children,t)}function Ep(i,t){t(i.id,i.data);for(let e of i.children)Ep(e,t)}var Ut=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ut.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Wn(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&&Ep(o,r)}}traverse(e){Bp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),s=this.childrenArray(n),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:r},this.modifyArrayBy(n,s)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let a=n,c=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let p=n.findIndex(l=>l.id===c);if(p<0)throw new Error;n=[...n],n[p]={...n[p],children:a}}Object.setPrototypeOf(n,Ut.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 c=r,p=this.childrenArray(c),l={fi:o,id:n,data:s,children:a};return p=[...p,l],p.sort((d,m)=>d.fi-m.fi),e.localIndex=p.indexOf(l),{data:this.modifyArrayBy(c,p),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(p=>p.id===r);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{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 ws("cyclic tree");m=this.parent(m)}}let s=this.parent(n);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(m=>m.id===n);c=[...c];let l=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((m,f)=>m.fi-f.fi),e.localIndex=c.indexOf(l),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:a,fi:d,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(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({...o,...n})}r.sort((o,n)=>Mp(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{...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 ir(0,o,o);{let s=n[0].fi;return ir(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(c=>c.fi>s.fi);if(a===void 0){let c=n[n.length-1].fi;return ir(c,c+o,o)}else return ir(s.fi,a.fi,o)}}};var As;(t=>{function i(e,r){if(Array.isArray(e)){let o=r.props,n={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");n[c]=s[p],s[p]=o[c],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){n[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(As||(As={}));var Ee=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ee.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Wn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,s=n.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ee.prototype);let r=e;return Dp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:n}=e,s=this,a={fi:r,id:o,data:n};return s=[...s,a],s.sort((p,l)=>p.fi-l.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(c=>c.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:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(l=>l.id===o);if(s===-1)return null;let a=n[s].fi,c={...n[s],fi:r};return n[s]=c,n.sort((l,u)=>l.fi-u.fi),e.localIndex=n.indexOf(c),{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 ir(0,r,r);{let n=o[0].fi;return ir(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 ir(a,a+r,r)}else return ir(n.fi,s.fi,r)}}};var Gp=Symbol(),Ns=Symbol(),Jo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Cs);){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[Ns];r&&r(),delete this._children[t]}}}},Wa=class extends Jo{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,As.runOp(this._current,t))}},qa=class extends Jo{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,ke.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Rp={get(i,t){if(t===Ns)return()=>{i._parent=null};if(t===Gp)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=Os(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]}}},mv={...Rp,set(i,t,e){let r={type:0,props:{[t]:Ya(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},fv={...Rp,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}},en=class extends Jo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ns]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=Os(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)}},tn=class extends Jo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ns]=()=>{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 n=e.get(t)?.data,s=Os(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&&Ls.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Cs=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 Os(i,t,e){return e instanceof Ut?new en(i,t,e):e instanceof Ee?new tn(i,t,e):e instanceof ke?new Proxy(new qa(i,t,e),fv):e!==null&&typeof e=="object"?Ts(e)?e:new Proxy(new Wa(i,t,e),mv):e}function $a(i){let t=new Cs(i);return[Os(t,"",i),t]}function Xa(i,t){let[e,r]=$a(i);return t(e),r.result()}function Ya(i){return i instanceof en||i instanceof tn?i._current:i!==null&&typeof i=="object"?i[Gp]:i}var Ls;(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 c={...n};return Object.keys(a).forEach(p=>{delete c[p]}),c}else return n}r.removeOverridden=t;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof Ut||o instanceof en)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Ee||o instanceof tn)&&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})(Ls||(Ls={}));var Is=class{},qn=class extends Is{constructor(e){super();this.id=e}},$n=class extends Is{constructor(e){super();this.data=e}};var Qa;try{Qa=new TextDecoder}catch{}var te,$r,w=0;var Wp=[],Za=Wp,Ja=0,At={},we,qr,kt=0,sr=0,Gt,Pr,xt=[],Oe,Fp={useRecords:!1,mapsAsObjects:!0},Xn=class{},tl=new Xn;tl.name="MessagePack 0xC1";var rn=!1,ar=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(te)return Kp(()=>(Ms(),this?this.unpack(t,e):ar.prototype.unpack.call(Fp,t,e)));$r=e>-1?e:t.length,w=0,Ja=0,sr=0,qr=null,Za=Wp,Gt=null,te=t;try{Oe=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=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 ar){if(At=this,this.structures)return we=this.structures,Ps();(!we||we.length>0)&&(we=[])}else At=Fp,(!we||we.length>0)&&(we=[]);return Ps()}unpackMultiple(t,e){let r,o=0;try{rn=!0;let n=t.length,s=this?this.unpack(t,n):Es.unpack(t,n);if(e){for(e(s);w<n;)if(o=w,e(Ps())===!1)return}else{for(r=[s];w<n;)o=w,r.push(Ps());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{rn=!1,Ms()}}_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 Ps(){try{if(!At.trusted&&!rn){let t=we.sharedLength||0;t<we.length&&(we.length=t)}let i=Fe();if(w==$r)we.restoreStructures&&Vp(),we=null,te=null,Pr&&(Pr=null);else if(w>$r){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!rn)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw we.restoreStructures&&Vp(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Vp(){for(let i in we.restoreStructures)we[i]=we.restoreStructures[i];we.restoreStructures=null}function Fe(){let i=te[w++];if(i<160)if(i<128){if(i<64)return i;{let t=we[i&63]||At.getStructures&&qp()[i&63];return t?(t.read||(t.read=rl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Xp()]=Fe();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Fe(),Fe());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Fe();return t}else if(i<192){let t=i-160;if(sr>=w)return qr.slice(w-kt,(w+=t)-kt);if(sr==0&&$r<140){let e=t<16?ol(t):$p(t);if(e!=null)return e}return el(t)}else{let t;switch(i){case 192:return null;case 193:return Gt?(t=Fe(),t>0?Gt[1].slice(Gt.position1,Gt.position1+=t):Gt[0].slice(Gt.position0,Gt.position0-=t)):tl;case 194:return!1;case 195:return!0;case 196:return Ka(te[w++]);case 197:return t=Oe.getUint16(w),w+=2,Ka(t);case 198:return t=Oe.getUint32(w),w+=4,Ka(t);case 199:return ho(te[w++]);case 200:return t=Oe.getUint16(w),w+=2,ho(t);case 201:return t=Oe.getUint32(w),w+=4,ho(t);case 202:if(t=Oe.getFloat32(w),At.useFloat32>2){let e=Bs[(te[w]&127)<<1|te[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=Oe.getFloat64(w),w+=8,t;case 204:return te[w++];case 205:return t=Oe.getUint16(w),w+=2,t;case 206:return t=Oe.getUint32(w),w+=4,t;case 207:return At.int64AsNumber?(t=Oe.getUint32(w)*4294967296,t+=Oe.getUint32(w+4)):t=Oe.getBigUint64(w),w+=8,t;case 208:return Oe.getInt8(w++);case 209:return t=Oe.getInt16(w),w+=2,t;case 210:return t=Oe.getInt32(w),w+=4,t;case 211:return At.int64AsNumber?(t=Oe.getInt32(w)*4294967296,t+=Oe.getUint32(w+4)):t=Oe.getBigInt64(w),w+=8,t;case 212:if(t=te[w++],t==114)return Hp(te[w++]&63);{let e=xt[t];if(e)return e.read?(w++,e.read(Fe())):e.noBuffer?(w++,e()):e(te.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=te[w],t==114?(w++,Hp(te[w++]&63,te[w++])):ho(2);case 214:return ho(4);case 215:return ho(8);case 216:return ho(16);case 217:return t=te[w++],sr>=w?qr.slice(w-kt,(w+=t)-kt):gv(t);case 218:return t=Oe.getUint16(w),w+=2,sr>=w?qr.slice(w-kt,(w+=t)-kt):yv(t);case 219:return t=Oe.getUint32(w),w+=4,sr>=w?qr.slice(w-kt,(w+=t)-kt):xv(t);case 220:return t=Oe.getUint16(w),w+=2,Up(t);case 221:return t=Oe.getUint32(w),w+=4,Up(t);case 222:return t=Oe.getUint16(w),w+=2,kp(t);case 223:return t=Oe.getUint32(w),w+=4,kp(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 hv=/^[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=>hv.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Fe);return i.highByte===0&&(i.read=zp(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Fe()}return r}return e.count=0,i.highByte===0?zp(t,e):e}var zp=(i,t)=>function(){let e=te[w++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=we[r]||qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=rl(o,i)),o.read()};function qp(){let i=Kp(()=>(te=null,At.getStructures()));return we=At._mergeStructures(i,we)}var el=Ds,gv=Ds,yv=Ds,xv=Ds;function Ds(i){let t;if(i<16&&(t=ol(i)))return t;if(i>64&&Qa)return Qa.decode(te.subarray(w,w+=i));let e=w+i,r=[];for(t="";w<e;){let o=te[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=te[w++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=te[w++]&63,s=te[w++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[w++]&63,s=te[w++]&63,a=te[w++]&63,c=(o&7)<<18|n<<12|s<<6|a;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=nt.apply(String,r),r.length=0)}return r.length>0&&(t+=nt.apply(String,r)),t}function Up(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Fe();return t}function kp(i){if(At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Xp()]=Fe();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Fe(),Fe());return t}}var nt=String.fromCharCode;function $p(i){let t=w,e=new Array(i);for(let r=0;r<i;r++){let o=te[w++];if((o&128)>0){w=t;return}e[r]=o}return nt.apply(String,e)}function ol(i){if(i<4)if(i<2){if(i===0)return"";{let t=te[w++];if((t&128)>1){w-=1;return}return nt(t)}}else{let t=te[w++],e=te[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(i<3)return nt(t,e);let r=te[w++];if((r&128)>0){w-=3;return}return nt(t,e,r)}else{let t=te[w++],e=te[w++],r=te[w++],o=te[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(i<6){if(i===4)return nt(t,e,r,o);{let n=te[w++];if((n&128)>0){w-=5;return}return nt(t,e,r,o,n)}}else if(i<8){let n=te[w++],s=te[w++];if((n&128)>0||(s&128)>0){w-=6;return}if(i<7)return nt(t,e,r,o,n,s);let a=te[w++];if((a&128)>0){w-=7;return}return nt(t,e,r,o,n,s,a)}else{let n=te[w++],s=te[w++],a=te[w++],c=te[w++];if((n&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){w-=8;return}if(i<10){if(i===8)return nt(t,e,r,o,n,s,a,c);{let p=te[w++];if((p&128)>0){w-=9;return}return nt(t,e,r,o,n,s,a,c,p)}}else if(i<12){let p=te[w++],l=te[w++];if((p&128)>0||(l&128)>0){w-=10;return}if(i<11)return nt(t,e,r,o,n,s,a,c,p,l);let u=te[w++];if((u&128)>0){w-=11;return}return nt(t,e,r,o,n,s,a,c,p,l,u)}else{let p=te[w++],l=te[w++],u=te[w++],d=te[w++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){w-=12;return}if(i<14){if(i===12)return nt(t,e,r,o,n,s,a,c,p,l,u,d);{let m=te[w++];if((m&128)>0){w-=13;return}return nt(t,e,r,o,n,s,a,c,p,l,u,d,m)}}else{let m=te[w++],f=te[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(i<15)return nt(t,e,r,o,n,s,a,c,p,l,u,d,m,f);let h=te[w++];if((h&128)>0){w-=15;return}return nt(t,e,r,o,n,s,a,c,p,l,u,d,m,f,h)}}}}}function Ka(i){return At.copyBuffers?Uint8Array.prototype.slice.call(te,w,w+=i):te.subarray(w,w+=i)}function ho(i){let t=te[w++];if(xt[t])return xt[t](te.subarray(w,w+=i));throw new Error("Unknown extension type "+t)}var jp=new Array(4096);function Xp(){let i=te[w++];if(i>=160&&i<192){if(i=i-160,sr>=w)return qr.slice(w-kt,(w+=i)-kt);if(!(sr==0&&$r<180))return el(i)}else return w--,Fe();let t=(i<<5^(i>1?Oe.getUint16(w):i>0?te[w]:0))&4095,e=jp[t],r=w,o=w+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Oe.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=te[r++],n!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],jp[t]=e,e.bytes=i;r<o;)n=Oe.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=te[r++],e.push(n);let a=i<16?ol(i):$p(i);return a!=null?e.string=a:e.string=el(i)}var Hp=(i,t)=>{var e=Fe();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=we[i];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[i]=o),we[i]=e,e.read=rl(e,r),e.read()},Yp=typeof self=="object"?self:global;xt[0]=()=>{};xt[0].noBuffer=!0;xt[101]=()=>{let i=Fe();return(Yp[i[0]]||Error)(i[1])};xt[105]=i=>{let t=Oe.getUint32(w-4);Pr||(Pr=new Map);let e=te[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Pr.set(t,o);let n=Fe();return o.used?Object.assign(r,n):(o.target=n,n)};xt[112]=i=>{let t=Oe.getUint32(w-4),e=Pr.get(t);return e.used=!0,e.target};xt[115]=()=>new Set(Fe());var nl=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");xt[116]=i=>{let t=i[0],e=nl[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Yp[e](Uint8Array.prototype.slice.call(i,1).buffer)};xt[120]=()=>{let i=Fe();return new RegExp(i[0],i[1])};xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=w;w+=t-4,Gt=[Fe(),Fe()],Gt.position0=0,Gt.position1=0;let r=w;w=e;try{return Fe()}finally{w=r}};xt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function Kp(i){let t=$r,e=w,r=Ja,o=kt,n=sr,s=qr,a=Za,c=Pr,p=Gt,l=new Uint8Array(te.slice(0,$r)),u=we,d=we.slice(0,we.length),m=At,f=rn,h=i();return $r=t,w=e,Ja=r,kt=o,sr=n,qr=s,Za=a,Pr=c,Gt=p,te=l,rn=f,we=u,we.splice(0,we.length,...d),At=m,Oe=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function Ms(){te=null,Pr=null,we=null}function Qp(i){i.unpack?xt[i.type]=i.unpack:xt[i.type]=i}var Bs=new Array(147);for(let i=0;i<256;i++)Bs[i]=+("1e"+Math.floor(45.15-i*.30103));var Es=new ar({useRecords:!1}),vv=Es.unpack,bv=Es.unpackMultiple,_v=Es.unpack,Gs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Sv=new Float32Array(1),kO=new Uint8Array(Sv.buffer,0,4);var Rs;try{Rs=new TextEncoder}catch{}var Fs,sl,Vs=typeof Buffer<"u",il=Vs?Buffer.allocUnsafeSlow:Uint8Array,td=Vs?Buffer:Uint8Array,Zp=Vs?4294967296:2144337920,R,je,O=0,lr,cr=null,wv=/[\u0080-\uFFFF]/,Yn=Symbol("record-id"),go=class extends ar{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,c=0,p=td.prototype.utf8Write?function(y,I,T){return R.utf8Write(y,I,T)}:Rs&&Rs.encodeInto?function(y,I){return Rs.encodeInto(y,R.subarray(I)).written}:!1,l=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=m>32||f+m>64,g=m+64,x=m+f+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,_=0;this.pack=this.encode=function(y,I){if(R||(R=new il(8192),je=new DataView(R.buffer,0,8192),O=0),lr=R.length-10,lr-O<2048?(R=new il(R.length),je=new DataView(R.buffer,0,R.length),lr=R.length-10,O=0):O=O+7&2147483640,r=O,a=l.structuredClone?new Map:null,l.bundleStrings?(cr=["",""],R[O++]=214,R[O++]=98,cr.position=O-r,O+=4):cr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>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<T;L++){let C=o[L];if(!C)continue;let N,j=o.transitions;for(let W=0,ne=C.length;W<ne;W++){let ue=C[W];N=j[ue],N||(N=j[ue]=Object.create(null)),j=N}j[Yn]=L+64}c=T}u||(o.nextId=T+64)}n&&(n=!1),s=o||[];try{if(b(y),cr){je.setUint32(cr.position+r,O-cr.position-r);let T=cr;cr=null,b(T[0]),b(T[1])}if(l.offset=O,a&&a.idsToInsert){O+=a.idsToInsert.length*6,O>lr&&S(O),l.offset=O;let T=Av(R.subarray(r,O),a.idsToInsert);return a=null,T}return I&od?(R.start=r,R.end=O,R):R.subarray(r,O)}finally{if(o){if(_<10&&_++,A>1e4)o.transitions=null,_=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,L=v.length;T<L;T++)v[T][Yn]=0;v=[]}if(n&&l.saveStructures){let T=o.sharedLength||m;o.length>T&&(o=o.slice(0,T));let L=R.subarray(r,O);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,L)}}I&Mv&&(O=r)}};let b=y=>{O>lr&&(R=S(O));var I=typeof y,T;if(I==="string"){let L=y.length;if(cr&&L>=8&&L<4096){let j=wv.test(y);cr[j?0:1]+=y,R[O++]=193,b(j?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let N=L*3;if(O+N>lr&&(R=S(O+N)),L<64||!p){let j,W,ne,ue=O+C;for(j=0;j<L;j++)W=y.charCodeAt(j),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=y.charCodeAt(j+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),j++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);T=ue-O-C}else T=p(y,O+C,N);T<32?R[O++]=160|T:T<256?(C<2&&R.copyWithin(O+2,O+1,O+1+T),R[O++]=217,R[O++]=T):T<65536?(C<3&&R.copyWithin(O+3,O+2,O+2+T),R[O++]=218,R[O++]=T>>8,R[O++]=T&255):(C<5&&R.copyWithin(O+5,O+3,O+3+T),R[O++]=219,je.setUint32(O,T),O+=4),O+=T}else if(I==="number")if(y>>>0===y)y<64?R[O++]=y:y<256?(R[O++]=204,R[O++]=y):y<65536?(R[O++]=205,R[O++]=y>>8,R[O++]=y&255):(R[O++]=206,je.setUint32(O,y),O+=4);else if(y>>0===y)y>=-32?R[O++]=256+y:y>=-128?(R[O++]=208,R[O++]=y+256):y>=-32768?(R[O++]=209,je.setInt16(O,y),O+=2):(R[O++]=210,je.setInt32(O,y),O+=4);else{let L;if((L=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[O++]=202,je.setFloat32(O,y);let C;if(L<4||(C=y*Bs[(R[O]&127)<<1|R[O+1]>>7])>>0===C){O+=4;return}else O--}R[O++]=203,je.setFloat64(O,y),O+=8}else if(I==="object")if(!y)R[O++]=192;else{if(a){let C=a.get(y);if(C){if(!C.id){let N=a.idsToInsert||(a.idsToInsert=[]);C.id=N.push(C)}R[O++]=214,R[O++]=112,je.setUint32(O,C.id),O+=4;return}else a.set(y,{offset:O-r})}let L=y.constructor;if(L===Object)D(y,!0);else if(L===Array){T=y.length,T<16?R[O++]=144|T:T<65536?(R[O++]=220,R[O++]=T>>8,R[O++]=T&255):(R[O++]=221,je.setUint32(O,T),O+=4);for(let C=0;C<T;C++)b(y[C])}else if(L===Map){T=y.size,T<16?R[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,je.setUint32(O,T),O+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=Fs.length;C<N;C++){let j=sl[C];if(y instanceof j){let W=Fs[C];if(W.write){W.type&&(R[O++]=212,R[O++]=W.type,R[O++]=0),b(W.write.call(this,y));return}let ne=R,ue=je,se=O;R=null;let K;try{K=W.pack.call(this,y,U=>(R=ne,ne=null,O+=U,O>lr&&S(O),{target:R,targetView:je,position:O-U}),b)}finally{ne&&(R=ne,je=ue,O=se,lr=R.length-10)}K&&(K.length+O>lr&&S(K.length+O),O=Tv(K,R,O,W.type));return}}D(y,!y.hasOwnProperty)}}else if(I==="boolean")R[O++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[O++]=211,je.setBigInt64(O,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[O++]=207,je.setBigUint64(O,y);else if(this.largeBigIntToFloat)R[O++]=203,je.setFloat64(O,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");O+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[O++]=192:(R[O++]=212,R[O++]=0,R[O++]=0);else if(I==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},D=this.useRecords===!1?this.variableMapSize?y=>{let I=Object.keys(y),T=I.length;T<16?R[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,je.setUint32(O,T),O+=4);let L;for(let C=0;C<T;C++)b(L=I[C]),b(y[L])}:(y,I)=>{R[O++]=222;let T=O-r;O+=2;let L=0;for(let C in y)(I||y.hasOwnProperty(C))&&(b(C),b(y[C]),L++);R[T+++r]=L>>8,R[T+r]=L&255}:y=>{let I=Object.keys(y),T,L=s.transitions||(s.transitions=Object.create(null)),C=0;for(let j=0,W=I.length;j<W;j++){let ne=I[j];T=L[ne],T||(T=L[ne]=Object.create(null),C++),L=T}let N=L[Yn];if(N)N>=96&&h?(R[O++]=((N-=96)&31)+96,R[O++]=N>>5):R[O++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let j=I.highByte=N>=96&&h?N-96>>5:-1;L[Yn]=N,s[N-64]=I,N<g?(I.isShared=!0,s.sharedLength=N-63,n=!0,j>=0?(R[O++]=(N&31)+96,R[O++]=j):R[O++]=N):(j>=0?(R[O++]=213,R[O++]=114,R[O++]=(N&31)+96,R[O++]=j):(R[O++]=212,R[O++]=114,R[O++]=N),C&&(A+=_*C),v.length>=f&&(v.shift()[Yn]=0),v.push(L),b(I))}for(let j=0,W=I.length;j<W;j++)b(y[I[j]])},S=y=>{let I;if(y>16777216){if(y-r>Zp)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Zp,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new il(I);return je=new DataView(T.buffer,0,I),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),O-=r,r=0,lr=T.length-10,R=T}}useBuffer(t){R=t,je=new DataView(R.buffer,R.byteOffset,R.byteLength),O=0}};sl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Xn];Fs=[{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?Jp(i,16,t):ed(Vs?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==td&&this.structuredClone?Jp(i,nl.indexOf(e.name),t):ed(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function Jp(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 ed(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 Tv(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 Av(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 yo(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),Fs.unshift(i)}Qp(i)}var rd=new go({useRecords:!1}),Cv=rd.pack,Nv=rd.pack;var{NEVER:Ov,ALWAYS:Lv,DECIMAL_ROUND:Iv,DECIMAL_FIT:Pv}=Gs,od=512,Mv=1024;var nd=new go({structuredClone:!0});yo({Class:ke.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ke.prototype),i}});yo({Class:Ee.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ee.prototype),i}});yo({Class:Ut.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ut.prototype),i}});yo({Class:qn.prototype.constructor,type:4,write(i){return i.id},read(i){return new qn(i)}});yo({Class:$n.prototype.constructor,type:5,write(i){return i.data},read(i){return new $n(i)}});function Dv(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function al(i){if(Ts(i))return i;if(Array.isArray(i))return i.map(al);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=al(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var zs;(r=>{function i(o){return nd.pack(o)}r.serialize=i;function t(o){return nd.unpack(o)}r.deserialize=t;function e(o){return Dv(i(al(o))).toString()}r.checksum=e})(zs||(zs={}));var Us;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Us||(Us={}));var ks;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Et.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ks||(ks={}));var ll;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(ll||(ll={}));var cl;(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})(cl||(cl={}));var js;(t=>t.defaultData={...cl.defaultData,...ll.defaultData,cloner:null,booleanExclude:null})(js||(js={}));var ul=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(ul||{}),pl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(pl||{}),dl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(dl||{}),Hs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Et.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Hs||(Hs={}));var Xr;(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},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:Bt.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:{...Bt.fromHex(6710886),a:1},colorB:{...Bt.fromHex(6710886),a:1},colorC:{...Bt.fromHex(16777215),a:1},colorD:{...Bt.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:Et.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Et.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Et.fromHexAndA(0,1),contourColor:Et.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Xr||(Xr={}));var Mr;(a=>{function i(c){return!c.layers.some(l=>{if(l.data.type==="texture"&&l.data.projection!==0||l.data.type==="depth"&&!l.data.isWorldSpace||l.data.type==="noise"||l.data.type==="displace")return!0})&&!e(c)}a.isMergable=i;function t(c){let p="";return c.layers.forEach(l=>{Object.entries(l.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(m=>p+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${d}`})}),p}a.getHash=t;function e(c){let p=0;for(let l of c.layers)"alpha"in l.data&&l.data.type!=="light"&&l.data.type!=="fresnel"&&(p+=(1-p)*l.data.alpha);return p<1}a.isTransparent=e;function r(){return{layers:new Ee}}a.defaultEmptyData=r;function o(c="layer1",p="layer2"){return n("phong",c,p)}a.defaultData=o;function n(c,p="layer1",l="layer2"){let u=new Ee;return u.push({fi:0,data:Xr.defaultData("light",c),id:p}),u.push({fi:1,data:Xr.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=n;function s(c,p="basic",l="layer1",u="layer2"){let d=Xr.defaultData("texture");Object.assign(d.texture,{image:c});let m=new Ee;return m.push({fi:0,data:d,id:l}),m.push({fi:1,data:Xr.defaultData("light",p),id:u}),{layers:m}}a.defaultTwoLayerTextureData=s})(Mr||(Mr={}));var on;(t=>{function i(){return{points:new Ee,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(on||(on={}));var Ws;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Ws||(Ws={}));var Kn;(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:on.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})(Kn||(Kn={}));var Qn;(o=>{o.identity={..._s.identity,hiddenMatrix:Wr.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?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Zo.isEqual(n.position,s.position)?null:s.position,rotation:Zo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Zo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Qn||(Qn={}));var Dr;(t=>t.defaultData={states:new Ee,events:new Ee,visible:!0,raycastLock:!1,...Qn.identity})(Dr||(Dr={}));var id;(t=>t.defaultData={type:"Empty",...Dr.defaultData})(id||(id={}));var qs;(t=>t.defaultData={type:"Mesh",...Dr.defaultData,...js.defaultData})(qs||(qs={}));var sd;(t=>t.defaultData={type:"TextFrame",...Dr.defaultData,...Hs.defaultData})(sd||(sd={}));var $s;(t=>t.defaultData={...Dr.defaultData,...Qn.identity,...fo.defaultData})($s||($s={}));var ad;(t=>{function i(e){return{...Dr.defaultData,...ks.defaultData(e)}}t.defaultData=i})(ad||(ad={}));var ld;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ee,events:new Ee,...fo.defaultData},r.defaultMeshObject={name:"Rectangle",...Dr.defaultData,...qs.defaultData,geometry:Kn.defaultData("RectangleGeometry"),material:Mr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Dr.defaultData,...qs.defaultData,geometry:Kn.defaultData("BooleanGeometry"),material:Mr.defaultTwoLayerData("phong","layer1","layer2")}))(ld||(ld={}));var cd;(e=>{function i(r,o){if(o===void 0)return r;let n={...r};return"material"in n&&"material"in o&&o.material&&(n.material=Xa(n.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&mo(p,c)}}).data),n.materials&&o.materials&&(n.materials=Xa(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let c=o.materials[a];if(typeof c!="string")for(let[p,l]of Object.entries(c.layers)){let u=s[a]?.layers?.data(p);u&&mo(u,l)}}}).data),n}e.patchMaterialState=i;function t(r,o){if(o===void 0)return r;let n={...r};if(Object.assign(n,Qn.merge(n,o)),Qo.is(r.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(r.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Us.is(r.type)){let s=o;s.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=Bt.clone(s.color))}return n}e.patch=t})(cd||(cd={}));var Bv={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},Ev={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Xs={CC0:Bv,Originals:Ev};var Ys;(c=>{let i=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let p={},l=0;for(let u of i)p[`image_${l}`]={data:u,name:`Image ${l}`,asset:!1},l++;l=0;for(let u of t)p[`matcap_${l}`]={data:u,name:`Matcap ${l}`,asset:!1},l++;return p}c.defaultImages=e;function r(){let p={};return p["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},p}c.defaultColors=r;function o(){let p={},l={...Xs.CC0,...Xs.Originals},u=0;for(let[d,m]of Object.entries(l)){let f=m.split("/").pop()??"unknown",h=m.split(".").pop(),g="";if(h==="mp3")g="audio/mpeg";else if(h==="wav")g="audio/wav";else continue;p[`audio_${u}`]={name:d,filename:f,data:m,mimeType:g,asset:!1,free:d in Xs.CC0},u++}return p}c.defaultAudios=o,c.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function s(){return{materials:new ke,images:new ke,colors:new ke,audios:new ke,penumbraSize:[.5,.5,.5]}}c.emptyData=s;function a(){return{materials:new ke,images:Wi(e(),ke.prototype),colors:Wi(r(),ke.prototype),audios:Wi(o(),ke.prototype),penumbraSize:new Array(5).fill(.5)}}c.defaultData=a})(Ys||(Ys={}));var Ks;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(Ks||(Ks={}));var ud=require("three"),ct=class extends ud.Color{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 md=require("three");var De=require("three"),dd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.parameters),r=e.width/2,o=e.radiusTop??r,n=e.radiusBottom??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(e.height??e.width),depth:Math.abs(e.depth??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:c,radiusTop:p,radiusBottom:l,cornerRadius:u,cornerSegments:d,hollow:m}=i.parameters,f;return u||m?f=new Zn(p,l,r,o,n,s,a,c*Math.PI/180,u,u,d,m):f=new De.CylinderBufferGeometry(p,l,r,o,n,s,a,c*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...i,type:"CylinderGeometry"}})}};function Yr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function pd(i){return new De.Vector2(i.y,-i.x)}var Zn=class extends De.BufferGeometry{constructor(t,e,r,o,n,s,a,c,p,l,u,d,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,c=c!==void 0?c:Math.PI*2,s&&(p=0,l=0);let f=[],h=[],g=[],x=[],v=0,A=r/2,_=new De.Vector3,b=new De.Vector3;m&&t==0&&(t=p),m&&e==0&&(e=l);let D=new De.Vector2(t,A),S=new De.Vector2(e,-A),y=null,I=null,T=null,L=null,C=D.clone().sub(S),N=0,j=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),j=t-N,W=e-N);let ne=D.clone();ne.x-=N;let ue=Math.PI-C.angle(),se=C.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-j)/E,C.length()/F),l=Math.min(l,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new De.Vector2(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(l>0){let z=l/U;I=S.clone().sub(new De.Vector2(z,-l)),S.add(C.clone().setLength(z)),d&&(L=I.clone(),L.x-=N-F*l,ne.sub(C.clone().setLength(z)))}C=D.clone().sub(S);let P=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+a,ee=new De.Vector2(Math.sin(J),Math.cos(J));L&&I?(Q(M,q,ee,ue,l,L,-1,!0),Q(M,q,ee,se,l,I,-1,!1)):I?(k(M,ee,I.x,0,-1),Q(M,q,ee,se,l,I,-1,!1)):s||k(M,ee,e,W,-1);let H=pd(C).normalize();if(Yr(H,ee,_),!P)for(let Z=0;Z<=n;Z++){let $=Z/n,re=C.clone().multiplyScalar($).add(S);Yr(re,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ue,p,y,1,!1),Q(M,q,ee,se,p,T,1,!0)):y?(Q(M,q,ee,ue,p,y,1,!1),k(M,ee,y.x,0,1)):s||k(M,ee,t,j,1),d&&!P){let Z=pd(C).multiplyScalar(-1).normalize();Yr(Z,ee,_);for(let $=0;$<=n;$++){let re=$/n,ce=C.clone().multiplyScalar(-re).add(ne);Yr(ce,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==n)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];f.push(q,J,H),(Z!=0||$!=0)&&f.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+c)),this.setIndex(f),this.setAttribute("position",new De.Float32BufferAttribute(h,3)),this.setAttribute("normal",new De.Float32BufferAttribute(g,3)),this.setAttribute("uv",new De.Float32BufferAttribute(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let ce=re/u,ie=Z<0?ce:1-ce;$&&(ie-=1),ie*=J;let fe=new De.Vector2(Math.sin(ie),Math.cos(ie)*Z),Re=fe.clone().multiplyScalar(ee).add(H);Yr(Re,q,b),h.push(b.x,b.y,b.z),Yr(fe,q,_),g.push(_.x,_.y,_.z),x.push(M,.5+b.y/r),z.push(v++)}}function k(z,M,q,J,ee){let H=new De.Vector3,Z=new De.Vector2,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),Yr(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new De.Vector2(Math.sin(q),Math.cos(q)),ee=new De.Vector2(-Math.cos(q),Math.sin(q)),H=new De.Vector3,Z=z<0?(ce,ie,fe)=>f.push(ce,ie,fe):(ce,ie,fe)=>f.push(ce,fe,ie),$=new De.Vector2((t+e+j+W)/4,0);Yr($,J,H),h.push(H.x,H.y,H.z),g.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let ce of M){let ie=h.slice(ce*3,ce*3+3);h.push(...ie),g.push(ee.x,0,ee.y);let fe=x.slice(ce*2,ce*2+2);x.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)Z(re,ce,ce+1);Z(re,v-1,re+1)}}};var fd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:l,cornerSegments:u}=i.parameters,d;return p>0||l>0||c<360?d=new Zn(0,t/2,r,o,n,s,a,c*Math.PI/180,p,l,u,0,!0):d=new md.ConeBufferGeometry(t/2,r,o,n,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...i,type:"ConeGeometry"}})}};var Ct=require("three"),hd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:c}=i.parameters,p;return a==0?p=new Ct.BoxBufferGeometry(t,e,r,o,n,s):p=new hl(t,e,r,o,n,s,a,c),Object.assign(p,{userData:{...i,type:"CubeGeometry"}})}},fl=Math.PI/2,hl=class extends Ct.BufferGeometry{constructor(t=1,e=1,r=1,o=1,n=1,s=1,a=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,t/2,e/2,r/2);let l=[],u=[],d=[],m=[],f=0,h=0;g("z","y","x",-1,-1,r,e,t,s,n,0),g("z","y","x",1,-1,r,e,-t,s,n,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,n,4),g("x","y","z",-1,-1,t,e,-r,o,n,5),a>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,n,0),x("y","x","z",1,-1,-1,e,t,r,n,1),x("y","x","z",1,1,1,e,t,r,n,1),x("y","x","z",-1,1,-1,e,t,r,n,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Ct.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Ct.Float32BufferAttribute(d,3)),this.setAttribute("uv",new Ct.Float32BufferAttribute(m,2));function g(A,_,b,D,S,y,I,T,L,C,N){let j=(y-2*a)/L,W=(I-2*a)/C,ne=y/2-a,ue=I/2-a,se=T/2,K=L+1,U=C+1,F=0,E=0,B=new Ct.Vector3;for(let P=0;P<U;P++){let G=P*W-ue;for(let Q=0;Q<K;Q++){let k=Q*j-ne;B[A]=k*D,B[_]=G*S,B[b]=se,u.push(B.x,B.y,B.z),B[A]=0,B[_]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),m.push(Q/L),m.push(1-P/C),F+=1}}for(let P=0;P<C;P++)for(let G=0;G<L;G++){let Q=f+G+K*P,k=f+G+K*(P+1),V=f+(G+1)+K*(P+1),z=f+(G+1)+K*P;l.push(Q,k,z),l.push(k,V,z),E+=6}p.addGroup(h,E,N),h+=E,f+=F}function x(A,_,b,D,S,y,I,T,L,C,N){let j=(I-2*a)/C,W=I/2-a,ne=T/2-a,ue=L/2,se=C+1,K=0,U=0,F=new Ct.Vector3,E=new Ct.Vector3;for(let B=0;B<c+1;B++){let P=B/c*fl,G=Math.sin(P)*a,Q=(1-Math.cos(P))*a,k=Math.sin(P),V=Math.cos(P);F[_]=(ne+G)*S,F[b]=(ue-Q)*y,E[A]=0,E[_]=k*Math.sign(F[_]),E[b]=V*Math.sign(F[b]);for(let z=0;z<se;z++){let M=z*j-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),m.push(z/C),m.push(0),K+=1}}for(let B=0;B<c;B++)for(let P=0;P<C;P++){let G=f+P+se*B,Q=f+P+se*(B+1),k=f+(P+1)+se*(B+1),V=f+(P+1)+se*B;l.push(G,Q,V),l.push(Q,k,V),U+=6}p.addGroup(h,U,N),h+=U,f+=K}function v(A,_,b){let D=new Ct.Vector3,S=new Ct.Vector3(t/2,e/2,r/2);S.subScalar(a);let y=[],I=A*_*b>0?(L,C,N)=>l.push(L,C,N):(L,C,N)=>l.push(L,N,C);for(let L=0;L<=c;L++){let C=[],N=fl*(1-L/c),j=Math.cos(N),W=Math.sin(N),ne=0;for(let ue=0;ue<=L;ue++){let se=Math.cos(ne),K=Math.sin(ne);D.x=j*se,D.y=W,D.z=j*K;let U=S.clone().addScaledVector(D,a);u.push(A*U.x,_*U.y,b*U.z),d.push(A*D.x,_*D.y,b*D.z),m.push(0,0),C.push(f++),ne+=fl/L}y.push(C)}let T=y.length-1;for(let L=0;L<T;L++){let C=y[L],N=y[L+1],j=C.length-1;I(C[0],N[1],N[0]);for(let W=1;W<=j;W++)I(C[W-1],C[W],N[W]),I(C[W],N[W+1],N[W])}}}};var Ve=require("three"),Kr=class extends Ve.BufferGeometry{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new Ve.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Ve.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Ve.Float32BufferAttribute(c,2));return;function l(){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 Ve.Vector3,h=f.clone(),g=new Ve.Triangle,x=n*o,v=o-x,A=s+1,_=new Ve.Vector3,b=(K,U)=>_.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),S=D(t.length/3,(K,U)=>new Ve.Vector3().fromArray(t,U*3).setLength(o)),y=[],I=1e6;for(let K=0;K<S.length;K++){let U=S[K],F=[],E,B,P,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],P=U.distanceToSquared(S[E]),G=Math.min(G,P),F.push([E,B,P])}G+=1e-6;let k=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,P]=F[V];let q=y[E]?.includes(K)==!0;P<=G&&k.push(E+ +q*I),V=F.findIndex(J=>J[0]==B)}y.push(k)}let T=[];{let K=0,U=0,F,E,B=m==3;for(let P=0;P<=s;P++){F=P*(P+1)/2,E=(P+1)*(P+2)/2;for(let G=0;G<s-P;G++)[K,U]=[F+G+P+2,E+G+P+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let L=f.clone(),C=f.clone(),N=f.clone(),j=f.clone(),W=f.clone(),ne=[],ue=D(S.length,()=>D(m,()=>f.clone()));for(let K=0;K<S.length;K++){f.copy(S[K]).normalize(),L.copy(f).multiplyScalar(v);let U=y[K];for(let k=0;k<U.length;k++){let V=U[k],z=U[(k+1)%m];g.setFromPointsAndIndices(S,K,V%I,z%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(L,ue[K][k])}let F=[],E=[],B=[],P=new Ve.Vector3;s==0&&[...ue[K]].reduce((k,V)=>k.add(V),P).multiplyScalar(1/m);for(let k=0;k<m;k++){let V=[],z=(k-1+m)%m,M=ue[K][z],q=ue[K][k];f.copy(M).sub(L),h.copy(q).sub(L);let J=L.angleTo(f),ee=f.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(P):C.copy(L).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],ce=Z[$+1];j.subVectors(re,L),W.subVectors(ce,L),N.crossVectors(j,W).normalize();for(let ie=0;ie<A;ie++){let fe=[J,ee][$]*ie/A;f.copy(j).applyAxisAngle(N,fe).add(L),F.push(f.clone()),$&&(b(f,L),V.push([ie==0?re:f.clone(),_.clone()]))}$&&(b(ce,L),V.push([ce,_.clone()]))}B.push(V)}ne.push(B);let G=2*A,Q=2;for(let k=0;k<m;k++){let V=G*k,z=G*((k+1)%m),M=[F[V]];for(let J=1;J<A;J++){j=F[V+J],W=F[z+J],M.push(j);for(let ee=1,H=J-Q+1;ee<=H;ee++)f.lerpVectors(j,W,ee/(H+1)),f.sub(L).setLength(E[k]).add(L),M.push(f.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[z+A]);let q=T.map(J=>M[J]);a.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,L),[_.x,_.y,_.z])).flat())}}let se=[];for(let K=0;K<y.length;K++)for(let U=0;U<m;U++){let F=y[K][U];if(F<I){let E=y[F].findIndex(G=>G%I==K),B=ne[K][U],P=ne[F][E];for(let G=0;G<A;G++){let Q=B[G],k=P[A-G],V=B[G+1],z=P[A-(G+1)];[Q,k,V,V,k,z].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}se.push(B[0][0],P[A][0],B[A][0],P[0][0])}}for(;se.length;){let K,U,F,E;[K,U]=se.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=se.indexOf(U),E=F%2,U=se.splice(F-E,2)[1-E];_.subVectors(B[0],B[1]).cross(f.subVectors(B[0],B[2])).normalize();let P=_.dot(B[0])<0;P&&_.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +P],B[G+1-+P],B[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),p.push(_.x,_.y,_.z)})}}function u(){let d=new Ve.Vector3;for(let S=0;S<a.length;S+=3){d.x=a[S+0],d.y=a[S+1],d.z=a[S+2];let y=b(d)/2/Math.PI+.5,I=D(d)/Math.PI+.5;c.push(y,1-I)}let m=new Ve.Vector3,f=new Ve.Vector3,h=new Ve.Vector3,g=new Ve.Vector3,x=new Ve.Vector2,v=new Ve.Vector2,A=new Ve.Vector2,_=(S,y,I,T)=>{T<0&&S.x===1&&(c[y]=S.x-1),I.x===0&&I.z===0&&(c[y]=T/2/Math.PI+.5)};for(let S=0,y=0;S<a.length;S+=9,y+=6){m.set(a[S+0],a[S+1],a[S+2]),f.set(a[S+3],a[S+4],a[S+5]),h.set(a[S+6],a[S+7],a[S+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(m).add(f).add(h).divideScalar(3);let I=b(g);_(x,y+0,m,I),_(v,y+2,f,I),_(A,y+4,h,I)}for(let S=0;S<c.length;S+=6){let y=c[S+0],I=c[S+2],T=c[S+4],L=Math.max(y,I,T),C=Math.min(y,I,T);L>.9&&C<.1&&(y<.2&&(c[S+0]+=1),I<.2&&(c[S+2]+=1),T<.2&&(c[S+4]+=1))}function b(S){return Math.atan2(S.z,-S.x)}function D(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(t){return new Kr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var gd=require("three"),yd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Jn(t*.5,n,s):new gd.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Jn=class extends Kr{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],c="DodecahedronGeometry";super(s,a,c,t,e,r),this.type=c}static fromJSON(t){return new Jn(t.radius,t.corner,t.cornerSides)}};var be=require("three");var he=require("three"),ei=1e-12,nn=class{constructor(t){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.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 nn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},sn=class extends nn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new sn(this.parent).copy(this)}},Xt=class extends nn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new sn(this),new sn(this))}static create(e,r){let o=new Xt(e,new he.Vector2(...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 Xt(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 he.Vector2,r=new he.Vector2){let[o,n]=this.computeTangents();return o&&n&&(xd(o,e),xd(n,r)),[e,r]}computeTangent(e=new he.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function xd(i,t=new he.Vector2){let e=i.length();return t.set(-i.y/e,i.x/e)}var yl=i=>i,an=new he.Vector2,Qs=new he.Vector2,Gv=new he.Vector2,Rv=new he.Vector2,Fv=new he.Vector2,Vv=new he.Vector2,bd=new he.Vector3,_d=new he.Vector3;function Sd(i){let t=new he.Vector2;t.addVectors(i.v0,an.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(i.v2,Qs.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(i.v0,t,e,i.v2)}function ti(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function zv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function Uv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function xl(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 wd(i,t,e){return vd(i,t)&&vd(t,e)&&gl(i.position,t.position,e.position)}function gl(i,t,e){return an.copy(t).sub(i).cross(Qs.copy(e).sub(i))===0}function Td(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,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,p=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(a+c,s+p),o.set(a-c,s-p),[r,o]}function Ad(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Cd(i,t,e,r,o,n){let s=t.x-i.x,a=t.y-i.y,c=e.x-i.x,p=e.y-i.y,l=Math.sqrt((s+c)*(s+c)+(a+p)*(a+p)),u;return xl(t,i,e)>Math.PI&&(l*=-1),ti(p,a)?u=(a+p)*(r/l-.5)*8/3/(s-c):u=(s+c)*(r/l-.5)*8/3/(p-a),o.set(t.x-u*a,t.y+u*s),n.set(e.x+u*p,e.y-u*c),[o,n]}function vl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function vd(i,t){return gl(i.position,i.controls[1].position,t.position)&&gl(i.position,t.controls[0].position,t.position)}function Nd(i,t,e,r,o=.5){let n=an.subVectors(t,i).multiplyScalar(o).add(i),s=Qs.subVectors(e,t).multiplyScalar(o).add(t),a=Gv.subVectors(r,e).multiplyScalar(o).add(e),c=n,p=Rv.subVectors(s,n).multiplyScalar(o).add(n),l=Fv.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Vv.subVectors(l,p).multiplyScalar(o).add(p);return[i.x,i.y,c.x,c.y,p.x,p.y,d.x,d.y,l.x,l.y,u.x,u.y,r.x,r.y]}function Od(i,t,e=12,r=!0){let o=_d.set(0,0,0),n,s=0,a=[];for(let c=0;c<t.length;c++){let p=yl(t[c]),l=an,u=Qr(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof he.CubicBezierCurve||p instanceof he.QuadraticBezierCurve||p instanceof he.LineCurve){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),n!==void 0&&Uv(n,o))continue;n===void 0&&(n=bd),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 Ld(i,t,e,r=12,o=!0){let n=_d.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=yl(t[c]),u=an,d=Qr(l,r);a.push(d);for(let m=0;m<=d;m++)if(l instanceof he.CubicBezierCurve||l instanceof he.QuadraticBezierCurve||l instanceof he.LineCurve){if(l.getPoint(m/d,u),n.set(u.x,u.y,0),p?.equals(n))continue;p===void 0?p=bd:(i.setXYZ(s,p.x,p.y,p.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),p.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 bl(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 c=Qr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=Qr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Qr(i[0].roundedCurveCorner,t)*.5),r}function Qr(i,t=12){return i&&i instanceof he.EllipseCurve?t*2:i&&(i instanceof he.LineCurve||i instanceof he.LineCurve3)?1:i&&i instanceof he.SplineCurve?t*i.points.length:t}function Id(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=yl(t[s]),c=Qr(a,e),p=an;for(let l=0;l<=c;l++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(l/c,p),o!==void 0&&zv(o,p,ei))continue;o===void 0&&(o=Qs),o.copy(p),i.push(p.x,p.y),n++}}return ti(i[0],i[i.length-2],ei)&&ti(i[1],i[i.length-1],ei)&&(i.pop(),i.pop()),r&&n>1&&!(ti(i[n-1],i[1],ei)&&ti(i[n-2],i[0],ei))&&(i.push(i[0],i[1]),n++),i}var _l=new be.Vector2,kv=new be.Vector2,jv=new be.Vector2,Hv=new be.Vector2,Wv=new be.Vector2,qv=new be.Vector2,Ce=class extends be.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.Vector3(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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ce;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Xt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Ce.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 c=this.shapeHoles[s],p=c.points.length-1,l=c.getPointIndexById(e);if(l<0)n+=p;else return l+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=_l.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=be.MathUtils.generateUUID()){let n;e instanceof be.Vector2?n=e:n=new be.Vector2(e,r);let s=new Xt(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 Od(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=bl(this.points,e,!1),this.roundedCurveDivisions=bl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Ld(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Id(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=Qr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((c,p)=>c+p,0));for(let c=0,p=n.length;c<p;c++){let l=n[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}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,c=a[e];if(vl(n,s)){let u=n.position.distanceTo(s.position);return n.position.distanceTo(_l.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=a[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){vl(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){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;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],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],c=this.points[n-1]??this.points[this.points.length-1],p=this.points[n+1]??this.points[0],l=a.roundness,u=c&&p&&wd(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,m=a.curveAfter;if(d===void 0||m===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=m.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),_=Math.min(v,A),b=1-_/g,D=_/x,S=d.getPointAt(b,_l),y=m.getPointAt(D,kv);this._subSplitCurve(d,f,b,S,void 0),this._subSplitCurve(m,h,D,void 0,y);let I;if(this.useCubicForRoundedCorners){let T=xl(S,a.position,y)/2,L=Math.tan(T)*S.distanceTo(a.position),[C,N]=Td(S,y,L,jv,Hv),j=Ad(C,N,a.position),[W,ne]=Cd(j,S,y,L,Wv,qv);I=new be.CubicBezierCurve(S.clone(),W.clone(),ne.clone(),y.clone())}else I=new be.QuadraticBezierCurve(S.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=I,this.roundedCurves.splice(n+o,0,I),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,n,s){if(e instanceof be.LineCurve)n!==void 0&&r.v2.copy(n),s!==void 0&&r.v1.copy(s);else{let a=e,c=r,p=a.getUtoTmapping(o,0),l=Nd(a.v0,a.v1,a.v2,a.v3,p);return n!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return r}clone(){let e=new Ce(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,s=e.points[n+0],a=e.points[n+1],c=e.points[n+2],p=e.points[n+3],l=e.points[n+4],u=e.points[n+5],d=e.points[n+6],m=new Xt(be.MathUtils.generateUUID(),new be.Vector2(s,a));m.controls[0].position.set(c,p),m.controls[1].position.set(l,u),m.roundness=d,this.points.push(m)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ce;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof be.CubicBezierCurve&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,c;for(a=0,c=n.length;a<c;a++)n[a]instanceof be.QuadraticBezierCurve&&(n[a]=Sd(n[a]));for(a=0,c=n.length;a<c;a++){let u=n[a],d=a>0?n[a-1]:null,m;u instanceof be.CubicBezierCurve?(m=this.createPoint(u.v0),m.controls[1].position.copy(u.v1)):u instanceof be.LineCurve&&(m=this.createPoint(u.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let p=n[n.length-1],l=!1;return p instanceof be.CubicBezierCurve?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof be.LineCurve&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(n=>{let s=new Ce;return s.fromShape(n),s})),this.update(),this}};var wl=Math.PI*2;function Sl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function $v(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 Pd(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 Xv(i,t,e,r,o,n,s,a,c,p){let l=Math.pow(o,2),u=Math.pow(n,2),d=Math.pow(s,2),m=Math.pow(a,2),f=l*u-l*m-u*d;f<0&&(f=0),f/=l*m+u*d,f=Math.sqrt(f)*(c===p?-1:1);let h=f*o/n*a,g=f*-n/o*s,x=h+(i+e)/2,v=g+(t+r)/2,A=(s-h)/o,_=(a-g)/n,b=(-s-h)/o,D=(-a-g)/n,S=Pd(1,0,A,_),y=Pd(A,_,b,D);return!p&&y>0&&(y-=wl),p&&y<0&&(y+=wl),{centerx:x,centery:v,ang1:S,ang2:y}}function Md({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||n===0)return[];let p=(i-e)/2,l=(t-r)/2;if(p===0&&l===0)return[];o=Math.abs(o),n=Math.abs(n);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(n,2);u>1&&(o*=Math.sqrt(u),n*=Math.sqrt(u));let d=Xv(i,t,e,r,o,n,p,l,s,a),{ang1:m,ang2:f}=d,{centerx:h,centery:g}=d,x=Math.abs(f)/(wl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);f/=v;for(let A=0;A<v;A++)c.push($v(m,f)),m+=f;return c.map(A=>{let{x:_,y:b}=Sl(A[0],o,n,h,g),{x:D,y:S}=Sl(A[1],o,n,h,g),{x:y,y:I}=Sl(A[2],o,n,h,g);return{x1:_,y1:b,x2:D,y2:S,x:y,y:I}})}var vo=require("three");var Be;(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"})(Be||(Be={}));var Ze;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function pe(i,t){if(!i)throw t||"Assertion Failed!"}var ae=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var s,a,c;i.vertLeq(t,e)||(c=t,t=e,e=c),i.vertLeq(r,o)||(c=r,r=o,o=c),i.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),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)||(c=t,t=e,e=c),i.transLeq(r,o)||(c=r,r=o,o=c),i.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),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}(),ri=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}(),Zs=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}(),ln=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}(),Dd=function(){function i(){var t=new ln,e=new ri,r=new Zs(0),o=new Zs(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 Zs(0),r=new Zs(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;pe(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;pe(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var 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 ln,e=new ln,r=new ri,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 ln;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ri;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 ri;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 ln;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 ri;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,c;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),c=this.countFaceVerts_(n.Lface),a+c-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ae.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,c,p;for(n=t,n=t;(o=n.next)!==t;n=o){pe(o.prev===n),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)pe(c.Sym.next===p.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(c.Sym.next===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},i}(),Bd=function(){function i(){this.handle=null}return i}(),Ed=function(){function i(){this.key=null,this.node=0}return i}(),Yv=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 Bd,this.handles[r]=new Ed;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,pe(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 Bd;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Ed}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;pe(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),Tl=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}(),Gd=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),Kv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Gd,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 Gd;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}(),Qv=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?ae.vertLeq(n.Org,s.Org)?ae.edgeSign(s.Dst,n.Org,s.Org)<=0:ae.edgeSign(n.Dst,s.Org,n.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(n.Dst,o,n.Org)>=0;var a=ae.edgeEval(n.Dst,o,n.Org),c=ae.edgeEval(s.Dst,o,s.Org);return a>=c},i.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new Tl;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 Be.ODD:return(e&1)!==0;case Be.NONZERO:return e!==0;case Be.POSITIVE:return e>0;case Be.NEGATIVE:return e<0;case Be.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,c,p,l,u=!0;p=r;do pe(ae.vertLeq(p.Org,p.Dst)),i.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),c=e,l=n;a=i.regionBelow(c),p=a.eUp.Sym,p.Org===l.Org;)p.Onext!==l&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(l.Oprev,p)),a.windingNumber=c.windingNumber-p.winding,a.inside=i.isWindingInside(t,a.windingNumber),c.dirty=!0,!u&&i.checkForRightSplice(t,c)&&(i.addWinding(p,l),i.deleteRegion(t,c),t.mesh.delete(l)),u=!1,c=a,l=p;c.dirty=!0,pe(c.windingNumber-p.winding===a.windingNumber),s&&i.walkDirtyRegions(t,c)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),n=ae.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(ae.vertLeq(o.Org,n.Org)){if(ae.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ae.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(ae.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(pe(!ae.vertEq(o.Dst,n.Dst)),ae.vertLeq(o.Dst,n.Dst)){if(ae.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(ae.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,c=o.Dst,p=n.Dst,l,u,d=new ln,m,f;if(pe(!ae.vertEq(p,c)),pe(ae.edgeSign(c,t.event,s)<=0),pe(ae.edgeSign(p,t.event,a)>=0),pe(s!==t.event&&a!==t.event),pe(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,p.t),l>u))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(p,s,a)>0)return!1}else if(ae.edgeSign(c,a,s)<0)return!1;return i.debugEvent(t),ae.intersect(c,s,p,a,d),pe(Math.min(s.t,c.t)<=d.t),pe(d.t<=Math.max(a.t,p.t)),pe(Math.min(p.s,c.s)<=d.s),pe(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=ae.vertLeq(s,a)?s:a,ae.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(i.checkForRightSplice(t,e),!1):!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)>=0||!ae.vertEq(p,t.event)&&ae.edgeSign(p,t.event,d)<=0?p===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):c===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):(ae.edgeSign(c,t.event,d)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,s,c,a,p),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,c=s.eUp,p=!1;if(a.Dst!==c.Dst&&i.checkForIntersect(t,e),ae.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),p=!0),ae.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=i.finishLeftRegions(t,s,null),p=!0),p){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ae.vertLeq(c.Org,a.Org)?o=c.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,c;if(o=e.eUp,ae.vertEq(o.Org,r)){pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}pe(!1),e=i.topRightRegion(e),c=i.regionBelow(e),s=c.eUp.Sym,n=a=s.Onext,c.fixUpperEdge&&(pe(n!==s),i.deleteRegion(t,c),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,s,a,c,p=new Tl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=t.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,c):i.computeWinding(t,i.addRegionBelow(t,r,c)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);pe(o!==null);var n=i.regionBelow(o),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 Tl,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 Kv(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||(pe(e.fixUpperEdge),pe(++r===1)),pe(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ae.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 Yv(n,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.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}(),Zv=function(){function i(){this.mesh=new Dd,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=Be.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,c=[0,0,0],p=[0,0,0],l=[0,0,0],u=[0,0,0],d=[0,0,0],m=[null,null,null],f=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)n=e.coords[g],p[g]=n,f[g]=e,c[g]=n,m[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)n=e.coords[x],n<p[x]&&(p[x]=n,f[x]=e),n>c[x]&&(c[x]=n,m[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[v],o=m[v],l[0]=r.coords[0]-o.coords[0],l[1]=r.coords[1]-o.coords[1],l[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],d[0]=l[1]*u[2]-l[2]*u[1],d[1]=l[2]*u[0]-l[0]*u[2],d[2]=l[0]*u[1]-l[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(l)]=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 c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.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(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.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,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(l.n=-1,!!l.inside){n=l.anEdge,c=0;do{var p=n.Org;p.n===-1&&(p.n=a,a++),c++,n=n.Lnext}while(n!==l.anEdge);if(c>r)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ze.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 p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){n=l.anEdge,c=0;do{var p=n.Org;this.elements[d++]=p.n,c++,n=n.Lnext}while(n!==l.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1;if(e===Ze.CONNECTED_POLYGONS){n=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==l.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-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 c=0,p=0,l=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[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[l++]=n,this.elements[l++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Dd),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=Be.ODD),e===void 0&&(e=Ze.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_(),Qv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function xo(i){var t=i.windingRule,e=t===void 0?Be.ODD:t,r=i.elementType,o=r===void 0?Ze.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,c=a===void 0?2:a,p=i.normal,l=p===void 0?[0,0,1]:p,u=i.contours,d=u===void 0?[]:u,m=i.strict,f=m===void 0?!0:m,h=i.debug,g=h===void 0?!1:h;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var x=new Zv;i.edgeCreateCallback&&(x.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(x.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,l,f),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var II=Be.ODD,PI=Be.NONZERO,MI=Be.POSITIVE,DI=Be.NEGATIVE,BI=Be.ABS_GEQ_TWO,EI=Ze.POLYGONS,GI=Ze.CONNECTED_POLYGONS,RI=Ze.BOUNDARY_CONTOURS;var cn=class extends vo.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Be.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Be.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,p=!0,l,u;for(let f=0,h=n.length/2;f<h;f++){let g=f*2,x=n[g+0],v=n[g+1];if(l!==void 0&&x!==l&&(c=!1),u!==void 0&&v!==u&&(p=!1),l=x,u=v,!c&&!p)break}!c&&!p&&(a=xo({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,m=a?.elementCount??1;if(this._positionAttribute=new vo.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new vo.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new vo.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new vo.BufferAttribute(new Uint32Array(m*3),1),a){let f=1/0,h=-1/0,g=1/0,x=-1/0;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1];S<f&&(f=S),S>h&&(h=S),y<g&&(g=y),y>x&&(x=y)}let v=h-f,A=x-g;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1],I=(S-f)/v,T=(y-g)/A;this._positionAttribute.setXYZ(_,S,y,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,I,T)}for(let _=0,b=m;_<b;_++){let D=_*3,S=a.elements[D+0],y=a.elements[D+1],I=a.elements[D+2];this._indexAttribute.setX(D+0,S),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,I)}}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 cn(this._shape,this._curveSegments);return e.userData=kn(this.userData),e}};var bo=require("three");var Js=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Js.eSize;this.buffer=new ArrayBuffer(r);let 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*Js.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*t);s+=3*t;let c=new Float32Array(o,s*n,3*t);s+=3*t;let p=new Float32Array(o,s*n,2*t);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=p,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)}},oi=Js;oi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Al=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),un=class extends bo.BufferGeometry{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),c=this._shape.shapeHoles.map(S=>{let y=S.extractShapePointsToFlatArray([],n),I=[];for(let T=y.length-1;T>=1;T-=2){let L=y[T-1],C=y[T-0];I.push(L,C)}return I}),p=xo({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=xo({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(l){p.elementCount+=l.elementCount;for(let S=0;S<l.elements.length;S++){let y=l.elements[S],I=S%2===0?p.vertexCount:0;p.elements.push(y+I)}for(let S=0;S<l.vertexIndices.length;S++){let y=l.vertexIndices[S],I=p.vertexCount;p.vertexIndices.push(y+I)}for(let S=0;S<l.vertices.length;S++){let y=l.vertices[S];p.vertices.push(y)}}let d=1/0,m=-1/0,f=1/0,h=-1/0;for(let S=0,y=p.vertexCount;S<y;S++){let I=S*2,T=p.vertices[I+0],L=p.vertices[I+1];T<d&&(d=T),T>m&&(m=T),L<f&&(f=L),L>h&&(h=L)}this._minX=d,this._minY=f,this._width=m-d,this._height=h-f;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new oi(g);let x=[],v=[];for(let S=p.elementCount-1;S>=0;S--){let y=S>=u,I=S*2,T=p.elements[I+0],L=p.elements[I+1],C=T+L,N={start:T,count:L,normals:[],continuous:[],concave:[]},j=T,W=C-1,ne=T+1,ue=this._shape.roundedCurves.length;do{let F=j-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],P=p.vertices[j*2+0],G=p.vertices[j*2+1],Q=p.vertices[ne*2+0],k=p.vertices[ne*2+1],V=P-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=P-Q,J=G-k,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[j];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[Z].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);N.continuous[F]=ie.dot(fe)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,j,ne]=[j,ne,ne+1],ne>=C&&(ne-=L)}while(ne!==T+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((F,E)=>[E,E]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,P=[],G=[],Q=[],k=[],V=0;for(let M=0;M<L;M++){let q=M*2,J=(M-1+L)%L*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,ce=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ie=Math.atan2($,Z),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Re=fe-ie;if(N.continuous[M]||y){let ge=ie+Re/2,qe=Math.cos(ge)*B,Ae=Math.sin(ge)*B;P[2*V+0]=ee+qe*(y?-1:1),P[2*V+1]=H+Ae*(y?-1:1),k[V]=M,V++}else{let ge=Math.max(1,Math.floor(n/4*Math.abs(Re)/Math.PI));for(let qe=0;qe<=ge;qe++){let Ae=ie+Re*(qe/ge),St=Math.cos(Ae)*B,Vt=Math.sin(Ae)*B;P[2*V+0]=ee+St,P[2*V+1]=H+Vt,k[V]=M,V++}}}else P[2*V+0]=ee+Z,P[2*V+1]=H+$,k[V]=M,G[M]=V,V++,P[2*V+0]=ee,P[2*V+1]=H,k[V]=M,V++,P[2*V+0]=ee+re,P[2*V+1]=H+ce,k[V]=M,Q[M]=V,V++}let z=xo({windingRule:Be.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[P],edgeCreateCallback:M=>{let J=M.Org.idx,ee=k[J],H=k[(J+1)%k.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=L);for(let H=q;H<ee;H++){let Z=H%L,$=(H+1)%L;if(!N.continuous[Z]||!N.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}se.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:k,insetPoints:P})}let K=(F,E,B)=>{let P=0,G=F.boundary.vertexIndices.length;for(;P<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,P++;return P},U=x.length;for(let F=1;F<se.length;F++){let E=se[F-1],B=se[F],P=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!P||!G)break;let Q=N.concave.length,k=0,V=Al(k,L);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=Al(k,L);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%P;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));k=(k+1)%L;let q=k,J=this.buildBevelVert(N,E,(z-1+P)%P),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,ce=!1;do{V=Al(k,L);let ie=K(E,z,V),fe=K(B,M,V),Re=ce;if(ce=!1,ie&&!fe){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%P,ge/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let ge=0;ge<fe;ge++)re=this.buildBevelVert(N,B,(M+ge)%G,ge/(fe-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ie&&fe)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Re?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ie===fe)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%P,ge/(ie-1)),re=this.buildBevelVert(N,B,(M+ge)%G,ge/(fe-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ie>fe){let ge=ie/fe,qe=0;for(let Ae=1;Ae<ie;Ae++)$=this.buildBevelVert(N,E,(z+Ae)%P,Ae/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,Ae>(qe+1)*ge&&(qe++,re=this.buildBevelVert(N,B,(M+qe)%G,qe/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let ge=fe/ie,qe=0;for(let Ae=1;Ae<fe;Ae++)re=this.buildBevelVert(N,B,(M+Ae)%G,Ae/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,Ae>(qe+1)*ge&&(qe++,$=this.buildBevelVert(N,E,(z+qe)%P,qe/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ie)%P,M=(M+fe)%G,k=(k+1)%Q}while(k!==q)}{let F=se[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let P=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,P.topN,P.bottomN),x.push(G.topP,P.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],P=x[E-1],G=x[E-0];F.push(G,P,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=se[se.length-1].boundary.vertices[E-1],P=se[se.length-1].boundary.vertices[E-0];F.push(B,P)}v.push(F)}if(!y){let F=se[se.length-1],E=xo({windingRule:se.length>1?Be.POSITIVE:Be.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let P=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(P.top,G.top,Q.top),x.push(Q.bottom,G.bottom,P.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new bo.BufferAttribute(Uint32Array.from(x),1),_=new bo.BufferAttribute(this._buffer.positions,3),b=new bo.BufferAttribute(this._buffer.normals,3),D=new bo.BufferAttribute(this._buffer.uvs,2);_.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",_),this.setAttribute("normal",b),this.setAttribute("uv",D),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,c=(s-this._minY)/this._height,p=this._buffer.get(2),l=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[l+0]=n,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[u+0]=a,this._buffer.uvs[u+1]=c,this._buffer.positions[l+3]=n,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[u+2]=a,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,n=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=r.boundary.vertexIndices[o],p,l,u,d;a!==c?(l=a,p=c,d=!1,u=e.continuous[l]&&e.continuous[p]):(p=a,l=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let m=Math.cos(r.angle),f=Math.sin(r.angle),h=o*2,g=p*2,x=l*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],_=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,S=e.normals[g+0],y=e.normals[g+1],I=e.normals[x+0],T=e.normals[x+1];if(d){let W=I-S,ne=T-y;S=S+W*(1-n),y=y+ne*(1-n);let ue=Math.sqrt(S*S+y*y);S/=ue,y/=ue}let L=this._buffer.get(u?2:4),C=L*3,N=L*2,j={i:o,fi:p,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=S*m,this._buffer.normals[C+1]=y*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=S*m,this._buffer.normals[C+4]=y*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(L+=2,C+=6,N+=4,j.topP=L+0,j.bottomP=L+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=I*m,this._buffer.normals[C+1]=T*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=I*m,this._buffer.normals[C+4]=T*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=j,j}clone(){let e=new un(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=kn(this.userData),e}};var vt=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ce?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ce(r,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let c=s??new Ce(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:a}),shape:c}}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 cn(i.shape,o):s=new un(i.shape,t,e,o,r),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};var dn=require("three"),Fd=Math.PI*2,Vd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=i.parameters,p=i.shape,l=t*.5,u=e*.5,d=Jv(p,l,u,o*Math.PI/180,r,n);p.isClosed=!0,p.update();let m=vt.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(m,{userData:{...i,type:"EllipseGeometry"}})}};function Jv(i,t,e,r,o,n){if(r>=Fd)return o>30||o%4===0?(tb(i,t,e,n),Math.round(o/4)):Rd(i,r,o,t,e,n);let s={x:0,y:e},a=r+Math.PI*.5,c={x:Math.cos(a)*t,y:Math.sin(a)*e},p=Md({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?eb(i,s.x,s.y,p,o,t,e,n):Rd(i,r,o,t,e,n)}function eb(i,t,e,r,o,n,s,a){let c=Math.round(o/r.length);i.addPoint(pn(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=i.points[p],m=pn(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),m.controls[0].position.set(u.x2,u.y2),i.addPoint(m)}return a>0?zd(i,n,s,a):i.addPoint(pn(0,0)),c}function Rd(i,t,e,r,o,n){let s=-t/e;for(let a=0;a<=e;a++){let c=s*a,p=Math.sin(c)*r,l=Math.cos(c)*o;i.addPoint(pn(p,l))}return t<Fd?n>0?zd(i,r,o,n):i.addPoint(pn(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Ud(i,r,o,n)),1}function tb(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,c=e*s;i.addPoint(ea(o-t,n,o-t,n-c,o-t,n+c)),i.addPoint(ea(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(ea(o+t,n,o+t,n+c,o+t,n-c)),i.addPoint(ea(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Ud(i,t,e,r)}function pn(i,t){return new Xt(dn.MathUtils.generateUUID(),new dn.Vector2(i,t))}function ea(i,t,e,r,o,n){let s=pn(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function zd(i,t,e,r){kd(i,t,e,r).forEach(n=>i.addPoint(n))}function Ud(i,t,e,r){let o=kd(i,t,e,r),n=new Ce;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function kd(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new dn.Vector2(o/t,n/e),a=i.points.map(c=>{let p=c.clone();return p.uuid=dn.MathUtils.generateUUID(),p}).reverse();return a.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(p)}),a}var Er=require("three"),jd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),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:c,pathSegments:p,cornerRadius:l,cornerSegments:u}=i.parameters,d=new ni(!1,t,e,r,o,n,s,a,c,p,l,u);return Object.assign(d,{userData:{...i,type:"HelixGeometry"}})}},ni=class extends Er.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,n=1,s=1,a=1,c=1,p=1,l=1,u=1,d=1){super();let m=t&&s===1;m&&(d=0),u>100&&(u=100);let f=()=>new Er.Vector3,h=new Er.Vector3,g=f(),x=f(),v=f(),A,_,b,D,S,y,I,T,L=f(),C=f(),N=f(),j=f(),W=f(),ne=f(),ue=f(),se=f(),K=r-2*c+.001,U=K/s,F=Math.ceil(a*s),E=F+1,B=K/F,P=-K/2,G=l+1,Q=2*Math.PI/l,k=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(Ue=>Array($*Ue).fill(0)),fe=[],Re=n-c;function ge(Ue,Mt){let or=Math.PI/2;y=Mt*B,T=2*Math.PI*(y%U)/U+or,y+=P,I=Math.sin(T)*Re,S=Math.cos(T)*Re,t?Ue.set(S,I,y):Ue.set(S,y,I)}ge(h,-1e-10),ge(g,0),L.copy(h),ge(h,1);let qe=h.distanceTo(g),Ae=M+z,St=qe*F+2*Ae,Vt=z,Io=St-Ae;for(let Ue=0;Ue<=F;Ue++){ge(x,Ue),se.subVectors(x,L).normalize(),L.copy(x),ne.copy(x).setComponent(+t+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Mt=Ue===0,or=Ue===F,Mf=Mt?3*Math.PI/2:k,Df=Mt?Vt:Io,Bf=Mt?G:Z,Ef=Mt?0:$-G,Gf=se.clone().multiplyScalar(Mt?-M:M).add(x),Rf=se.clone().multiplyScalar(Mt?-1:1).normalize();for(let Nr=0;Nr<G;Nr++){let gc=Nr*Q;if(C.addVectors(h.copy(ne).multiplyScalar(c*Math.cos(gc)),g.copy(ue).multiplyScalar(c*Math.sin(gc))),N.copy(C).normalize(),Mt||or){m||(q=Ef+Nr,[0,1,2].forEach(wt=>{re[q*3+wt]=Gf.getComponent(wt),ce[q*3+wt]=Rf.getComponent(wt)}),ie[q*2]=+or,ie[q*2+1]=Nr/l),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let wt=0;wt<d;wt++){let Fa=wt*k+Mf;j.addVectors(h.copy(se).multiplyScalar(M*Math.sin(Fa)),g.copy(N).multiplyScalar(M*Math.cos(Fa))),W.copy(j).normalize(),g.addVectors(v,j),j.normalize(),q=Bf+wt*G+Nr,[0,1,2].forEach(ji=>{re[q*3+ji]=g.getComponent(ji),ce[q*3+ji]=W.getComponent(ji)});let Ff=+Mt+Math.sin(Fa);ie[q*2]=(Df+M*Ff)/St,ie[q*2+1]=Nr/l}}g.addVectors(x,C),q=H+Ue*G+Nr,[0,1,2].forEach(wt=>{re[q*3+wt]=g.getComponent(wt),ce[q*3+wt]=N.getComponent(wt)}),ie[q*2]=(Ae+Ue*qe)/St,ie[q*2+1]=Nr/l}}let Pt=E+2*d+J,Po=1,[Ui,ki]=m?[Po,Po+E-1]:[0,Pt-1];for(let Ue=Ui;Ue<=ki-1;Ue++){let Mt=m&&Ue===ki-1;for(let or=0;or<G-1;or++)A=Ue*G+or,_=A+1,b=(Mt?or:A)+G,D=(Mt?or+1:_)+G,Ue===0?fe.push(_,D,b):Ue===Pt-2?fe.push(A,_,b):fe.push(A,_,b,_,D,b)}this.setIndex(fe),this.setAttribute("position",new Er.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Er.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Er.Float32BufferAttribute(ie,2))}};var Hd=require("three");var Wd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new ii(t*.5,n,s):new Hd.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},ii=class extends Kr{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 ii(t.radius,t.corner,t.cornerSides)}};var ta=require("three"),qd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new ta.Shape;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 ta.LatheBufferGeometry(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};var pr=require("three");var Gr=require("three");var oe=require("three"),ur=new oe.Matrix4,Cl=new oe.Object3D,ra=new oe.Vector3,Zr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.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 oe.Matrix3().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.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 ur.makeRotationX(t),this.applyMatrix4(ur),this}rotateY(t){return ur.makeRotationY(t),this.applyMatrix4(ur),this}rotateZ(t){return ur.makeRotationZ(t),this.applyMatrix4(ur),this}translate(t,e,r){return ur.makeTranslation(t,e,r),this.applyMatrix4(ur),this}scale(t,e,r){return ur.makeScale(t,e,r),this.applyMatrix4(ur),this}lookAt(t){return Cl.lookAt(t),Cl.updateMatrix(),this.applyMatrix4(Cl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,s=o.normal,a=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<n.count;d++)e.vertices.push(new oe.Vector3().fromBufferAttribute(n,d)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,d));function l(d,m,f,h){let g=a===void 0?[]:[e.colors[d].clone(),e.colors[m].clone(),e.colors[f].clone()],x=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,m),new oe.Vector3().fromBufferAttribute(s,f)],v=new mn(d,m,f,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,m),new oe.Vector2().fromBufferAttribute(c,f)]),p!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(p,d),new oe.Vector2().fromBufferAttribute(p,m),new oe.Vector2().fromBufferAttribute(p,f)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let m=u[d],f=m.start,h=m.count;for(let g=f,x=f+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),m.materialIndex):l(g,g+1,g+2,m.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)l(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<n.count;d+=3)l(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ra).negate(),this.translate(ra.x,ra.y,ra.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;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 oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=this.vertices[n.a],a=this.vertices[n.b],c=this.vertices[n.c];t.subVectors(c,a),e.subVectors(s,a),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],c=this.vertices[a.a],p=this.vertices[a.b],l=this.vertices[a.c];r.subVectors(l,p),o.subVectors(c,p),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 n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Zr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let p=new oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};n.push(p),s.push(l)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],c=o.faceNormals[n],p=o.vertexNormals[n];c.copy(a.normal),p.a.copy(a.vertexNormals[0]),p.b.copy(a.vertexNormals[1]),p.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 oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,s=this.vertices,a=t.vertices,c=this.faces,p=t.faces,l=this.colors,u=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let d=0,m=a.length;d<m;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,m=u.length;d<m;d++)l.push(u[d].clone());for(let d=0,m=p.length;d<m;d++){let f=p[d],h,g,x=f.vertexNormals,v=f.vertexColors,A=new mn(f.a+n,f.b+n,f.c+n);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let _=0,b=x.length;_<b;_++)h=x[_].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(f.color);for(let _=0,b=v.length;_<b;_++)g=v[_],A.vertexColors.push(g.clone());A.materialIndex=f.materialIndex+r,c.push(A)}for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;c++){let l=this.vertices[c],u=Math.round(l.x*n)+"_"+Math.round(l.y*n)+"_"+Math.round(l.z*n);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let u=[l.a,l.b,l.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(p,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 oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),a&&a.push(n[p])}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 f=this.parameters;for(let h in f)f[h]!==void 0&&(t[h]=f[h]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let h=this.vertices[f];e.push(h.x,h.y,h.z)}let r=[],o=[],n={},s=[],a={},c=[],p={};for(let f=0;f<this.faces.length;f++){let h=this.faces[f],g=!0,x=!1,v=this.faceVertexUvs[0][f]!==void 0,A=h.normal.length()>0,_=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,S=0;if(S=l(S,0,0),S=l(S,1,g),S=l(S,2,x),S=l(S,3,v),S=l(S,4,A),S=l(S,5,_),S=l(S,6,b),S=l(S,7,D),r.push(S),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][f];r.push(m(y[0]),m(y[1]),m(y[2]))}if(A&&r.push(u(h.normal)),_){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function l(f,h,g){return g?f|1<<h:f&~(1<<h)}function u(f){let h=f.x.toString()+f.y.toString()+f.z.toString();return n[h]!==void 0||(n[h]=o.length/3,o.push(f.x,f.y,f.z)),n[h]}function d(f){let h=f.r.toString()+f.g.toString()+f.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(f.getHex())),a[h]}function m(f){let h=f.x.toString()+f.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(f.x,f.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new Zr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,m=e.length;d<m;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,m=r.length;d<m;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,m=o.length;d<m;d++)this.faces.push(o[d].clone());for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let n=t.morphTargets;for(let d=0,m=n.length;d<m;d++){let f={};if(f.name=n[d].name,n[d].vertices!==void 0){f.vertices=[];for(let h=0,g=n[d].vertices.length;h<g;h++)f.vertices.push(n[d].vertices[h].clone())}if(n[d].normals!==void 0){f.normals=[];for(let h=0,g=n[d].normals.length;h<g;h++)f.normals.push(n[d].normals[h].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let d=0,m=s.length;d<m;d++){let f={};if(s[d].vertexNormals!==void 0){f.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),f.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){f.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)f.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(f)}let a=t.skinWeights;for(let d=0,m=a.length;d<m;d++)this.skinWeights.push(a[d].clone());let c=t.skinIndices;for(let d=0,m=c.length;d<m;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,m=p.length;d<m;d++)this.lineDistances.push(p[d]);let l=t.boundingBox;l!==null&&(this.boundingBox=l.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.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 Nl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],s=t.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let p=s[a],l=new oe.Float32BufferAttribute(p.data.length*3,3);l.name=p.name,n.push(l.copyVector3sArray(p.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(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 oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),n=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",n.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new oe.Float32BufferAttribute(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}};Zr.prototype.isGeometry=!0;var Nl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,c=a.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:a[x].name,data:[]};this.morphTargets.position=p}let l=t.morphNormals,u=l.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:l[x].name,data:[]};this.morphTargets.normal=d}let m=t.skinIndices,f=t.skinWeights,h=m.length===r.length,g=f.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let _=v.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<c;b++){let D=a[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=l[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(m[v.a],m[v.b],m[v.c]),g&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},mn=class{constructor(t,e,r,o,n,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new oe.Color,this.vertexColors=Array.isArray(n)?n:[],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 rb=["a","b","c"];function ob(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Ol(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Ll(i,t,e,r,o,n){let s=Math.min(i,t),a=Math.max(i,t),c=s+"_"+a,p;if(r.has(c))p=r.get(c);else{let l=e[s],u=e[a];p={a:l,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),n[i].edges.push(p),n[t].edges.push(p)}function nb(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],Ll(s.a,s.b,i,r,s,e),Ll(s.b,s.c,i,r,s,e),Ll(s.c,s.a,i,r,s,e)}function oa(i,t,e,r,o){i.push(new mn(t,e,r,void 0,void 0,o))}function fn(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function na(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ia=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Gr.BufferGeometry?t=new Zr().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 Gr.Vector3,r,o,n,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],m=new Map;nb(c,p,d,m);let f=[],h,g,x,v,A,_,b;for(let V of Array.from(m.keys())){for(g=m.get(V),x=new Gr.Vector3,A=3/8,_=1/8,b=g.faces.length,b!=2&&(A=.5,_=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],a=0;a<3&&(h=c[ob(v,rb[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(_),x.add(e),g.newEdge=f.length,f.push(x)}let D,S,y,I,T,L,C,N=[];for(o=0,n=c.length;o<n;o++){for(L=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),S=1-r*Number(D),y=D,r<=2&&(r==2?(S=3/4,y=1/8):r==1||r==0),C=L.clone().multiplyScalar(S),e.set(0,0,0),s=0;s<r;s++)I=T[s],h=I.a!==L?I.a:I.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let j=N.concat(f),W=N.length,ne,ue,se,K=[],U=[],F,E,B,P,G=new Gr.Vector2,Q=new Gr.Vector2,k=new Gr.Vector2;for(o=0,n=p.length;o<n;o++)v=p[o],ne=Number(Ol(v.a,v.b,m).newEdge)+W,ue=Number(Ol(v.b,v.c,m).newEdge)+W,se=Number(Ol(v.c,v.a,m).newEdge)+W,oa(K,ne,ue,se,v.materialIndex),oa(K,v.a,ne,se,v.materialIndex),oa(K,v.b,ue,ne,v.materialIndex),oa(K,v.c,se,ue,v.materialIndex),u&&(F=l[o],E=F[0],B=F[1],P=F[2],G.set(fn(E.x,B.x),fn(E.y,B.y)),Q.set(fn(B.x,P.x),fn(B.y,P.y)),k.set(fn(E.x,P.x),fn(E.y,P.y)),na(U,G,Q,k),na(U,E,G,k),na(U,B,Q,G),na(U,P,k,Q));t.vertices=j,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var Je=new pr.Vector3,$d=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new pr.BufferGeometry().copy(new pr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Je),r={width:Je.x,height:Je.y,depth:Je.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new pr.BufferGeometry().copy(new pr.BoxBufferGeometry(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Je)):Je.set(s.width,s.height,s.depth),(t!==Je.x||e!==Je.y||r!==Je.z)&&n.scale(Je.x===0?1:t/Je.x,Je.y===0?1:e/Je.y,Je.z===0?1:r/Je.z);let a=n.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=n),n=new ia(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:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new pr.BufferGeometryLoader(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Je);let s=100/Je.x;Object.assign(n.parameters,{width:100,height:Je.y*s,depth:Je.z*s}),t(this.build(n))})}};var Xd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,c=i.shape,p=t*.5,l=e*.5,u=0,d=0,m=2*Math.PI/r;for(let h=0;h<r;h++){let g=m*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*l;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let f=vt.create({shape:c,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...i,type:"PolygonGeometry"}})}};var ve=require("three"),Yd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:c}=i.parameters,p=new Pl(t*.5,e,o,n,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...i,type:"PyramidGeometry"}})}};function si(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Il(i,t,e,r,o,n){let s=t.clone().sub(i),a=e.clone().sub(i),c=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let p=s.add(a).normalize();n.copy(i).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(p)),n.addScaledVector(a,r/Math.sin(p))}}function ib(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Pl=class extends ve.BufferGeometry{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 c=[],p=[],l=[],u=[],d=0,m=e/2,f=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new ve.Vector3(0,-m,0),_=new ve.Vector3(0,m,0),b=new ve.Vector2(t,-m),D=new ve.Vector2(h,-m),S=new ve.Vector2(0,_.y).sub(D),y=new ve.Vector2(0,_.y).sub(b),I=new ve.Vector2(S.y,-S.x).normalize(),T=new ve.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-S.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new ve.Vector3(I.x,I.y,0),F=new ve.Vector3(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let j=s/Math.tan((Math.PI-S.angle())/2),W=s/Math.tan((Math.PI-N)/2),ne=new ve.Vector3;if(!n){p.push(A.x,A.y,A.z),l.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=j/Math.cos(Math.PI/r);E.x-=B;for(let P=0;P<r;P++){let G=P/r*Math.PI*2+f,Q=new ve.Vector2(Math.sin(G),Math.cos(G));si(E,Q,ne),p.push(ne.x,ne.y,ne.z),l.push(0,-1,0),u.push(0,0),F.push(d++)}for(let P=0;P<F.length;P++)c.push(F[P],U,F[(P+1)%F.length])}let ue=[];{let U=new ve.Vector3,F=new ve.Vector3,E=new ve.Vector3,B=new ve.Vector3,P=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<r;Q++){let k=Q/r*Math.PI*2+f,V=(Q+.5)/r*Math.PI*2+f,z=(Q+1)/r*Math.PI*2+f,M=new ve.Vector2(Math.sin(k),Math.cos(k)),q=new ve.Vector2(Math.sin(V),Math.cos(V)),J=new ve.Vector2(Math.sin(z),Math.cos(z));si(b,M,F),si(b,J,E),si(I,q,U),Il(_,F,E,W,W,B),p.push(B.x,B.y,B.z),Il(F,_,E,W,j,P),p.push(P.x,P.y,P.z),Il(E,F,_,j,W,G),p.push(G.x,G.y,G.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let ce=F.clone().add(E).multiplyScalar(.5),ie=_.clone().sub(ce).normalize(),Re=A.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(P);se(ce,ge,Re,S.angle())}let $,re;{let ce=new ve.Vector3;si(T,J,ce);let ie=G.clone().add(B).multiplyScalar(.5);ie=ib(ie,E,_);let fe=G.clone().sub(B);[$,re]=se(ie,fe,ce,N,B.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new ve.Vector3(0,-1,0),Re=ie.clone().cross(fe);K(ce,ie,fe,Re)}ue.concat(re);{let ce=S.angle(),ie=Math.PI-ce,fe=_.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Re=new ve.Vector3,ge=[];for(let Ae=0;Ae<a;Ae++){let St=[],Vt=Math.PI/2-ie*Ae/a,Io=Math.cos(Vt),Pt=Math.sin(Vt),Po=V;for(let Ui=0;Ui<=Ae;Ui++){let ki=Math.cos(Po),Ue=Math.sin(Po);U.x=Io*Ue,U.y=Pt,U.z=Io*ki,Re.copy(fe).addScaledVector(U,s),p.push(Re.x,Re.y,Re.z),l.push(U.x,U.y,U.z),u.push(0,0),St.push(d++),Po+=Math.PI*2/Ae/r}ge.push(St)}re.reverse(),ge.push(re);let qe=ge.length-1;for(let Ae=0;Ae<qe;Ae++){let St=ge[Ae],Vt=ge[Ae+1],Io=St.length-1;c.push(Vt[1],St[0],Vt[0]);for(let Pt=1;Pt<=Io;Pt++)c.push(St[Pt],St[Pt-1],Vt[Pt]),c.push(Vt[Pt+1],St[Pt],Vt[Pt])}}}}}this.setIndex(c),this.setAttribute("position",new ve.Float32BufferAttribute(p,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(l,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(u,2));function se(U,F,E,B,P){let G=-B/2,Q=(Math.PI-B)/2,k=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new ve.Vector3,z=new ve.Vector3,M=1,q=d,J=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;z.set(0,0,0),z.addScaledVector(k,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),P!=null){let re=Math.max(0,V.y-P);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.z),l.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<a;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,ce=Z+1;c.push(Z,$,ce),c.push($,re,ce)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let P=Math.PI/2,G=y.angle()-P,Q=[],k=new ve.Vector3,V=new ve.Vector3;for(let M=0;M<=a;M++){let q=[],J=M/a;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),ce=Math.atan(Math.tan(G)*$),ie=(P+ce)*J,fe=Math.cos(ie),Re=Math.sin(ie);k.set(0,0,0),k.addScaledVector(F,Re*$),k.addScaledVector(E,fe),k.addScaledVector(B,Re*re),V.copy(U).addScaledVector(k,s),p.push(V.x,V.y,V.z),l.push(k.x,k.y,k.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var Kd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=i.parameters,p={x:e*.5,y:r*.5},l={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(_,b,D){return b>e&&D>r?Math.min(_*e/b,_*r/D):b>e?_*e/b:D>r?_*r/D:_}let m=[];m[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(f,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(f,x)),t.isClosed=!0;let v=!0;for(let _=0,b=t.points.length;_<b;_++)t.points[_].roundness=m[_],_>0&&m[_]!==m[_-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=vt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...i,type:"RectangleGeometry"}})}};var Qd=require("three"),Zd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:p}=i.parameters,l=new Qd.SphereBufferGeometry(.5*t,o,n,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...i,type:"SphereGeometry"}})}};var Jd=require("three"),em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Jd.PlaneBufferGeometry(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};var Jr=require("three"),tm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Ml(t,e,r,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Ml=class extends Jr.BufferGeometry{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],p=[],l=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-l,o),o*=Math.PI/180;let u=[],d=Math.PI/2,m=(V=0,z=0,M=0)=>new Jr.Vector3(V,z,M),f=m(),h=m(),[g,x,v]=[e/2,t/2,r/2],A=-x,_=+x,[b,D,S]=[m(A,-g,+v),m(A,-g,-v),m(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),I=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));S.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,L=b.z-l;o<=d?(S.z=Math.min(T,L),S.z==L&&(S.y-=(T-L)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),f.subVectors(b,D),h.subVectors(S,D);let C=Math.min(f.length(),h.length())*n/100,N=C*Math.tan(o/2),j=C/Math.cos(o/2),W=f.clone().normalize().add(h.normalize()).setLength(j).add(D);f.set(0,y(o,!0),I(o,!0)),u.push([S,f.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*ne;f.set(0,Math.sin(z)*N,Math.cos(z)*N),f.add(W),h.set(0,y(z),I(z)),u.push([f.clone(),h.clone()])}u.push([b,m(0,1,0)]);let ue=Math.sin(ne/2)*N*2,se=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[se-1][0].distanceTo(u[se][0]),F=K+ue*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ue)/F);u[se].push(0);let[E,B,P]=u[0],G,Q,k;for(let V=1;V<u.length;V++)[G,Q,k]=u[V],a.push(A,E.y,E.z,A,G.y,G.z,_,E.y,E.z,_,E.y,E.z,A,G.y,G.z,_,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,P,0,k,1,P,1,P,0,k,1,k),[E,B,P]=[G,Q,k];this.setAttribute("position",new Jr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Jr.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Jr.Float32BufferAttribute(p,2))}};var rm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}=i.parameters,l=i.shape,u=t*.5,d=e*.5,m=0,f=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let _=0;_<o;_++){let b=h*_,D=m+Math.sin(b)*u,S=f+Math.cos(b)*d;l.addPoint(l.createPoint(D,S))}}else for(let _=0;_<o;_++){let b=m+Math.cos(g)*u,D=f+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=m+Math.cos(g)*x,D=f+Math.sin(g)*v,_<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let _=0,b=l.points.length;_<b;_++)l.points[_].roundness=n;l.roundness=n,l.update();let A=vt.create({shape:l,parameters:{roundness:n,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...i,type:"StarGeometry"}})}};var om=require("three"),sa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new om.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};var nm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:c}=i.parameters,p=sb(t,e,r,t*.5,s,n,0,0,o,a,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...i,type:"TorusGeometry"}})}};function sb(i,t,e,r,o,n,s,a,c,p,l){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new ni(!0,i,t,e,r,o,n,s,a,c,p,l)}var im=require("three"),sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let c=new im.TorusKnotBufferGeometry(a,e,r,o,n,s);return Object.assign(c,{userData:{...i,type:"TorusKnotGeometry"}})}};var am=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,c=i.shape,p=t*.5,l=e*.5;a?(c.addPoint(c.createPoint(-p,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))),c.isClosed=!0;for(let d=0,m=c.points.length;d<m;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=vt.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...i,type:"TriangleGeometry"}})}};var He=require("three");var ab,aa=new Promise(i=>{ab=i});var xm=require("three");var ro=require("three");var da=require("three");var El=require("three");var ca=require("three");var Dl=require("three");function Ye(i,t){return t.color(i)}var Bl=i=>"isEntity"in i,dr=i=>"isAbstractMesh"in i,mr=i=>i!==null&&i.isBooleanMesh,lm=i=>i.objectType==="CombinedCamera";var la=i=>"objectHelper"in i;function lb(i,t){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(t.hiddenMatrix??Wr.identity)),e&&(i.updateMatrix(),mr(i.parent)&&dr(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 cb(i,t){lb(i,t),t.name!==void 0&&(i.name=t.name),t.visible!==void 0&&(i.visible=t.visible)}function cm(i,t,e){cb(i,t),t.color!==void 0&&(i.color=Ye(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Dl.HemisphereLight)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Dl.HemisphereLight)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0)}function um(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 ua=i=>class extends i{hasEntityChild(){return this.children.some(e=>Bl(e))}isDescendantOf(e){e instanceof ca.Object3D&&(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 ca.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Bl(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}};var ze=require("three");var hn=new ze.Box3,fr=new ze.Vector3,hr=new ze.Vector3,gn=new ze.Matrix4,dm=[new ze.Vector3(-1,1,1),new ze.Vector3(-1,-1,1),new ze.Vector3(1,-1,1),new ze.Vector3(1,1,1),new ze.Vector3(-1,1,-1),new ze.Vector3(-1,-1,-1),new ze.Vector3(1,-1,-1),new ze.Vector3(1,1,-1)],ub=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],pb=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function db(i,t,e=0,r=t.count){let o=1/0,n=1/0,s=1/0,a=-1/0,c=-1/0,p=-1/0;for(let l=e;l<r;l++){let u=t.getX(l),d=t.getY(l),m=t.getZ(l);u<o&&(o=u),d<n&&(n=d),m<s&&(s=m),u>a&&(a=u),d>c&&(c=d),m>p&&(p=m)}return i.min.set(o,n,s),i.max.set(a,c,p),i}var pm=(i,t,e)=>{if(dr(i)){let r=i.geometry.userData.parameters,o=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?fr.copy(i.originalGeometry.boundingSphere.center):o!==void 0&&(db(hn,o,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:o.count),hn.getCenter(fr)),i.forceComputeSize?hn.getSize(hr).multiplyScalar(.5):hr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(la(i)&&i.objectHelper.visible){let r=i.geometryHelper.getAttribute("position");hn.setFromArray(r.array),hn.getCenter(fr),hn.getSize(hr).multiplyScalar(.5)}else fr.setScalar(0),hr.setScalar(0);gn.copy(t).multiply(i.matrixWorld),hr.x===0&&hr.y===0&&hr.z===0?e.push(new ze.Vector3(fr.x,fr.y,fr.z).applyMatrix4(gn)):dm.forEach(r=>{e.push(r.clone().multiply(hr).add(fr).applyMatrix4(gn))})},ai=class extends ze.Box3{constructor(){super(...arguments);this.matrix=new ze.Matrix4;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 ze.Matrix4().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&&pm(s,r,n)}):pm(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(gn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(hr).multiplyScalar(.5),this.getCenter(fr),gn.copy(this.matrix).setPosition(fr),this.vertices=dm.map(e=>e.clone().multiply(hr).applyMatrix4(gn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=ub.map(([e,r])=>new ze.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ze.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=pb.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var gr=i=>"isEntity"in i,mm=i=>"isAbstractMesh"in i,jt=i=>class extends ua(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new El.Matrix4;this._singleBBox=new ai;this._recursiveBBox=new ai;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{gr(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)gr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)gr(o)&&o.visible&&o.traverseVisibleEntity(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)}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)gr(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new El.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)gr(n)&&n.hiddenMatrix.premultiply(r)}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 Ko(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 Ko(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.visible=r.visible),this.fromObjectTransformState(r),this}};var Ke=require("three");var fm=require("three"),Gl=class extends fm.Object3D{},pa=class extends Gl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var _o=class extends Ke.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),n=.1;this.parameters=Ss.defaultData(o.toArray(),n),mo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(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=new pa(this.object);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*Ke.MathUtils.DEG2RAD,n=r.end*Ke.MathUtils.DEG2RAD,s=o-n,a=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD),c;switch(r.axis){case"z":c=new Ke.Vector3(0,0,1);break;case"y":c=new Ke.Vector3(0,1,0);break;default:case"x":c=new Ke.Vector3(1,0,0);break}for(let[p,l]of this.children.entries()){l.scale.x=r.scale[0],l.scale.y=r.scale[1],l.scale.z=r.scale[2],l.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":l.rotation.set(0,u,0);break;case"y":l.rotation.set(0,0,u);break;case"z":l.rotation.set(u,0,0);break}l.translateOnAxis(c,r.radius),l.position.x+=r.position[0],l.position.y+=r.position[1],l.position.z+=r.position[2],r.alignment===!0?(l.rotation.x+=a.x,l.rotation.y+=a.y,l.rotation.z+=a.z):l.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD);for(let[n,s]of this.children.entries())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 Ke.Vector3(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 c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let l=this.children[r++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*a-s.x,l.position.y=o.size[1]*c-s.y,l.position.z=o.size[2]*p-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 c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*n,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),mo(this.parameters,e),this.update(),this}};var Rt=require("three");function mb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let t=new Map,e=i.geometry.attributes.position.array,r=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new Rt.Vector3(r[n],r[n+1],r[n+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Rt.Vector3})}t.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=t.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new Rt.Float32BufferAttribute(o,3))}function fb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Rt.Vector3;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;i.geometry.setAttribute("extrudeNormal",new Rt.Float32BufferAttribute(e,3))}function eo(i){if(i.objectType!=="TextFrame"){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(i.material.getLayersOfType("outline").length===0)return;i.objectType==="Mesh2D"?fb(i):mb(i)}}function to(i){if(!i.geometry.attributes.position)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(i.uuid.replace(/\D/g,"")),o=[Rt.MathUtils.seededRandom(r),Rt.MathUtils.seededRandom(r+1e4),Rt.MathUtils.seededRandom(r+2e4)];for(let n=0;n<t.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new Rt.BufferAttribute(e,3))}var it=class extends jt(da.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new da.Matrix4;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Rl[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;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),eo(this),r.getAttribute("randomColor")&&to(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=li(r),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new _o(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new _o(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&&(Yt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),mr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)dr(e)&&(e.freeBooleanPointer(),mr(e)&&e.invalidateUpstreamBooleanData())}};var hb=new ro.Vector3(0,0,1),hm=new ro.Vector3,gm=new ro.Vector3,ym=new ro.Matrix3,yn=class extends it{constructor(e=vt.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new ro.EventDispatcher;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)}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),ym.getNormalMatrix(this.matrixWorld),hm.copy(hb).applyMatrix3(ym).normalize(),gm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(hm,gm)}clone(e){let r=this.shape.clone(),o=this.material,n=this.geometry.userData,s=vt.create(Object.assign({},n,{shape:r})),a=new yn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){it.prototype.raycast.call(this,e,r)}};function ma(i,t){return gb(i)}function gb(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Ce.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new xm.BufferGeometryLoader().parse(i));let e;try{e=li(t)}catch(r){console.error(r)}if(!e){let r=Ce.createFromState(on.defaultData(),100,100);t.shape=r,e=li(t)}return e}var de;aa.then(i=>{de=i});var vm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),bm=new Uint32Array([0,1,2,3]),_m=new Uint8Array([4]),Ht=class{static build(i,t,e,r,o){let n,s,a,c=i?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),i.positionWASM!==void 0){e&&e!==0&&(de.free_bvh(e),de.free_subdivision_surface(e));try{n=Ht.allocate(i,o)}catch(p){console.error(p,i),n=Ht.allocate({positionWASM:vm,indexWASM:bm,verticesPerFaceWASM:_m},o)}de.set_destination_refinement_level(n,0),s=Ht.buildLevel(n,!0,c)}else n=e,i.phongAngle!==void 0&&(s=Ht.buildLevel(n,!0,c));return i.subdivisions!==void 0&&(de.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Ht.buildLevel(n,!1,c):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:ma(i),r,o,n,s;return{positions:r,triIndices:s}=Ul(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=kl(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=vm,r=bm,o=_m);let a=e.length,c=r.length,p=o.length,l=e.length+n.length+s.length,u=r.length+o.length,d=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,m=l*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,h=de._malloc(d),g=new Float32Array(de.HEAPF32.buffer,h,l),x=new Uint32Array(de.HEAPU32.buffer,h+m,u);g.set(e,0),g.set(n,e.length),g.set(s,e.length+n.length),x.set(r,0),x.set(o,r.length);let v;i?.scaleBaked?.some(_=>_!==1)&&(v=new He.Matrix4().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?de.alloc_subdivision_surface2(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):de.alloc_subdivision_surface(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return de._free(h),A}static buildLevel(i,t,e,r,o){let n=o?de.get_mesh_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(i,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,a=de.HEAPU32.subarray(n>>2,(n>>2)+s),c=a.subarray(4,4+4),p=0,l=de.HEAPU32[a[p]>>2],u=de.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=de.HEAPU32[a[p]>>2],m=de.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=de.HEAPU32[a[p]>>2],h=de.HEAPU32.subarray(f>>2,(f>>2)+c[p]);p++;let g=de.HEAPU32[a[p]>>2],x=de.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new He.BufferGeometry;if(v.setIndex(new He.Uint32BufferAttribute(x,1)),v.setAttribute("position",new He.Float32BufferAttribute(u,3)),v.setAttribute("normal",new He.Float32BufferAttribute(m,3)),t){v.setAttribute("faceMap",new He.Uint32BufferAttribute(h,1));let A=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new He.BufferAttribute(A,4))}return de.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=de.get_wireframe_data_for_base_level(i),o=4,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,c=de.HEAPU32[n[a]>>2],p=de.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=de.HEAPU32[n[a]>>2],u=de.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new He.BufferGeometry;d.setAttribute("position",new He.Float32BufferAttribute(p,3));let m=new Float32Array(p.length);for(let f=0,h=p.length;f<h;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new He.BufferAttribute(m,3)),d.setIndex(new He.Uint32BufferAttribute(u,1)),de.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||de.set_destination_refinement_level(i,1);let r=e?de.get_topological_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(i,t?de.Level.CONTROL:de.Level.REFINED),o=6,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,c=de.HEAPU32[n[a]>>2],p=new Float32Array(de.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=de.HEAPU32[n[a]>>2],u=new Uint32Array(de.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=de.HEAPU32[n[a]>>2],m=new Uint8Array(de.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return de.free_topological_data(r),{positions:p,indices:u,verticesPerFace:m}}};var Sm=["getX","getY","getZ"];function Ul(i,t){let e={},r=t?t.count:i.count,o=0,n=[],s=[],a=1e4;for(let p=0;p<r;p++){let l=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(i[Sm[d]](l)*a)},`;if(u in e)n.push(e[u]);else{for(let d=0;d<3;d++)s.push(i[Sm[d]](l));e[u]=o,n.push(o),o++}}let c=[];for(let p=0;p<n.length;p+=3)n[p]===n[p+1]||n[p]===n[p+2]||n[p+1]===n[p+2]||c.push(n[p],n[p+1],n[p+2]);return{positions:s,triIndices:c}}var fa=new He.Vector3,Fl=new He.Vector3,Vl=new He.Vector3,zl=new He.Vector3;function kl(i,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let c=0;c<n.length;c+=2)s+=(n[c]-n[(c===0?n.length:c)-2])*(n[c+1]+n[(c===0?n.length:c)-1]);i.length=0;let a=0;if(s<0)for(let c=0;c<n.length;c+=2)i.push(n[c],n[c+1],0),r.push(a++);else for(let c=n.length-2;c>=0;c-=2)i.push(n[c],n[c+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??t.length;n<s;)if(t[n+1]===t[n+3]&&t[n+2]===t[n+5]||t[n+0]===t[n+3]&&t[n+2]===t[n+4]){fa.set(i[t[n]*3],i[t[n]*3+1],i[t[n]*3+2]),Fl.set(i[t[n+1]*3],i[t[n+1]*3+1],i[t[n+1]*3+2]),Vl.set(i[t[n+4]*3],i[t[n+4]*3+1],i[t[n+4]*3+2]),zl.set(i[t[n+5]*3],i[t[n+5]*3+1],i[t[n+5]*3+2]),Fl.sub(fa).normalize(),Vl.sub(fa).normalize(),zl.sub(fa).normalize();let a=Fl.cross(Vl).dot(zl);Math.abs(a)>.005?(r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3):(r.push(t[n],t[n+1],t[n+4],t[n+5]),o.push(4),n+=6)}else r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let c=0,p=0;c<i.length;c+=3,p++)i[c+2]===0&&(n.push(p),a++),i[c+2]===e.userData.parameters.depth&&s.push(p);if(e.userData.parameters.extrudeBevelSize===0){let c=s[0];s[0]=s[1],s[1]=c}n.reverse(),r.push(...n,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Yt={};xc(Yt,{calcBoolean:()=>bb,calcBooleanTopological:()=>vb,freeMeshSet:()=>wb,getMeshSet:()=>_b,transformMeshSet:()=>Sb});var yb,wm=new Promise(i=>{yb=i});var ci=require("three");var ye,xn;wm.then(i=>ye=i);function xb(i,t){let e,{positions:r,triIndices:o}=Ul(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=kl(r,o,i);n=a.length,e=[];for(let c=0,p=0;c<n;c++){e.push(a[c]);for(let l=0;l<a[c];l++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),n=0;for(let a=0,c=0;c<e.length;)e[c++]=3,n++,e[c++]=o[a++],e[c++]=o[a++],e[c++]=o[a++]}return{positions:r,faceIndices:e,nFaces:n}}function Tm(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=ye._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(ye.HEAPU32.buffer,n,t):new Float32Array(ye.HEAPF32.buffer,n,t)).set(i,0),n}function Am(i){switch(i){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 "+i)}}function vb(i,t){xn===void 0&&(xn=ye.init_csg());let e=Tm(i),r=ye.csg_calc_topological(xn,e,i.length,Am(t));ye._free(e);let o=6,n=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,c=ye.HEAPU32[n[a]>>2],p=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=ye.HEAPU32[n[a]>>2],u=new Uint32Array(ye.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=ye.HEAPU32[n[a]>>2],m=new Uint8Array(ye.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return ye.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:m}}function bb(i,t,e,r){xn===void 0&&(xn=ye.init_csg());let o=Tm(i),n=ye.csg_calc(xn,o,i.length,r,Am(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(n>>2,(n>>2)+s),c=a.subarray(2,2+3),p=0,l=ye.HEAPU32[a[p]>>2],u=ye.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=ye.HEAPU32[a[p]>>2],m=ye.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=c[p];e.setAttribute("position",new ci.Float32BufferAttribute(u,3)),e.setAttribute("normal",new ci.Float32BufferAttribute(m,3));let h=ye.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ci.Sphere),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},ye.free_mesh_data(n),f}function _b(i,t){if(ye===void 0)return-1;let e,r,o;if(t&&i.userData.positions!==void 0){let h=i.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((g,x)=>g+x,0)+o);for(let g=0,x=0,v=0;g<h.verticesPerFace.length;g++){r[v++]=h.verticesPerFace[g];for(let A=0;A<h.verticesPerFace[g];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=xb(i,t));let n=e.length,s=r.length,a=e.length,c=r.length,p=a*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,l=a*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=ye._malloc(p),m=new Float32Array(ye.HEAPF32.buffer,d,a),f=new Uint32Array(ye.HEAPU32.buffer,d+l,c);return m.set(e,0),f.set(r,0),ye.get_csg_mesh(d,n,d+l,s,o)}function Sb(i,t){ye.transform_csg_mesh(i,t.elements)}function wb(i){ye.free_csg_mesh(i)}var Rl={ConeGeometry:fd,CubeGeometry:hd,CylinderGeometry:dd,DodecahedronGeometry:yd,EllipseGeometry:Vd,HelixGeometry:jd,IcosahedronGeometry:Wd,LatheGeometry:qd,NonParametricGeometry:$d,PolygonGeometry:Xd,PyramidGeometry:Yd,RectangleGeometry:Kd,SphereGeometry:Zd,PlaneGeometry:em,BackdropGeometry:tm,StarGeometry:rm,TextFrameGeometry:sa,TorusGeometry:nm,TorusKnotGeometry:sm,TriangleGeometry:am,VectorGeometry:vt},li=i=>Rl[i.type].create(i);var ui=require("three");var Cm=new ui.Matrix4;var ha=class extends it{constructor(e=new ui.BufferGeometry,r){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 n=this.children[o];mr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(mm(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=Yt.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;Yt.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else mr(n)&&n.needsTransformForDownstream===!0?(Yt.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(Cm.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),Yt.transformMeshSet(n.booleanMeshSetAddress,Cm),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Yt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new ui.BufferGeometry,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Yt.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,eo(this),to(this)}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()}};var Ge=require("three");var Nm=require("three"),yr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Nm.BoxBufferGeometry(30,30,30),t};var ut=require("three");var ft=require("three"),ga=new ft.Ray,jl=new ft.Sphere,Om=new ft.Matrix4,xr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),jl.copy(n.boundingSphere),jl.applyMatrix4(s),e.ray.intersectsSphere(jl)===!1||(Om.copy(s).invert(),ga.copy(e.ray).applyMatrix4(Om),n.boundingBox!==null&&ga.intersectsBox(n.boundingBox)===!1))return;let a,c,p,l,u=n.index,d=n.attributes.position,m=n.drawRange,f,h;if(o===!1){let x=Math.max(0,m.start),v=Math.min(u.count,m.start+m.count);for(f=x,h=v;f<h;f+=3)if(c=u.getX(f),p=u.getX(f+1),l=u.getX(f+2),a=g(i,e,ga,d,c,p,l),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let v=n.attributes.position,A=new ft.Vector3,_=new ft.Vector3,b=new ft.Vector3,D=new ft.Vector3,S=2,I=1/((i.scale.x+i.scale.y+i.scale.z)/3),T=I*I,L=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let N=L,j=C-1;N<j;N+=S){if(A.fromBufferAttribute(v,N),_.fromBufferAttribute(v,N+1),ga.distanceSqToSegment(A,_,D,b)>T)continue;D.applyMatrix4(i.matrixWorld);let ne=e.ray.origin.distanceTo(D);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function g(x,v,A,_,b,D,S){let y=new ft.Vector3,I=new ft.Vector3,T=new ft.Vector3,L=new ft.Vector3,C=new ft.Vector3;if(y.fromBufferAttribute(_,b),I.fromBufferAttribute(_,D),T.fromBufferAttribute(_,S),A.intersectTriangle(y,I,T,!1,L)===null)return null;C.copy(L),C.applyMatrix4(x.matrixWorld);let j=v.ray.origin.distanceTo(C);return j<v.near||j>v.far?null:{faceIndex:1,distance:j,point:C.clone(),object:x}}};var ya=new ut.Vector3,Wt=new ut.Camera,Hl=class extends ut.LineSegments{constructor(e){let r=new ut.BufferGeometry,o=new ut.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},c=new ut.Color(15711266),p=new ut.Color(15711266),l=new ut.Color(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l);function u(m,f,h){d(m,h),d(f,h)}function d(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 ut.Float32BufferAttribute(n,3)),r.setAttribute("color",new ut.Float32BufferAttribute(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;Wt.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;Kt("n1",r,e,Wt,-n,-s,a),Kt("n2",r,e,Wt,n,-s,a),Kt("n3",r,e,Wt,-n,s,a),Kt("n4",r,e,Wt,n,s,a);let c=a;Kt("f1",r,e,Wt,-n,-s,c),Kt("f2",r,e,Wt,n,-s,c),Kt("f3",r,e,Wt,-n,s,c),Kt("f4",r,e,Wt,n,s,c);let p=c,l=.5;Kt("u1",r,e,Wt,n*.7*l,s*1.1,p),Kt("u2",r,e,Wt,-n*.7*l,s*1.1,p),Kt("u3",r,e,Wt,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Kt(i,t,e,r,o,n,s){ya.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let c=e.getAttribute("position");for(let p=0,l=a.length;p<l;p++)c.setXYZ(a[p],ya.x,ya.y,ya.z)}}var xa=class extends yr(Hl){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){xr(this.object,this.geometry,e,r,!0)}};var Lm=require("three");var vn=class extends yr(Lm.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,vn.geometryHelper,e,r)}};var Im=require("three");var bn=class extends yr(Im.AxesHelper){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){xr(this.object,bn.geometryHelper,e,r)}update(){}};var Pm=require("three");var _n=class extends yr(Pm.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,_n.geometryHelper,e,r)}};var ba=require("three");var va=class extends yr(ba.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,va.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=va._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)}}},pi=va;pi._vector=new ba.Vector3;var vr=(i,t)=>class extends i{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ye(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)}return this}};var Sn=new Ge.Vector3,Wl=new Ge.Vector3,Rr=class extends vr(jt(Ge.Camera),xa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=fo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ge.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,n??-5e4,s),this.perspCamera=new Ge.PerspectiveCamera(o,e/r,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()}static createFromState(e,r){let o=new Rr().fromState(r);return 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(Sn),this.targetOffset=Sn.distanceTo(e)}getTarget(e=new Ge.Vector3){return this.getWorldDirection(Wl),this.getWorldPosition(Sn),Wl.multiplyScalar(this.targetOffset),e.copy(Sn).add(Wl),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Sn),Sn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ge.Quaternion),r=new Ge.Vector3(0,0,1).applyQuaternion(e),o=new Ge.Vector3().copy(Ge.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Ge.Vector3().copy(Ge.Object3D.DefaultUp).projectOnPlane(r),s=new Ge.Vector3().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ge.Vector3),n=e.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ge.Vector3),n=this.getWorldDirection(new Ge.Vector3).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(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,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(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ko(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}};var Mm=require("three");var So=class extends vr(jt(Mm.Group),bn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new So().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};var wo=require("three");var wn=class extends vr(jt(wo.DirectionalLight),vn){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 wo.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new wn().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 wo.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof wo.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof wo.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}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&&um(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}};var ht=require("three");var Tn=class extends vr(jt(ht.PointLight),_n){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 ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new ht.Box3(n,s),c=new ht.Box3Helper(a,new ht.Color(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let n=new Tn().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 ht.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ht.Box3Helper&&(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 ht.Box3Helper){let o=this.shadow.camera,n=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(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.objectHelper&&this.objectHelper.update()}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}};var Nt=require("three");var Dm=new Nt.Vector3,Bm=new Nt.Vector3,Em=new Nt.Quaternion,An=class extends vr(jt(Nt.SpotLight),pi){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=Nt.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Nt.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new An().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 Nt.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Bm.setFromMatrixPosition(this.matrixWorld),Em.setFromRotationMatrix(this.matrixWorld),Dm.copy(this.up).applyQuaternion(Em).negate().multiplyScalar(this.distance),this.target.position.copy(Bm).add(Dm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}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}};var Se=require("three");var Gm=require("three"),st=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Gm.MathUtils.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,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}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof st&&(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}};var Rm=require("three"),le=class extends st{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Rm.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=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,c)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,a.output,n);let l=this.generate(e,c,o);return e.addNodeCode(p+" = "+l+";"),e.format(p,c,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??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var Ie=class extends le{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(c.vertex.name,n,r)):(c.fragment||(c.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(c.fragment.name,n,r))}};var Ne=class extends Ie{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof ct?e:new ct(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??this.getUUID()),n=n??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return p?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(c.vertex.name,n,r)):(c.fragment||(c.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(c.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)}};var X=class extends Ie{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}};var xe=class extends Ie{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,r)}};var _a=require("three");var oo=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ne(5855577),this.shadingAlpha=new X(1),this.shadingBlend=new xe(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(_a.UniformsUtils.merge([_a.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
130
2
  `));let n=["#include <beginnormal_vertex>",`
131
3
  #if !defined( USE_LAYER_DISPLACE )
132
4
  #include <defaultnormal_vertex>
@@ -144,9 +16,9 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
144
16
  #include <begin_vertex>
145
17
  #endif /* !USE_LAYER_DISPLACE */
146
18
  `];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(`
147
- `)}else{this.color===void 0&&(this.color=new Ie(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(`
19
+ `)}else{this.color===void 0&&(this.color=new Ne(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(`
148
20
  `));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(`
149
- `)}return r}};var ci=require("three");var ot=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)}};var ui=class extends st{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ie(5855577),this.emissive=new Ie(0),this.emissiveIntensity=new Y(1),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(ci.UniformsUtils.merge([ci.UniformsLib.fog,ci.UniformsLib.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(`
21
+ `)}return r}};var di=require("three");var et=class extends Ie{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)}};var mi=class extends st{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ne(5855577),this.emissive=new Ne(0),this.emissiveIntensity=new X(1),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(di.UniformsUtils.merge([di.UniformsLib.fog,di.UniformsLib.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(`
150
22
  `));let n=["#include <beginnormal_vertex>",`
151
23
  #ifndef USE_LAYER_DISPLACE
152
24
  #include <defaultnormal_vertex>
@@ -238,21 +110,21 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
238
110
  #pragma unroll_loop_end
239
111
  #endif
240
112
  `," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
241
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(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,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==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(`
242
- `));let m=["#include <normal_fragment_begin>",`
113
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(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"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==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(`
114
+ `));let u=["#include <normal_fragment_begin>",`
243
115
  // NOTE: gl_FrontFacing alternative using face normal estimation.
244
116
  vec3 viewdx = dFdx(vViewPosition);
245
117
  vec3 viewdy = dFdy(vViewPosition);
246
118
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
247
119
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
248
- `,"#include <clipping_planes_fragment>"];m.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.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&&m.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),m.push(`
120
+ `,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.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&&u.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),u.push(`
249
121
  if (outgoingLight != diffuseColor) {
250
122
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
251
123
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
252
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
124
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
253
125
  }
254
- `),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
255
- `)}return r}};var pi=require("three");var da=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ie(5855577),this.specular=new Ie(1118481),this.shininess=new Y(30),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(pi.UniformsUtils.merge([pi.UniformsLib.fog,pi.UniformsLib.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(`
126
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
127
+ `)}return r}};var fi=require("three");var Sa=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new X(30),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(fi.UniformsUtils.merge([fi.UniformsLib.fog,fi.UniformsLib.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(`
256
128
  `));let n=["#include <beginnormal_vertex>",`
257
129
  #ifndef USE_LAYER_DISPLACE
258
130
  #include <defaultnormal_vertex>
@@ -271,8 +143,8 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
271
143
  #include <begin_vertex>
272
144
  #endif
273
145
  `];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(`
274
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(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,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==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(`
275
- `));let m=["#include <normal_fragment_begin>",`
146
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(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"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==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(`
147
+ `));let u=["#include <normal_fragment_begin>",`
276
148
  // NOTE: gl_FrontFacing alternative using face normal estimation.
277
149
  vec3 viewdx = dFdx(vViewPosition);
278
150
  vec3 viewdy = dFdy(vViewPosition);
@@ -280,14 +152,14 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
280
152
  if (dot(normal, faceNormal) < 0.0) {
281
153
  normal *= -1.0;
282
154
  }
283
- `," BlinnPhongMaterial material;"];m.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;"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("material.diffuseColor = diffuseColor;"),m.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),m.push(`
155
+ `," BlinnPhongMaterial material;"];u.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;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),u.push(`
284
156
  if (outgoingLight != diffuseColor) {
285
157
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
286
158
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
287
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
159
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
288
160
  }
289
- `),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
290
- `)}return r}};var Sn=require("three");var mi=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ie(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(Sn.UniformsUtils.merge([Sn.UniformsLib.fog,Sn.UniformsLib.lights])),Sn.UniformsLib.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(`
161
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
162
+ `)}return r}};var Cn=require("three");var hi=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ne(5855577),this.roughness=new X(.3),this.metalness=new X(0),this.reflectivity=new X(.5),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(Cn.UniformsUtils.merge([Cn.UniformsLib.fog,Cn.UniformsLib.lights])),Cn.UniformsLib.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(`
291
163
  `));let n=["#include <beginnormal_vertex>",`
292
164
  #if !defined( USE_LAYER_DISPLACE )
293
165
  #include <defaultnormal_vertex>
@@ -305,8 +177,8 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
305
177
  #include <begin_vertex>
306
178
  #endif /* !USE_LAYER_DISPLACE */
307
179
  `];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(`
308
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ie(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"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,m=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=m!==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(`
309
- `));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
180
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ne(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"),c=this.shadingAlpha.flow(e,"f"),p=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==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(`
181
+ `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
310
182
  // NOTE: gl_FrontFacing alternative using face normal estimation.
311
183
  vec3 viewdx = dFdx(vViewPosition);
312
184
  vec3 viewdy = dFdy(vViewPosition);
@@ -314,14 +186,14 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
314
186
  if (dot(normal, faceNormal) < 0.0) {
315
187
  normal *= -1.0;
316
188
  }
317
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.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+";"),m&&d.push(m.code,"#ifdef ALPHATEST"," if ( "+m.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 );"),p?d.push(p.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+p.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(`
189
+ `," 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+";"),u&&m.push(u.code,"#ifdef ALPHATEST"," if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?m.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),m.push(`
318
190
  if (outgoingLight != diffuseColor) {
319
191
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
320
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
321
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
192
+ accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
193
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
322
194
  }
323
- `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),m?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${m.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
324
- `)}return r}};var di=require("three");var fi=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ie(5855577),this.specular=new Ie(1118481),this.shininess=new Y(30),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(di.UniformsUtils.merge([di.UniformsLib.fog,di.UniformsLib.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(`
195
+ `),l&&m.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
196
+ `)}return r}};var gi=require("three");var yi=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new X(30),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(gi.UniformsUtils.merge([gi.UniformsLib.fog,gi.UniformsLib.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(`
325
197
  `));let n=["#include <beginnormal_vertex>",`
326
198
  #ifndef USE_LAYER_DISPLACE
327
199
  #include <defaultnormal_vertex>
@@ -339,7 +211,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
339
211
  #include <begin_vertex>
340
212
  #endif
341
213
  `];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(`
342
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(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,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==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>",`
214
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(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"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==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>",`
343
215
  varying vec3 vViewPosition;
344
216
  struct ToonMaterial {
345
217
  vec3 diffuseColor;
@@ -360,7 +232,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
360
232
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
361
233
  #define Material_LightProbeLOD( material ) (0)
362
234
  `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
363
- `));let m=["#include <normal_fragment_begin>",`
235
+ `));let u=["#include <normal_fragment_begin>",`
364
236
  // NOTE: gl_FrontFacing alternative using face normal estimation.
365
237
  vec3 viewdx = dFdx(vViewPosition);
366
238
  vec3 viewdy = dFdy(vViewPosition);
@@ -368,14 +240,142 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
368
240
  if (dot(normal, faceNormal) < 0.0) {
369
241
  normal *= -1.0;
370
242
  }
371
- `," ToonMaterial material;"];m.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;"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("material.diffuseColor = diffuseColor;"),m.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),m.push(`
243
+ `," ToonMaterial material;"];u.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;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),u.push(`
372
244
  if (outgoingLight != diffuseColor) {
373
245
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
374
246
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
375
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
247
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
376
248
  }
377
- `),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
378
- `)}return r}};var to=class extends Me{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}};var dd=require("three");var wn=class extends Me{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new dd.Matrix3}generateReadonly(e,r,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Gl=require("three");var Jt=class extends Me{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Gl.Vector4?new Array(e).fill(r):new Array(e).fill(new Gl.Vector4(0))}};var hi=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(hi||{}),ht=function(){let t=new X(`vec3 random3(vec3 c) {
249
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
250
+ `)}return r}};var Ab=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,ql=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||ql.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,c,p="",l=Ab.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],p=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=p}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)}},_e=ql;_e.PI="PI",_e.PI2="PI2",_e.RECIPROCAL_PI="RECIPROCAL_PI",_e.RECIPROCAL_PI2="RECIPROCAL_PI2",_e.LOG2="LOG2",_e.EPSILON="EPSILON";var Cb=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
251
+ )*?)}`,"gim"),Nb=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Nn=class extends le{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=Cb.exec(e);if(r){let o=r[2],n;for(;n=Nb.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var $l=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}},tt=new $l;var Ob=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Fm=/[a-z_0-9]+/gi,Y=class extends le{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,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let l=[];for(;a=Fm.exec(this.src);)l.push(a);for(let u=0;u<l.length;u++){let d=l[u],m=d[0],f=this.isMethod?!this.getInputByName(m):!0,h=m;if(this.keywords[m]||this.useKeywords&&f&&tt.containsKeyword(m)){let g=this.keywords[m];if(!g){let x=tt.getKeywordData(m);x.cache&&(g=e.keywords[m]),g=g||tt.getKeyword(m,e),x.cache&&(e.keywords[m]=g)}h=g.build(e)}m!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+m.length+c),c+=h.length-m.length),this.getIncludeByName(h)===void 0&&tt.contains(h)&&e.include(tt.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=Ob.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(Fm);if(a){let c=0;for(;c<a.length;){let p=a[c++],l;p==="in"||p==="out"||p==="inout"?l=a[c++]:(l=p,p="");let u=a[c++];this.inputs.push({name:u,type:l,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var Te=class extends Y{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};var xi=class extends le{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,n,s){n=this.getType(e);let a=this.value,c=a.build(e,r)+"( ",p=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let u=a.inputs[l],d=this.inputs[l]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,n,r)}};var vi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Zt=require("three");var Xl=require("three");var rt=class extends Ie{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Xl.Vector2?e:new Xl.Vector2(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)}};var Yl=require("three");var pt=class extends Ie{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Yl.Vector3?e:new Yl.Vector3(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)}};var qt=class extends Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ct?e:new ct(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)}};var On=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};tt.addKeyword("uv",function(){return new On});tt.addKeyword("uv2",function(){return new On(1)});var wa=require("three");var To=class extends le{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??To.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case wa.LinearEncoding:return["Linear"];case wa.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),s=To.Nodes[this.method],a=e.include(s);if(a===To.LINEAR_TO_LINEAR)return e.format(o,n,r);if(s.inputs?.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=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]}},bt=To;bt.Nodes={LinearToLinear:new Y(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
252
+ `)),sRGBToLinear:new Y(["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(`
253
+ `)),LinearTosRGB:new Y(["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(`
254
+ `))},bt.LINEAR_TO_LINEAR="LinearToLinear",bt.SRGB_TO_LINEAR="sRGBToLinear",bt.LINEAR_TO_SRGB="LinearTosRGB";var Vm=require("three"),Ot=class extends Ie{constructor(e=new Vm.Texture,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new On,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){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,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+n+", "+s+" )":c=a+"( "+o+", "+n+" )";let p={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new bt(new Te("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,r)}};var Kl=class extends le{constructor(e,r,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)}},Lt=Kl;Lt.ADD="+",Lt.SUB="-",Lt.MUL="*",Lt.DIV="/";var Le=class extends le{constructor(e,r=Le.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 Le.MIX:case Le.CLAMP:case Le.REFRACT:case Le.SMOOTHSTEP:case Le.FACEFORWARD:return 3;case Le.MIN:case Le.MAX:case Le.MOD:case Le.STEP:case Le.REFLECT:case Le.DISTANCE:case Le.DOT:case Le.CROSS:case Le.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 Le.LENGTH:case Le.DISTANCE:case Le.DOT:return"f";case Le.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,p=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Le.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,r);case Le.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,r);case Le.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Le.STEP:o=this.a.build(e,a===1?"f":l),n=this.b.build(e,l);break;case Le.MIN:case Le.MAX:case Le.MOD:o=this.a.build(e,l),n=this.b.build(e,c===1?"f":l);break;case Le.REFRACT:o=this.a.build(e,l),n=this.b.build(e,l),s=this.c.build(e,"f");break;case Le.MIX:o=this.a.build(e,l),n=this.b.build(e,l),s=this.c.build(e,p===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(n=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let d=[];d.push(o),n&&d.push(n),s&&d.push(s);let m=this.getNumInputs(e);if(d.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",u,r)}},me=Le;me.RAD="radians",me.DEG="degrees",me.EXP="exp",me.EXP2="exp2",me.LOG="log",me.LOG2="log2",me.SQRT="sqrt",me.INV_SQRT="inversesqrt",me.FLOOR="floor",me.CEIL="ceil",me.NORMALIZE="normalize",me.FRACT="fract",me.SATURATE="saturate",me.SIN="sin",me.COS="cos",me.TAN="tan",me.ASIN="asin",me.ACOS="acos",me.ARCTAN="atan",me.ABS="abs",me.SIGN="sign",me.LENGTH="length",me.NEGATE="negate",me.INVERT="invert",me.MIN="min",me.MAX="max",me.MOD="mod",me.STEP="step",me.REFLECT="reflect",me.DISTANCE="distance",me.DOT="dot",me.CROSS="cross",me.POW="pow",me.MIX="mix",me.CLAMP="clamp",me.REFRACT="refract",me.SMOOTHSTEP="smoothstep",me.FACEFORWARD="faceforward";var Ln=class extends le{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let s=new xi(Ln.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new bt(new Te("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new bt(new Te("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new bt(new Te("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new bt(new Te("","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 Te(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Te(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Te(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Te(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Te("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,s=new xi(Ln.Nodes.roughnessToMip,[n]),a=new me(s,Ln.Nodes.m0,Ln.Nodes.cubeUV_maxMipLevel,me.CLAMP),c=new me(a,me.FLOOR),p=new me(a,me.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new Lt(c,new X(1).setReadonly(!0),Lt.ADD)),d=new me(l,u,p,me.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},In=Ln;In.Nodes=function(){let e=new Nn(`struct TextureCubeUVData {
255
+ vec4 tl;
256
+ vec4 tr;
257
+ vec4 br;
258
+ vec4 bl;
259
+ vec2 f;
260
+ }`),r=new _e("float cubeUV_maxMipLevel 8.0",!0),o=new _e("float cubeUV_minMipLevel 4.0",!0),n=new _e("float cubeUV_maxTileSize 256.0",!0),s=new _e("float cubeUV_minTileSize 16.0",!0),a=new Y(`float getFace(vec3 direction) {
261
+ vec3 absDirection = abs(direction);
262
+ float face = -1.0;
263
+ if (absDirection.x > absDirection.z) {
264
+ if (absDirection.x > absDirection.y)
265
+ face = direction.x > 0.0 ? 0.0 : 3.0;
266
+ else
267
+ face = direction.y > 0.0 ? 1.0 : 4.0;
268
+ } else {
269
+ if (absDirection.z > absDirection.y)
270
+ face = direction.z > 0.0 ? 2.0 : 5.0;
271
+ else
272
+ face = direction.y > 0.0 ? 1.0 : 4.0;
273
+ }
274
+ return face;
275
+ }`);a.useKeywords=!1;let c=new Y(`vec2 getUV(vec3 direction, float face) {
276
+ vec2 uv;
277
+ if (face == 0.0) {
278
+ uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
279
+ } else if (face == 1.0) {
280
+ uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
281
+ } else if (face == 2.0) {
282
+ uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
283
+ } else if (face == 3.0) {
284
+ uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
285
+ } else if (face == 4.0) {
286
+ uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
287
+ } else {
288
+ uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
289
+ }
290
+ return 0.5 * (uv + 1.0);
291
+ }`);c.useKeywords=!1;let p=new Y(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
292
+ float face = getFace(direction);
293
+ float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
294
+ mipInt = max(mipInt, cubeUV_minMipLevel);
295
+ float faceSize = exp2(mipInt);
296
+ float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
297
+ vec2 uv = getUV(direction, face) * (faceSize - 1.0);
298
+ vec2 f = fract(uv);
299
+ uv += 0.5 - f;
300
+ if (face > 2.0) {
301
+ uv.y += faceSize;
302
+ face -= 3.0;
303
+ }
304
+ uv.x += face * faceSize;
305
+ if(mipInt < cubeUV_maxMipLevel){
306
+ uv.y += 2.0 * cubeUV_maxTileSize;
307
+ }
308
+ uv.y += filterInt * 2.0 * cubeUV_minTileSize;
309
+ uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
310
+ uv *= texelSize;
311
+ vec4 tl = texture2D(envMap, uv);
312
+ uv.x += texelSize;
313
+ vec4 tr = texture2D(envMap, uv);
314
+ uv.y += texelSize;
315
+ vec4 br = texture2D(envMap, uv);
316
+ uv.x -= texelSize;
317
+ vec4 bl = texture2D(envMap, uv);
318
+ return TextureCubeUVData( tl, tr, br, bl, f );
319
+ }`,[e,a,c,r,o,n,s]);p.useKeywords=!1;let l=new _e("float r0 1.0",!0),u=new _e("float v0 0.339",!0),d=new _e("float m0 -2.0",!0),m=new _e("float r1 0.8",!0),f=new _e("float v1 0.276",!0),h=new _e("float m1 -1.0",!0),g=new _e("float r4 0.4",!0),x=new _e("float v4 0.046",!0),v=new _e("float m4 2.0",!0),A=new _e("float r5 0.305",!0),_=new _e("float v5 0.016",!0),b=new _e("float m5 3.0",!0),D=new _e("float r6 0.21",!0),S=new _e("float v6 0.0038",!0),y=new _e("float m6 4.0",!0),I=[l,u,d,m,f,h,g,x,v,A,_,b,D,S,y],T=new Y(`float roughnessToMip(float roughness) {
320
+ float mip = 0.0;
321
+ if (roughness >= r1) {
322
+ mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
323
+ } else if (roughness >= r4) {
324
+ mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
325
+ } else if (roughness >= r5) {
326
+ mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
327
+ } else if (roughness >= r6) {
328
+ mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
329
+ } else {
330
+ mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
331
+ }
332
+ return mip;
333
+ }`,I);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var Ao=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Ao.VIEW}getShared(){return this.scope===Ao.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 Ao.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case Ao.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case Ao.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}},at=Ao;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";tt.addKeyword("viewNormal",function(){return new at(at.VIEW)});tt.addKeyword("localNormal",function(){return new at(at.NORMAL)});tt.addKeyword("worldNormal",function(){return new at(at.WORLD)});var _r=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??_r.LOCAL}getType(){switch(this.scope){case _r.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case _r.LOCAL:case _r.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case _r.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case _r.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case _r.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case _r.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}},It=_r;It.LOCAL="local",It.WORLD="world",It.VIEW="view",It.PROJECTION="projection";tt.addKeyword("position",function(){return new It});tt.addKeyword("worldPosition",function(){return new It(It.WORLD)});tt.addKeyword("viewPosition",function(){return new It(It.VIEW)});var Qt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Qt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Qt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case Qt.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,c=s.build(e,"v3"),p=new It(It.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;l&&(u=`normalize( mix( ${u}, ${c}, ${l} * ${l} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),n="reflectVec"):n=d;break}case Qt.CUBE:{let s=new Qt(Qt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case Qt.SPHERE:{let s=new Qt(Qt.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)}},Sr=Qt;Sr.CUBE="cube",Sr.SPHERE="sphere",Sr.VECTOR="vector";var Ta=class extends le{constructor(e=new Ot,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new In(this.value,r??new Sr(Sr.VECTOR),o),this.irradianceNode=new In(this.value,new at(at.WORLD),new X(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))}};var zm=require("three");var Aa=class extends Ie{constructor(e=new zm.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new Sr,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),n=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+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new bt(new Te("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,p),e.removeContext(),e.format(a,p,r)}};var Um=["x","y","z","w"],Lb=["float","vec2","vec3","vec4"],Ib={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},Pb={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[]"},Ca=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+`
334
+ `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],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",`
335
+ // NOTE: Include Spline's blending modes. This could be part of BlendNode
336
+ #define SPE_BLENDING_NORMAL 0
337
+ #define SPE_BLENDING_MULTIPLY 1
338
+ #define SPE_BLENDING_SCREEN 2
339
+ #define SPE_BLENDING_OVERLAY 3
340
+
341
+ vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
342
+ return mix( a, b, alpha );
343
+ }
344
+
345
+ vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
346
+ return mix( a, a * b, alpha );
347
+ }
348
+
349
+ vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
350
+ vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
351
+ return mix( a, tmp, alpha );
352
+ }
353
+
354
+ vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
355
+ vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
356
+ return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
357
+ }
358
+
359
+ vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
360
+ if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
361
+ else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
362
+ else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
363
+ else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
364
+ return vec3( 1.0 );
365
+ }
366
+ `,"#include <packing>","#include <common>"].join(`
367
+ `),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
368
+ `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
369
+ accumAlpha += (1.0 - accumAlpha) * alpha;
370
+ }`,""].join(`
371
+ `)},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.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]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
372
+ `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
373
+ `}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+`
374
+ `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
375
+ `}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),c=a[t];if(!c){let p=a.length;c={name:r||"node"+n+p+(s?"_"+s:""),type:e},a.push(c),a[t]=c}return c}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(`
376
+ `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,n=t.length;o<n;++o){let s=t[o],a=s.type,c=s.name,p=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?r+=e+" "+l.substring(0,l.length-2)+" "+c+`[${p}];
377
+ `:r+=e+" "+l+" "+c+`;
378
+ `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof st?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,c=a.list.length,p=new vi({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:n});return a.list.push(p),a[t].push(p),a[t][p.name]=p,this.uniforms[p.name]=p,p}else{let a=this.inputs.uniforms,c=a.list.length,p=new vi({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:n});return a.list.push(p),a[t].push(p),a[t][p.name]=p,this.uniforms[p.name]=p,p}}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){let o;if(t=typeof t=="string"?tt.get(t):t,this.context.include===!1)return t.name;t instanceof Y?o=this.includes.functions:t instanceof _e?o=this.includes.consts:t instanceof Nn&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let s=n[t.name];if(s||(s=n[t.name]={node:t,deps:[]},n.push(s),s.src=t.build(this,"source")),t instanceof Y&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[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 Lb[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 Zt.CubeReflectionMapping:case Zt.CubeRefractionMapping:return new Aa(r);case Zt.CubeUVReflectionMapping:return new Ta(new Ot(r));default:return new Ot(r)}else{if(r.isVector2)return new rt(r);if(r.isVector3)return new pt(r);if(r.isVector4)return new qt(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 Ib[t]||t}getFormatByType(t){return Pb[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Um[t]}getIndexByElement(t){return Um.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=Zt.LinearEncoding,e===Zt.LinearEncoding&&this.context.gamma&&(e=Zt.sRGBEncoding),e}};var no=class extends Ie{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}};var km=require("three");var Pn=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new km.Matrix3}generateReadonly(e,r,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Ql=require("three");var Jt=class extends Ie{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Ql.Vector4?new Array(e).fill(r):new Array(e).fill(new Ql.Vector4(0))}};var bi=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(bi||{}),gt=function(){let t=new Y(`vec3 random3(vec3 c) {
379
379
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
380
380
  vec3 r;
381
381
  r.z = fract(512.0*j);
@@ -384,7 +384,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
384
384
  j *= .125;
385
385
  r.y = fract(512.0*j);
386
386
  return r-0.5;
387
- }`),e=new X(`float simplex3d(vec3 p) {
387
+ }`),e=new Y(`float simplex3d(vec3 p) {
388
388
  vec3 s = floor(p + dot(p, vec3(F3)));
389
389
  vec3 x = p - s + dot(s, vec3(G3));
390
390
 
@@ -415,7 +415,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
415
415
  d *= w;
416
416
 
417
417
  return dot(d, vec4(52.0));
418
- }`,[t]);e.keywords.F3=new Se("float F3 0.3333333"),e.keywords.G3=new Se("float G3 0.1666667");let r=new X(`float simplex3dFractal(vec3 m) {
418
+ }`,[t]);e.keywords.F3=new _e("float F3 0.3333333"),e.keywords.G3=new _e("float G3 0.1666667");let r=new Y(`float simplex3dFractal(vec3 m) {
419
419
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
420
420
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
421
421
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -423,7 +423,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
423
423
  + 0.2666667 * simplex3d(2.0 * m * rot2)
424
424
  + 0.1333333 * simplex3d(4.0 * m * rot3)
425
425
  + 0.0666667 * simplex3d(8.0 * m);
426
- }`,[e]),o=new X("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),n=new X("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new X(`float simplexAshima(vec3 v) {
426
+ }`,[e]),o=new Y("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),n=new Y("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new Y(`float simplexAshima(vec3 v) {
427
427
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
428
428
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
429
429
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -468,7 +468,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
468
468
  m = m * m;
469
469
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
470
470
  dot(p2,x2), dot(p3,x3) ) );
471
- }`,[o,n]),a=new X("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new X("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new X(`float noise(vec3 p){
471
+ }`,[o,n]),a=new Y("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new Y("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),p=new Y(`float noise(vec3 p){
472
472
  vec3 a = floor(p);
473
473
  vec3 d = p - a;
474
474
  d = d * d * (3.0 - 2.0 * d);
@@ -483,7 +483,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
483
483
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
484
484
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
485
485
  return o4.y * d.y + o4.x * (1.0 - d.y);
486
- }`,[l]),u=new X(`float fbm(vec3 x) {
486
+ }`,[c]),l=new Y(`float fbm(vec3 x) {
487
487
  float v = 0.0;
488
488
  float a = 0.5;
489
489
  vec3 shift = vec3(100);
@@ -493,7 +493,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
493
493
  a *= 0.5;
494
494
  }
495
495
  return v;
496
- }`,[c]);u.keywords.NUM_OCTAVES=new Se(`int NUM_OCTAVES ${5}`);let m=new X("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new X(`float perlin(vec3 P){
496
+ }`,[p]);l.keywords.NUM_OCTAVES=new _e(`int NUM_OCTAVES ${5}`);let u=new Y("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new Y(`float perlin(vec3 P){
497
497
  vec3 Pi0 = floor(P);
498
498
  vec3 Pi1 = Pi0 + vec3(1.0);
499
499
  Pi0 = mod(Pi0, 289.0);
@@ -552,7 +552,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
552
552
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
553
553
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
554
554
  return 2.2 * n_xyz;
555
- }`,[o,n,m]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:u,perlin:p}}();var gi=class extends le{constructor(e,r,o,n,s,a,l,c,u,m,p,d){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=u,this.colorD=m,this.alpha=p,this.noiseType=d,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(hi)[this.noiseType.value],l=new X(`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) {
555
+ }`,[o,n,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:l,perlin:d}}();var _i=class extends le{constructor(e,r,o,n,s,a,c,p,l,u,d,m){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=c,this.colorB=p,this.colorC=l,this.colorD=u,this.alpha=d,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(bi)[this.noiseType.value],c=new Y(`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) {
556
556
  vec3 st = position / size;
557
557
  st /= scale;
558
558
  vec3 q = vec3(${a}(st),
@@ -572,14 +572,14 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
572
572
 
573
573
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
574
574
  return clamp(color, 0.0, 1.0).rgb;
575
- }`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),c=e.include(l),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(c+"("+u.join(",")+")",this.getType(e),r)}};gi.numOctaves=5;var Rl=class extends le{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(Rl.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)}},yi=Rl;yi.Nodes=function(){return{fresnel:new X(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
575
+ }`,[gt.simplex,gt.simplexFractal,gt.simplexAshima,gt.fbm,gt.perlin]),p=e.include(c),l=[];return l.push(this.scale.build(e,"f")),l.push(this.size.build(e,"v3")),l.push(this.move.build(e,"f")),l.push(this.fA.build(e,"v2")),l.push(this.fB.build(e,"v2")),l.push(this.distortion.build(e,"v2")),l.push(this.colorA.build(e,"v4")),l.push(this.colorB.build(e,"v4")),l.push(this.colorC.build(e,"v4")),l.push(this.colorD.build(e,"v4")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(p+"("+l.join(",")+")",this.getType(e),r)}};_i.numOctaves=5;var Zl=class extends le{constructor(e,r,o,n,s,a,c){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=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Zl.Nodes.fresnel),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)}},Si=Zl;Si.Nodes=function(){return{fresnel:new Y(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
576
576
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
577
577
 
578
578
  float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
579
579
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
580
580
  accumAlpha += (1.0 - accumAlpha) * lalpha;
581
581
  return color;
582
- }`)}}();var Vl=class extends le{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(Vl.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)}},xi=Vl;xi.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
582
+ }`)}}();var Jl=class extends le{constructor(e,r,o,n,s,a,c){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=c,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(Jl.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)}},wi=Jl;wi.Nodes=function(){let e=new Y(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
583
583
  vec3 st = position / noiseScale;
584
584
  vec3 q = vec3(simplex3d(st),
585
585
  simplex3d(st + vec3(1.0)),
@@ -592,7 +592,7 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
592
592
  float noise = simplex3d(st + r);
593
593
 
594
594
  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);
595
- }`,[ht.simplex]);return{rainbow:new X(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
595
+ }`,[gt.simplex]);return{rainbow:new Y(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
596
596
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
597
597
 
598
598
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -601,18 +601,18 @@ var Lf=Object.create;var ki=Object.defineProperty;var If=Object.getOwnPropertyDe
601
601
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
602
602
 
603
603
  return res;
604
- }`,[e])}}();var zl=class extends le{constructor(e,r,o,n,s,a,l,c,u,m,p,d,f,g,x,y){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=m,this.compensation=p,this.resolution=d,this.normalMap=f,this.depthMap=g,this.pixelRatio=x,this.alpha=y,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),n=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(n,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
604
+ }`,[e])}}();var ec=class extends le{constructor(e,r,o,n,s,a,c,p,l,u,d,m,f,h,g,x){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=p,this.contourDirection=l,this.positionalLines=u,this.compensation=d,this.resolution=m,this.normalMap=f,this.depthMap=h,this.pixelRatio=g,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),n=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(n,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
605
605
  vID = randomColor.r;
606
606
  if (${s}) {
607
- vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
608
- vec3 ${l}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal);
609
- vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${n} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${a};
610
- ${l}_clipPosition.xy += ${l}_offset;
607
+ vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
608
+ vec3 ${c}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal);
609
+ vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${n} * (${o} / 2.0) * ${c}_clipPosition.w * 2.0 * ${a};
610
+ ${c}_clipPosition.xy += ${c}_offset;
611
611
  // TODO(MAX): To handle multiple outline layers, we only want to extrude
612
612
  // if this offset is the biggest of all the potential offsets
613
- gl_Position = ${l}_clipPosition;
613
+ gl_Position = ${c}_clipPosition;
614
614
  }
615
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(zl.Nodes.outline),n=[];return n.push(this.outlineColor.build(e,"c")),n.push(this.contourColor.build(e,"c")),n.push(this.outlineWidth.build(e,"f")),n.push(this.contourWidth.build(e,"f")),n.push(this.contourThreshold.build(e,"f")),n.push(this.outlineThreshold.build(e,"f")),n.push(this.contourFrequency.build(e,"f")),n.push(this.outlineSmoothing.build(e,"f")),n.push(this.contourDirection.build(e,"v3")),n.push(this.positionalLines.build(e,"b")),n.push(this.resolution.build(e,"v2")),n.push(this.normalMap.getTexture(e,"t")),n.push(this.depthMap.getTexture(e,"t")),n.push(this.pixelRatio.build(e,"f")),n.push(this.compensation.build(e,"b")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},vi=zl;vi.Nodes=function(){let e=new X(`
615
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(ec.Nodes.outline),n=[];return n.push(this.outlineColor.build(e,"c")),n.push(this.contourColor.build(e,"c")),n.push(this.outlineWidth.build(e,"f")),n.push(this.contourWidth.build(e,"f")),n.push(this.contourThreshold.build(e,"f")),n.push(this.outlineThreshold.build(e,"f")),n.push(this.contourFrequency.build(e,"f")),n.push(this.outlineSmoothing.build(e,"f")),n.push(this.contourDirection.build(e,"v3")),n.push(this.positionalLines.build(e,"b")),n.push(this.resolution.build(e,"v2")),n.push(this.normalMap.getTexture(e,"t")),n.push(this.depthMap.getTexture(e,"t")),n.push(this.pixelRatio.build(e,"f")),n.push(this.compensation.build(e,"b")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Ti=ec;Ti.Nodes=function(){let e=new Y(`
616
616
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
617
617
  {
618
618
  vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
@@ -713,7 +713,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
713
713
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
714
714
  return edgeNormal;
715
715
  }
716
- `);return{outline:new X(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
716
+ `);return{outline:new Y(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
717
717
  vec3 result = outlineColor;
718
718
  float resultAlpha = 0.0;
719
719
 
@@ -752,11 +752,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
752
752
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
753
753
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
754
754
  return result;
755
- }`,[e])}}();var Fl=class extends le{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(Fl.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)}},bi=Fl;bi.Nodes=function(){let e=new X(`
755
+ }`,[e])}}();var tc=class extends le{constructor(e,r,o,n,s,a,c,p){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=c,this.alpha=p,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(tc.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)}},Ai=tc;Ai.Nodes=function(){let e=new Y(`
756
756
  float gaussian(vec2 i) {
757
757
  const float sigma = float(NUM_SAMPLES) * .25;
758
758
  return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
759
- }`),r=new X(`
759
+ }`),r=new Y(`
760
760
  vec4 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
761
761
  // Slightly modified version of this:
762
762
  // https://www.shadertoy.com/view/ltScRG
@@ -783,7 +783,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
783
783
  #endif
784
784
  }
785
785
  return O / O.a;
786
- }`,[e]),o=new X(`
786
+ }`,[e]),o=new Y(`
787
787
  vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
788
788
  // Direction of refracted light.
789
789
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
@@ -794,18 +794,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
794
794
  modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
795
795
  // The thickness is specified in local space.
796
796
  return normalize( refractionVector ) * thickness * modelScale;
797
- }`),n=new X(`
797
+ }`),n=new Y(`
798
798
  float applyIorToRoughness( float roughness, float ior ) {
799
799
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
800
800
  // an IOR of 1.5 results in the default amount of microfacet refraction.
801
801
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
802
- } `),s=new X(`
802
+ } `),s=new Y(`
803
803
  vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
804
804
  float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
805
805
  float lod = applyIorToRoughness(roughness, ior);
806
806
 
807
807
  return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
808
- }`,[n,r]),a=new X(`
808
+ }`,[n,r]),a=new Y(`
809
809
  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 ) {
810
810
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
811
811
  vec3 refractedRayExit = position + transmissionRay;
@@ -825,7 +825,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
825
825
  vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
826
826
  // Get the specular component.
827
827
  return vec4( ( 1.0 ) * transmittedLight.rgb, transmittedLight.a );
828
- }`,[s,o]);return{transmission:new X(`
828
+ }`,[s,o]);return{transmission:new Y(`
829
829
  vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
830
830
  vec3 v = vec3(0.);
831
831
  if (isOrthographic) {
@@ -839,7 +839,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
839
839
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
840
840
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
841
841
  return transmission.rgb;
842
- }`,[a])}}();var Tn=class extends le{constructor(e,r,o,n,s,a,l,c,u,m,p,d){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=u,this.steps=m,this.num=p,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new X(`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) {
842
+ }`,[a])}}();var Mn=class extends le{constructor(e,r,o,n,s,a,c,p,l,u,d,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=c,this.direction=p,this.colors=l,this.steps=u,this.num=d,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 Y(`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) {
843
843
  vec4 color = colors[0];
844
844
  #ifdef ${o}_IS_VECTOR
845
845
  #ifdef ${o}_LINEAR
@@ -879,25 +879,25 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
879
879
 
880
880
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
881
881
  return color.rgb;
882
- }`,[Tn.Nodes.vectorLinearWorldSpaceDepth,Tn.Nodes.vectorLinearObjectSpaceDepth,Tn.Nodes.vectorSphericalObjectSpaceDepth,Tn.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)}},Si=Tn;Si.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
882
+ }`,[Mn.Nodes.vectorLinearWorldSpaceDepth,Mn.Nodes.vectorLinearObjectSpaceDepth,Mn.Nodes.vectorSphericalObjectSpaceDepth,Mn.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)}},Ci=Mn;Ci.Nodes=function(){let e=new Y(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
883
883
  vec3 n = normalize(direction);
884
884
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
885
885
  return ( dist - near ) / ( far - near );
886
- }`),r=new X(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
886
+ }`),r=new Y(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
887
887
  vec3 n = normalize(direction);
888
888
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
889
889
  return ( dist - near ) / ( far - near );
890
- }`),o=new X(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
890
+ }`),o=new Y(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
891
891
  float dist = length(vWPosition - origin);
892
892
  return ( dist - near ) / ( far - near );
893
- }`),n=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
893
+ }`),n=new Y(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
894
894
  float dist = length(position - origin);
895
895
  return ( dist - near ) / ( far - near );
896
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var wi=class extends le{constructor(e,r,o,n){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)}};var Ul=(e=>(e.NOISE="noise",e.MAP="map",e))(Ul||{}),jl=class extends le{constructor(e,r,o,n,s){super("v3");this.displacementTypeIndex=new ye(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(Ul)[this.displacementTypeIndex.value]==="map"&&(this.mat=new wn(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=n,this.noiseFunctionIndex=s}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(Ul)[this.displacementTypeIndex.value]){case"map":{o=e.include(jl.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(hi)[this.noiseFunctionIndex.value],l=new X(`vec3 orthogonal(vec3 v) {
896
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var Ni=class extends le{constructor(e,r,o,n){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)}};var rc=(e=>(e.NOISE="noise",e.MAP="map",e))(rc||{}),oc=class extends le{constructor(e,r,o,n,s){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(rc)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Pn(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=n,this.noiseFunctionIndex=s}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(rc)[this.displacementTypeIndex.value]){case"map":{o=e.include(oc.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(bi)[this.noiseFunctionIndex.value],c=new Y(`vec3 orthogonal(vec3 v) {
897
897
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
898
- }`),c=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
898
+ }`),p=new Y(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
899
899
  return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
900
- }`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),u=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
900
+ }`,[gt.simplex,gt.simplexFractal,gt.simplexAshima,gt.fbm,gt.perlin]),l=new Y(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
901
901
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
902
902
  vec3 tangent1 = orthogonal(normal);
903
903
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -913,9 +913,9 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
913
913
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
914
914
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
915
915
  return displaced_position;
916
- }`,[c,l]);o=e.include(u),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)}},Ti=jl;Ti.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
916
+ }`,[p,c]);o=e.include(l),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)}},Oi=oc;Oi.Nodes=function(){let e=new Y(`vec3 orthogonal(vec3 v) {
917
917
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
918
- }`),r=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
918
+ }`),r=new Y(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
919
919
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
920
920
  vec4 tmp = texture2D(tex, uvs);
921
921
  vec3 col = tmp.rgb;
@@ -925,7 +925,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
925
925
  }
926
926
  }
927
927
  return col.r;
928
- }`);return{map:new X(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
928
+ }`);return{map:new Y(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
929
929
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
930
930
  vec3 tangent1 = normalize(orthogonal(normal));
931
931
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -935,7 +935,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
935
935
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
936
936
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
937
937
  return displaced_position;
938
- }`,[e,r])}}();var kl=class extends le{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(kl.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)}},Ni=kl;Ni.Nodes=function(){return{gradient:new X(`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) {
938
+ }`,[e,r])}}();var nc=class extends le{constructor(e,r,o,n,s,a,c,p){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=c,this.alpha=p,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(nc.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)}},Li=nc;Li.Nodes=function(){return{gradient:new Y(`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) {
939
939
  vec4 color = colors[0];
940
940
  vec2 m = morph / vUv.xy;
941
941
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -977,7 +977,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
977
977
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
978
978
 
979
979
  return color.xyz;
980
- }`)}}();var Li=class extends le{constructor(e,r,o,n,s,a,l,c,u,m){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=c,this.alpha=u,this.mode=m,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(Li.Nodes.cylindrical);break;case 2:n=e.include(Li.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 X(`
980
+ }`)}}();var Pi=class extends le{constructor(e,r,o,n,s,a,c,p,l,u){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=c,this.mat=p,this.alpha=l,this.mode=u,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(Pi.Nodes.cylindrical);break;case 2:n=e.include(Pi.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],c=new Y(`
981
981
  vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
982
982
 
983
983
  vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -996,7 +996,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
996
996
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
997
997
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
998
998
  return col;
999
- }`);n=e.include(l);break;default:n=e.include(Li.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.generate(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)}},Ci=Li;Ci.Nodes=function(){let e=new X(`
999
+ }`);n=e.include(c);break;default:n=e.include(Pi.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.generate(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)}},Ii=Pi;Ii.Nodes=function(){let e=new Y(`
1000
1000
  vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1001
1001
  vec3 posN = normalize(position);
1002
1002
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -1026,7 +1026,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
1026
1026
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1027
1027
  return col;
1028
1028
  }
1029
- `),r=new X(`
1029
+ `),r=new Y(`
1030
1030
  vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1031
1031
  vec3 posN = normalize(vPosition);
1032
1032
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -1054,7 +1054,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1054
1054
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1055
1055
  return col;
1056
1056
  }
1057
- `),o=new X(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1057
+ `),o=new Y(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1058
1058
 
1059
1059
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
1060
1060
  vec4 tmp = texture2D( tex, uvs );
@@ -1070,14 +1070,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1070
1070
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1071
1071
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1072
1072
  return col;
1073
- }`);return{cylindrical:e,spherical:r,uv:o}}();var Hl=class extends le{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(Hl.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)}},Ii=Hl;Ii.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
1073
+ }`);return{cylindrical:e,spherical:r,uv:o}}();var ic=class extends le{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(ic.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)}},Mi=ic;Mi.Nodes=function(){return{customNormal:new Y(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
1074
1074
  vec3 normal = packNormalToRGB( norm ).rgb;
1075
1075
  normal *= step( vec3(0.5), cnormal );
1076
1076
 
1077
1077
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1078
1078
 
1079
1079
  return normal;
1080
- }`)}}();var Qe=require("three");function fd(i,t){switch(i.type){case"fresnel":return cb(i,t);case"gradient":return ub(i);case"depth":return pb(i);case"normal":return mb(i);case"noise":return db(i,t);case"rainbow":return fb(i);case"toon":return hb(i,t);case"outline":return gb(i,t);case"transmission":return yb(i,t);case"color":return lb(i,t)}}function ab(i){return{type:i.type}}function br(i){let{alpha:t,mode:e}=i;return{...ab(i),alpha:t,mode:e}}function lb(i,t){return{...br(i),color:Ye(i.color,t)}}function cb(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i;return{...br(i),color:Ye(s,t),bias:e,scale:r,intensity:o,factor:n}}function ub(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i;return{...br(i),gradientType:t,smooth:e,colors:r.map(l=>new Qe.Vector4(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Qe.Vector2(...s),morph:new Qe.Vector2(...a),angle:n}}function pb(i){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:l,steps:c,smooth:u,num:m}=i;return{...br(i),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new Qe.Vector3(...s),direction:a?new Qe.Vector3(...a):new Qe.Vector3(1,0,0),num:m,colors:l.map(p=>new Qe.Vector4(p[0],p[1],p[2],p[3])),steps:c,smooth:u}}function mb(i){let{cnormal:t}=i;return{...br(i),cnormal:new Qe.Vector3(t[0],t[1],t[2])}}function db(i,t){return{...br(i),scale:i.scale,move:i.move,fA:new Qe.Vector2(...i.fA),fB:new Qe.Vector2(...i.fB),size:new Qe.Vector3(...i.size),distortion:new Qe.Vector2(...i.distortion),colorA:Ye(i.colorA,t),colorB:Ye(i.colorB,t),colorC:Ye(i.colorC,t),colorD:Ye(i.colorD,t),noiseType:i.noiseType}}function fb(i){return{...br(i),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new Qe.Vector3(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new Qe.Vector3(...i.offset)}}function hb(i,t){return{...br(i),positioning:i.positioning,colors:i.colors.map(e=>new Qe.Vector4(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new Qe.Vector3(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ye(i.shadowColor,t),offset:new Qe.Vector3(...i.offset)}}function gb(i,t){return{...br(i),outlineColor:Ye(i.outlineColor,t),contourColor:Ye(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:i.contourDirection,positionalLines:i.positionalLines,compensation:i.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function yb(i,t){return{...br(i),thickness:i.thickness,ior:i.ior,roughness:i.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}var ro=class extends ut{};var yd=require("three");var Wl=new Map,Ai={url:"head",time:0,data:null,next:null,prev:null},Nn={url:"tail",time:1/0,data:null,next:null,prev:null};Ai.next=Nn;Nn.prev=Ai;var hd=0;function gd(i){if(typeof i=="string")return i;let t=Date.now(),e=Wl.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},Wl.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Nn.prev,e.next=Nn,Nn.prev.next=e,Nn.prev=e,t-hd>1e3*10&&(hd=t+1e3,setTimeout(()=>{let r=Date.now(),o=Ai.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),Wl.delete(o.data),o=o.next,o.prev=Ai,Ai.next=o},900)),e.url}var Cn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=gd(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()}}getTexture(t){let e=this[t];if(e)return e;{let r=new yd.Texture(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var wo=class extends Cn{};var oo=class extends Me{};function xb(i,t){switch(i.type){case"noise":return t==="noiseType";case"texture":return t==="projection"||t==="axis"||t==="side";case"displace":return t==="noiseType";case"depth":return t==="num"||t==="smooth"||t==="isWorldSpace"||t==="gradientType"||t==="isVector";default:return!1}}function ql(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let s=n.image,a=t.image(s),l=r;l instanceof wo||l.image.dispose(),l.image=a}if("wrapping"in n){let s=r;s.wrap=n.wrapping}if("repeat"in n||"offset"in n){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in n&&(a.repeat=n.repeat),"offset"in n&&(a.offset=n.offset),a.updateMatrix()}return o}function xd(i,t,e,r){let o=!1;for(let[n,s]of Object.entries(i)){if(!n||s===void 0||$l(n,e,r))continue;e.visible=r.visible;let a=e.uniforms[`f${e.id}_${n}`];if(!!a&&!(a instanceof oo))switch(a.constructor){case Ie:if(typeof s=="string"){let l=t.getColor(s);l&&(a.value=l);break}else{let l=s;a.value instanceof ro?a.value=new ut(l.r,l.g,l.b,l.a):a.setRGBA(l);break}case Ht:if(typeof s=="string"){let l=t.getColor(s);l&&(a.value=l);break}else{let l=s;a.value instanceof ro?a.value=new ut(l.r,l.g,l.b,l.a):a.value.setRGBA(l.r,l.g,l.b,l.a);break}case rt:{let l=s;a.value.setX(l[0]),a.value.setY(l[1]);break}case pt:{let l=s;a.value.setX(l[0]),a.value.setY(l[1]),a.value.setZ(l[2]);break}case At:{ql(s,t,e);break}case Jt:{s.forEach((l,c)=>{a.value[c].setX(l[0]),a.value[c].setY(l[1]),a.value[c].setZ(l[2]),a.value[c].setW(l[3])});break}default:{o=o||xb(e,n),a.value=s;break}}}return o}var Xl=class extends le{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.generate(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)}},Pi=Xl;Pi.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1080
+ }`)}}();var Qe=require("three");function jm(i,t){switch(i.type){case"fresnel":return Bb(i,t);case"gradient":return Eb(i);case"depth":return Gb(i);case"normal":return Rb(i);case"noise":return Fb(i,t);case"rainbow":return Vb(i);case"toon":return zb(i,t);case"outline":return Ub(i,t);case"transmission":return kb(i,t);case"color":return Db(i,t)}}function Mb(i){return{type:i.type}}function wr(i){let{alpha:t,mode:e}=i;return{...Mb(i),alpha:t,mode:e}}function Db(i,t){return{...wr(i),color:Ye(i.color,t)}}function Bb(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i;return{...wr(i),color:Ye(s,t),bias:e,scale:r,intensity:o,factor:n}}function Eb(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i;return{...wr(i),gradientType:t,smooth:e,colors:r.map(c=>new Qe.Vector4(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new Qe.Vector2(...s),morph:new Qe.Vector2(...a),angle:n}}function Gb(i){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:c,steps:p,smooth:l,num:u}=i;return{...wr(i),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new Qe.Vector3(...s),direction:a?new Qe.Vector3(...a):new Qe.Vector3(1,0,0),num:u,colors:c.map(d=>new Qe.Vector4(d[0],d[1],d[2],d[3])),steps:p,smooth:l}}function Rb(i){let{cnormal:t}=i;return{...wr(i),cnormal:new Qe.Vector3(t[0],t[1],t[2])}}function Fb(i,t){return{...wr(i),scale:i.scale,move:i.move,fA:new Qe.Vector2(...i.fA),fB:new Qe.Vector2(...i.fB),size:new Qe.Vector3(...i.size),distortion:new Qe.Vector2(...i.distortion),colorA:Ye(i.colorA,t),colorB:Ye(i.colorB,t),colorC:Ye(i.colorC,t),colorD:Ye(i.colorD,t),noiseType:i.noiseType}}function Vb(i){return{...wr(i),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new Qe.Vector3(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new Qe.Vector3(...i.offset)}}function zb(i,t){return{...wr(i),positioning:i.positioning,colors:i.colors.map(e=>new Qe.Vector4(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new Qe.Vector3(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ye(i.shadowColor,t),offset:new Qe.Vector3(...i.offset)}}function Ub(i,t){return{...wr(i),outlineColor:Ye(i.outlineColor,t),contourColor:Ye(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:i.contourDirection,positionalLines:i.positionalLines,compensation:i.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function kb(i,t){return{...wr(i),thickness:i.thickness,ior:i.ior,roughness:i.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}var io=class extends ct{};var $m=require("three");var qm=require("three");var sc=new Map,Di={url:"head",time:0,data:null,next:null,prev:null},Dn={url:"tail",time:1/0,data:null,next:null,prev:null};Di.next=Dn;Dn.prev=Di;var Hm=0;function Wm(i){if(typeof i=="string")return i;let t=Date.now(),e=sc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},sc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Dn.prev,e.next=Dn,Dn.prev.next=e,Dn.prev=e,t-Hm>1e3*10&&(Hm=t+1e3,setTimeout(()=>{let r=Date.now(),o=Di.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),sc.delete(o.data),o=o.next,o.prev=Di,Di.next=o},900)),e.url}var Bn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=Wm(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()}}getTexture(t){let e=this[t];if(e)return e;{let r=new qm.Texture(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var Co=class extends Bn{};var so=class extends Ie{};function jb(i,t){switch(i.type){case"noise":return t==="noiseType";case"texture":return t==="projection"||t==="axis"||t==="side";case"displace":return t==="noiseType";case"depth":return t==="num"||t==="smooth"||t==="isWorldSpace"||t==="gradientType"||t==="isVector";default:return!1}}function ac(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let s=n.image,a=t.image(s),c=r;c instanceof Co||c.image.dispose(),c.image=a}if("wrapping"in n){let s=r;s.wrap=n.wrapping}if("repeat"in n||"offset"in n){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in n&&(a.repeat=n.repeat),"offset"in n&&(a.offset=n.offset),a.updateMatrix()}return o}function Xm(i,t,e,r){let o=!1;for(let[n,s]of Object.entries(i)){if(!n||s===void 0||lc(n,e,r))continue;e.visible=r.visible;let a=e.uniforms[`f${e.id}_${n}`];if(!!a&&!(a instanceof so))switch(o=o||jb(e,n),a.constructor){case Ne:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof io?a.value=new ct(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case qt:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof io?a.value=new ct(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case rt:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case pt:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Ot:{ac(s,t,e);break}case Jt:{a.value=s.map(c=>new $m.Vector4(...c));break}default:{a.value=s;break}}}return o}var cc=class extends le{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(cc.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.generate(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)}},Bi=cc;Bi.Nodes=function(){return{matcap:new Y(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1081
1081
  vec3 viewDir = normalize( vViewPosition );
1082
1082
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
1083
1083
  vec3 y = cross( viewDir, x );
@@ -1089,14 +1089,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1089
1089
 
1090
1090
  return matcapColor.rgb;
1091
1091
  }
1092
- `)}}();var Mi=class extends oo{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};var vd=require("three");var fa=class extends oo{constructor(e){super("v3");this.image=e;this._value=new vd.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Yl=class extends le{constructor(e,r,o,n,s,a,l,c,u,m){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Yl.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),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("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Oi=Yl;Oi.Nodes=function(){let e=new X(`float rand(float n) {
1092
+ `)}}();var Ei=class extends so{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};var Ym=require("three");var Na=class extends so{constructor(e){super("v3");this.image=e;this._value=new Ym.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var uc=class extends le{constructor(e,r,o,n,s,a,c,p,l,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=p,this.offset=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(uc.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),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("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Gi=uc;Gi.Nodes=function(){let e=new Y(`float rand(float n) {
1093
1093
  return fract(sin(n) * 43758.5453123);
1094
- }`),r=new X(`float hash1(float p) {
1094
+ }`),r=new Y(`float hash1(float p) {
1095
1095
  p = fract(p * 0.011);
1096
1096
  p *= p + 7.5;
1097
1097
  p *= p + p;
1098
1098
  return fract(p);
1099
- }`),o=new X(`float valueNoise(vec3 x) {
1099
+ }`),o=new Y(`float valueNoise(vec3 x) {
1100
1100
  const vec3 step = vec3(110, 241, 171);
1101
1101
 
1102
1102
  vec3 i = floor(x);
@@ -1111,13 +1111,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1111
1111
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1112
1112
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1113
1113
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1114
- }`,[r]),n=new X(`vec3 hash3(vec3 x) {
1114
+ }`,[r]),n=new Y(`vec3 hash3(vec3 x) {
1115
1115
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1116
1116
  dot(x,vec3(269.5, 183.3, 246.1)),
1117
1117
  dot(x,vec3(113.5, 271.9, 124.6)));
1118
1118
 
1119
1119
  return fract(sin(x)*43758.5453123);
1120
- }`),s=new X(`vec3 voronoiNoise(in vec3 x)
1120
+ }`),s=new Y(`vec3 voronoiNoise(in vec3 x)
1121
1121
  {
1122
1122
  vec3 p = floor(x);
1123
1123
  vec3 f = fract(x);
@@ -1148,7 +1148,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1148
1148
 
1149
1149
  return vec3(sqrt(res), abs(id));
1150
1150
  }
1151
- `,[n]);return{toon:new X(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
1151
+ `,[n]);return{toon:new Y(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
1152
1152
  float t = 0.0;
1153
1153
  float shadow = 1.0;
1154
1154
 
@@ -1325,5 +1325,5 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1325
1325
 
1326
1326
  return color.xyz;
1327
1327
 
1328
- }`,[ht.simplex,e,o,s])}}();var Sd=require("three");function bd(i,t,e){i.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ha=class extends wn{constructor(e,r){super(new Sd.Matrix3);this.repeat=e;this.offset=r;bd(this.value,e,r)}updateMatrix(){bd(this.value,this.repeat,this.offset)}};var Sr=class{constructor(t,e,r,o){this.type=t;this.id=e;this.uuid=r;this.uniforms={};for(let n in o)this.uniforms[`f${this.id}_${n}`]=o[n]}static create(t,e,r,o){if(r.type==="light")return wr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let n=o.image(r.texture.image),s=new Mi(n,r.texture.wrapping),a=new fa(n),l=new ha(r.texture.repeat,r.texture.offset),c=new Y(r.crop?1:0),u=new ye(r.projection??0),m=new ye(["x","y","z"].indexOf(r.axis)??0),p=new ye(r.side??0),d=new rt(r.size?new we.Vector2(r.size[0],r.size[1]):new we.Vector2(100,100)),f=new Y(r.alpha??1),g=new ye(r.mode??0),x=new Ci(s,a,c,u,m,p,d,l,f,g),y=new Ne(x.calpha,"f");return new nt("texture",t,e,{texture:s,textureSize:a,crop:c,projection:u,axis:m,side:p,size:d,mat:l,alpha:f,mode:g},x,g,y)}else if(r.type==="matcap"){let n=o.image(r.texture.image),s=new Mi(n,r.texture.wrapping),a=new Y(r.alpha??1),l=new ye(r.mode??0),c=new Pi(s,a,l),u=new Ne(c.calpha,"f");return new nt("matcap",t,e,{texture:s,alpha:a,mode:l},c,l,u)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new pt(new we.Vector3(...r.offset)),s=new Y(r.scale??10),a=new Y(r.intensity??8),l=new Y(r.movement??1),c=new ye(r.noiseType??0),u=new Ti(a,l,n,s,c);return new _i(r.type,t,e,{offset:n,scale:s,intensity:a,movement:l,noiseType:c},u)}else throw new Error;else{let n=bb(t,e,r,o);for(let s in r)$l(s,n,r);return n}}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:xd(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?ql(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},nt=class extends Sr{constructor(e,r,o,n,s,a,l){super(e,r,o,n);this.color=s;this.mode=a;this.alpha=l}},_i=class extends Sr{constructor(e,r,o,n,s){super(e,r,o,n);this.position=s}},wr=class extends Sr{constructor(e,r,o,n,s){super("light",e,r,s);this.data=o;this.node=n}static createLigherLayer(e,r,o,n){let s,a=new Y(o.alpha),l=new ye(o.mode),c;if(o.category==="lambert"){s=new ui;let u=new Ie(n.color(o.emissive)??0);c={emissive:u},s.emissive=u}else if(o.category==="phong"){s=new da;let u=new Y(o.shininess??30),m=new Ie(n.color(o.specular)??1118481);c={shininess:u,specular:m},s.shininess=u,s.specular=m}else if(o.category==="toon"){s=new fi;let u=new Y(o.shininess??30),m=new Ie(n.color(o.specular)??1118481);c={shininess:u,specular:m},s.shininess=u,s.specular=m}else if(o.category==="physical"){s=new mi;let u=new Y(o.roughness??.3),m=new Y(o.metalness??0),p=new Y(o.reflectivity??.5);c={roughness:u,metalness:m,reflectivity:p},s.roughness=u,s.metalness=m,s.reflectivity=p}else s=new eo,c={};return s.alpha=new Y(1),s.shadingAlpha=a,s.shadingBlend=l,c.alpha=s.shadingAlpha,c.mode=s.shadingBlend,new wr(e,r,o,s,c)}};function wd(i){let t=i instanceof Sr?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}function vb(i,t,e,r){switch(i){case"color":{let o=new Ie(r.color??5855577),n=new Y(r.alpha??1),s=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new ye(r.mode??0);return o.alpha=n,new nt(i,t,e,{color:o,alpha:n,mode:a},o,a,s)}case"fresnel":{let o=new Ie(r.color??16777215),n=new Y(r.bias??.1),s=new Y(r.scale??1),a=new Y(r.intensity??2),l=new Y(r.factor??1),c=new Y(r.alpha??1),u=new ye(r.mode??0),m=new yi(o,n,s,a,l,c,u),p=new Ne(m.calpha,"f");return new nt(i,t,e,{color:o,bias:n,scale:s,intensity:a,factor:l,alpha:c,mode:u},m,u,p)}case"rainbow":{let o=new Y(r.filmThickness??30),n=new Y(r.movement??0),s=new pt(r.wavelengths??new we.Vector3(0,0,0)),a=new Y(r.noiseStrength??0),l=new Y(r.noiseScale??1),c=new pt(r.offset??new we.Vector3(0,0,0)),u=new Y(r.alpha??1),m=new xi(o,n,s,a,l,c,u),p=new Ne(m.calpha,"f"),d=new ye(r.mode??0);return new nt(i,t,e,{filmThickness:o,movement:n,wavelengths:s,noiseStrength:a,noiseScale:l,offset:c,alpha:u,mode:d},m,d,p)}case"transmission":{let o=new Y(r.thickness??10),n=new Y(r.ior??1.5),s=new Y(r.roughness??.5),a=new rt(r.transmissionSamplerSize??new we.Vector2(2048,2048)),l=r.transmissionSamplerMap??new we.Texture,c=r.transmissionDepthMap??new we.Texture,u=new At(l),m=new At(c),p=window.innerWidth,d=window.innerHeight,f=p>=d?new rt(d/p,1):new rt(1,p/d),g=new Y(r.alpha??1),x=new bi(o,n,s,a,u,m,f,g),y=new Ne(x.calpha,"f"),v=new ye(r.mode??0);return new nt(i,t,e,{thickness:o,ior:n,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:u,transmissionDepthMap:m,aspectRatio:f,alpha:g,mode:v},x,v,y)}case"toon":{let o=new ye(r.positioning??0),n;r.colors?n=new Jt(r.colors.length,r.colors):(n=new Jt(10,new we.Vector4(0,0,0,1)),n.value[1]=new we.Vector4(1,1,1,1));let s;r.steps?s=new ot(r.steps.length,r.steps):(s=new ot(10,1),s.value[0]=0);let a=new pt(r.source??new we.Vector3(0,0,0)),l=new to(r.isWorldSpace??!0),c=new Y(r.noiseStrength??0),u=new Y(r.noiseScale??1),m=new Ht(r.shadowColor),p=new pt(r.offset??new we.Vector3(0,0,0)),d=new Y(r.alpha??1),f=new Oi(o,n,s,a,l,c,u,m,p,d),g=new Ne(f.calpha,"f"),x=new ye(r.mode??0);return new nt(i,t,e,{positioning:o,colors:n,steps:s,source:a,isWorldSpace:l,noiseStrength:c,noiseScale:u,shadowColor:m,offset:p,alpha:d,mode:x},f,x,g)}case"outline":{let o=new Ie(r.outlineColor??16777215),n=new Ie(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),a=new Y(r.contourWidth??.1),l=new Y(r.outlineThreshold??.1),c=new Y(r.contourThreshold??.1),u=new Y(r.outlineSmoothing??.1),m=new Y(r.contourFrequency??.1),p=new pt(r.contourDirections??new we.Vector3(0,1,0)),d=new to(r.positionalLines??!1),f=new to(r.compensation??!0),g=r.normalMap??new we.Texture,x=new At(g),y=r.depthMap??new we.Texture,v=new At(y),A=r.pixelRatio??new Y(window.devicePixelRatio),S=r.resolution??new rt(new we.Vector2(1,1)),b=new Y(r.alpha??1),B=new vi(o,n,s,a,l,c,u,m,p,d,f,S,x,v,A,b),w=new Ne(B.calpha,"f"),h=new ye(r.mode??0);return new nt(i,t,e,{outlineColor:o,contourColor:n,outlineWidth:s,contourWidth:a,outlineThreshold:l,contourThreshold:c,outlineSmoothing:u,contourFrequency:m,contourDirection:p,positionalLines:d,compensation:f,resolution:S,normalMap:x,depthMap:v,pixelRatio:A,alpha:b,mode:h},B,h,w)}case"depth":{let o=new ye(r.gradientType??0),n=new to(r.smooth??!1),s=new Y(r.near??50),a=new Y(r.far??200),l=new Y(r.isVector??1),c=new Y(r.isWorldSpace??0),u=new pt(r.origin??new we.Vector3),m=new pt(r.direction??new we.Vector3),p=new ye(r.num??0),d;r.colors?d=new Jt(p.value+1,r.colors):(d=new Jt(p.value+1,new we.Vector4(0,0,0,1)),d.value[1]=new we.Vector4(1,1,1,1));let f;r.steps?f=new ot(p.value+1,r.steps):(f=new ot(p.value+1,1),f.value[0]=0);let g=new Y(r.alpha??1),x=new ye(r.mode??0),y=new Si(o,n,s,a,l,c,u,m,d,f,p,g),v=new Ne(y.calpha,"f");return new nt(i,t,e,{gradientType:o,smooth:n,near:s,far:a,isVector:l,isWorldSpace:c,origin:u,direction:m,colors:d,steps:f,num:p,alpha:g,mode:x},y,x,v)}case"noise":{let o=new Y(r.scale??1),n=new pt(r.size??new we.Vector3(100,100,100)),s=new Y(r.move??1),a=new rt(r.fA??new we.Vector2(1.7,9.2)),l=new rt(r.fB??new we.Vector2(8.3,2.8)),c=new rt(r.distortion??new we.Vector2(1,1)),u=new Ht(r.colorA),m=new Ht(r.colorB),p=new Ht(r.colorC),d=new Ht(r.colorD),f=new Y(r.alpha??1),g=new ye(r.mode??0),x=new ye(r.noiseType??0),y=new gi(o,n,s,a,l,c,u,m,p,d,f,x),v=new Ne(y.calpha,"f");return new nt(i,t,e,{scale:o,size:n,move:s,fA:a,fB:l,distortion:c,colorA:u,colorB:m,colorC:p,colorD:d,alpha:f,mode:g,noiseType:x},y,g,v)}case"normal":{let o=new pt(r.cnormal??new we.Vector3(1,1,1)),n=new Y(r.alpha??1),s=new ye(r.mode??0),a=new Ii(o,n),l=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return l.keywords.alpha=n,new nt(i,t,e,{cnormal:o,alpha:n,mode:s},a,s,l)}case"gradient":{let o=new ye(r.gradientType??0),n=new to(r.smooth??!1),s;r.colors?s=new Jt(r.colors.length,r.colors):(s=new Jt(10,new we.Vector4(0,0,0,1)),s.value[1]=new we.Vector4(1,1,1,1));let a;r.steps?a=new ot(r.steps.length,r.steps):(a=new ot(10,1),a.value[0]=0);let l=new rt(r.offset??new we.Vector2(0,0)),c=new rt(r.morph??new we.Vector2(0,0)),u=new Y(r.angle??0),m=new Y(r.alpha??1),p=new ye(r.mode??0),d=new Ni(o,n,s,a,l,c,u,m),f=new Ne(d.calpha,"f");return new nt(i,t,e,{gradientType:o,smooth:n,colors:s,steps:a,offset:l,morph:c,angle:u,alpha:m,mode:p},d,p,f)}default:{let o=new Ie(1,0,0,1),n=new Y(1),s=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new ye(0);return o.alpha=n,new nt(i,t,e,{color:o,alpha:n,mode:a},o,a,s)}}}function bb(i,t,e,r){let o=fd(e,r);return vb(e.type,i,t,o)}function $l(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`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var Zt=class extends ga.ShaderMaterial{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile;let o=e.layers??_r.defaultTwoLayerData("phong").layers;this.layers=o.map(n=>Sr.create(this.layerIdGen++,n.id,n.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof wr),this.lightLayer===void 0&&(this.lightLayer=new wr(0,"",Xr.defaultData("light","basic"),new eo,{})),this.lightLayer.node instanceof eo||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let n=e.path[1];if(n===void 0){if(this.layers.reverse(),e.type===4){let s=Sr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(l=>l.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===n);if(s){let a=r.layers.data(n);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let c=Sr.create(this.layerIdGen++,n,a,o);this.layers.splice(this.layers.findIndex(u=>u.uuid===n),1,c),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof nt),r=this.layers.findIndex(o=>o instanceof wr);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let s=this.layers[n];s instanceof nt&&(o=new wi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof wr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];n instanceof nt&&(e=new wi(e,n.color,n.alpha,n.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof _i);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Pt(r,e[o].position,Pt.ADD),r=new Pt(r,new Y(.5).setReadonly(!0),Pt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,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}clampUniformsForPreview(e,r){let o=(n,s,a)=>Math.min(Math.max(n,s),a);for(let n of this.layers)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(){for(let e of this.layers)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 pa;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,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.transparent=r.requires.transparent||this.blending>ga.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});var To=class extends Zt{};var Ue=require("three");function Tb(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Nb(i,t){t.uniforms[`f${t.id}_normalMap`].value=i.texture,t.uniforms[`f${t.id}_depthMap`].value=i.depthTexture}function Cb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let t=new Map,e=i.geometry.attributes.position.array,r=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new Ue.Vector3(r[n],r[n+1],r[n+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Ue.Vector3})}t.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=t.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new Ue.Float32BufferAttribute(o,3))}function Lb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Ue.Vector3;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;i.geometry.setAttribute("extrudeNormal",new Ue.Float32BufferAttribute(e,3))}function No(i){if(i.objectType!=="TextFrame"){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(i.material.getLayersOfType("outline").length===0)return;i.objectType==="Mesh2D"?Lb(i):Cb(i)}}function Co(i){if(!i.geometry.attributes.position)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(i.uuid.replace(/\D/g,"")),o=[Ue.MathUtils.seededRandom(r),Ue.MathUtils.seededRandom(r+1e4),Ue.MathUtils.seededRandom(r+2e4)];for(let n=0;n<t.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new Ue.BufferAttribute(e,3))}function Td(i,t,e){let r=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return n.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),r=!0,i!==void 0&&n.forEach(s=>Nb(i,s)),Co(t),No(t)),o.length===0&&n.length===0&&t.layers.set(0),r}function Nd(i,t,e){if(!e.layers)return!1;let r=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),n.length>0&&t.layers.enable(8),r=!0,i!==void 0&&o.forEach(s=>Tb(i,s))),o.length===0&&n.length===0&&t.layers.set(0),r}function Cd(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Ue.Mesh&&r.objectType!=="TextFrame")if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Td(i,r,r.material[o])&&(e=!0);else Td(i,r,r.material)&&(e=!0)}),e}function Ld(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Ue.Mesh)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 Id(i){"material"in i&&Ib(i.material),"geometry"in i&&i.geometry.dispose()}function Ib(i){dc(i).forEach(t=>{t instanceof To||t.dispose()})}var Ab=new Ue.Raycaster,Pb=new Ue.Matrix4,Mb=new Ue.Ray;function Ad(i,t,e){let r=i.cloner;if(r)for(let o of r.children){let n=Pb.copy(o.matrixWorld).invert(),s=Mb.copy(t.ray).applyMatrix4(n),a=i.matrixWorld;s.applyMatrix4(a);let l=Ab;l.set(s.origin,s.direction),l.near=t.near,l.far=t.far,l.intersectObject(i,!1).length>0&&e.push({object:i})}}var lt=class extends kt(ya.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ya.Matrix4;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Kl[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;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),No(this),r.getAttribute("randomColor")&&Co(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=Di(r),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new vo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new vo(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&&(er.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),fr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)dr(e)&&(e.freeBooleanPointer(),fr(e)&&e.invalidateUpstreamBooleanData())}};var Ob=new no.Vector3(0,0,1),Pd=new no.Vector3,Md=new no.Vector3,Od=new no.Matrix3,Ln=class extends lt{constructor(e=bt.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new no.EventDispatcher;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)}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),Od.getNormalMatrix(this.matrixWorld),Pd.copy(Ob).applyMatrix3(Od).normalize(),Md.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Pd,Md)}clone(e){let r=this.shape.clone(),o=this.material,n=this.geometry.userData,s=bt.create(Object.assign({},n,{shape:r})),a=new Ln(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){lt.prototype.raycast.call(this,e,r)}};function xa(i,t){return _b(i)}function _b(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Le.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new _d.BufferGeometryLoader().parse(i));let e;try{e=Di(t)}catch(r){console.error(r)}if(!e){let r=Le.createFromState(on.defaultData(),100,100);t.shape=r,e=Di(t)}return e}var me;na.then(i=>{me=i});var Dd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Bd=new Uint32Array([0,1,2,3]),Ed=new Uint8Array([4]),Wt=class{static build(i,t,e,r,o){let n,s,a,l=i?.phongAngle??t?.phongAngle??35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(me.free_bvh(e),me.free_subdivision_surface(e));try{n=Wt.allocate(i,o)}catch(c){console.error(c,i),n=Wt.allocate({positionWASM:Dd,indexWASM:Bd,verticesPerFaceWASM:Ed},o)}me.set_destination_refinement_level(n,0),s=Wt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Wt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(me.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Wt.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:xa(i),r,o,n,s;return{positions:r,triIndices:s}=ec(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=tc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=Dd,r=Bd,o=Ed);let a=e.length,l=r.length,c=o.length,u=e.length+n.length+s.length,m=r.length+o.length,p=u*Float32Array.BYTES_PER_ELEMENT+m*Uint32Array.BYTES_PER_ELEMENT,d=u*Float32Array.BYTES_PER_ELEMENT,f=m*Uint32Array.BYTES_PER_ELEMENT,g=me._malloc(p),x=new Float32Array(me.HEAPF32.buffer,g,u),y=new Uint32Array(me.HEAPU32.buffer,g+d,m);x.set(e,0),x.set(n,e.length),x.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let v;i?.scaleBaked?.some(S=>S!==1)&&(v=new He.Matrix4().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?me.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):me.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return me._free(g),A}static buildLevel(i,t,e,r,o){let n=o?me.get_mesh_data2(i,t?me.Level.CONTROL:me.Level.REFINED,e,o.elements):me.get_mesh_data(i,t?me.Level.CONTROL:me.Level.REFINED,e),s=8,a=me.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,u=me.HEAPU32[a[c]>>2],m=me.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=me.HEAPU32[a[c]>>2],d=me.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let f=me.HEAPU32[a[c]>>2],g=me.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let x=me.HEAPU32[a[c]>>2],y=me.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,r===void 0){let v=new He.BufferGeometry;if(v.setIndex(new He.Uint32BufferAttribute(y,1)),v.setAttribute("position",new He.Float32BufferAttribute(m,3)),v.setAttribute("normal",new He.Float32BufferAttribute(d,3)),t){v.setAttribute("faceMap",new He.Uint32BufferAttribute(g,1));let A=new Float32Array(d.length/3*4).fill(0);v.setAttribute("color",new He.BufferAttribute(A,4))}return me.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(m),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,me.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=me.get_wireframe_data_for_base_level(i),o=4,n=me.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=me.HEAPU32[n[a]>>2],c=me.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let u=me.HEAPU32[n[a]>>2],m=me.HEAPU32.subarray(u>>2,(u>>2)+s[a]);if(t===void 0){let p=new He.BufferGeometry;p.setAttribute("position",new He.Float32BufferAttribute(c,3));let d=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)d[f++]=e.r,d[f++]=e.g,d[f++]=e.b;return p.setAttribute("color",new He.BufferAttribute(d,3)),p.setIndex(new He.Uint32BufferAttribute(m,1)),me.free_wireframe_data_for_base_level(r),p}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||me.set_destination_refinement_level(i,1);let r=e?me.get_topological_data2(i,t?me.Level.CONTROL:me.Level.REFINED,e.elements):me.get_topological_data(i,t?me.Level.CONTROL:me.Level.REFINED),o=6,n=me.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=me.HEAPU32[n[a]>>2],c=new Float32Array(me.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let u=me.HEAPU32[n[a]>>2],m=new Uint32Array(me.HEAPU32.subarray(u>>2,(u>>2)+s[a]));a++;let p=me.HEAPU32[n[a]>>2],d=new Uint8Array(me.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return me.free_topological_data(r),{positions:c,indices:m,verticesPerFace:d}}};var Gd=["getX","getY","getZ"];function ec(i,t){let e={},r=t?t.count:i.count,o=0,n=[],s=[],a=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,m="";for(let p=0;p<3;p++)m+=`${~~(i[Gd[p]](u)*a)},`;if(m in e)n.push(e[m]);else{for(let p=0;p<3;p++)s.push(i[Gd[p]](u));e[m]=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 va=new He.Vector3,Ql=new He.Vector3,Jl=new He.Vector3,Zl=new He.Vector3;function tc(i,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<n.length;l+=2)s+=(n[l]-n[(l===0?n.length:l)-2])*(n[l+1]+n[(l===0?n.length:l)-1]);i.length=0;let a=0;if(s<0)for(let l=0;l<n.length;l+=2)i.push(n[l],n[l+1],0),r.push(a++);else for(let l=n.length-2;l>=0;l-=2)i.push(n[l],n[l+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??t.length;n<s;)if(t[n+1]===t[n+3]&&t[n+2]===t[n+5]||t[n+0]===t[n+3]&&t[n+2]===t[n+4]){va.set(i[t[n]*3],i[t[n]*3+1],i[t[n]*3+2]),Ql.set(i[t[n+1]*3],i[t[n+1]*3+1],i[t[n+1]*3+2]),Jl.set(i[t[n+4]*3],i[t[n+4]*3+1],i[t[n+4]*3+2]),Zl.set(i[t[n+5]*3],i[t[n+5]*3+1],i[t[n+5]*3+2]),Ql.sub(va).normalize(),Jl.sub(va).normalize(),Zl.sub(va).normalize();let a=Ql.cross(Jl).dot(Zl);Math.abs(a)>.005?(r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3):(r.push(t[n],t[n+1],t[n+4],t[n+5]),o.push(4),n+=6)}else r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let l=0,c=0;l<i.length;l+=3,c++)i[l+2]===0&&(n.push(c),a++),i[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}n.reverse(),r.push(...n,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var er={};pc(er,{calcBoolean:()=>Gb,calcBooleanTopological:()=>Eb,freeMeshSet:()=>zb,getMeshSet:()=>Rb,transformMeshSet:()=>Vb});var Db,Rd=new Promise(i=>{Db=i});var Bi=require("three");var xe,In;Rd.then(i=>xe=i);function Bb(i,t){let e,{positions:r,triIndices:o}=ec(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=tc(r,o,i);n=a.length,e=[];for(let l=0,c=0;l<n;l++){e.push(a[l]);for(let u=0;u<a[l];u++)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 Vd(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=xe._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(xe.HEAPU32.buffer,n,t):new Float32Array(xe.HEAPF32.buffer,n,t)).set(i,0),n}function zd(i){switch(i){case 0:return xe.OP.UNION;case 1:return xe.OP.INTERSECTION;case 2:return xe.OP.A_MINUS_B;case 3:return xe.OP.B_MINUS_A;case 4:return xe.OP.SYMMETRIC_DIFFERENCE;case 5:return xe.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function Eb(i,t){In===void 0&&(In=xe.init_csg());let e=Vd(i),r=xe.csg_calc_topological(In,e,i.length,zd(t));xe._free(e);let o=6,n=xe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=xe.HEAPU32[n[a]>>2],c=new Float32Array(xe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let u=xe.HEAPU32[n[a]>>2],m=new Uint32Array(xe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));a++;let p=xe.HEAPU32[n[a]>>2],d=new Uint8Array(xe.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return xe.free_mesh_data(r),{positions:c,indices:m,verticesPerFace:d}}function Gb(i,t,e,r){In===void 0&&(In=xe.init_csg());let o=Vd(i),n=xe.csg_calc(In,o,i.length,r,zd(t));xe._free(o);let s=5,a=xe.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,u=xe.HEAPU32[a[c]>>2],m=xe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=xe.HEAPU32[a[c]>>2],d=xe.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new Bi.Float32BufferAttribute(m,3)),e.setAttribute("normal",new Bi.Float32BufferAttribute(d,3));let g=xe.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Bi.Sphere),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},xe.free_mesh_data(n),f}function Rb(i,t){if(xe===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((x,y)=>x+y,0)+o);for(let x=0,y=0,v=0;x<g.verticesPerFace.length;x++){r[v++]=g.verticesPerFace[x];for(let A=0;A<g.verticesPerFace[x];A++)r[v++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=Bb(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,u=a*Float32Array.BYTES_PER_ELEMENT,m=l*Uint32Array.BYTES_PER_ELEMENT,p=xe._malloc(c),d=new Float32Array(xe.HEAPF32.buffer,p,a),f=new Uint32Array(xe.HEAPU32.buffer,p+u,l);return d.set(e,0),f.set(r,0),xe.get_csg_mesh(p,n,p+u,s,o)}function Vb(i,t){xe.transform_csg_mesh(i,t.elements)}function zb(i){xe.free_csg_mesh(i)}var Kl={ConeGeometry:sm,CubeGeometry:am,CylinderGeometry:nm,DodecahedronGeometry:cm,EllipseGeometry:Om,HelixGeometry:Em,IcosahedronGeometry:Rm,LatheGeometry:Vm,NonParametricGeometry:zm,PolygonGeometry:Fm,PyramidGeometry:Um,RectangleGeometry:jm,SphereGeometry:Hm,PlaneGeometry:qm,BackdropGeometry:$m,StarGeometry:Xm,TextFrameGeometry:oa,TorusGeometry:Km,TorusKnotGeometry:Jm,TriangleGeometry:Zm,VectorGeometry:bt},Di=i=>Kl[i.type].create(i);var Ei=require("three");var Fd=new Ei.Matrix4;var ba=class extends lt{constructor(e=new Ei.BufferGeometry,r){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 n=this.children[o];fr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(id(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=er.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;er.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else fr(n)&&n.needsTransformForDownstream===!0?(er.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(Fd.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),er.transformMeshSet(n.booleanMeshSetAddress,Fd),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return er.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Ei.BufferGeometry,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=er.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,No(this),Co(this)}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()}};var Ge=require("three");var Ud=require("three"),Tr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Ud.BoxBufferGeometry(30,30,30),t};var mt=require("three");var gt=require("three"),Sa=new gt.Ray,rc=new gt.Sphere,jd=new gt.Matrix4,Nr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),rc.copy(n.boundingSphere),rc.applyMatrix4(s),e.ray.intersectsSphere(rc)===!1||(jd.copy(s).invert(),Sa.copy(e.ray).applyMatrix4(jd),n.boundingBox!==null&&Sa.intersectsBox(n.boundingBox)===!1))return;let a,l,c,u,m=n.index,p=n.attributes.position,d=n.drawRange,f,g;if(o===!1){let y=Math.max(0,d.start),v=Math.min(m.count,d.start+d.count);for(f=y,g=v;f<g;f+=3)if(l=m.getX(f),c=m.getX(f+1),u=m.getX(f+2),a=x(i,e,Sa,p,l,c,u),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let v=n.attributes.position,A=new gt.Vector3,S=new gt.Vector3,b=new gt.Vector3,B=new gt.Vector3,w=2,_=1/((i.scale.x+i.scale.y+i.scale.z)/3),N=_*_,I=Math.max(0,d.start),L=Math.min(v.count,d.start+d.count);for(let P=I,k=L-1;P<k;P+=w){if(A.fromBufferAttribute(v,P),S.fromBufferAttribute(v,P+1),Sa.distanceSqToSegment(A,S,B,b)>N)continue;B.applyMatrix4(i.matrixWorld);let ne=e.ray.origin.distanceTo(B);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function x(y,v,A,S,b,B,w){let h=new gt.Vector3,_=new gt.Vector3,N=new gt.Vector3,I=new gt.Vector3,L=new gt.Vector3;if(h.fromBufferAttribute(S,b),_.fromBufferAttribute(S,B),N.fromBufferAttribute(S,w),A.intersectTriangle(h,_,N,!1,I)===null)return null;L.copy(I),L.applyMatrix4(y.matrixWorld);let k=v.ray.origin.distanceTo(L);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:L.clone(),object:y}}};var wa=new mt.Vector3,qt=new mt.Camera,oc=class extends mt.LineSegments{constructor(e){let r=new mt.BufferGeometry,o=new mt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new mt.Color(15711266),c=new mt.Color(15711266),u=new mt.Color(2857471);m("n1","n2",l),m("n2","n4",l),m("n4","n3",l),m("n3","n1",l),m("f1","f2",l),m("f2","f4",l),m("f4","f3",l),m("f3","f1",l),m("n1","f1",l),m("n2","f2",l),m("n3","f3",l),m("n4","f4",l),m("p","n1",c),m("p","n2",c),m("p","n3",c),m("p","n4",c),m("u1","u2",u),m("u2","u3",u),m("u3","u1",u);function m(d,f,g){p(d,g),p(f,g)}function p(d,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}r.setAttribute("position",new mt.Float32BufferAttribute(n,3)),r.setAttribute("color",new mt.Float32BufferAttribute(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;qt.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;tr("n1",r,e,qt,-n,-s,a),tr("n2",r,e,qt,n,-s,a),tr("n3",r,e,qt,-n,s,a),tr("n4",r,e,qt,n,s,a);let l=a;tr("f1",r,e,qt,-n,-s,l),tr("f2",r,e,qt,n,-s,l),tr("f3",r,e,qt,-n,s,l),tr("f4",r,e,qt,n,s,l);let c=l,u=.5;tr("u1",r,e,qt,n*.7*u,s*1.1,c),tr("u2",r,e,qt,-n*.7*u,s*1.1,c),tr("u3",r,e,qt,0,s*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function tr(i,t,e,r,o,n,s){wa.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,u=a.length;c<u;c++)l.setXYZ(a[c],wa.x,wa.y,wa.z)}}var Ta=class extends Tr(oc){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){Nr(this.object,this.geometry,e,r,!0)}};var kd=require("three");var An=class extends Tr(kd.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,An.geometryHelper,e,r)}};var Hd=require("three");var Pn=class extends Tr(Hd.AxesHelper){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){Nr(this.object,Pn.geometryHelper,e,r)}update(){}};var Wd=require("three");var Mn=class extends Tr(Wd.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,Mn.geometryHelper,e,r)}};var Ca=require("three");var Na=class extends Tr(Ca.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,Na.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Na._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)}}},Gi=Na;Gi._vector=new Ca.Vector3;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)Yt(n)&&n.traverseEntity(s=>{Rr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ye(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 On=new Ge.Vector3,nc=new Ge.Vector3,Vr=class extends Cr(kt(Ge.Camera),Ta){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=po.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ge.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,n??-5e4,s),this.perspCamera=new Ge.PerspectiveCamera(o,e/r,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 Vr().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(On),this.targetOffset=On.distanceTo(e)}getTarget(e=new Ge.Vector3){return this.getWorldDirection(nc),this.getWorldPosition(On),nc.multiplyScalar(this.targetOffset),e.copy(On).add(nc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(On),On.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ge.Quaternion),r=new Ge.Vector3(0,0,1).applyQuaternion(e),o=new Ge.Vector3().copy(Ge.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Ge.Vector3().copy(Ge.Object3D.DefaultUp).projectOnPlane(r),s=new Ge.Vector3().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ge.Vector3),n=e.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ge.Vector3),n=this.getWorldDirection(new Ge.Vector3).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}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 Ko(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}};var qd=require("three");var Lo=class extends Cr(kt(qd.Group),Pn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Lo().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}};var Io=require("three");var _n=class extends Cr(kt(Io.DirectionalLight),An){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 Io.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new _n().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 Io.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Io.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Io.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}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&&rd(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}};var yt=require("three");var Dn=class extends Cr(kt(yt.PointLight),Mn){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 yt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new yt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new yt.Box3(n,s),l=new yt.Box3Helper(a,new yt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new Dn().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 yt.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof yt.Box3Helper&&(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 yt.Box3Helper){let o=this.shadow.camera,n=new yt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new yt.Vector3(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()}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}};var Ot=require("three");var $d=new Ot.Vector3,Xd=new Ot.Vector3,Yd=new Ot.Quaternion,Bn=class extends Cr(kt(Ot.SpotLight),Gi){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=Ot.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Ot.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Bn().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 Ot.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Xd.setFromMatrixPosition(this.matrixWorld),Yd.setFromRotationMatrix(this.matrixWorld),$d.copy(this.up).applyQuaternion(Yd).negate().multiplyScalar(this.distance),this.target.position.copy(Xd).add($d),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}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}};var Kd=i=>i.tagName==="VIDEO",En=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;Kd(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.layers;for(let n=0;n<o.length;n++){let s=o[n];wd(s)&&En.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;Kd(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 La=class extends lt{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&En.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Gn=class extends lt{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Ia=class extends Gn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var $t=require("three"),Qd=require("three/examples/jsm/loaders/FontLoader.js"),We=class extends $t.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let c=We.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=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 $t.Vector2,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 We._fontPath}static set FONTS_PATH(e){We._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new $t.Vector3(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=We.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=We.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=We.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 We(e).copy(this)}static loadFont(e){return new Promise(function(r,o){We.fontCache[e]?r(We.fontCache[e]):new Qd.FontLoader().load(We.FONTS_PATH+e+".json",s=>{We.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(We.charCache[e]){if(We.charCache[e][o]&&We.charCache[e][o].fontFamily===r)return We.charCache[e][o]}else We.charCache[e]={};let n=We.fontCache[r],s=n.generateShapes(e,1);return We.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},We.charCache[e][o]}},rr=We;rr.charCache={},rr.fontCache={},rr._fontPath="/_assets/_fonts/";var Lr=require("three");var ic=require("three"),Aa=new ic.Vector2,Ao=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new ic.Vector2(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){Aa.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Aa),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),Aa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Aa),e)}clone(){let t=new Ao(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 sc=class extends lt{constructor(e){super(e,new Lr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Lr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Lr.Object3D,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 Lr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=oa.create({parameters:{width:r.width,height:r.height}}),s=new sc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await rr.loadFont(o),r.text=e;let n=r.textOrigin,s=new Lr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Lr.DoubleSide}),a=e.split(`
1329
- `),l=0;this.userData.textFrame.textLines=a.map((c,u)=>{let m=new Ao(l,r.lineHeight,r.fontSize);return m.message=c.split("").map(p=>{let d={char:p,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new rr(d,f);return m.addChar3D(g,n),this.charContainer.add(g),g}),l+=m.maxCharSize*m.lineHeight,m}),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 rr&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,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!==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 u=0;u<a[c].length;u+=1)n[s+1].addChar3D(a[c][u],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 u=0;u<l.length;u+=1)l[u]&&s[a-1].addChar3D(l[u],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 Ao(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){let r=this.userData;r.textFrame.hexColor=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.color?.isColor&&(l.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 rr.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 rr.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()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ye(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}},Po=sc;Po.VerticalAlign=sl,Po.HorizontalAlign=il,Po.TextTransform=al;var ct=require("three");var Ri=class{constructor(t){this.deletedMaterial=new To(_r.defaultTwoLayerData("basic"),this);this.deletedImage=new wo($s.emptyImage);this.materials={};this.images={};this.colors={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new ct.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:ct.LinearMipmapLinearFilter,magFilter:ct.LinearFilter,wrapS:ct.ClampToEdgeWrapping,wrapT:ct.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new ct.DepthTexture(2048,2048),this.normalRenderTarget=new ct.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:ct.NearestFilter,magFilter:ct.NearestFilter,type:ct.FloatType}),this.normalRenderTarget.depthTexture=new ct.DepthTexture(1024,1024),this.penumbraSizeNode=new ot(5,t.penumbraSize),this.resolutionNode=new rt(1,1),this.pixelRatioNode=new Y(window.devicePixelRatio),this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);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,new To(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new Zt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new wo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new Cn(t,this.onImageLoad)}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 ro(e.r,e.g,e.b,e.a):this.colors[t]=new ro(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]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ut(0,0,0,0))}else return"a"in t?new ut(t.r,t.g,t.b,t.a):new ut(t.r,t.g,t.b,1);return e}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0}},Gz=new Ri(qs.emptyData());var Jd=require("three/examples/jsm/loaders/DRACOLoader.js");var io;function Ub(){return io||(io=new Jd.DRACOLoader,io.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),io.decoderPending}async function jb(i){if(io){let t={attributeIDs:io.defaultAttributeIDs,attributeTypes:io.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await io.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 Zd(i,t){let[e,r]=ja(Vs.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await Ub();for(let n of o){let s=await jb(Ha(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:l,array:c,itemSize:u})=>{a[l]={array:c,itemSize:u,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var Vt=require("three");var wt=require("three");var of=_f(tf());var ac;na.then(i=>{ac=i});var nf=new wt.Matrix4,kb=new wt.Matrix4,Hb=new wt.Matrix4,or=new wt.Box3,so=new wt.Vector3,Wb=new wt.Matrix4,qb=new wt.Matrix4,Rn=class extends lt{constructor(e,r,o,n){super(o??r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new wt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new wt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Wt.build(r.geometry,void 0,void 0,!r.flatShading),l=o.material(r.material),c=new Rn(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}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Wt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,No(this),Co(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,lt.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:n,q:s}=(0,of.SVD)(r),a=nf.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=kb.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=Hb.copy(l).transpose();this.shearScale=Wb.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=qb.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(u=>Math.abs(s[0]-u)<.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 wt.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;or.setFromBufferAttribute(r),or.getCenter(o),e.boundingSphere.radius=o.distanceTo(or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(so);let n={width:so.x,height:so.y,depth:so.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;or.min.set(e[0],e[2],e[4]),or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(or.min.applyMatrix4(this.shearScaleInv),or.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new wt.Sphere);let o=r.boundingSphere.center;or.getCenter(o),r.boundingSphere.radius=o.distanceTo(or.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(so);let n={width:so.x,height:so.y,depth:so.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(ac.free_bvh(this.subdivPointer),ac.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,rf(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(rf(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 rf(i,t,e,r){let o=i.position.array,n=i.normal.array,s=nf.makeScale(t,e,r).invert().elements,a,l,c;for(var u=0,m=o.length;u<m;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,a=n[u],l=n[u+1],c=n[u+2],n[u]=s[0]*a+s[4]*l+s[8]*c,n[u+1]=s[1]*a+s[5]*l+s[9]*c,n[u+2]=s[2]*a+s[6]*l+s[10]*c}var ao=require("three");function sf(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=ao.FrontSide:t.side===1?i.side=ao.BackSide:i.side=ao.DoubleSide)}function $b(i,t){if(Array.isArray(i.material))for(let e of i.material)sf(e,t);else{let e=i.material;sf(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function af(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Rn.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new ao.BufferGeometry:xa(t.geometry,e),n="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);ks.is2DParametricMesh(o.userData.type)?r=new La(o,n):o?.userData.type==="VectorGeometry"?r=new Ln(o,n):t.geometry.type==="NonParametricGeometry"?r=new Ia(o,n):t.geometry.type==="BooleanGeometry"?(r=new ba(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Gn(o,n),r.uuid=i,r.fromState(t,e)}return $b(r,t),r}function lf(i,t,e){return t.type==="Mesh"?af(i,t,e):t.type==="TextFrame"?Po.createFromState(i,t,e):t.type==="Empty"?Lo.createFromState(i,t):t.type==="PointLight"?Dn.createFromState(i,t,e):t.type==="SpotLight"?Bn.createFromState(i,t,e):t.type==="DirectionalLight"?_n.createFromState(i,t,e):Qo.is(t.type)?Vr.createFromState(i,t):(console.error(t),new Lo)}var cf=new Vt.Vector3,lc=class extends sa(Vt.Scene){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Vt.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Vt.Color(1,0,0);this.bgColor=new Vt.Color(1,1,1);this.entityByUuid={};this.ambientLight=new Vt.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=Ld(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=Cd(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ye(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Vr&&this.switchActiveCamera(o)}this.traverse(o=>{fr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Id(e)});for(let e of this.children)Yt(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Vr.createFromState(lc.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=n=>{for(let s of n.children)Yt(s)&&!s.raycastLock&&s.visible&&((dr(s)||Rr(s)&&s.enableHelper&&s.objectHelper.parent)&&(e.intersectObject(s,!1,r),Ad(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Yt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ye(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){td(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ye(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,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=lf(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),fr(n)&&dr(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),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new Vt.Box3;return o.setFromPoints(r),o.getCenter(cf),cf}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 lt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Zt&&e(r.material[o]);else r.material instanceof Zt&&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.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=n})})}},Vi=lc;Vi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var Xb=require("three"),Yb=require("three/examples/jsm/utils/BufferGeometryUtils.js");function uf(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}var zi=require("three");function pf(i){let t=new Set;return i.traverse(e=>{if(dr(e))if(Xe(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);Kb(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new zi.Color,specularColor:new zi.Color}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(zi.ShaderLib.physical.uniforms,o.uniforms),e.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)})}):Qb(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function Kb(i){return i.getLayersOfType("transmission").length>0}function Qb(i){let t=0;return i.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function mf(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function df(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}var ff=require("three/examples/jsm/utils/BufferGeometryUtils.js");function hf(i){let t=[];return i.traverse(e=>{e instanceof vo&&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&&uf(l),l}),s=(0,ff.mergeBufferGeometries)(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function gf(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function yf(i){Object.values(i.shared.materials).forEach(t=>{cc(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?cc(e.material):"materials"in e&&e.materials.forEach(r=>{cc(r)})})}function cc(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var xf="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ma=class extends Oa.Loader{load(t,e,r,o=console.error){let n=new Oa.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(xf+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(xf),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 Zd(t,yf),r=new Ri(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Vi(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&&ed(s)&&Object.assign(s,{makeDefault:!0})}return o=hf(o),o=pf(o),o=mf(o),o=df(o),o=gf(o),o}};
1328
+ }`,[gt.simplex,e,o,s])}}();var Qm=require("three");function Km(i,t,e){i.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Oa=class extends Pn{constructor(e,r){super(new Qm.Matrix3);this.repeat=e;this.offset=r;Km(this.value,e,r)}updateMatrix(){Km(this.value,this.repeat,this.offset)}};var Tr=class{constructor(t,e,r,o){this.type=t;this.id=e;this.uuid=r;this.uniforms={};for(let n in o)this.uniforms[`f${this.id}_${n}`]=o[n]}static create(t,e,r,o){if(r.type==="light")return Ar.createLigherLayer(t,e,r,o);if(r.type==="texture"){let n=o.image(r.texture.image),s=new Ei(n,r.texture.wrapping),a=new Na(n),c=new Oa(r.texture.repeat,r.texture.offset),p=new X(r.crop?1:0),l=new xe(r.projection??0),u=new xe(["x","y","z"].indexOf(r.axis)??0),d=new xe(r.side??0),m=new rt(r.size?new Se.Vector2(r.size[0],r.size[1]):new Se.Vector2(100,100)),f=new X(r.alpha??1),h=new xe(r.mode??0),g=new Ii(s,a,p,l,u,d,m,c,f,h),x=new Te(g.calpha,"f");return new ot("texture",t,e,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:m,mat:c,alpha:f,mode:h},g,h,x)}else if(r.type==="matcap"){let n=o.image(r.texture.image),s=new Ei(n,r.texture.wrapping),a=new X(r.alpha??1),c=new xe(r.mode??0),p=new Bi(s,a,c),l=new Te(p.calpha,"f");return new ot("matcap",t,e,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new pt(new Se.Vector3(...r.offset)),s=new X(r.scale??10),a=new X(r.intensity??8),c=new X(r.movement??1),p=new xe(r.noiseType??0),l=new Oi(a,c,n,s,p);return new Ri(r.type,t,e,{offset:n,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else{let n=Wb(t,e,r,o);for(let s in r)lc(s,n,r);return n}}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:Xm(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?ac(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},ot=class extends Tr{constructor(e,r,o,n,s,a,c){super(e,r,o,n);this.color=s;this.mode=a;this.alpha=c}},Ri=class extends Tr{constructor(e,r,o,n,s){super(e,r,o,n);this.position=s}},Ar=class extends Tr{constructor(e,r,o,n,s){super("light",e,r,s);this.data=o;this.node=n}static createLigherLayer(e,r,o,n){let s,a=new X(o.alpha),c=new xe(o.mode),p;if(o.category==="lambert"){s=new mi;let l=new Ne(n.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new Sa;let l=new X(o.shininess??30),u=new Ne(n.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new yi;let l=new X(o.shininess??30),u=new Ne(n.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new hi;let l=new X(o.roughness??.3),u=new X(o.metalness??0),d=new X(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new oo,p={};return s.alpha=new X(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new Ar(e,r,o,s,p)}};function Zm(i){let t=i instanceof Tr?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}function Hb(i,t,e,r){switch(i){case"color":{let o=new Ne(r.color??5855577),n=new X(r.alpha??1),s=new Te("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new xe(r.mode??0);return o.alpha=n,new ot(i,t,e,{color:o,alpha:n,mode:a},o,a,s)}case"fresnel":{let o=new Ne(r.color??16777215),n=new X(r.bias??.1),s=new X(r.scale??1),a=new X(r.intensity??2),c=new X(r.factor??1),p=new X(r.alpha??1),l=new xe(r.mode??0),u=new Si(o,n,s,a,c,p,l),d=new Te(u.calpha,"f");return new ot(i,t,e,{color:o,bias:n,scale:s,intensity:a,factor:c,alpha:p,mode:l},u,l,d)}case"rainbow":{let o=new X(r.filmThickness??30),n=new X(r.movement??0),s=new pt(r.wavelengths??new Se.Vector3(0,0,0)),a=new X(r.noiseStrength??0),c=new X(r.noiseScale??1),p=new pt(r.offset??new Se.Vector3(0,0,0)),l=new X(r.alpha??1),u=new wi(o,n,s,a,c,p,l),d=new Te(u.calpha,"f"),m=new xe(r.mode??0);return new ot(i,t,e,{filmThickness:o,movement:n,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,mode:m},u,m,d)}case"transmission":{let o=new X(r.thickness??10),n=new X(r.ior??1.5),s=new X(r.roughness??.5),a=new rt(r.transmissionSamplerSize??new Se.Vector2(2048,2048)),c=r.transmissionSamplerMap??new Se.Texture,p=r.transmissionDepthMap??new Se.Texture,l=new Ot(c),u=new Ot(p),d=window.innerWidth,m=window.innerHeight,f=d>=m?new rt(m/d,1):new rt(1,d/m),h=new X(r.alpha??1),g=new Ai(o,n,s,a,l,u,f,h),x=new Te(g.calpha,"f"),v=new xe(r.mode??0);return new ot(i,t,e,{thickness:o,ior:n,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:l,transmissionDepthMap:u,aspectRatio:f,alpha:h,mode:v},g,v,x)}case"toon":{let o=new xe(r.positioning??0),n;r.colors?n=new Jt(r.colors.length,r.colors):(n=new Jt(10,new Se.Vector4(0,0,0,1)),n.value[1]=new Se.Vector4(1,1,1,1));let s;r.steps?s=new et(r.steps.length,r.steps):(s=new et(10,1),s.value[0]=0);let a=new pt(r.source??new Se.Vector3(0,0,0)),c=new no(r.isWorldSpace??!0),p=new X(r.noiseStrength??0),l=new X(r.noiseScale??1),u=new qt(r.shadowColor),d=new pt(r.offset??new Se.Vector3(0,0,0)),m=new X(r.alpha??1),f=new Gi(o,n,s,a,c,p,l,u,d,m),h=new Te(f.calpha,"f"),g=new xe(r.mode??0);return new ot(i,t,e,{positioning:o,colors:n,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:m,mode:g},f,g,h)}case"outline":{let o=new Ne(r.outlineColor??16777215),n=new Ne(r.contourColor??16777215),s=new X(r.outlineWidth??.1),a=new X(r.contourWidth??.1),c=new X(r.outlineThreshold??.1),p=new X(r.contourThreshold??.1),l=new X(r.outlineSmoothing??.1),u=new X(r.contourFrequency??.1),d=new pt(r.contourDirections??new Se.Vector3(0,1,0)),m=new no(r.positionalLines??!1),f=new no(r.compensation??!0),h=r.normalMap??new Se.Texture,g=new Ot(h),x=r.depthMap??new Se.Texture,v=new Ot(x),A=r.pixelRatio??new X(window.devicePixelRatio),_=r.resolution??new rt(new Se.Vector2(1,1)),b=new X(r.alpha??1),D=new Ti(o,n,s,a,c,p,l,u,d,m,f,_,g,v,A,b),S=new Te(D.calpha,"f"),y=new xe(r.mode??0);return new ot(i,t,e,{outlineColor:o,contourColor:n,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:m,compensation:f,resolution:_,normalMap:g,depthMap:v,pixelRatio:A,alpha:b,mode:y},D,y,S)}case"depth":{let o=new xe(r.gradientType??0),n=new no(r.smooth??!1),s=new X(r.near??50),a=new X(r.far??200),c=new X(r.isVector??1),p=new X(r.isWorldSpace??0),l=new pt(r.origin??new Se.Vector3),u=new pt(r.direction??new Se.Vector3),d=new xe(r.num??0),m;r.colors?m=new Jt(d.value+1,r.colors):(m=new Jt(d.value+1,new Se.Vector4(0,0,0,1)),m.value[1]=new Se.Vector4(1,1,1,1));let f;r.steps?f=new et(d.value+1,r.steps):(f=new et(d.value+1,1),f.value[0]=0);let h=new X(r.alpha??1),g=new xe(r.mode??0),x=new Ci(o,n,s,a,c,p,l,u,m,f,d,h),v=new Te(x.calpha,"f");return new ot(i,t,e,{gradientType:o,smooth:n,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:m,steps:f,num:d,alpha:h,mode:g},x,g,v)}case"noise":{let o=new X(r.scale??1),n=new pt(r.size??new Se.Vector3(100,100,100)),s=new X(r.move??1),a=new rt(r.fA??new Se.Vector2(1.7,9.2)),c=new rt(r.fB??new Se.Vector2(8.3,2.8)),p=new rt(r.distortion??new Se.Vector2(1,1)),l=new qt(r.colorA),u=new qt(r.colorB),d=new qt(r.colorC),m=new qt(r.colorD),f=new X(r.alpha??1),h=new xe(r.mode??0),g=new xe(r.noiseType??0),x=new _i(o,n,s,a,c,p,l,u,d,m,f,g),v=new Te(x.calpha,"f");return new ot(i,t,e,{scale:o,size:n,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:m,alpha:f,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new pt(r.cnormal??new Se.Vector3(1,1,1)),n=new X(r.alpha??1),s=new xe(r.mode??0),a=new Mi(o,n),c=new Te("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=n,new ot(i,t,e,{cnormal:o,alpha:n,mode:s},a,s,c)}case"gradient":{let o=new xe(r.gradientType??0),n=new no(r.smooth??!1),s;r.colors?s=new Jt(r.colors.length,r.colors):(s=new Jt(10,new Se.Vector4(0,0,0,1)),s.value[1]=new Se.Vector4(1,1,1,1));let a;r.steps?a=new et(r.steps.length,r.steps):(a=new et(10,1),a.value[0]=0);let c=new rt(r.offset??new Se.Vector2(0,0)),p=new rt(r.morph??new Se.Vector2(0,0)),l=new X(r.angle??0),u=new X(r.alpha??1),d=new xe(r.mode??0),m=new Li(o,n,s,a,c,p,l,u),f=new Te(m.calpha,"f");return new ot(i,t,e,{gradientType:o,smooth:n,colors:s,steps:a,offset:c,morph:p,angle:l,alpha:u,mode:d},m,d,f)}default:{let o=new Ne(1,0,0,1),n=new X(1),s=new Te("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new xe(0);return o.alpha=n,new ot(i,t,e,{color:o,alpha:n,mode:a},o,a,s)}}}function Wb(i,t,e,r){let o=jm(e,r);return Hb(e.type,i,t,o)}function lc(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`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var Jm=i=>i.tagName==="VIDEO",En=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;Jm(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.layers;for(let n=0;n<o.length;n++){let s=o[n];Zm(s)&&En.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;Jm(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 La=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&En.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Gn=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Ia=class extends Gn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var $t=require("three"),ef=require("three/examples/jsm/loaders/FontLoader.js"),We=class extends $t.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},c=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let p=We.loadChar(e,o,a);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new $t.Vector2,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 We._fontPath}static set FONTS_PATH(e){We._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new $t.Vector3(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=We.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=We.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=We.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 We(e).copy(this)}static loadFont(e){return new Promise(function(r,o){We.fontCache[e]?r(We.fontCache[e]):new ef.FontLoader().load(We.FONTS_PATH+e+".json",s=>{We.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(We.charCache[e]){if(We.charCache[e][o]&&We.charCache[e][o].fontFamily===r)return We.charCache[e][o]}else We.charCache[e]={};let n=We.fontCache[r],s=n.generateShapes(e,1);return We.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},We.charCache[e][o]}},er=We;er.charCache={},er.fontCache={},er._fontPath="/_assets/_fonts/";var Cr=require("three");var pc=require("three"),Pa=new pc.Vector2,No=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new pc.Vector2(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){Pa.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Pa),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let n=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),Pa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Pa),e)}clone(){let t=new No(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 dc=class extends it{constructor(e){super(e,new Cr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Cr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Cr.Object3D,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 Cr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=sa.create({parameters:{width:r.width,height:r.height}}),s=new dc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await er.loadFont(o),r.text=e;let n=r.textOrigin,s=new Cr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Cr.DoubleSide}),a=e.split(`
1329
+ `),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new No(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let m={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let h=new er(m,f);return u.addChar3D(h,n),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),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 er&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=a,p.textOrigin.set(-.5*a,.5*c,0),c!==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 c=0;for(let p=0;p<a.length;p+=1)for(let l=0;l<a[p].length;l+=1)n[s+1].addChar3D(a[p][l],o,c),c+=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 c,p=s[a-1].spaceLeft(n);if(s[a].wordSize(0,1)<=p){s[a].containSpace()?c=s[a].getWord(0,1):c=s[a].popChar(0);for(let l=0;l<c.length;l+=1)c[l]&&s[a-1].addChar3D(c[l],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 No(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){let r=this.userData;r.textFrame.hexColor=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 c=s[a].material;c.color?.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 c=s[a].material;c.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 c=s[a].material;c.visible=e}}}async updateFontFamily(e){await er.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 c=0;c<a.length;c++)a[c].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 er.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 c=0;c<a.length;c++)n[s].message[c].updateChar(a[c].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let c=0;c<a.length;c++)n[s].message[c].updateChar(a[c].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let c=0;c<a.length;c++)n[s].message[c].updateChar(a[c].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()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ye(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}},Oo=dc;Oo.VerticalAlign=pl,Oo.HorizontalAlign=ul,Oo.TextTransform=dl;var Ma=require("three");var tr=class extends Ma.ShaderMaterial{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??Mr.defaultTwoLayerData("phong").layers;this.layers=o.map(n=>Tr.create(this.layerIdGen++,n.id,n.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Ar),this.lightLayer===void 0&&(this.lightLayer=new Ar(0,"",Xr.defaultData("light","basic"),new oo,{})),this.lightLayer.node instanceof oo||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let n=e.path[1];if(n===void 0){if(this.layers.reverse(),e.type===4){let s=Tr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===n);if(s){let a=r.layers.data(n);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let p=Tr.create(this.layerIdGen++,n,a,o);this.layers.splice(this.layers.findIndex(l=>l.uuid===n),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Ar);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let s=this.layers[n];s instanceof ot&&(o=new Ni(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Te("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Ar);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];n instanceof ot&&(e=new Ni(e,n.color,n.alpha,n.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Ri);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Lt(r,e[o].position,Lt.ADD),r=new Lt(r,new X(.5).setReadonly(!0),Lt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,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}clampUniformsForPreview(e,r){let o=(n,s,a)=>Math.min(Math.max(n,s),a);for(let n of this.layers)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(){for(let e of this.layers)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 Ca;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,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.transparent=r.requires.transparent||this.blending>Ma.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});var lt=require("three");var Lo=class extends tr{};var nf=bc(tf());var Ba=new Map;function rf(i){if(typeof i=="string")return i;let t=URL.createObjectURL(new Blob([i])),e={url:t};return Ba.set(i,e),t}function of(i){Ba.has(i)&&(URL.revokeObjectURL(Ba.get(i).url),Ba.delete(i))}var Rn=class{constructor(t,e){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let r={src:rf(t)};typeof t!="string"&&(r.format="wav"),this.audioSrc=t,this.sound=new nf.Howl(r),e&&this.setOptions(e)}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}setOptions(t){Object.assign(this,t),this.sound.on("end",this.onEnd)}fade(t,e=1e3){t&&(this.sound.volume(this._volume),this.disposeFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.disposeFade()},t))}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._isStarted=!0,this.delay?(this.disposeDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.disposeDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.disposeFade(),this.disposeDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.disposeFade(),this.disposeDelay()}disposeFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}disposeDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.disposeFade(),this.disposeDelay(),t&&of(this.audioSrc)}};var Fi=class{constructor(t){this.deletedMaterial=new Lo(Mr.defaultTwoLayerData("basic"),this);this.deletedImage=new Co(Ks.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new lt.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:lt.LinearMipmapLinearFilter,magFilter:lt.LinearFilter,wrapS:lt.ClampToEdgeWrapping,wrapT:lt.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new lt.DepthTexture(2048,2048),this.normalRenderTarget=new lt.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:lt.NearestFilter,magFilter:lt.NearestFilter,type:lt.FloatType}),this.normalRenderTarget.depthTexture=new lt.DepthTexture(1024,1024),this.penumbraSizeNode=new et(5,t.penumbraSize),this.resolutionNode=new rt(1,1),this.pixelRatioNode=new X(window.devicePixelRatio),this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);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,new Lo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data)}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new tr(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new Co(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new Bn(t,this.onImageLoad)}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 io(e.r,e.g,e.b,e.a):this.colors[t]=new io(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]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ct(0,0,0,0))}else return"a"in t?new ct(t.r,t.g,t.b,t.a):new ct(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof Rn)return e;{let r=new Rn(e);return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Rn&&e.dispose()}),this.audios={}}},QV=new Fi(Ys.emptyData());var sf=require("three/examples/jsm/loaders/DRACOLoader.js");var ao;function qb(){return ao||(ao=new sf.DRACOLoader,ao.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ao.decoderPending}async function $b(i){if(ao){let t={attributeIDs:ao.defaultAttributeIDs,attributeTypes:ao.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ao.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 af(i,t){let[e,r]=$a(zs.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await qb();for(let n of o){let s=await $b(Ya(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:p,itemSize:l})=>{a[c]={array:p,itemSize:l,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var Ft=require("three");var _t=require("three");var pf=bc(cf());var mc;aa.then(i=>{mc=i});var df=new _t.Matrix4,Xb=new _t.Matrix4,Yb=new _t.Matrix4,rr=new _t.Box3,lo=new _t.Vector3,Kb=new _t.Matrix4,Qb=new _t.Matrix4,Fn=class extends it{constructor(e,r,o,n){super(o??r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new _t.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new _t.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Ht.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Fn(n,s,a||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Ht.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,eo(this),to(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,it.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:n,q:s}=(0,pf.SVD)(r),a=df.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=Xb.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),p=Yb.copy(c).transpose();this.shearScale=Kb.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=Qb.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,p),s.every(l=>Math.abs(s[0]-l)<.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 _t.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;rr.setFromBufferAttribute(r),rr.getCenter(o),e.boundingSphere.radius=o.distanceTo(rr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rr.getSize(lo);let n={width:lo.x,height:lo.y,depth:lo.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;rr.min.set(e[0],e[2],e[4]),rr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(rr.min.applyMatrix4(this.shearScaleInv),rr.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new _t.Sphere);let o=r.boundingSphere.center;rr.getCenter(o),r.boundingSphere.radius=o.distanceTo(rr.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rr.getSize(lo);let n={width:lo.x,height:lo.y,depth:lo.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(mc.free_bvh(this.subdivPointer),mc.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,uf(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(uf(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 uf(i,t,e,r){let o=i.position.array,n=i.normal.array,s=df.makeScale(t,e,r).invert().elements,a,c,p;for(var l=0,u=o.length;l<u;l+=3)o[l]*=t,o[l+1]*=e,o[l+2]*=r,a=n[l],c=n[l+1],p=n[l+2],n[l]=s[0]*a+s[4]*c+s[8]*p,n[l+1]=s[1]*a+s[5]*c+s[9]*p,n[l+2]=s[2]*a+s[6]*c+s[10]*p}var co=require("three");function mf(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=co.FrontSide:t.side===1?i.side=co.BackSide:i.side=co.DoubleSide)}function Zb(i,t){if(Array.isArray(i.material))for(let e of i.material)mf(e,t);else{let e=i.material;mf(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function ff(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Fn.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new co.BufferGeometry:ma(t.geometry,e),n="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ws.is2DParametricMesh(o.userData.type)?r=new La(o,n):o?.userData.type==="VectorGeometry"?r=new yn(o,n):t.geometry.type==="NonParametricGeometry"?r=new Ia(o,n):t.geometry.type==="BooleanGeometry"?(r=new ha(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Gn(o,n),r.uuid=i,r.fromState(t,e)}return Zb(r,t),r}function hf(i,t,e){return t.type==="Mesh"?ff(i,t,e):t.type==="TextFrame"?Oo.createFromState(i,t,e):t.type==="Empty"?So.createFromState(i,t):t.type==="PointLight"?Tn.createFromState(i,t,e):t.type==="SpotLight"?An.createFromState(i,t,e):t.type==="DirectionalLight"?wn.createFromState(i,t,e):Qo.is(t.type)?Rr.createFromState(i,t):(console.error(t),new So)}var Fr=require("three");function t_(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function r_(i,t){t.uniforms[`f${t.id}_normalMap`].value=i.texture,t.uniforms[`f${t.id}_depthMap`].value=i.depthTexture}function gf(i,t,e){let r=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return n.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),r=!0,i!==void 0&&n.forEach(s=>r_(i,s)),to(t),eo(t)),o.length===0&&n.length===0&&t.layers.set(0),r}function yf(i,t,e){if(!e.layers)return!1;let r=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),n.length>0&&t.layers.enable(8),r=!0,i!==void 0&&o.forEach(s=>t_(i,s))),o.length===0&&n.length===0&&t.layers.set(0),r}function xf(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Fr.Mesh&&r.objectType!=="TextFrame")if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)gf(i,r,r.material[o])&&(e=!0);else gf(i,r,r.material)&&(e=!0)}),e}function vf(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Fr.Mesh)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)yf(i,r,r.material[o])&&(e=!0);else yf(i,r,r.material)&&(e=!0)}),e}function bf(i){"material"in i&&o_(i.material),"geometry"in i&&i.geometry.dispose()}function o_(i){_c(i).forEach(t=>{t instanceof Lo||t.dispose()})}var n_=new Fr.Raycaster,i_=new Fr.Matrix4,s_=new Fr.Ray;function _f(i,t,e){let r=i.cloner;if(r)for(let o of r.children){let n=i_.copy(o.matrixWorld).invert(),s=s_.copy(t.ray).applyMatrix4(n),a=i.matrixWorld;s.applyMatrix4(a);let c=n_;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(i,!1).length>0&&e.push({object:i})}}var Sf=new Ft.Vector3,fc=class extends ua(Ft.Scene){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Ft.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Ft.Color(1,0,0);this.bgColor=new Ft.Color(1,1,1);this.entityByUuid={};this.ambientLight=new Ft.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=vf(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=xf(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ye(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Rr&&this.switchActiveCamera(o)}this.traverse(o=>{mr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{bf(e)});for(let e of this.children)gr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Rr.createFromState(fc.PERSONAL_CAMERA_ID,{...$s.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=n=>{for(let s of n.children)gr(s)&&!s.raycastLock&&s.visible&&((dr(s)||la(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),_f(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)gr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)gr(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ye(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){cm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ye(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!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=hf(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),mr(n)&&dr(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:c}=e[n],p=this.find(a),l=c?p.recursiveBBox:p.singleBBox;r.push(...l.vertices)}let o=new Ft.Box3;return o.setFromPoints(r),o.getCenter(Sf),Sf}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof it)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof tr&&e(r.material[o]);else r.material instanceof tr&&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.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=n})})}},Vi=fc;Vi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var a_=require("three"),l_=require("three/examples/jsm/utils/BufferGeometryUtils.js");function wf(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}var zi=require("three");function Tf(i){let t=new Set;return i.traverse(e=>{if(dr(e))if(Xe(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);c_(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new zi.Color,specularColor:new zi.Color}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(zi.ShaderLib.physical.uniforms,o.uniforms),e.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)})}):u_(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function c_(i){return i.getLayersOfType("transmission").length>0}function u_(i){let t=0;return i.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function Af(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Cf(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}var Nf=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Of(i){let t=[];return i.traverse(e=>{e instanceof _o&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,n=o.map(a=>{a.updateMatrix();let c=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&wf(c),c}),s=(0,Nf.mergeBufferGeometries)(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function Lf(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function If(i){Object.values(i.shared.materials).forEach(t=>{hc(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?hc(e.material):"materials"in e&&e.materials.forEach(r=>{hc(r)})})}function hc(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Pf="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ga=class extends Ra.Loader{load(t,e,r,o=console.error){let n=new Ra.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Pf+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Pf),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 af(t,If),r=new Fi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Vi(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&&lm(s)&&Object.assign(s,{makeDefault:!0})}return o=Of(o),o=Tf(o),o=Af(o),o=Cf(o),o=Lf(o),o}};