@splinetool/loader 0.9.335 → 0.9.337
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.
- package/build/SplineLoader.cjs +35 -35
- package/build/SplineLoader.js +35 -35
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDescriptor;var $g=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var Ds=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Kg=(n,r)=>{for(var e in r)Hl(n,e,{get:r[e],enumerable:!0})},Zg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of $g(r))!Xg.call(n,o)&&o!==e&&Hl(n,o,{get:()=>r[o],enumerable:!(t=qg(r,o))||t.enumerable});return n};var Gs=(n,r,e)=>(e=n!=null?Wg(Yg(n)):{},Zg(r||!n||!n.__esModule?Hl(e,"default",{value:n,enumerable:!0}):e,n));var Gm=Ds((vc,Dm)=>{(function(n,r){typeof vc=="object"?Dm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(vc,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var u=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var zm=Ds((za,Fm)=>{(function(n,r){typeof za=="object"&&typeof Fm<"u"?r(za):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(za,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,b=r.length;if(b<v)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],T=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var C,P=new Array(v).fill(0);for(x=0;x<b;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(w[x]=p,m=0,c=x+1,s=x;s<b;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=d-p,s=c;s<v;s++)w[s]=S[x][s]/f;for(s=c;s<b;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*w[l]}}h<(y=Math.abs(P[x])+Math.abs(w[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)T[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=w[x],c=x}if(e){if(e==="f")for(x=v;x<b;x++){for(s=v;s<b;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(s=x;s<b;s++)S[s][x]=S[s][x]/p}else for(s=x;s<b;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*w[x],w[x]=a*w[x],!(Math.abs(d)<=o));x++)if(p=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[x]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][x],S[s][u]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[l-1])-g)*(y+g)+((p=w[l-1])-(f=w[l]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=w[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(w[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<b;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}w[c]=0,w[l]=d,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:S,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Py=Ds(wl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||r;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<a._howls.length;b++)a._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!r.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),b=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),w=b*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=S,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,b):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?C():(p._playLock=!0,p.once("resume",C),p._clearTimer(y._id))}else{var P=function(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var A=x.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._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."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._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}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(G){p._emit("playerror",y._id,G)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,O,!1)};x.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._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&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var v=r.ctx.currentTime,b=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,b=Math.abs(v/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-S)/f;S=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},w)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),b=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,w=b*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),w)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var b=function(){a._playLock?setTimeout(b,0):v()};setTimeout(b,0)}else v()}else if(a._webAudio){var w=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,d=a._parent;d._duration=Math.ceil(a._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(a&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof wl<"u"&&(wl.Howler=r,wl.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],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(r,e,t,o,i,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return l},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._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},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var Dg=Ds((KX,Bg)=>{Bg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});import{FileLoader as NA,Loader as EA}from"three";var Ce=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Ce.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,Ce.prototype),{data:l,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ce.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Si(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Si(t)}return Object.freeze(n)}function uu(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var qo=class extends Error{};function Rs(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function cr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function $o(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function pu(){return typeof process<"u"}function fu(n,r){for(let e of n)r(e.id,e.data)!==!0&&fu(e.children,r)}function mu(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)mu(e,r)}var ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Si(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&mu(o,t)}}traverse(e){fu(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,ze.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new qo("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:l,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>uu(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return cr(0,o,o);{let s=i[0].fi;return cr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return cr(c,c+o,o)}else return cr(s.fi,l.fi,o)}}};var Yo;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Yo||(Yo={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Si(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return pu()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,s=this,l={fi:t,id:o,data:i};return s=[...s,l],s.sort((u,a)=>u.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((a,d)=>a.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return cr(0,t,t);{let i=o[0].fi;return cr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return cr(l,l+t,t)}else return cr(i.fi,s.fi,t)}}};function Xo(n){return n&&typeof n=="object"&&n instanceof Be}var Be=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!Xo(t))return null;o+=1}t=t?Rs(t):new Be;for(let[c,u]of Object.entries(r.props)){let a=t[c];i[c]=a,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=Rs(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Rs(c);u[r.path[o-1]]=t,t=u}else{let u=new Be;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Be.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Mr;(t=>{function n(o,i){return wi(o,i)??o}t.apply=n;function r(o,i){return ql(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=ut.zoomOnce(c,l[s]),c===void 0)return i;if(!Xo(c))return;s+=1}if(c===void 0)return i;if(!!Xo(c))if(i.type===0){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Wl([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Mr||(Mr={}));function Wl(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=wi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Wl(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function Qg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=wi(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function wi(n,r){if(!Xo(r))return r;if(n instanceof ze){let e=Wl(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Qg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=wi(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Be)return ql(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=wi(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function ql(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Xo(r))return r;if(!Xo(n))return Mr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Be;for(let o of e){let i=ql(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function hu(n,r){let e={cur:[],result:[],len:0};return n=_i(n,r,e)??n,[n,e.result]}function Vs(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function js(n){n&&(n.len-=1)}function Jg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function yu(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=_i(i.data,r,Vs(e,s));js(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=yu(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function ex(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=_i(i.data,r,Vs(e,s));return js(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function _i(n,r,e){if(n instanceof ze){let t=yu(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return ex(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=_i(i,r,Vs(e,s));return js(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!$o(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=_i(s,r,Vs(e,i));js(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");Jg(e)}return t}else return}}var Fs;(r=>{function n(e,t){let o=ut.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Fs||(Fs={}));var rt;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function r(c,u){return e(c,u)?.data??c}l.applySimple=r;function e(c,u){let a=u.path;for(var d=[];;){let p;if(c instanceof Be&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===a.length&&(c instanceof ze||c instanceof he||c instanceof Ce?p=c.runOp(u):p=Yo.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ce){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Be){let b={...v,[g]:h};h=Object.setPrototypeOf(b,Be.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...v],h[g]=b}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof ze){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return t(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(rt||(rt={}));var $l;(c=>{function n(){return[]}c.empty=n;function r(u,a){let d=[];for(let p of u){let[f,...m]=p.path;f===a&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,a){return u.map(d=>({...d,path:[a,...d.path]}))}c.addPrefix=e;function t(u,a){return[...u,...a]}c.concat=t;function o(u,a){return[...u.filter(p=>!a.some(f=>rt.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>rt.commutative(d,p)))}c.commutative=i;function s(u,a){for(let d of a){let p=l(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function l(u,a){var d=u;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=ut.zoom(d,[...m.path,m.id]),y=rt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=hu(d,{[m.id]:h});d=g;for(let b of v){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=rt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof qo)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})($l||($l={}));var gu=Symbol(),tx=Symbol(),Us=Symbol(),go=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof zs);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Us];t&&t(),delete this._children[r]}}}},Xl=class extends go{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Yo.runOp(this._current,r),r.path)}},Kl=class extends go{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Ce.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},xu={get(n,r){if(r===Us)return()=>{n._parent=null};if(r===gu)return n._current;if(r===tx)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=ks(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},rx={...xu,set(n,r,e){let t={type:0,props:{[r]:Ye(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},ox={...xu,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Ko=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Us]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=ks(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},Zo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Us]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=ks(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Yl(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ut.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var zs=class extends go{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Yl(this.ts,e,r),Yl(this.actual,t,r),Yl(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ks(n,r,e){return e instanceof ze?new Ko(n,r,e):e instanceof he?new Zo(n,r,e):e instanceof Ce?new Proxy(new Kl(n,r,e),ox):e!==null&&typeof e=="object"?$o(e)?e:new Proxy(new Xl(n,r,e),rx):e}function Zl(n){let r=new zs(n);return[ks(r,"",n),r]}function Qo(n,r){let[e,t]=Zl(n);return r(e),t.result()}function Ye(n){return n instanceof Ko||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[gu]:n}var ut;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof ze||i instanceof Ko)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Zo)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(ut||(ut={}));function vu(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Wt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Hs=class{},Ti=class extends Hs{constructor(e){super();this.id=e}},Pi=class extends Hs{constructor(e){super();this.data=e}};var Jl;try{Jl=new TextDecoder}catch{}var ne,Yr,N=0;var Au=[],ec=Au,tc=0,bt={},we,$r,Vt=0,dr=0,Nt,Lr,pt=[],Oe,bu={useRecords:!1,mapsAsObjects:!0},Oi=class{},oc=new Oi;oc.name="MessagePack 0xC1";var Jo=!1,ur=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(ne)return Mu(()=>(qs(),this?this.unpack(r,e):ur.prototype.unpack.call(bu,r,e)));Yr=e>-1?e:r.length,N=0,tc=0,dr=0,$r=null,ec=Au,Nt=null,ne=r;try{Oe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof ur){if(bt=this,this.structures)return we=this.structures,Ws();(!we||we.length>0)&&(we=[])}else bt=bu,(!we||we.length>0)&&(we=[]);return Ws()}unpackMultiple(r,e){let t,o=0;try{Jo=!0;let i=r.length,s=this?this.unpack(r,i):Xs.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(Ws())===!1)return}else{for(t=[s];N<i;)o=N,t.push(Ws());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Jo=!1,qs()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Ws(){try{if(!bt.trusted&&!Jo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Re();if(N==Yr)we.restoreStructures&&Su(),we=null,ne=null,Lr&&(Lr=null);else if(N>Yr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Jo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&Su(),qs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Su(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Re(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||bt.getStructures&&Iu()[n&63];return r?(r.read||(r.read=nc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,bt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Nu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}else if(n<192){let r=n-160;if(dr>=N)return $r.slice(N-Vt,(N+=r)-Vt);if(dr==0&&Yr<140){let e=r<16?ic(r):Cu(r);if(e!=null)return e}return rc(r)}else{let r;switch(n){case 192:return null;case 193:return Nt?(r=Re(),r>0?Nt[1].slice(Nt.position1,Nt.position1+=r):Nt[0].slice(Nt.position0,Nt.position0-=r)):oc;case 194:return!1;case 195:return!0;case 196:return Ql(ne[N++]);case 197:return r=Oe.getUint16(N),N+=2,Ql(r);case 198:return r=Oe.getUint32(N),N+=4,Ql(r);case 199:return xo(ne[N++]);case 200:return r=Oe.getUint16(N),N+=2,xo(r);case 201:return r=Oe.getUint32(N),N+=4,xo(r);case 202:if(r=Oe.getFloat32(N),bt.useFloat32>2){let e=Ys[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Oe.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Oe.getUint16(N),N+=2,r;case 206:return r=Oe.getUint32(N),N+=4,r;case 207:return bt.int64AsNumber?(r=Oe.getUint32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigUint64(N),N+=8,r;case 208:return Oe.getInt8(N++);case 209:return r=Oe.getInt16(N),N+=2,r;case 210:return r=Oe.getInt32(N),N+=4,r;case 211:return bt.int64AsNumber?(r=Oe.getInt32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return Ou(ne[N++]&63);{let e=pt[r];if(e)return e.read?(N++,e.read(Re())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,Ou(ne[N++]&63,ne[N++])):xo(2);case 214:return xo(4);case 215:return xo(8);case 216:return xo(16);case 217:return r=ne[N++],dr>=N?$r.slice(N-Vt,(N+=r)-Vt):ix(r);case 218:return r=Oe.getUint16(N),N+=2,dr>=N?$r.slice(N-Vt,(N+=r)-Vt):sx(r);case 219:return r=Oe.getUint32(N),N+=4,dr>=N?$r.slice(N-Vt,(N+=r)-Vt):ax(r);case 220:return r=Oe.getUint16(N),N+=2,_u(r);case 221:return r=Oe.getUint32(N),N+=4,_u(r);case 222:return r=Oe.getUint16(N),N+=2,Tu(r);case 223:return r=Oe.getUint32(N),N+=4,Tu(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var nx=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function nc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>nx.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Re);return n.highByte===0&&(n.read=wu(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Re()}return t}return e.count=0,n.highByte===0?wu(r,e):e}var wu=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||Iu()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=nc(o,n)),o.read()};function Iu(){let n=Mu(()=>(ne=null,bt.getStructures()));return we=bt._mergeStructures(n,we)}var rc=$s,ix=$s,sx=$s,ax=$s;function $s(n){let r;if(n<16&&(r=ic(n)))return r;if(n>64&&Jl)return Jl.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=Xe.apply(String,t),t.length=0)}return t.length>0&&(r+=Xe.apply(String,t)),r}function _u(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}function Tu(n){if(bt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Nu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}}var Xe=String.fromCharCode;function Cu(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return Xe.apply(String,e)}function ic(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return Xe(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return Xe(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return Xe(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Xe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Ql(n){return bt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function xo(n){let r=ne[N++];if(pt[r])return pt[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var Pu=new Array(4096);function Nu(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,dr>=N)return $r.slice(N-Vt,(N+=n)-Vt);if(!(dr==0&&Yr<180))return rc(n)}else return N--,Re();let r=(n<<5^(n>1?Oe.getUint16(N):n>0?ne[N]:0))&4095,e=Pu[r],t=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return N=t,e.string;o-=3,t=N}for(e=[],Pu[r]=e,e.bytes=n;t<o;)i=Oe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?ic(n):Cu(n);return l!=null?e.string=l:e.string=rc(n)}var Ou=(n,r)=>{var e=Re();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=nc(e,t),e.read()},Eu=typeof self=="object"?self:global;pt[0]=()=>{};pt[0].noBuffer=!0;pt[101]=()=>{let n=Re();return(Eu[n[0]]||Error)(n[1])};pt[105]=n=>{let r=Oe.getUint32(N-4);Lr||(Lr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Lr.set(r,o);let i=Re();return o.used?Object.assign(t,i):(o.target=i,i)};pt[112]=n=>{let r=Oe.getUint32(N-4),e=Lr.get(r);return e.used=!0,e.target};pt[115]=()=>new Set(Re());var sc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");pt[116]=n=>{let r=n[0],e=sc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Eu[e](Uint8Array.prototype.slice.call(n,1).buffer)};pt[120]=()=>{let n=Re();return new RegExp(n[0],n[1])};pt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Nt=[Re(),Re()],Nt.position0=0,Nt.position1=0;let t=N;N=e;try{return Re()}finally{N=t}};pt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Mu(n){let r=Yr,e=N,t=tc,o=Vt,i=dr,s=$r,l=ec,c=Lr,u=Nt,a=new Uint8Array(ne.slice(0,Yr)),d=we,p=we.slice(0,we.length),f=bt,m=Jo,h=n();return Yr=r,N=e,tc=t,Vt=o,dr=i,$r=s,ec=l,Lr=c,Nt=u,ne=a,Jo=m,we=d,we.splice(0,we.length,...p),bt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function qs(){ne=null,Lr=null,we=null}function Lu(n){n.unpack?pt[n.type]=n.unpack:pt[n.type]=n}var Ys=new Array(147);for(let n=0;n<256;n++)Ys[n]=+("1e"+Math.floor(45.15-n*.30103));var Xs=new ur({useRecords:!1}),lx=Xs.unpack,cx=Xs.unpackMultiple,dx=Xs.unpack,Ks={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},ux=new Float32Array(1),DI=new Uint8Array(ux.buffer,0,4);var Zs;try{Zs=new TextEncoder}catch{}var Qs,lc,Js=typeof Buffer<"u",ac=Js?Buffer.allocUnsafeSlow:Uint8Array,Ru=Js?Buffer:Uint8Array,Bu=Js?4294967296:2144337920,V,je,M=0,pr,fr=null,px=/[\u0080-\uFFFF]/,Ai=Symbol("record-id"),vo=class extends ur{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Ru.prototype.utf8Write?function(x,C,P){return V.utf8Write(x,C,P)}:Zs&&Zs.encodeInto?function(x,C){return Zs.encodeInto(x,V.subarray(C)).written}:!1,a=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],b=0,w=0;this.pack=this.encode=function(x,C){if(V||(V=new ac(8192),je=new DataView(V.buffer,0,8192),M=0),pr=V.length-10,pr-M<2048?(V=new ac(V.length),je=new DataView(V.buffer,0,V.length),pr=V.length-10,M=0):M=M+7&2147483640,t=M,l=a.structuredClone?new Map:null,a.bundleStrings?(fr=["",""],V[M++]=214,V[M++]=98,fr.position=M-t,M+=4):fr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<P;I++){let O=o[I];if(!O)continue;let A,G=o.transitions;for(let z=0,$=O.length;z<$;z++){let te=O[z];A=G[te],A||(A=G[te]=Object.create(null)),G=A}G[Ai]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),fr){je.setUint32(fr.position+t,M-fr.position-t);let P=fr;fr=null,S(P[0]),S(P[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>pr&&_(M),a.offset=M;let P=mx(V.subarray(t,M),l.idsToInsert);return l=null,P}return C&ju?(V.start=t,V.end=M,V):V.subarray(t,M)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let P=0,I=v.length;P<I;P++)v[P][Ai]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=V.subarray(t,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&Sx&&(M=t)}};let S=x=>{M>pr&&(V=_(M));var C=typeof x,P;if(C==="string"){let I=x.length;if(fr&&I>=8&&I<4096){let G=px.test(x);fr[G?0:1]+=x,V[M++]=193,S(G?-I:I);return}let O;I<32?O=1:I<256?O=2:I<65536?O=3:O=5;let A=I*3;if(M+A>pr&&(V=_(M+A)),I<64||!u){let G,z,$,te=M+O;for(G=0;G<I;G++)z=x.charCodeAt(G),z<128?V[te++]=z:z<2048?(V[te++]=z>>6|192,V[te++]=z&63|128):(z&64512)===55296&&(($=x.charCodeAt(G+1))&64512)===56320?(z=65536+((z&1023)<<10)+($&1023),G++,V[te++]=z>>18|240,V[te++]=z>>12&63|128,V[te++]=z>>6&63|128,V[te++]=z&63|128):(V[te++]=z>>12|224,V[te++]=z>>6&63|128,V[te++]=z&63|128);P=te-M-O}else P=u(x,M+O,A);P<32?V[M++]=160|P:P<256?(O<2&&V.copyWithin(M+2,M+1,M+1+P),V[M++]=217,V[M++]=P):P<65536?(O<3&&V.copyWithin(M+3,M+2,M+2+P),V[M++]=218,V[M++]=P>>8,V[M++]=P&255):(O<5&&V.copyWithin(M+5,M+3,M+3+P),V[M++]=219,je.setUint32(M,P),M+=4),M+=P}else if(C==="number")if(x>>>0===x)x<64?V[M++]=x:x<256?(V[M++]=204,V[M++]=x):x<65536?(V[M++]=205,V[M++]=x>>8,V[M++]=x&255):(V[M++]=206,je.setUint32(M,x),M+=4);else if(x>>0===x)x>=-32?V[M++]=256+x:x>=-128?(V[M++]=208,V[M++]=x+256):x>=-32768?(V[M++]=209,je.setInt16(M,x),M+=2):(V[M++]=210,je.setInt32(M,x),M+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){V[M++]=202,je.setFloat32(M,x);let O;if(I<4||(O=x*Ys[(V[M]&127)<<1|V[M+1]>>7])>>0===O){M+=4;return}else M--}V[M++]=203,je.setFloat64(M,x),M+=8}else if(C==="object")if(!x)V[M++]=192;else{if(l){let O=l.get(x);if(O){if(!O.id){let A=l.idsToInsert||(l.idsToInsert=[]);O.id=A.push(O)}V[M++]=214,V[M++]=112,je.setUint32(M,O.id),M+=4;return}else l.set(x,{offset:M-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?V[M++]=144|P:P<65536?(V[M++]=220,V[M++]=P>>8,V[M++]=P&255):(V[M++]=221,je.setUint32(M,P),M+=4);for(let O=0;O<P;O++)S(x[O])}else if(I===Map){P=x.size,P<16?V[M++]=128|P:P<65536?(V[M++]=222,V[M++]=P>>8,V[M++]=P&255):(V[M++]=223,je.setUint32(M,P),M+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=Qs.length;O<A;O++){let G=lc[O];if(x instanceof G){let z=Qs[O];if(z.write){z.type&&(V[M++]=212,V[M++]=z.type,V[M++]=0),S(z.write.call(this,x));return}let $=V,te=je,K=M;V=null;let q;try{q=z.pack.call(this,x,k=>(V=$,$=null,M+=k,M>pr&&_(M),{target:V,targetView:je,position:M-k}),S)}finally{$&&(V=$,je=te,M=K,pr=V.length-10)}q&&(q.length+M>pr&&_(q.length+M),M=fx(q,V,M,z.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")V[M++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))V[M++]=211,je.setBigInt64(M,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)V[M++]=207,je.setBigUint64(M,x);else if(this.largeBigIntToFloat)V[M++]=203,je.setFloat64(M,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(C==="undefined")this.encodeUndefinedAsNil?V[M++]=192:(V[M++]=212,V[M++]=0,V[M++]=0);else if(C==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?V[M++]=128|P:P<65536?(V[M++]=222,V[M++]=P>>8,V[M++]=P&255):(V[M++]=223,je.setUint32(M,P),M+=4);let I;for(let O=0;O<P;O++)S(I=C[O]),S(x[I])}:(x,C)=>{V[M++]=222;let P=M-t;M+=2;let I=0;for(let O in x)(C||x.hasOwnProperty(O))&&(S(O),S(x[O]),I++);V[P+++t]=I>>8,V[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),O=0;for(let G=0,z=C.length;G<z;G++){let $=C[G];P=I[$],P||(P=I[$]=Object.create(null),O++),I=P}let A=I[Ai];if(A)A>=96&&h?(V[M++]=((A-=96)&31)+96,V[M++]=A>>5):V[M++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let G=C.highByte=A>=96&&h?A-96>>5:-1;I[Ai]=A,s[A-64]=C,A<y?(C.isShared=!0,s.sharedLength=A-63,i=!0,G>=0?(V[M++]=(A&31)+96,V[M++]=G):V[M++]=A):(G>=0?(V[M++]=213,V[M++]=114,V[M++]=(A&31)+96,V[M++]=G):(V[M++]=212,V[M++]=114,V[M++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[Ai]=0),v.push(I),S(C))}for(let G=0,z=C.length;G<z;G++)S(x[C[G]])},_=x=>{let C;if(x>16777216){if(x-t>Bu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(Bu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,V.length-1)>>12)+1<<12;let P=new ac(C);return je=new DataView(P.buffer,0,C),V.copy?V.copy(P,0,t,x):P.set(V.slice(t,x)),M-=t,t=0,pr=P.length-10,V=P}}useBuffer(r){V=r,je=new DataView(V.buffer,V.byteOffset,V.byteLength),M=0}};lc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Oi];Qs=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Du(n,16,r):Gu(Js?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Ru&&this.structuredClone?Du(n,sc.indexOf(e.name),r):Gu(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Du(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Gu(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function fx(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function mx(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function Xr(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");lc.unshift(n.Class),Qs.unshift(n)}Lu(n)}var Vu=new vo({useRecords:!1}),hx=Vu.pack,yx=Vu.pack;var{NEVER:gx,ALWAYS:xx,DECIMAL_ROUND:vx,DECIMAL_FIT:bx}=Ks,ju=512,Sx=1024;var Fu=new vo({structuredClone:!0});Xr({Class:Ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ce.prototype),n}});Xr({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Xr({Class:ze.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});Xr({Class:Ti.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ti(n)}});Xr({Class:Pi.prototype.constructor,type:5,write(n){return n.data},read(n){return new Pi(n)}});Xr({Class:Be.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});function wx(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function cc(n){if($o(n))return n;if(Array.isArray(n))return n.map(cc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=cc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var ea;(t=>{function n(o){return Fu.pack(o)}t.serialize=n;function r(o){return Fu.unpack(o)}t.deserialize=r;function e(o){return wx(n(cc(o))).toString()}t.checksum=e})(ea||(ea={}));var zu;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(zu||(zu={}));var Kr;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(Kr||(Kr={}));var Uu;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Uu||(Uu={}));var Zr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=t})(Zr||(Zr={}));var St;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(St||(St={}));var qt;(l=>{l.white={...St.white,a:1},l.transparent={...St.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...St.fromHex(c),a:u}}l.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}l.toRgb255a1=o;function i(c,u){return St.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(qt||(qt={}));var ta;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ta||(ta={}));var ku;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(ku||(ku={}));var Hu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Hu||(Hu={}));var $t;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})($t||($t={}));var bo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(bo||(bo={}));var mr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(_x.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;Tx.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;Px.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;Ox.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;Ax.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;Ix.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(mr||(mr={}));var ra;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(ra||(ra={}));var _x=["count"],Tx=["radius","start","end","position","scale","rotation"],Px=["position","scale","rotation"],Ox=["count","size"],Ax=["count","position","scale","rotation"],Ix=["strength","scale","rotation","position","movement","seed","freqScale"];var oa;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(oa||(oa={}));var na;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:qt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(na||(na={}));var dc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(dc||(dc={}));var uc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(uc||(uc={}));var ia;(r=>r.defaultData={...uc.defaultData,...dc.defaultData})(ia||(ia={}));var en;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(en||(en={}));var Wu;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="light"}r.is=n})(Wu||(Wu={}));var qu;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(qu||(qu={}));var $u=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Yu=["wrapping","image","video"],ft;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let u=i.texture;u&&Object.assign(u,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){switch(i){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,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 t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:en.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:St.fromHex(5526619)};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]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:qt.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:qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:qt.fromHexAndA(0,1),contourColor:qt.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}}}})(ft||(ft={}));var wt;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:ft.defaultData("light",u),id:a}),p.push({fi:1,data:ft.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=ft.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:ft.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=ft.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:ft.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(wt||(wt={}));var tn;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(tn||(tn={}));var rn;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(rn||(rn={}));var pc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var sa;(r=>{function n(e,t){let o={...e};return Cx.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(sa||(sa={}));var aa={shape:pc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},Cx=["depth","offset","angle","twist","startScale","endScale"];var Ii;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Ii||(Ii={}));var la;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,sa.merge(o.extrusion,t.extrusion))),o}r.merge=n})(la||(la={}));var Qr;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:rn.defaultData(),extrusion:aa};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:tn.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}r.defaultData=n})(Qr||(Qr={}));function Xu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Br(n,r){return Object.setPrototypeOf(n,r),n}function ca(n){return Array.isArray(n)?n:[n]}function Ku(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Nx=typeof global=="object"&&global&&global.Object===Object&&global,da=Nx;var Ex=typeof self=="object"&&self&&self.Object===Object&&self,Mx=da||Ex||Function("return this")(),Ue=Mx;var Lx=Ue.Symbol,Ke=Lx;var Zu=Object.prototype,Bx=Zu.hasOwnProperty,Dx=Zu.toString,Ci=Ke?Ke.toStringTag:void 0;function Gx(n){var r=Bx.call(n,Ci),e=n[Ci];try{n[Ci]=void 0;var t=!0}catch{}var o=Dx.call(n);return t&&(r?n[Ci]=e:delete n[Ci]),o}var Qu=Gx;var Rx=Object.prototype,Vx=Rx.toString;function jx(n){return Vx.call(n)}var Ju=jx;var Fx="[object Null]",zx="[object Undefined]",ep=Ke?Ke.toStringTag:void 0;function Ux(n){return n==null?n===void 0?zx:Fx:ep&&ep in Object(n)?Qu(n):Ju(n)}var Et=Ux;function kx(n){return n!=null&&typeof n=="object"}var ot=kx;var Hx="[object Symbol]";function Wx(n){return typeof n=="symbol"||ot(n)&&Et(n)==Hx}var on=Wx;function qx(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var ua=qx;var $x=Array.isArray,Ve=$x;var Yx=1/0,tp=Ke?Ke.prototype:void 0,rp=tp?tp.toString:void 0;function op(n){if(typeof n=="string")return n;if(Ve(n))return ua(n,op)+"";if(on(n))return rp?rp.call(n):"";var r=n+"";return r=="0"&&1/n==-Yx?"-0":r}var np=op;function Xx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=Xx;function Kx(n){return n}var ip=Kx;var Zx="[object AsyncFunction]",Qx="[object Function]",Jx="[object GeneratorFunction]",e0="[object Proxy]";function t0(n){if(!Mt(n))return!1;var r=Et(n);return r==Qx||r==Jx||r==Zx||r==e0}var pa=t0;var r0=Ue["__core-js_shared__"],fa=r0;var sp=function(){var n=/[^.]+$/.exec(fa&&fa.keys&&fa.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function o0(n){return!!sp&&sp in n}var ap=o0;var n0=Function.prototype,i0=n0.toString;function s0(n){if(n!=null){try{return i0.call(n)}catch{}try{return n+""}catch{}}return""}var Dr=s0;var a0=/[\\^$.*+?()[\]{}|]/g,l0=/^\[object .+?Constructor\]$/,c0=Function.prototype,d0=Object.prototype,u0=c0.toString,p0=d0.hasOwnProperty,f0=RegExp("^"+u0.call(p0).replace(a0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function m0(n){if(!Mt(n)||ap(n))return!1;var r=pa(n)?f0:l0;return r.test(Dr(n))}var lp=m0;function h0(n,r){return n?.[r]}var cp=h0;function y0(n,r){var e=cp(n,r);return lp(e)?e:void 0}var _t=y0;var g0=_t(Ue,"WeakMap"),ma=g0;var dp=Object.create,x0=function(){function n(){}return function(r){if(!Mt(r))return{};if(dp)return dp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),up=x0;function v0(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var pp=v0;function b0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var fp=b0;var S0=800,w0=16,_0=Date.now;function T0(n){var r=0,e=0;return function(){var t=_0(),o=w0-(t-e);if(e=t,o>0){if(++r>=S0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var mp=T0;function P0(n){return function(){return n}}var hp=P0;var O0=function(){try{var n=_t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),nn=O0;var A0=nn?function(n,r){return nn(n,"toString",{configurable:!0,enumerable:!1,value:hp(r),writable:!0})}:ip,yp=A0;var I0=mp(yp),gp=I0;function C0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var xp=C0;var N0=9007199254740991,E0=/^(?:0|[1-9]\d*)$/;function M0(n,r){var e=typeof n;return r=r??N0,!!r&&(e=="number"||e!="symbol"&&E0.test(n))&&n>-1&&n%1==0&&n<r}var sn=M0;function L0(n,r,e){r=="__proto__"&&nn?nn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ha=L0;function B0(n,r){return n===r||n!==n&&r!==r}var an=B0;var D0=Object.prototype,G0=D0.hasOwnProperty;function R0(n,r,e){var t=n[r];(!(G0.call(n,r)&&an(t,e))||e===void 0&&!(r in n))&&ha(n,r,e)}var ln=R0;function V0(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?ha(e,l,c):ln(e,l,c)}return e}var hr=V0;var vp=Math.max;function j0(n,r,e){return r=vp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=vp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),pp(n,this,l)}}var bp=j0;var F0=9007199254740991;function z0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=F0}var cn=z0;function U0(n){return n!=null&&cn(n.length)&&!pa(n)}var ya=U0;var k0=Object.prototype;function H0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||k0;return n===e}var dn=H0;function W0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Sp=W0;var q0="[object Arguments]";function $0(n){return ot(n)&&Et(n)==q0}var fc=$0;var wp=Object.prototype,Y0=wp.hasOwnProperty,X0=wp.propertyIsEnumerable,K0=fc(function(){return arguments}())?fc:function(n){return ot(n)&&Y0.call(n,"callee")&&!X0.call(n,"callee")},un=K0;function Z0(){return!1}var _p=Z0;var Op=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Tp=Op&&typeof module=="object"&&module&&!module.nodeType&&module,Q0=Tp&&Tp.exports===Op,Pp=Q0?Ue.Buffer:void 0,J0=Pp?Pp.isBuffer:void 0,ev=J0||_p,So=ev;var tv="[object Arguments]",rv="[object Array]",ov="[object Boolean]",nv="[object Date]",iv="[object Error]",sv="[object Function]",av="[object Map]",lv="[object Number]",cv="[object Object]",dv="[object RegExp]",uv="[object Set]",pv="[object String]",fv="[object WeakMap]",mv="[object ArrayBuffer]",hv="[object DataView]",yv="[object Float32Array]",gv="[object Float64Array]",xv="[object Int8Array]",vv="[object Int16Array]",bv="[object Int32Array]",Sv="[object Uint8Array]",wv="[object Uint8ClampedArray]",_v="[object Uint16Array]",Tv="[object Uint32Array]",Me={};Me[yv]=Me[gv]=Me[xv]=Me[vv]=Me[bv]=Me[Sv]=Me[wv]=Me[_v]=Me[Tv]=!0;Me[tv]=Me[rv]=Me[mv]=Me[ov]=Me[hv]=Me[nv]=Me[iv]=Me[sv]=Me[av]=Me[lv]=Me[cv]=Me[dv]=Me[uv]=Me[pv]=Me[fv]=!1;function Pv(n){return ot(n)&&cn(n.length)&&!!Me[Et(n)]}var Ap=Pv;function Ov(n){return function(r){return n(r)}}var pn=Ov;var Ip=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ni=Ip&&typeof module=="object"&&module&&!module.nodeType&&module,Av=Ni&&Ni.exports===Ip,mc=Av&&da.process,Iv=function(){try{var n=Ni&&Ni.require&&Ni.require("util").types;return n||mc&&mc.binding&&mc.binding("util")}catch{}}(),Gr=Iv;var Cp=Gr&&Gr.isTypedArray,Cv=Cp?pn(Cp):Ap,ga=Cv;var Nv=Object.prototype,Ev=Nv.hasOwnProperty;function Mv(n,r){var e=Ve(n),t=!e&&un(n),o=!e&&!t&&So(n),i=!e&&!t&&!o&&ga(n),s=e||t||o||i,l=s?Sp(n.length,String):[],c=l.length;for(var u in n)(r||Ev.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||sn(u,c)))&&l.push(u);return l}var xa=Mv;function Lv(n,r){return function(e){return n(r(e))}}var va=Lv;var Bv=va(Object.keys,Object),Np=Bv;var Dv=Object.prototype,Gv=Dv.hasOwnProperty;function Rv(n){if(!dn(n))return Np(n);var r=[];for(var e in Object(n))Gv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Ep=Rv;function Vv(n){return ya(n)?xa(n):Ep(n)}var fn=Vv;function jv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Mp=jv;var Fv=Object.prototype,zv=Fv.hasOwnProperty;function Uv(n){if(!Mt(n))return Mp(n);var r=dn(n),e=[];for(var t in n)t=="constructor"&&(r||!zv.call(n,t))||e.push(t);return e}var Lp=Uv;function kv(n){return ya(n)?xa(n,!0):Lp(n)}var mn=kv;var Hv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wv=/^\w*$/;function qv(n,r){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||on(n)?!0:Wv.test(n)||!Hv.test(n)||r!=null&&n in Object(r)}var Bp=qv;var $v=_t(Object,"create"),Rr=$v;function Yv(){this.__data__=Rr?Rr(null):{},this.size=0}var Dp=Yv;function Xv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Gp=Xv;var Kv="__lodash_hash_undefined__",Zv=Object.prototype,Qv=Zv.hasOwnProperty;function Jv(n){var r=this.__data__;if(Rr){var e=r[n];return e===Kv?void 0:e}return Qv.call(r,n)?r[n]:void 0}var Rp=Jv;var eb=Object.prototype,tb=eb.hasOwnProperty;function rb(n){var r=this.__data__;return Rr?r[n]!==void 0:tb.call(r,n)}var Vp=rb;var ob="__lodash_hash_undefined__";function nb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Rr&&r===void 0?ob:r,this}var jp=nb;function hn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}hn.prototype.clear=Dp;hn.prototype.delete=Gp;hn.prototype.get=Rp;hn.prototype.has=Vp;hn.prototype.set=jp;var hc=hn;function ib(){this.__data__=[],this.size=0}var Fp=ib;function sb(n,r){for(var e=n.length;e--;)if(an(n[e][0],r))return e;return-1}var Jr=sb;var ab=Array.prototype,lb=ab.splice;function cb(n){var r=this.__data__,e=Jr(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():lb.call(r,e,1),--this.size,!0}var zp=cb;function db(n){var r=this.__data__,e=Jr(r,n);return e<0?void 0:r[e][1]}var Up=db;function ub(n){return Jr(this.__data__,n)>-1}var kp=ub;function pb(n,r){var e=this.__data__,t=Jr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Hp=pb;function yn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}yn.prototype.clear=Fp;yn.prototype.delete=zp;yn.prototype.get=Up;yn.prototype.has=kp;yn.prototype.set=Hp;var eo=yn;var fb=_t(Ue,"Map"),to=fb;function mb(){this.size=0,this.__data__={hash:new hc,map:new(to||eo),string:new hc}}var Wp=mb;function hb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var qp=hb;function yb(n,r){var e=n.__data__;return qp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ro=yb;function gb(n){var r=ro(this,n).delete(n);return this.size-=r?1:0,r}var $p=gb;function xb(n){return ro(this,n).get(n)}var Yp=xb;function vb(n){return ro(this,n).has(n)}var Xp=vb;function bb(n,r){var e=ro(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Kp=bb;function gn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}gn.prototype.clear=Wp;gn.prototype.delete=$p;gn.prototype.get=Yp;gn.prototype.has=Xp;gn.prototype.set=Kp;var wo=gn;var Sb="Expected a function";function yc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Sb);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(yc.Cache||wo),e}yc.Cache=wo;var Zp=yc;var wb=500;function _b(n){var r=Zp(n,function(t){return e.size===wb&&e.clear(),t}),e=r.cache;return r}var Qp=_b;var Tb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Pb=/\\(\\)?/g,Ob=Qp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Tb,function(e,t,o,i){r.push(o?i.replace(Pb,"$1"):t||e)}),r}),Jp=Ob;function Ab(n){return n==null?"":np(n)}var ef=Ab;function Ib(n,r){return Ve(n)?n:Bp(n,r)?[n]:Jp(ef(n))}var jt=Ib;var Cb=1/0;function Nb(n){if(typeof n=="string"||on(n))return n;var r=n+"";return r=="0"&&1/n==-Cb?"-0":r}var oo=Nb;function Eb(n,r){r=jt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[oo(r[e++])];return e&&e==t?n:void 0}var ba=Eb;function Mb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var xn=Mb;var tf=Ke?Ke.isConcatSpreadable:void 0;function Lb(n){return Ve(n)||un(n)||!!(tf&&n&&n[tf])}var rf=Lb;function of(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=rf),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?of(l,r-1,e,t,o):xn(o,l):t||(o[o.length]=l)}return o}var nf=of;function Bb(n){var r=n==null?0:n.length;return r?nf(n,1):[]}var sf=Bb;function Db(n){return gp(bp(n,void 0,sf),n+"")}var Sa=Db;var Gb=va(Object.getPrototypeOf,Object),vn=Gb;var Rb="[object Object]",Vb=Function.prototype,jb=Object.prototype,af=Vb.toString,Fb=jb.hasOwnProperty,zb=af.call(Object);function Ub(n){if(!ot(n)||Et(n)!=Rb)return!1;var r=vn(n);if(r===null)return!0;var e=Fb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&af.call(e)==zb}var lf=Ub;function kb(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var cf=kb;function Hb(){this.__data__=new eo,this.size=0}var df=Hb;function Wb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var uf=Wb;function qb(n){return this.__data__.get(n)}var pf=qb;function $b(n){return this.__data__.has(n)}var ff=$b;var Yb=200;function Xb(n,r){var e=this.__data__;if(e instanceof eo){var t=e.__data__;if(!to||t.length<Yb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new wo(t)}return e.set(n,r),this.size=e.size,this}var mf=Xb;function bn(n){var r=this.__data__=new eo(n);this.size=r.size}bn.prototype.clear=df;bn.prototype.delete=uf;bn.prototype.get=pf;bn.prototype.has=ff;bn.prototype.set=mf;var Sn=bn;function Kb(n,r){return n&&hr(r,fn(r),n)}var hf=Kb;function Zb(n,r){return n&&hr(r,mn(r),n)}var yf=Zb;var bf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gf=bf&&typeof module=="object"&&module&&!module.nodeType&&module,Qb=gf&&gf.exports===bf,xf=Qb?Ue.Buffer:void 0,vf=xf?xf.allocUnsafe:void 0;function Jb(n,r){if(r)return n.slice();var e=n.length,t=vf?vf(e):new n.constructor(e);return n.copy(t),t}var Sf=Jb;function eS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var wf=eS;function tS(){return[]}var wa=tS;var rS=Object.prototype,oS=rS.propertyIsEnumerable,_f=Object.getOwnPropertySymbols,nS=_f?function(n){return n==null?[]:(n=Object(n),wf(_f(n),function(r){return oS.call(n,r)}))}:wa,wn=nS;function iS(n,r){return hr(n,wn(n),r)}var Tf=iS;var sS=Object.getOwnPropertySymbols,aS=sS?function(n){for(var r=[];n;)xn(r,wn(n)),n=vn(n);return r}:wa,_a=aS;function lS(n,r){return hr(n,_a(n),r)}var Pf=lS;function cS(n,r,e){var t=r(n);return Ve(n)?t:xn(t,e(n))}var Ta=cS;function dS(n){return Ta(n,fn,wn)}var Ei=dS;function uS(n){return Ta(n,mn,_a)}var Pa=uS;var pS=_t(Ue,"DataView"),Oa=pS;var fS=_t(Ue,"Promise"),Aa=fS;var mS=_t(Ue,"Set"),Ia=mS;var Of="[object Map]",hS="[object Object]",Af="[object Promise]",If="[object Set]",Cf="[object WeakMap]",Nf="[object DataView]",yS=Dr(Oa),gS=Dr(to),xS=Dr(Aa),vS=Dr(Ia),bS=Dr(ma),_o=Et;(Oa&&_o(new Oa(new ArrayBuffer(1)))!=Nf||to&&_o(new to)!=Of||Aa&&_o(Aa.resolve())!=Af||Ia&&_o(new Ia)!=If||ma&&_o(new ma)!=Cf)&&(_o=function(n){var r=Et(n),e=r==hS?n.constructor:void 0,t=e?Dr(e):"";if(t)switch(t){case yS:return Nf;case gS:return Of;case xS:return Af;case vS:return If;case bS:return Cf}return r});var Vr=_o;var SS=Object.prototype,wS=SS.hasOwnProperty;function _S(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&wS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Ef=_S;var TS=Ue.Uint8Array,_n=TS;function PS(n){var r=new n.constructor(n.byteLength);return new _n(r).set(new _n(n)),r}var Tn=PS;function OS(n,r){var e=r?Tn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Mf=OS;var AS=/\w*$/;function IS(n){var r=new n.constructor(n.source,AS.exec(n));return r.lastIndex=n.lastIndex,r}var Lf=IS;var Bf=Ke?Ke.prototype:void 0,Df=Bf?Bf.valueOf:void 0;function CS(n){return Df?Object(Df.call(n)):{}}var Gf=CS;function NS(n,r){var e=r?Tn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Rf=NS;var ES="[object Boolean]",MS="[object Date]",LS="[object Map]",BS="[object Number]",DS="[object RegExp]",GS="[object Set]",RS="[object String]",VS="[object Symbol]",jS="[object ArrayBuffer]",FS="[object DataView]",zS="[object Float32Array]",US="[object Float64Array]",kS="[object Int8Array]",HS="[object Int16Array]",WS="[object Int32Array]",qS="[object Uint8Array]",$S="[object Uint8ClampedArray]",YS="[object Uint16Array]",XS="[object Uint32Array]";function KS(n,r,e){var t=n.constructor;switch(r){case jS:return Tn(n);case ES:case MS:return new t(+n);case FS:return Mf(n,e);case zS:case US:case kS:case HS:case WS:case qS:case $S:case YS:case XS:return Rf(n,e);case LS:return new t;case BS:case RS:return new t(n);case DS:return Lf(n);case GS:return new t;case VS:return Gf(n)}}var Vf=KS;function ZS(n){return typeof n.constructor=="function"&&!dn(n)?up(vn(n)):{}}var jf=ZS;var QS="[object Map]";function JS(n){return ot(n)&&Vr(n)==QS}var Ff=JS;var zf=Gr&&Gr.isMap,e1=zf?pn(zf):Ff,Uf=e1;var t1="[object Set]";function r1(n){return ot(n)&&Vr(n)==t1}var kf=r1;var Hf=Gr&&Gr.isSet,o1=Hf?pn(Hf):kf,Wf=o1;var n1=1,i1=2,s1=4,qf="[object Arguments]",a1="[object Array]",l1="[object Boolean]",c1="[object Date]",d1="[object Error]",$f="[object Function]",u1="[object GeneratorFunction]",p1="[object Map]",f1="[object Number]",Yf="[object Object]",m1="[object RegExp]",h1="[object Set]",y1="[object String]",g1="[object Symbol]",x1="[object WeakMap]",v1="[object ArrayBuffer]",b1="[object DataView]",S1="[object Float32Array]",w1="[object Float64Array]",_1="[object Int8Array]",T1="[object Int16Array]",P1="[object Int32Array]",O1="[object Uint8Array]",A1="[object Uint8ClampedArray]",I1="[object Uint16Array]",C1="[object Uint32Array]",Ee={};Ee[qf]=Ee[a1]=Ee[v1]=Ee[b1]=Ee[l1]=Ee[c1]=Ee[S1]=Ee[w1]=Ee[_1]=Ee[T1]=Ee[P1]=Ee[p1]=Ee[f1]=Ee[Yf]=Ee[m1]=Ee[h1]=Ee[y1]=Ee[g1]=Ee[O1]=Ee[A1]=Ee[I1]=Ee[C1]=!0;Ee[d1]=Ee[$f]=Ee[x1]=!1;function Ca(n,r,e,t,o,i){var s,l=r&n1,c=r&i1,u=r&s1;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Mt(n))return n;var a=Ve(n);if(a){if(s=Ef(n),!l)return fp(n,s)}else{var d=Vr(n),p=d==$f||d==u1;if(So(n))return Sf(n,l);if(d==Yf||d==qf||p&&!o){if(s=c||p?{}:jf(n),!l)return c?Pf(n,yf(s,n)):Tf(n,hf(s,n))}else{if(!Ee[d])return o?n:{};s=Vf(n,d,l)}}i||(i=new Sn);var f=i.get(n);if(f)return f;i.set(n,s),Wf(n)?n.forEach(function(y){s.add(Ca(y,r,e,y,n,i))}):Uf(n)&&n.forEach(function(y,g){s.set(g,Ca(y,r,e,g,n,i))});var m=u?c?Pa:Ei:c?mn:fn,h=a?void 0:m(n);return xp(h||n,function(y,g){h&&(g=y,y=n[g]),ln(s,g,Ca(y,r,e,g,n,i))}),s}var Na=Ca;var N1=1,E1=4;function M1(n){return Na(n,N1|E1)}var jr=M1;var L1="__lodash_hash_undefined__";function B1(n){return this.__data__.set(n,L1),this}var Xf=B1;function D1(n){return this.__data__.has(n)}var Kf=D1;function Ea(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new wo;++r<e;)this.add(n[r])}Ea.prototype.add=Ea.prototype.push=Xf;Ea.prototype.has=Kf;var Zf=Ea;function G1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Qf=G1;function R1(n,r){return n.has(r)}var Jf=R1;var V1=1,j1=2;function F1(n,r,e,t,o,i){var s=e&V1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var u=i.get(n),a=i.get(r);if(u&&a)return u==r&&a==n;var d=-1,p=!0,f=e&j1?new Zf:void 0;for(i.set(n,r),i.set(r,n);++d<l;){var m=n[d],h=r[d];if(t)var y=s?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!Qf(r,function(g,v){if(!Jf(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var Ma=F1;function z1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var em=z1;function U1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var tm=U1;var k1=1,H1=2,W1="[object Boolean]",q1="[object Date]",$1="[object Error]",Y1="[object Map]",X1="[object Number]",K1="[object RegExp]",Z1="[object Set]",Q1="[object String]",J1="[object Symbol]",ew="[object ArrayBuffer]",tw="[object DataView]",rm=Ke?Ke.prototype:void 0,gc=rm?rm.valueOf:void 0;function rw(n,r,e,t,o,i,s){switch(e){case tw:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case ew:return!(n.byteLength!=r.byteLength||!i(new _n(n),new _n(r)));case W1:case q1:case X1:return an(+n,+r);case $1:return n.name==r.name&&n.message==r.message;case K1:case Q1:return n==r+"";case Y1:var l=em;case Z1:var c=t&k1;if(l||(l=tm),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=H1,s.set(n,r);var a=Ma(l(n),l(r),t,o,i,s);return s.delete(n),a;case J1:if(gc)return gc.call(n)==gc.call(r)}return!1}var om=rw;var ow=1,nw=Object.prototype,iw=nw.hasOwnProperty;function sw(n,r,e,t,o,i){var s=e&ow,l=Ei(n),c=l.length,u=Ei(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:iw.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var b=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(b===void 0?g===v||o(g,v,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var nm=sw;var aw=1,im="[object Arguments]",sm="[object Array]",La="[object Object]",lw=Object.prototype,am=lw.hasOwnProperty;function cw(n,r,e,t,o,i){var s=Ve(n),l=Ve(r),c=s?sm:Vr(n),u=l?sm:Vr(r);c=c==im?La:c,u=u==im?La:u;var a=c==La,d=u==La,p=c==u;if(p&&So(n)){if(!So(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new Sn),s||ga(n)?Ma(n,r,e,t,o,i):om(n,r,c,e,t,o,i);if(!(e&aw)){var f=a&&am.call(n,"__wrapped__"),m=d&&am.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Sn),o(h,y,e,t,i)}}return p?(i||(i=new Sn),nm(n,r,e,t,o,i)):!1}var lm=cw;function cm(n,r,e,t,o){return n===r?!0:n==null||r==null||!ot(n)&&!ot(r)?n!==n&&r!==r:lm(n,r,e,t,cm,o)}var dm=cm;function dw(n,r){return n!=null&&r in Object(n)}var um=dw;function uw(n,r,e){r=jt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=oo(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&cn(o)&&sn(s,o)&&(Ve(n)||un(n)))}var pm=uw;function pw(n,r){return n!=null&&pm(n,r,um)}var fm=pw;function fw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var mm=fw;function mw(n,r){return r.length<2?n:ba(n,cf(r,0,-1))}var hm=mw;function hw(n,r){return dm(n,r)}var Mi=hw;function yw(n,r){return r=jt(r,n),n=hm(n,r),n==null||delete n[oo(mm(r))]}var ym=yw;function gw(n){return lf(n)?void 0:n}var gm=gw;var xw=1,vw=2,bw=4,Sw=Sa(function(n,r){var e={};if(n==null)return e;var t=!1;r=ua(r,function(i){return i=jt(i,n),t||(t=i.length>1),i}),hr(n,Pa(n),e),t&&(e=Na(e,xw|vw|bw,gm));for(var o=r.length;o--;)ym(e,r[o]);return e}),Pn=Sw;function ww(n,r,e,t){if(!Mt(n))return n;r=jt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=oo(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Mt(a)?a:sn(r[o+1])?[]:{})}ln(l,c,u),l=l[c]}return n}var xm=ww;function _w(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=ba(n,s);e(l,s)&&xm(i,jt(s,n),l)}return i}var vm=_w;function Tw(n,r){return vm(n,r,function(e,t){return fm(n,t)})}var bm=Tw;var Pw=Sa(function(n,r){return n==null?{}:bm(n,r)}),On=Pw;var Sm;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Sm||(Sm={}));var An;(o=>{o.identity={...ta.identity,hiddenMatrix:Zr.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return Xu({position:Kr.isEqual(i.position,s.position)?void 0:s.position,rotation:Kr.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:Kr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Zr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(An||(An={}));var wm;(r=>r.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(wm||(wm={}));var Lt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...An.identity,cloner:null})(Lt||(Lt={}));var _m;(r=>r.defaultData={type:"Empty",...Lt.defaultData})(_m||(_m={}));var Tm;(r=>r.defaultData={type:"Component",...Lt.defaultData})(Tm||(Tm={}));var To;(r=>r.defaultData={type:"Mesh",...Lt.defaultData,...ia.defaultData})(To||(To={}));var In;(r=>r.defaultData={...Lt.defaultData,...An.identity,...bo.defaultData})(In||(In={}));var Pm;(r=>{function n(e){return{...Lt.defaultData,...na.defaultData(e)}}r.defaultData=n})(Pm||(Pm={}));var Cn;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(Cn||(Cn={}));var no;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Lt.defaultData,...l,component:s,overrides:new Be,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=An.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(no||(no={}));var Om;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Zr.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...bo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("RectangleGeometry"),material:wt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("BooleanGeometry"),material:wt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("TextGeometry"),material:wt.defaultTwoLayerData("phong","layer1","layer2")}))(Om||(Om={}));var Po;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Be}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Be})))):$t.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=Qo(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&ft.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=Qo(l.materials,c=>{for(let u=0;u<l.materials.length;u++){let a=s.materials[u];if(typeof a!="string")for(let[d,p]of Object.entries(a.layers)){let f=c[u]?.layers?.data(d);f&&ft.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],u={orthographic:0,perspective:0,geometry:0};function a(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...ra.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,An.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),$t.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:la.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:mr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:mr.merge(l.cloner,s.cloner)});else if(oa.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=St.clone(c.color))}return l}o.patch=t})(Po||(Po={}));var Nn;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(Nn||(Nn={}));var Ba;(r=>r.defaultData={orbitControls:Nn.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(Ba||(Ba={}));var En;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(En||(En={}));var Da;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Br(o,Ce.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...En.emptyImage,name:"AI generated image"}),Br(i,Ce.prototype)}t.defaultImages=r;function e(){return{materials:new Ce,images:new Ce,videos:new Ce,colors:new Ce,audios:new Ce,fonts:new Ce,penumbraSize:[2,2,2]}}t.emptyData=e})(Da||(Da={}));import{MathUtils as Ga}from"three";function Am(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...On(Ye(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ye(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ra(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Va(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function Ow(n){Object.assign(n.scene.publish,{orbitControls:{...Nn.defaultData,...Ye(n.scene.publish.orbitControls)}})}function Aw(n){Object.assign(n.scene.publish.settings,{video:{...Ba.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function Iw(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if(($u.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Yu.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function Cw(n){n.scene.publish.withBackground=!0}function Nw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Ew(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function Mw(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function Lw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ye(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function Bw(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function Dw(n){function r(t){Object.setPrototypeOf(t,Be.prototype),t.texture&&Object.setPrototypeOf(t.texture,Be.prototype)}function e(t){Object.setPrototypeOf(t,Be.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=Ye(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],u=Ye(c).layers;e(u),c.layers=u}})})}function Im(n){n.layers===void 0&&Object.assign(n,wt.defaultTwoLayerData("lambert"))}function xc(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...Ye(r),colors:e,steps:t};Object.assign(r,o)}})}function Gw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Cm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&xc(t)}):"material"in e&&typeof e.material!="string"&&xc(e.material)}),Object.values(n.shared.materials).forEach(r=>xc(r))}function Rw(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function Vw(n){n.shared.audios=Br({},Ce.prototype)}function jw(n){n.shared.videos=Br({},Ce.prototype)}function Fw(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function zw(n){Object.entries(Ye(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ye(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Uw(n){n.scene.publish.settings.web.preload=!1}function Nm(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function kw(n){n.shared.fonts=Br({},Ce.prototype)}function Hw(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function Ww(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=wt.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=Hw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Lt.defaultData,...To.defaultData,flatShading:!1,wireframe:!1,geometry:{...Qr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ye(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function qw(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Ga.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,On(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Ga.generateUUID(),data:u},{fi:1,id:Ga.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function $w(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...On(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...On(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:Ga.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Em(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=ft.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Mm(n){Ra(n,Em),Va(n,Em)}function Yw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function Xw(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function Kw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=wt.defaultTwoLayerData("phong"))})}function Zw(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function Qw(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function Jw(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function e_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function t_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function r_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var Lm=37;function Bm(n){let r=n.schema??0;r!==Lm&&(console.warn("updating from ",r,"to ",Lm),r<1&&(Va(n,Am),Ra(n,Am),n.schema=1),r<2&&(Ow(n),n.schema=2),r<3&&(Iw(n),n.schema=3),r<4&&(Cw(n),n.schema=4),r<5&&(Nw(n),n.schema=5),r<6&&(Ew(n),n.schema=6),r<7&&(Mw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Cm(n),n.schema=9),r<10&&(Gw(n),n.schema=10),r<11&&(Rw(n),n.schema=11),r<12&&(Cm(n),n.schema=12),r<13&&(Vw(n),n.schema=13),r<14&&(Fw(n),n.schema=14),r<15&&(zw(n),n.schema=15),r<16&&(Uw(n),n.schema=16),r<17&&(Va(n,Nm),Ra(n,Nm),n.schema=17),r<18&&(Va(n,Im),Ra(n,Im),n.schema=18),r<19&&(Aw(n),n.schema=19),r<20&&(kw(n),Ww(n),n.schema=20),r<21&&(qw(n),$w(n),n.schema=21),r<22&&(Mm(n),n.schema=22),r<23&&(Yw(n),n.schema=23),r<24&&(Xw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(jw(n),r<25&&(n.schema=25)),r<26&&(Lw(n),n.schema=26),r<27&&(Bw(n),n.schema=27),r<28&&(Mm(n),n.schema=28),r<29&&(Dw(n),n.schema=29),r<30&&(Kw(n),n.schema=30),r<31&&(Zw(n),n.schema=31),r<33&&(Qw(n),n.schema=33),r<34&&(Jw(n),n.schema=34),r<35&&(e_(n),n.schema=35),r<36&&(t_(n),n.schema=36),r<37&&(r_(n),n.schema=37))}var ui=Gs(Gm());import{Object3D as TO,Vector3 as Gt,Euler as Xd,MathUtils as Xy,Matrix4 as ko}from"three";var o_=.5*(Math.sqrt(3)-1),Di=(3-Math.sqrt(3))/6,n_=1/3,yr=1/6,aR=(Math.sqrt(5)-1)/4,lR=(5-Math.sqrt(5))/20,Gi=n=>Math.floor(n)|0,Rm=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),bc=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function ja(n=Math.random){let r=jm(n),e=new Float64Array(r).map(o=>Rm[o%12*2]),t=new Float64Array(r).map(o=>Rm[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*o_,d=Gi(i+a),p=Gi(s+a),f=(d+p)*Di,m=d-f,h=p-f,y=i-m,g=s-h,v,b;y>g?(v=1,b=0):(v=0,b=1);let w=y-v+Di,S=g-b+Di,T=y-1+2*Di,_=g-1+2*Di,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[C],G=e[A],z=t[A];P*=P,l=P*P*(G*y+z*g)}let I=.5-w*w-S*S;if(I>=0){let A=x+v+r[C+b],G=e[A],z=t[A];I*=I,c=I*I*(G*w+z*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[C+1],G=e[A],z=t[A];O*=O,u=O*O*(G*T+z*_)}return 70*(l+c+u)}}function Vm(n=Math.random){let r=jm(n),e=new Float64Array(r).map(i=>bc[i%12*3]),t=new Float64Array(r).map(i=>bc[i%12*3+1]),o=new Float64Array(r).map(i=>bc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*n_,m=Gi(s+f),h=Gi(l+f),y=Gi(c+f),g=(m+h+y)*yr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,C,P,I,O,A;S>=T?T>=_?(x=1,C=0,P=0,I=1,O=1,A=0):S>=_?(x=1,C=0,P=0,I=1,O=0,A=1):(x=0,C=0,P=1,I=1,O=0,A=1):T<_?(x=0,C=0,P=1,I=0,O=1,A=1):S<_?(x=0,C=1,P=0,I=0,O=1,A=1):(x=0,C=1,P=0,I=1,O=1,A=0);let G=S-x+yr,z=T-C+yr,$=_-P+yr,te=S-I+2*yr,K=T-O+2*yr,q=_-A+2*yr,k=S-1+3*yr,R=T-1+3*yr,D=_-1+3*yr,B=m&255,L=h&255,F=y&255,W=.6-S*S-T*T-_*_;if(W<0)u=0;else{let E=B+r[L+r[F]];W*=W,u=W*W*(e[E]*S+t[E]*T+o[E]*_)}let H=.6-G*G-z*z-$*$;if(H<0)a=0;else{let E=B+x+r[L+C+r[F+P]];H*=H,a=H*H*(e[E]*G+t[E]*z+o[E]*$)}let j=.6-te*te-K*K-q*q;if(j<0)d=0;else{let E=B+I+r[L+O+r[F+A]];j*=j,d=j*j*(e[E]*te+t[E]*K+o[E]*q)}let U=.6-k*k-R*R-D*D;if(U<0)p=0;else{let E=B+1+r[L+1+r[F+1]];U*=U,p=U*U*(e[E]*k+t[E]*R+o[E]*D)}return 32*(u+a+d+p)}}function jm(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as i_}from"three";var Xt=new i_,Fa=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Xt.a.fromBufferAttribute(r,o),Xt.b.fromBufferAttribute(r,o+1),Xt.c.fromBufferAttribute(r,o+2),i*=Xt.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Xt.a.fromBufferAttribute(this.positionAttribute,r*3),Xt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Xt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Xt.a,o).addScaledVector(Xt.b,i).addScaledVector(Xt.c,1-(o+i)),Xt.getNormal(t),this}};import{Object3D as d_}from"three";var Um=Gs(zm());import{Object3D as s_,Matrix4 as Fr}from"three";var a_=new Fr,l_=new Fr,c_=new Fr,Ri;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ri||(Ri={}));var Mn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Fr;this.matrixWorldRigid=new Fr;this.shearScale=new Fr;this.shearScaleInv=new Fr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof s_&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ri.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:l}=(0,Um.SVD)(o),c=a_.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=l_.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=c_.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Fr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Fr?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}};var Sc=class extends Mn(d_){},u_=n=>n.type==="Mesh",zr=class extends Sc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new zr(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return u_(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};import{Box3 as QT,BufferGeometry as JT,MeshBasicMaterial as eP}from"three";import{Matrix4 as KT,Mesh as ZT}from"three";import{Matrix4 as ka,Vector3 as g_,Euler as x_}from"three";import{Box3 as p_,Line3 as f_,Matrix4 as wc,Vector3 as Bt}from"three";var Oo=new Bt,Ao=new Bt,Ln=new wc,Hm=[new Bt(-1,1,1),new Bt(-1,-1,1),new Bt(1,-1,1),new Bt(1,1,1),new Bt(-1,1,-1),new Bt(-1,-1,-1),new Bt(1,-1,-1),new Bt(1,1,-1)],m_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],h_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],km=(n,r,e)=>{n.updateEntityBoxSize(Oo,Ao),Ln.copy(r).multiply(n.matrixWorld),Ao.x===0&&Ao.y===0&&Ao.z===0?e.push(new Bt(Oo.x,Oo.y,Oo.z).applyMatrix4(Ln)):Hm.forEach(t=>{e.push(t.clone().multiply(Ao).add(Oo).applyMatrix4(Ln))})},Vi=class extends p_{constructor(){super(...arguments);this.matrix=new wc;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new wc().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Bt);return}km(s,t,i)}}):km(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Ln.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Ao).multiplyScalar(.5),this.getCenter(Oo),Ln.copy(this.matrix).setPosition(Oo),this.vertices=Hm.map(e=>e.clone().multiply(Ao).applyMatrix4(Ln))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=m_.map(([e,t])=>new f_(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Bt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=h_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Kt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as y_,CubicBezierCurve3 as _c,Vector3 as Zt}from"three";var Pc=class extends y_{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Oc=.001;function Ac(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Oc}function Tc(n,r){let e=new Zt(...n.position),t=new Zt(...n.controlNext.position),o=new Zt(...r.controlPrevious.position),i=new Zt(...r.position);return Ac(e,t,i)&&Ac(e,o,i)}function Ua(n){let r=n.points.map(a=>new Zt(...a.data.position)),e=[n.points[0]],t=new Zt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Ac(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new Zt(...d.position),f=new Zt(...d.controlPrevious.position),m=new Zt(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,b=e[g].data,w=new Zt(...v.position),S=new Zt(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=Tc(v,d),C=Tc(d,b);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!Tc(e[d].data,e[p].data))f.position.distanceTo(m.position)>Oc&&(h=new _c(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Oc&&(h=new _c(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),v=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),x=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new _c(f,x,C,m)}let u=new Pc;return c.forEach(a=>{a&&u.add(a)}),u}var Ie;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ie||(Ie={}));var ji=n=>Ie.is(n),v_={type:"completeState",isfromEntity:!0},Ha=n=>class extends Mn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Vi;this._recursiveBBox=new Vi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Ie.is(o))return o}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Ie.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let s of this.data.states)Po.toOps(this.data,s.data).forEach(c=>{let u=Fs.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=Po.patch(this.data,s),Po.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{ji(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Ie.is(o[i]))return o[i];if(Ie.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ie.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)ji(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ie.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)ji(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)ji(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>ji(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Pn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Zr.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ie.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ie.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Pn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Wt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ut.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=ut.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,Po.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Wt(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(Mr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=ut.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=Cn.resolve(o.overrides,a),p.updateByOp(t,rt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of no.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of no.rootOverrideProps)if(Wt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,a);p&&d.updateByOp(p,rt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=rt.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!$t.is(t.props.type)&&Kt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Kt.changeEntityProptotype(this,o,i);for(let s of this.children)Ie.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Wt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Wt(t.path,["cloner"])!==null){let s=rt.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,l=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,a=Ua(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=a.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new ka;c.updateMatrixWorld();let m=new ka().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(l==="tangential"){let y=new ka().extractRotation(c.matrixWorld),g=a.getTangentAt(d).applyMatrix4(y).add(p),v=new ka().lookAt(p,g,new g_(0,1,0)),b=new x_().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(v_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Kt.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Kt.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};import{ConeGeometry as w_}from"three";import{BufferGeometry as b_,CylinderGeometry as S_,Float32BufferAttribute as Ic,Vector2 as Qt,Vector3 as Wa}from"three";var qm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:u,radiusBottom:a,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new Fi(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new S_(u,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function io(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Wm(n){return new Qt(n.y,-n.x)}var Fi=class extends b_{constructor(r,e,t,o,i,s,l,c,u,a,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],y=[],g=[],v=0,b=t/2,w=new Wa,S=new Wa;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new Qt(r,b),_=new Qt(e,-b),x=null,C=null,P=null,I=null,O=T.clone().sub(_),A=0,G=0,z=0;p>0&&(A=Math.min(r,e)*(1-p),G=r-A,z=e-A);let $=T.clone();$.x-=A;let te=Math.PI-O.angle(),K=O.angle(),q=Math.tan(K/2),k=Math.tan(te/2),R=q+k,D=p?R:k,B=p?R:q;if(u=Math.min(u,(r-G)/D,O.length()/R),a=Math.min(a,(e-z)/B,O.length()/R),u>0){let U=u/q;x=T.clone().sub(new Qt(U,u)),p&&(P=x.clone(),P.x-=A-R*u),T.sub(O.clone().setLength(U))}if(a>0){let U=a/k;C=_.clone().sub(new Qt(U,-a)),_.add(O.clone().setLength(U)),p&&(I=C.clone(),I.x-=A-R*a,$.sub(O.clone().setLength(U)))}O=T.clone().sub(_);let L=O.length()<.5,F=[];for(let U=0;U<=o;U++){let E=[],oe=U/o,Y=oe*c+l,re=new Qt(Math.sin(Y),Math.cos(Y));I&&C?(W(E,oe,re,te,a,I,-1,!0),W(E,oe,re,K,a,C,-1,!1)):C?(H(E,re,C.x,0,-1),W(E,oe,re,K,a,C,-1,!1)):s||H(E,re,e,z,-1);let X=Wm(O).normalize();if(io(X,re,w),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,ie=O.clone().multiplyScalar(Z).add(_);io(ie,re,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(oe,.5+S.y/t),E.push(v++)}if(P&&x?(W(E,oe,re,te,u,x,1,!1),W(E,oe,re,K,u,P,1,!0)):x?(W(E,oe,re,te,u,x,1,!1),H(E,re,x.x,0,1)):s||H(E,re,r,G,1),p&&!L){let ee=Wm(O).multiplyScalar(-1).normalize();io(ee,re,w);for(let Z=0;Z<=i;Z++){let ie=Z/i,ce=O.clone().multiplyScalar(-ie).add($);io(ce,re,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(oe,.5+S.y/t),E.push(v++)}}p&&!s&&E.push(E[0]),F.push(E)}for(let U=0;U<F.length-1;U++)for(let E=0;E<F[0].length-1;E++){if(s&&p&&E==i)continue;let oe=F[U][E],Y=F[U+1][E],re=F[U+1][E+1],X=F[U][E+1],ee=h[re*3+0],Z=h[re*3+2];m.push(oe,Y,X),(ee!=0||Z!=0)&&m.push(Y,re,X)}c<Math.PI*2&&(j(-1,F[0],l),j(1,F[F.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Ic(h,3)),this.setAttribute("normal",new Ic(y,3)),this.setAttribute("uv",new Ic(g,2));function W(U,E,oe,Y,re,X,ee,Z){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;Z&&(se-=1),se*=Y;let pe=new Qt(Math.sin(se),Math.cos(se)*ee),Le=pe.clone().multiplyScalar(re).add(X);io(Le,oe,S),h.push(S.x,S.y,S.z),io(pe,oe,w),y.push(w.x,w.y,w.z),g.push(E,.5+S.y/t),U.push(v++)}}function H(U,E,oe,Y,re){let X=new Wa,ee=new Qt,Z=[oe,Y];re<0&&Z.reverse();for(let ie of Z)ee.set(ie,b*re),io(ee,E,X),h.push(X.x,X.y,X.z),y.push(0,re,0),g.push(.5,.5),U.push(v++)}function j(U,E,oe){let Y=new Qt(Math.sin(oe),Math.cos(oe)),re=new Qt(-Math.cos(oe),Math.sin(oe)),X=new Wa,ee=U<0?(ce,se,pe)=>m.push(ce,se,pe):(ce,se,pe)=>m.push(ce,pe,se),Z=new Qt((r+e+G+z)/4,0);io(Z,Y,X),h.push(X.x,X.y,X.z),y.push(re.x,0,re.y),g.push(.5,.5);let ie=v++;for(let ce of E){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(re.x,0,re.y);let pe=g.slice(ce*2,ce*2+2);g.push(...pe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var $m=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:a,cornerSegments:d}=n.parameters,p;return u>0||a>0||c<360?p=new Fi(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new w_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as __,BufferGeometry as T_,Float32BufferAttribute as Cc,Vector3 as zi}from"three";var Ym=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,u;return l==0?u=new __(r,e,t,o,i,s):u=new Ec(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Nc=Math.PI/2,Ec=class extends T_{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,r/2,e/2,t/2);let a=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,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(a),this.setAttribute("position",new Cc(d,3)),this.setAttribute("normal",new Cc(p,3)),this.setAttribute("uv",new Cc(f,2));function y(b,w,S,T,_,x,C,P,I,O,A){let G=(x-2*l)/I,z=(C-2*l)/O,$=x/2-l,te=C/2-l,K=P/2,q=I+1,k=O+1,R=0,D=0,B=new zi;for(let L=0;L<k;L++){let F=L*z-te;for(let W=0;W<q;W++){let H=W*G-$;B[b]=H*T,B[w]=F*_,B[S]=K,d.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(W/I),f.push(1-L/O),R+=1}}for(let L=0;L<O;L++)for(let F=0;F<I;F++){let W=m+F+q*L,H=m+F+q*(L+1),j=m+(F+1)+q*(L+1),U=m+(F+1)+q*L;a.push(W,H,U),a.push(H,j,U),D+=6}u.addGroup(h,D,A),h+=D,m+=R}function g(b,w,S,T,_,x,C,P,I,O,A){let G=(C-2*l)/O,z=C/2-l,$=P/2-l,te=I/2,K=O+1,q=0,k=0,R=new zi,D=new zi;for(let B=0;B<c+1;B++){let L=B/c*Nc,F=Math.sin(L)*l,W=(1-Math.cos(L))*l,H=Math.sin(L),j=Math.cos(L);R[w]=($+F)*_,R[S]=(te-W)*x,D[b]=0,D[w]=H*Math.sign(R[w]),D[S]=j*Math.sign(R[S]);for(let U=0;U<K;U++){let E=U*G-z;R[b]=E*T,d.push(R.x,R.y,R.z),p.push(D.x,D.y,D.z),f.push(U/O),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let F=m+L+K*B,W=m+L+K*(B+1),H=m+(L+1)+K*(B+1),j=m+(L+1)+K*B;a.push(F,W,j),a.push(W,H,j),k+=6}u.addGroup(h,k,A),h+=k,m+=q}function v(b,w,S){let T=new zi,_=new zi(r/2,e/2,t/2);_.subScalar(l);let x=[],C=b*w*S>0?(I,O,A)=>a.push(I,O,A):(I,O,A)=>a.push(I,A,O);for(let I=0;I<=c;I++){let O=[],A=Nc*(1-I/c),G=Math.cos(A),z=Math.sin(A),$=0;for(let te=0;te<=I;te++){let K=Math.cos($),q=Math.sin($);T.x=G*K,T.y=z,T.z=G*q;let k=_.clone().addScaledVector(T,l);d.push(b*k.x,w*k.y,S*k.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),$+=Nc/I}x.push(O)}let P=x.length-1;for(let I=0;I<P;I++){let O=x[I],A=x[I+1],G=O.length-1;C(O[0],A[1],A[0]);for(let z=1;z<=G;z++)C(O[z-1],O[z],A[z]),C(O[z],A[z+1],A[z])}}}};import{BufferGeometry as P_,Float32BufferAttribute as Mc,Triangle as O_,Vector3 as Ur,Vector2 as Lc}from"three";var so=class extends P_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Mc(l,3)),this.setAttribute("normal",new Mc(u,3)),this.setAttribute("uv",new Mc(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new Ur,h=m.clone(),y=new O_,g=i*o,v=o-g,b=s+1,w=new Ur,S=(q,k)=>w.subVectors(q,k).normalize(),T=(q,k)=>Array(q).fill(void 0).map(k),_=T(r.length/3,(q,k)=>new Ur().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let q=0;q<_.length;q++){let k=_[q],R=[],D,B,L,F=1e10,W=-1;for(;(W=e.indexOf(q,W+1))!=-1;){let E=W-W%3;D=e[E+(W+1)%3],B=e[E+(W+2)%3],L=k.distanceToSquared(_[D]),F=Math.min(F,L),R.push([D,B,L])}F+=1e-6;let H=[],j=0,U=R.length;for(let E=0;E<U;E++){[D,B,L]=R[j];let oe=x[D]?.includes(q)==!0;L<=F&&H.push(D+ +oe*C),j=R.findIndex(Y=>Y[0]==B)}x.push(H)}let P=[];{let q=0,k=0,R,D,B=f==3;for(let L=0;L<=s;L++){R=L*(L+1)/2,D=(L+1)*(L+2)/2;for(let F=0;F<s-L;F++)[q,k]=[R+F+L+2,D+F+L+3],P.push(R,D,...B?[k,R]:[q,D],k,q),[R,D]=[q,k];P.push(R,D,R+s+2)}}let I=m.clone(),O=m.clone(),A=m.clone(),G=m.clone(),z=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),I.copy(m).multiplyScalar(v);let k=x[q];for(let H=0;H<k.length;H++){let j=k[H],U=k[(H+1)%f];y.setFromPointsAndIndices(_,q,j%C,U%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[q][H])}let R=[],D=[],B=[],L=new Ur;s==0&&[...te[q]].reduce((H,j)=>H.add(j),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let j=[],U=(H-1+f)%f,E=te[q][U],oe=te[q][H];m.copy(E).sub(I),h.copy(oe).sub(I);let Y=I.angleTo(m),re=m.angleTo(h),X=Math.cos(Y)*g;s==0?O.copy(L):O.copy(I).setLength(v+X),D.push(X);let ee=[O,E,oe];for(let Z=0;Z<2;Z++){let ie=ee[Z],ce=ee[Z+1];G.subVectors(ie,I),z.subVectors(ce,I),A.crossVectors(G,z).normalize();for(let se=0;se<b;se++){let pe=[Y,re][Z]*se/b;m.copy(G).applyAxisAngle(A,pe).add(I),R.push(m.clone()),Z&&(S(m,I),j.push([se==0?ie:m.clone(),w.clone()]))}Z&&(S(ce,I),j.push([ce,w.clone()]))}B.push(j)}$.push(B);let F=2*b,W=2;for(let H=0;H<f;H++){let j=F*H,U=F*((H+1)%f),E=[R[j]];for(let Y=1;Y<b;Y++){G=R[j+Y],z=R[U+Y],E.push(G);for(let re=1,X=Y-W+1;re<=X;re++)m.lerpVectors(G,z,re/(X+1)),m.sub(I).setLength(D[H]).add(I),E.push(m.clone());E.push(z)}for(let Y=0;Y<b;Y++)E.push(R[Y+b+j]);E.push(R[U+b]);let oe=P.map(Y=>E[Y]);l.push(...oe.map(Y=>[Y.x,Y.y,Y.z]).flat()),u.push(...oe.map(Y=>(S(Y,I),[w.x,w.y,w.z])).flat())}}let K=[];for(let q=0;q<x.length;q++)for(let k=0;k<f;k++){let R=x[q][k];if(R<C){let D=x[R].findIndex(F=>F%C==q),B=$[q][k],L=$[R][D];for(let F=0;F<b;F++){let W=B[F],H=L[b-F],j=B[F+1],U=L[b-(F+1)];[W,H,j,j,H,U].forEach(E=>{l.push(E[0].x,E[0].y,E[0].z),u.push(E[1].x,E[1].y,E[1].z)})}K.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;K.length;){let q,k,R,D;[q,k]=K.splice(0,2);let B=[q];for(;q!=k;)B.push(k),R=K.indexOf(k),D=R%2,k=K.splice(R-D,2)[1-D];w.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=w.dot(B[0])<0;L&&w.negate();for(let F=1;F<=B.length-2;F++)[B[F+ +L],B[F+1-+L],B[0]].forEach(W=>{l.push(W.x,W.y,W.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Ur;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,C=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new Ur,m=new Ur,h=new Ur,y=new Ur,g=new Lc,v=new Lc,b=new Lc,w=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),b.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=S(y);w(g,x+0,f,C),w(v,x+2,m,C),w(b,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],P=c[_+4],I=Math.max(x,C,P),O=Math.min(x,C,P);I>.9&&O<.1&&(x<.2&&(c[_+0]+=1),C<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new so(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as A_}from"three";var Xm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Ui(r*.5,i,s):new A_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Ui=class extends so{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],l=[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,l,c,r,e,t),this.type=c}static fromJSON(r){return new Ui(r.radius,r.corner,r.cornerSides)}};import{Plane as V_,Shape as dh,Vector2 as kr,Vector3 as j_,MathUtils as Fc,LineCurve as zc,QuadraticBezierCurve as uh,CubicBezierCurve as Xa}from"three";import{CubicBezierCurve as qa,EllipseCurve as I_,LineCurve as $a,LineCurve3 as C_,MathUtils as N_,QuadraticBezierCurve as Dc,SplineCurve as E_,Vector2 as ct,Vector3 as Qm}from"three";var ki=1e-12,Bn=class{constructor(r){this.position=new ct;this.startPosition=new ct;this.uuid=N_.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Bn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Dn=class extends Bn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Dn(this.parent).copy(this)}},Jt=class extends Bn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Dn(this),new Dn(this))}static create(e,t){let o=new Jt(e,new ct(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?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 Jt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new ct,t=new ct){let[o,i]=this.computeTangents();return o&&i&&(Km(o,e),Km(i,t)),[e,t]}computeTangent(e=new ct){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ct){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Km(n,r=new ct){let e=n.length();return r.set(-n.y/e,n.x/e)}var Gc=n=>n,Gn=new ct,Ya=new ct,M_=new ct,L_=new ct,B_=new ct,D_=new ct,Jm=new Qm,eh=new Qm;function th(n){let r=new ct;r.addVectors(n.v0,Gn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ct;return e.addVectors(n.v2,Ya.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new qa(n.v0,r,e,n.v2)}function Hi(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function G_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function R_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Rc(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function rh(n,r,e){return Zm(n,r)&&Zm(r,e)&&Bc(n.position,r.position,e.position)}function Bc(n,r,e){return Gn.copy(r).sub(n).cross(Ya.copy(e).sub(n))===0}function oh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(l+c,s+u),o.set(l-c,s-u),[t,o]}function nh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function ih(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),d;return Rc(r,n,e)>Math.PI&&(a*=-1),Hi(u,l)?d=(l+u)*(t/a-.5)*8/3/(s-c):d=(s+c)*(t/a-.5)*8/3/(u-l),o.set(r.x-d*l,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Vc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Zm(n,r){return Bc(n.position,n.controls[1].position,r.position)&&Bc(n.position,r.controls[0].position,r.position)}function sh(n,r,e,t,o=.5){let i=Gn.subVectors(r,n).multiplyScalar(o).add(n),s=Ya.subVectors(e,r).multiplyScalar(o).add(r),l=M_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=L_.subVectors(s,i).multiplyScalar(o).add(i),a=B_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=D_.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,a.x,a.y,d.x,d.y,t.x,t.y]}function ah(n,r,e=12,t=!0){let o=eh.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=Gc(r[c]),a=Gn,d=ao(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof qa||u instanceof Dc||u instanceof $a){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&R_(i,o))continue;i===void 0&&(i=Jm),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function lh(n,r,e,t=12,o=!0){let i=eh.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=Gc(r[c]),d=Gn,p=ao(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof qa||a instanceof Dc||a instanceof $a){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Jm:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function jc(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=ao(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=ao(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=ao(n[0].roundedCurveCorner,r)*.5),t}function ao(n,r=12){return n&&n instanceof I_?r*2:n&&(n instanceof $a||n instanceof C_)?1:n&&n instanceof E_?r*n.points.length:r}function ch(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Gc(r[s]),c=ao(l,e),u=Gn;for(let a=0;a<=c;a++)if(l instanceof qa||l instanceof Dc||l instanceof $a){if(l.getPoint(a/c,u),o!==void 0&&G_(o,u,ki))continue;o===void 0&&(o=Ya),o.copy(u),n.push(u.x,u.y),i++}}return Hi(n[0],n[n.length-2],ki)&&Hi(n[1],n[n.length-1],ki)&&(n.pop(),n.pop()),t&&i>1&&!(Hi(n[i-1],n[1],ki)&&Hi(n[i-2],n[0],ki))&&(n.push(n[0],n[1]),i++),n}var Uc=new kr,F_=new kr,z_=new kr,U_=new kr,k_=new kr,H_=new kr,Se=class extends dh{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new V_(new j_(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=Fc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Jt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],u=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=u;else return a+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Uc.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Fc.generateUUID()){let i;e instanceof kr?i=e:i=new kr(e,t);let s=new Jt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return ah(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=jc(this.points,e,!1),this.roundedCurveDivisions=jc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return lh(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),ch(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=ao(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(Vc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(Uc.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=l[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Vc(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(i,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,a=l&&c&&rh(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),b=Math.min(g,v),w=1-b/h,S=b/y,T=d.getPointAt(w,Uc),_=p.getPointAt(S,F_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Rc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,O]=oh(T,_,P,z_,U_),A=nh(I,O,s.position),[G,z]=ih(A,T,_,P,k_,H_);x=new Xa(T.clone(),G.clone(),z.clone(),_.clone())}else x=new uh(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof zc)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,u=l.getUtoTmapping(o,0),a=sh(l.v0,l.v1,l.v2,l.v3,u);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return t}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],u=e.points[i+3],a=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Jt(Fc.generateUUID(),new kr(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Xa&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof uh&&(i[l]=th(i[l]));for(l=0,c=i.length;l<c;l++){let d=i[l],p=l>0?i[l-1]:null,f;d instanceof Xa?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof zc&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof Xa?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof zc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof dh&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var Hc=Math.PI*2;function kc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function W_(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function ph(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function q_(n,r,e,t,o,i,s,l,c,u){let a=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*d-a*f-d*p;m<0&&(m=0),m/=a*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,b=(s-h)/o,w=(l-y)/i,S=(-s-h)/o,T=(-l-y)/i,_=ph(1,0,b,w),x=ph(b,w,S,T);return!u&&x>0&&(x-=Hc),u&&x<0&&(x+=Hc),{centerx:g,centery:v,ang1:_,ang2:x}}function fh({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,a=(r-t)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=q_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Hc/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let b=0;b<v;b++)c.push(W_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=kc(b[0],o,i,h,y),{x:T,y:_}=kc(b[1],o,i,h,y),{x,y:C}=kc(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:C}})}import{BufferAttribute as Ja,BufferGeometry as Q_}from"three";var ve;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(ve||(ve={}));var De;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(De||(De={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,l,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),Wi=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Ka=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Rn=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),mh=function(){function n(){var r=new Rn,e=new Wi,t=new Ka(0),o=new Ka(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Ka(0),t=new Ka(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;ue(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;ue(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new Rn,e=new Rn,t=new Wi,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Rn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Wi;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new Wi;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Rn;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new Wi;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,l=r.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&ae.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)ue(c.Sym.next===u.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),hh=function(){function n(){this.handle=null}return n}(),yh=function(){function n(){this.key=null,this.node=0}return n}(),$_=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new hh,this.handles[t]=new yh;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new hh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new yh}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;ue(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Wc=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),gh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Y_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new gh,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new gh;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),X_=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var l=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){ue(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Wc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do ue(ae.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,ue(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),i=ae.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new Rn,f,m;if(ue(!ae.vertEq(u,c)),ue(ae.edgeSign(c,r.event,s)<=0),ue(ae.edgeSign(u,r.event,l)>=0),ue(s!==r.event&&l!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ae.intersect(c,s,u,l,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(l.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(l.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ae.vertEq(p,s)||ae.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)>=0||!ae.vertEq(u,r.event)&&ae.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(ae.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ae.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,l,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ae.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ae.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,l,c;if(o=e.eUp,ae.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new Wc;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ae.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Wc,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new Y_(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++t===1)),ue(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new $_(i,ae.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ae.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),K_=function(){function n(){this.mesh=new mh,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=ve.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,l,c=[0,0,0],u=[0,0,0],a=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ae.edgeGoesRight(t.Lprev)||ae.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===De.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===De.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new mh),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=De.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),X_.computeInterior(this,s);var l=this.mesh;return e===De.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===De.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function er(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?De.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new K_;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var CV=ve.ODD,NV=ve.NONZERO,EV=ve.POSITIVE,MV=ve.NEGATIVE,LV=ve.ABS_GEQ_TWO,BV=De.POLYGONS,DV=De.CONNECTED_POLYGONS,GV=De.BOUNDARY_CONTOURS;import{BufferAttribute as Qa,BufferGeometry as Z_}from"three";var Za=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Za.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Za.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=u,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},qi=Za;qi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var $i={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},$c={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Yc={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},qc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Vn=class extends Z_{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),C=[];for(let P=x.length-1;P>=1;P-=2){let I=x[P-1],O=x[P-0];C.push(I,O)}return C}),a;try{a=er({windingRule:l,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=$i}let d;try{d=er({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=$c}if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let C=_*2,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new qi(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],O=P+I,A={start:P,count:I,normals:[],continuous:[],concave:[]},G=P,z=O-1,$=P+1,te=this._shape.roundedCurves.length;do{let R=G-P,D=a.vertices[z*2+0],B=a.vertices[z*2+1],L=a.vertices[G*2+0],F=a.vertices[G*2+1],W=a.vertices[$*2+0],H=a.vertices[$*2+1],j=L-D,U=F-B,E=Math.sqrt(j*j+U*U);j/=E,U/=E;let oe=L-W,Y=F-H,re=Math.sqrt(oe*oe+Y*Y);oe/=re,Y/=re,A.normals[R*2+0]=-Y,A.normals[R*2+1]=oe,A.concave[R]=j*Y-U*oe>0;let X=a.vertexIndices[G];if(Array.isArray(X))A.continuous[R]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)A.continuous[R]=!0;else{let ie=Z===1?ee+1:ee-1;ie=(ie+te)%te;let ce=Z===1?0:1,se=this._shape.roundedCurves[ee].getTangent(Z),pe=this._shape.roundedCurves[ie].getTangent(ce);A.continuous[R]=se.dot(pe)>.95}}x&&(A.normals[R*2+0]*=-1,A.normals[R*2+1]*=-1),[z,G,$]=[G,$,$+1],$>=O&&($-=I)}while($!==P+1);let K=[];K.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,O*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((R,D)=>[D,D]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,O*2)});for(let R=1;R<=this._bevelSegments;R++){let D=R/this._bevelSegments*Math.PI/2,B=(1-Math.cos(D))*this._bevelSize,L=[],F=[],W=[],H=[],j=0;for(let E=0;E<I;E++){let oe=E*2,Y=(E-1+I)%I*2,re=a.vertices[A.start*2+oe+0],X=a.vertices[A.start*2+oe+1],ee=-A.normals[Y+0]*B,Z=-A.normals[Y+1]*B,ie=-A.normals[oe+0]*B,ce=-A.normals[oe+1]*B;if(A.concave[E]||!A.concave[E]&&x){let se=Math.atan2(Z,ee),pe=Math.atan2(ce,ie);pe>se&&(pe-=Math.PI*2);let Le=pe-se;if(A.continuous[E]||x){let ge=se+Le/2,Ge=Math.cos(ge)*B,Pe=Math.sin(ge)*B;L[2*j+0]=re+Ge*(x?-1:1),L[2*j+1]=X+Pe*(x?-1:1),H[j]=E,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Le)/Math.PI));for(let Ge=0;Ge<=ge;Ge++){let Pe=se+Le*(Ge/ge),gt=Math.cos(Pe)*B,xt=Math.sin(Pe)*B;L[2*j+0]=re+gt,L[2*j+1]=X+xt,H[j]=E,j++}}}else L[2*j+0]=re+ee,L[2*j+1]=X+Z,H[j]=E,F[E]=j,j++,L[2*j+0]=re,L[2*j+1]=X,H[j]=E,j++,L[2*j+0]=re+ie,L[2*j+1]=X+ce,H[j]=E,W[E]=j,j++}let U=er({windingRule:ve.POSITIVE,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:E=>{let Y=E.Org.idx,re=H[Y],X=H[(Y+1)%H.length];E.idx=[re,X],E.Sym.idx=[X,re]},vertexIdCallback:E=>{let oe=E.Lprev.idx;return[oe?oe[1]:0,E.idx?E.idx[0]:0]}});if(!U)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!U.vertexCount)break;for(let E=0;E<U.vertexIndices.length;E++){let[oe,Y]=U.vertexIndices[E];if(oe===Y)continue;let re=Y;Y<oe&&(re+=I);for(let X=oe;X<re;X++){let ee=X%I,Z=(X+1)%I;if(!A.continuous[ee]||!A.continuous[Z]){U.vertexIndices[E]=[oe,ee],U.vertexIndices.splice(E+1,0,[Z,Y]),U.vertices.splice((E+1)*2,0,U.vertices[E*2],U.vertices[E*2+1]);break}}}K.push({bevelI:R,angle:D,size:B,boundary:U,reverseMap:H,insetPoints:L})}let q=(R,D,B)=>{let L=0,F=R.boundary.vertexIndices.length;for(;L<F&&B(R.boundary.vertexIndices[D]);)D=(D+1)%F,L++;return L},k=g.length;for(let R=1;R<K.length;R++){let D=K[R-1],B=K[R],L=D.boundary.vertexIndices.length,F=B.boundary.vertexIndices.length;if(!L||!F)break;let W=A.concave.length,H=0,j=qc(H,I);for(;!D.boundary.vertexIndices.filter(j).length||!B.boundary.vertexIndices.filter(j).length;)H++,j=qc(H,I);let U=D.boundary.vertexIndices.findIndex(j),E=B.boundary.vertexIndices.findIndex(j);do U=(U+1)%L;while(j(D.boundary.vertexIndices[U]));do E=(E+1)%F;while(j(B.boundary.vertexIndices[E]));H=(H+1)%I;let oe=H,Y=this._buildBevelVert(A,D,(U-1+L)%L),re=this._buildBevelVert(A,B,(E-1+F)%F),X=Y,ee=re,Z,ie,ce=!1;do{j=qc(H,I);let se=q(D,U,j),pe=q(B,E,j),Le=ce;if(ce=!1,se&&!pe){for(let ge=0;ge<se;ge++)Z=this._buildBevelVert(A,D,(U+ge)%L,ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;ce=!0}else if(!se&&pe)for(let ge=0;ge<pe;ge++)ie=this._buildBevelVert(A,B,(E+ge)%F,ge/(pe-1)),g.push(ee.topN,X.topP,ie.topP),g.push(X.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&pe)if(Z=this._buildBevelVert(A,D,U,0),ie=this._buildBevelVert(A,B,E,0),Le?(g.push(X.topN,ie.topP,ee.topN),g.push(X.topN,Z.topP,ie.topP),g.push(ie.bottomP,X.bottomN,ee.bottomN),g.push(ie.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP)),X=Z,ee=ie,se===pe)for(let ge=1;ge<se;ge++)Z=this._buildBevelVert(A,D,(U+ge)%L,ge/(se-1)),ie=this._buildBevelVert(A,B,(E+ge)%F,ge/(pe-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP),X=Z,ee=ie;else if(se>pe){let ge=se/pe,Ge=0;for(let Pe=1;Pe<se;Pe++)Z=this._buildBevelVert(A,D,(U+Pe)%L,Pe/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Pe>(Ge+1)*ge&&(Ge++,ie=this._buildBevelVert(A,B,(E+Ge)%F,Ge/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ge=pe/se,Ge=0;for(let Pe=1;Pe<pe;Pe++)ie=this._buildBevelVert(A,B,(E+Pe)%F,Pe/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie,Pe>(Ge+1)*ge&&(Ge++,Z=this._buildBevelVert(A,D,(U+Ge)%L,Ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}U=(U+se)%L,E=(E+pe)%F,H=(H+1)%W}while(H!==oe)}if(this._buildWall(K,A,g),x){let R=[];for(let D=g.length-1;D>=k+2;D-=3){let B=g[D-2],L=g[D-1],F=g[D-0];R.push(F,L,B)}g.splice(k,g.length-k,...R)}if(x){let R=[];for(let D=K[K.length-1].boundary.vertices.length-1;D>=1;D-=2){let B=K[K.length-1].boundary.vertices[D-1],L=K[K.length-1].boundary.vertices[D-0];R.push(B,L)}v.push(R)}if(!x){let R=K[K.length-1],D;try{D=er({windingRule:K.length>1?ve.POSITIVE:ve.ODD,elementType:De.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...v]})}catch{D=Yc}if(!D)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<D.elementCount*3;B+=3){let L=this._buildSurfaceVert(D,D.elements[B+0]),F=this._buildSurfaceVert(D,D.elements[B+1]),W=this._buildSurfaceVert(D,D.elements[B+2]);g.push(L.top,F.top,W.top),g.push(W.bottom,F.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Qa(Uint32Array.from(g),1),w=new Qa(this._buffer.positions,3),S=new Qa(this._buffer.normals,3),T=new Qa(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,T.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",T),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,T=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],P=e.normals[g+1];if(p){let z=C-_,$=P-x;_=_+z*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),O=I*3,A=I*2,G={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=x*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=x*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S,d||(I+=2,O+=6,A+=4,G.topP=I+0,G.bottomP=I+1,this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=C*f,this._buffer.normals[O+1]=P*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=C*f,this._buffer.normals[O+4]=P*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S),this.vertexCache[s]=G,G}clone(){let e=new Vn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var jn=class extends Q_{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=De.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}if(!c&&!u)try{l=er({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{l=$i}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Ja(new Float32Array(p*3),3),this._normalAttribute=new Ja(new Float32Array(p*3),3),this._uvAttribute=new Ja(new Float32Array(p*2),2),this._indexAttribute=new Ja(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1],C=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new jn(this._shape,this._curveSegments);return e.userData=jr(this.userData),e}};var Fn=class extends Vn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var Tt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new jn(n.shape,o,{windingRule:s}):l=new Fn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as vh,Vector2 as bh}from"three";var Sh=Math.PI*2,Un=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=J_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Tt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function J_(n,r,e,t,o,i){if(t>=Sh)return o>30||o%4===0?(tT(n,r,e,i),Math.round(o/4)):xh(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},u=fh({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?eT(n,s.x,s.y,u,o,r,e,i):xh(n,t,o,r,e,i)}function eT(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(zn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=zn(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return l>0?wh(n,i,s,l):n.addPoint(zn(0,0)),c}function xh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(zn(u,a))}return r<Sh?i>0?wh(n,t,o,i):n.addPoint(zn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&_h(n,t,o,i)),1}function tT(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(el(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(el(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(el(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(el(o,i-e,o+l,i-e,o-l,i-e)),t>0&&_h(n,r,e,t)}function zn(n,r){return new Jt(vh.generateUUID(),new bh(n,r))}function el(n,r,e,t,o,i){let s=zn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function wh(n,r,e,t){Th(n,r,e,t).forEach(i=>n.addPoint(i))}function _h(n,r,e,t){let o=Th(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Th(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new bh(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=vh.generateUUID(),u}).reverse();return l.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(u)}),l}import{BufferGeometry as rT,Float32BufferAttribute as Xc,Vector3 as Ph}from"three";var Oh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:u,cornerRadius:a,cornerSegments:d}=n.parameters,p=new Io(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Io=class extends rT{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,d=1,p=1,f=!1){super();let m=r&&s===1;m&&(p=0),d>100&&(d=100);let h=()=>new Ph,y=new Ph,g=h(),v=h(),b=h(),w,S,T,_,x,C,P,I,O=h(),A=h(),G=h(),z=h(),$=h(),te=h(),K=h(),q=h(),k=t-2*c+.001,R=k/s,D=Math.ceil(l*s),B=D+1,L=k/D,F=-k/2,W=a+1,H=2*Math.PI/a,j=Math.PI/2/p,U=.01,E=Math.min((1-d/100)*c,c-U),oe=c-E,Y=0,re=2,X=p*re+re,ee=W*X/re,Z=ee+W*B,ie=W*(B+X),[ce,se,pe]=[3,3,2].map(He=>Array(ie*He).fill(0)),Le=[],ge=i-c;function Ge(He,Ct){let lr=Math.PI/2;C=Ct*L,I=2*Math.PI*(C%R)/R+lr,C+=F,P=Math.sin(I)*ge,x=Math.cos(I)*ge,r?He.set(x,P,C):He.set(x,C,P)}Ge(y,-1e-10),Ge(g,0),O.copy(y),Ge(y,1);let Pe=y.distanceTo(g),gt=m?0:oe+E,xt=Pe*D+2*gt,Ho=E,Rt=xt-gt;for(let He=0;He<=D;He++){Ge(v,He),q.subVectors(v,O).normalize(),O.copy(v),te.copy(v).setComponent(+r+1,0).normalize(),K.crossVectors(q,te).normalize();let Ct=He===0,lr=He===D,Vg=Ct?3*Math.PI/2:j,jg=Ct?Ho:Rt,Fg=Ct?W:Z,zg=Ct?0:ie-W,Ug=q.clone().multiplyScalar(Ct?-oe:oe).add(v),kg=q.clone().multiplyScalar(Ct?-1:1).normalize();for(let Er=0;Er<W;Er++){let du=Er*H;if(A.addVectors(y.copy(te).multiplyScalar(c*Math.cos(du)),g.copy(K).multiplyScalar(c*Math.sin(du))),G.copy(A).normalize(),Ct||lr){m||(Y=zg+Er,[0,1,2].forEach(vt=>{ce[Y*3+vt]=Ug.getComponent(vt),se[Y*3+vt]=kg.getComponent(vt)}),pe[Y*2]=+lr,pe[Y*2+1]=Er/a),g.copy(G).multiplyScalar(E),b.addVectors(v,g);for(let vt=0;vt<p;vt++){let kl=vt*j+Vg;z.addVectors(y.copy(q).multiplyScalar(oe*Math.sin(kl)),g.copy(G).multiplyScalar(oe*Math.cos(kl))),$.copy(z).normalize(),g.addVectors(b,z),z.normalize(),Y=Fg+vt*W+Er,[0,1,2].forEach(Bs=>{ce[Y*3+Bs]=g.getComponent(Bs),se[Y*3+Bs]=$.getComponent(Bs)});let Hg=+Ct+Math.sin(kl);pe[Y*2]=(jg+oe*Hg)/xt,pe[Y*2+1]=Er/a}}g.addVectors(v,A),Y=ee+He*W+Er,[0,1,2].forEach(vt=>{ce[Y*3+vt]=g.getComponent(vt),se[Y*3+vt]=G.getComponent(vt)}),pe[Y*2]=(gt+He*Pe)/xt,pe[Y*2+1]=Er/a}}let Wo=B+2*p+re,zl=1,[Ul,bi]=[+m,Wo-1];f&&(bi-=1);for(let He=Ul;He<=bi-1;He++){let Ct=m&&He===bi-1;for(let lr=0;lr<W-1;lr++)w=He*W+lr,S=w+1,T=(Ct?lr:w)+W,_=(Ct?lr+1:S)+W,He===0?Le.push(S,_,T):He===Wo-2?Le.push(w,S,T):Le.push(w,S,T,S,_,T)}this.setIndex(Le),this.setAttribute("position",new Xc(ce,3)),this.setAttribute("normal",new Xc(se,3)),this.setAttribute("uv",new Xc(pe,2))}};import{IcosahedronGeometry as oT}from"three";var Ah=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Yi(r*.5,i,s):new oT(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Yi=class extends so{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],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],l="IcosahedronGeometry";super(i,s,l,r,e,t),this.type=l}static fromJSON(r){return new Yi(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as nT,Shape as iT}from"three";var Ih=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new iT;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new nT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Gh,BufferGeometryLoader as gT,Vector3 as xT,BoxGeometry as Rh}from"three";import{BufferGeometry as fT,Vector2 as Jc,Vector3 as Dh}from"three";import{Box3 as sT,BufferAttribute as Xi,BufferGeometry as Ch,Color as Qc,EventDispatcher as aT,Float32BufferAttribute as kn,Matrix3 as Nh,Matrix4 as Bh,MathUtils as lT,Object3D as cT,Sphere as dT,Vector2 as Dt,Vector3 as nt,Vector4 as uT}from"three";var gr=new Bh,Kc=new cT,tl=new nt,lo=class extends aT{constructor(){super(),this.uuid=lT.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new Nh().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return gr.makeRotationX(r),this.applyMatrix4(gr),this}rotateY(r){return gr.makeRotationY(r),this.applyMatrix4(gr),this}rotateZ(r){return gr.makeRotationZ(r),this.applyMatrix4(gr),this}translate(r,e,t){return gr.makeTranslation(r,e,t),this.applyMatrix4(gr),this}scale(r,e,t){return gr.makeScale(r,e,t),this.applyMatrix4(gr),this}lookAt(r){return Kc.lookAt(r),Kc.updateMatrix(),this.applyMatrix4(Kc.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new nt().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new Qc().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new nt().fromBufferAttribute(s,p),new nt().fromBufferAttribute(s,f),new nt().fromBufferAttribute(s,m)],v=new Hn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Dt().fromBufferAttribute(c,p),new Dt().fromBufferAttribute(c,f),new Dt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Dt().fromBufferAttribute(u,p),new Dt().fromBufferAttribute(u,f),new Dt().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(tl).negate(),this.translate(tl.x,tl.y,tl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new Bh;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new nt,e=new nt;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new nt;if(r){let t=new nt,o=new nt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],u=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,u),o.subVectors(c,u),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new lo;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let u=new nt,a={a:new nt,b:new nt,c:new nt};i.push(u),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(l.normal),u.a.copy(l.vertexNormals[0]),u.b.copy(l.vertexNormals[1]),u.c.copy(l.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new sT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new dT),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,l=r.vertices,c=this.faces,u=r.faces,a=this.colors,d=r.colors;e!==void 0&&(o=new Nh().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,b=new Hn(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=v.length;w<S;w++)y=v[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++)v.push(g[b].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new nt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,b),_=a(_,5,w),_=a(_,6,S),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(b&&t.push(d(h.normal)),w){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new lo().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Zc().fromGeometry(this),e=new Ch,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",rl.call(new Xi(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",rl.call(new Xi(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Eh.call(new Xi(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Mh.call(new Xi(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Mh.call(new Xi(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let u=s[l],a=new kn(u.data.length*3,3);a.name=u.name,i.push(rl.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new kn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Lh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new kn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Lh.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new Ch,t=r.geometry;if(r.isPoints||r.isLine){let o=new kn(t.vertices.length*3,3),i=new kn(t.colors.length*3,3);if(e.setAttribute("position",rl.call(o,t.vertices)),e.setAttribute("color",Eh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new kn(t.lineDistances.length,1);e.setAttribute("lineDistance",pT.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};lo.prototype.isGeometry=!0;var Zc=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let b=v.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=v.normal;this.normals.push(S,S,S)}let w=v.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Dt,new Dt,new Dt))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Dt,new Dt,new Dt))}for(let S=0;S<c;S++){let T=l[S].vertices;u[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<d;S++){let T=a[S].vertexNormals[g];p[S].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Hn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new nt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Qc,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function pT(n){return this.array.set(n),this}function Eh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new Qc),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Mh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new Dt),r[e++]=i.x,r[e++]=i.y}return this}function rl(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new nt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Lh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new uT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var mT=["a","b","c"];function hT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function ed(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function td(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,u;if(t.has(c))u=t.get(c);else{let a=e[s],d=e[l];u={a,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function yT(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],td(s.a,s.b,n,t,s,e),td(s.b,s.c,n,t,s,e),td(s.c,s.a,n,t,s,e)}function ol(n,r,e,t,o){n.push(new Hn(r,e,t,void 0,void 0,o))}function Wn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function nl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var il=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof fT?r=new lo().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Dh,t,o,i,s,l,c=r.vertices,u=r.faces,a=r.faceVertexUvs[0],d=a!==void 0&&a.length>0,p=[],f=new Map;yT(c,u,p,f);let m=[],h,y,g,v,b,w,S;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new Dh,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[hT(v,mT[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,C,P,I,O,A=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let G=A.concat(m),z=A.length,$,te,K,q=[],k=[],R,D,B,L,F=new Jc,W=new Jc,H=new Jc;for(o=0,i=u.length;o<i;o++)v=u[o],$=Number(ed(v.a,v.b,f).newEdge)+z,te=Number(ed(v.b,v.c,f).newEdge)+z,K=Number(ed(v.c,v.a,f).newEdge)+z,ol(q,$,te,K,v.materialIndex),ol(q,v.a,$,K,v.materialIndex),ol(q,v.b,te,$,v.materialIndex),ol(q,v.c,K,te,v.materialIndex),d&&(R=a[o],D=R[0],B=R[1],L=R[2],F.set(Wn(D.x,B.x),Wn(D.y,B.y)),W.set(Wn(B.x,L.x),Wn(B.y,L.y)),H.set(Wn(D.x,L.x),Wn(D.y,L.y)),nl(k,F,W,H),nl(k,D,F,H),nl(k,B,W,F),nl(k,L,H,W));r.vertices=G,r.faces=q,d&&(r.faceVertexUvs[0]=k)}};var We=new xT,Vh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Gh().copy(new Rh(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(We),t={width:We.x,height:We.y,depth:We.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Gh().copy(new Rh(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(We)):We.set(s.width,s.height,s.depth),(r!==We.x||e!==We.y||t!==We.z)&&i.scale(We.x===0?1:r/We.x,We.y===0?1:e/We.y,We.z===0?1:t/We.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new il(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new gT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(We);let s=100/We.x;Object.assign(i.parameters,{width:100,height:We.y*s,depth:We.z*s}),r(this.build(i))})}};var sl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Tt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as vT,Float32BufferAttribute as rd,Vector2 as xr,Vector3 as Ze}from"three";var jh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=new nd(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Ki(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function od(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let u=s.add(l).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,t/Math.sin(u))}}function bT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var nd=class extends vT{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,b=new Ze(0,-f,0),w=new Ze(0,f,0),S=new xr(r,-f),T=new xr(h,-f),_=new xr(0,w.y).sub(T),x=new xr(0,w.y).sub(S),C=new xr(_.y,-_.x).normalize(),P=new xr(x.y,-x.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let k=new Ze(C.x,C.y,0),R=new Ze(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);A=k.angleTo(R)}let G=s/Math.tan((Math.PI-_.angle())/2),z=s/Math.tan((Math.PI-A)/2),$=new Ze;if(!i){u.push(b.x,b.y,b.z),a.push(0,-1,0),d.push(0,0);let k=p++,R=[],D=S.clone(),B=G/Math.cos(Math.PI/t);D.x-=B;for(let L=0;L<t;L++){let F=L/t*Math.PI*2+m,W=new xr(Math.sin(F),Math.cos(F));Ki(D,W,$),u.push($.x,$.y,$.z),a.push(0,-1,0),d.push(0,0),R.push(p++)}for(let L=0;L<R.length;L++)c.push(R[L],k,R[(L+1)%R.length])}let te=[];{let k=new Ze,R=new Ze,D=new Ze,B=new Ze,L=new Ze,F=new Ze;for(let W=0;W<t;W++){let H=W/t*Math.PI*2+m,j=(W+.5)/t*Math.PI*2+m,U=(W+1)/t*Math.PI*2+m,E=new xr(Math.sin(H),Math.cos(H)),oe=new xr(Math.sin(j),Math.cos(j)),Y=new xr(Math.sin(U),Math.cos(U));Ki(S,E,R),Ki(S,Y,D),Ki(C,oe,k),od(w,R,D,z,z,B),u.push(B.x,B.y,B.z),od(R,w,D,z,G,L),u.push(L.x,L.y,L.z),od(D,R,w,G,z,F),u.push(F.x,F.y,F.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let re=p++,X=p++,ee=p++;if(c.push(re,X,ee),s>0){{let ce=R.clone().add(D).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),Le=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ge=F.clone().sub(L);K(ce,ge,Le,_.angle())}let Z,ie;{let ce=new Ze;Ki(P,Y,ce);let se=F.clone().add(B).multiplyScalar(.5);se=bT(se,D,w);let pe=F.clone().sub(B);[Z,ie]=K(se,pe,ce,A,B.y)}{let ce=Z,se=ce.clone().setY(0).normalize(),pe=new Ze(0,-1,0),Le=se.clone().cross(pe);q(ce,se,pe,Le)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,pe=w.clone();pe.y-=s/Math.sin(ce-Math.PI/2);let Le=new Ze,ge=[];for(let Pe=0;Pe<l;Pe++){let gt=[],xt=Math.PI/2-se*Pe/l,Ho=Math.cos(xt),Rt=Math.sin(xt),Wo=j;for(let zl=0;zl<=Pe;zl++){let Ul=Math.cos(Wo),bi=Math.sin(Wo);k.x=Ho*bi,k.y=Rt,k.z=Ho*Ul,Le.copy(pe).addScaledVector(k,s),u.push(Le.x,Le.y,Le.z),a.push(k.x,k.y,k.z),d.push(0,0),gt.push(p++),Wo+=Math.PI*2/Pe/t}ge.push(gt)}ie.reverse(),ge.push(ie);let Ge=ge.length-1;for(let Pe=0;Pe<Ge;Pe++){let gt=ge[Pe],xt=ge[Pe+1],Ho=gt.length-1;c.push(xt[1],gt[0],xt[0]);for(let Rt=1;Rt<=Ho;Rt++)c.push(gt[Rt],gt[Rt-1],xt[Rt]),c.push(xt[Rt+1],gt[Rt],xt[Rt])}}}}}this.setIndex(c),this.setAttribute("position",new rd(u,3)),this.setAttribute("normal",new rd(a,3)),this.setAttribute("uv",new rd(d,2));function K(k,R,D,B,L){let F=-B/2,W=(Math.PI-B)/2,H=R.clone().normalize().cross(D);k.addScaledVector(D,-s/Math.sin(W));let j=new Ze,U=new Ze,E=1,oe=p,Y=[];for(let re=0;re<=l;re++){let X=F+re/l*B;U.set(0,0,0),U.addScaledVector(H,Math.sin(X)),U.addScaledVector(D,Math.cos(X));for(let ee=0;ee<=E;ee++){let Z=ee/E-.5;if(j.copy(k),j.addScaledVector(R,Z),j.addScaledVector(U,s),L!=null){let ie=Math.max(0,j.y-L);j.addScaledVector(R,-ie/R.y)}u.push(j.x,j.y,j.z),a.push(U.x,U.y,U.z),d.push(0,0),ee===0&&Y.push(p),p++}}for(let re=0;re<l;re++)for(let X=0;X<E;X++){let ee=oe+X+(E+1)*re,Z=ee+(E+1),ie=Z+1,ce=ee+1;c.push(ee,Z,ce),c.push(Z,ie,ce)}return[k.clone().addScaledVector(R,.5),Y]}function q(k,R,D,B){let L=Math.PI/2,F=x.angle()-L,W=[],H=new Ze,j=new Ze;for(let E=0;E<=l;E++){let oe=[],Y=E/l;for(let re=0;re<=E;re++){let ee=((E?re/E:0)-.5)*v,Z=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(F)*Z),se=(L+ce)*Y,pe=Math.cos(se),Le=Math.sin(se);H.set(0,0,0),H.addScaledVector(R,Le*Z),H.addScaledVector(D,pe),H.addScaledVector(B,Le*ie),j.copy(k).addScaledVector(H,s),u.push(j.x,j.y,j.z),a.push(H.x,H.y,H.z),d.push(0,0),oe.push(p++)}W.push(oe)}let U=W.length-1;for(let E=0;E<U;E++){let oe=W[E],Y=W[E+1],re=oe.length-1;c.push(oe[0],Y[1],Y[0]);for(let X=1;X<=re;X++)c.push(oe[X-1],oe[X],Y[X]),c.push(oe[X],Y[X+1],Y[X])}}}};var al=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,T){return S>e&&T>t?Math.min(w*e/S,w*t/T):S>e?w*e/S:T>t?w*t/T:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=d.x,y=d.y,g=a.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let v=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Tt.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as ST}from"three";var Fh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:u}=n.parameters,a=new ST(.5*r,o,i,s,l,c,u);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as wT}from"three";var zh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new wT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as _T,Float32BufferAttribute as id,Vector3 as TT}from"three";var Uh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new sd(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},sd=class extends _T{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,U=0,E=0)=>new TT(j,U,E),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,T,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(j,U=!1)=>Math.sin(j-Math.PI/(1+ +U)),C=(j,U=!1)=>Math.cos(j-Math.PI/(1+ +U));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=S.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,S.z-a),m.subVectors(S,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),G=O/Math.cos(o/2),z=m.clone().normalize().add(h.normalize()).setLength(G).add(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let U=p+o+j*$;m.set(0,Math.sin(U)*A,Math.cos(U)*A),m.add(z),h.set(0,x(U),C(U)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let te=Math.sin($/2)*A*2,K=d.length-1,q=d[0][0].distanceTo(d[1][0]),k=d[K-1][0].distanceTo(d[K][0]),R=q+te*s+k;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*te)/R);d[K].push(0);let[D,B,L]=d[0],F,W,H;for(let j=1;j<d.length;j++)[F,W,H]=d[j],l.push(b,D.y,D.z,b,F.y,F.z,w,D.y,D.z,w,D.y,D.z,b,F.y,F.z,w,F.y,F.z),c.push(0,B.y,B.z,0,W.y,W.z,0,B.y,B.z,0,B.y,B.z,0,W.y,W.z,0,W.y,W.z),u.push(0,L,0,H,1,L,1,L,0,H,1,H),[D,B,L]=[F,W,H];this.setAttribute("position",new id(l,3)),this.setAttribute("normal",new id(c,3)),this.setAttribute("uv",new id(u,2))}};var ll=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,T=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(T,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,T)),y+=h,S=f+Math.cos(y)*g,T=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,T)),y+=h}a.isClosed=!0;for(let w=0,S=a.points.length;w<S;w++)a.points[w].roundness=i;a.roundness=i,a.update();let b=Tt.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as PT}from"three";var kh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new PT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Hh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=OT(r,e,t,r*.5,s,i,0,0,o,l,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function OT(n,r,e,t,o,i,s,l,c,u,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new Io(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as AT}from"three";var Wh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new AT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Tt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Yh,Vector3 as Qe,Matrix4 as Zi,BufferGeometry as Xh,BufferAttribute as ad,MathUtils as ld}from"three";function $h(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function IT(n,r,e){let t=[new Qe,new Qe,new Qe],o=[new Qe,new Qe,new Qe];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let l=o[s],c=ld.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new Zi().makeBasis(t[0],t[1],t[2])}var Kh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??Un.create({parameters:pc}).userData.shape;return{path:n.path??rn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...aa,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new cd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Xh,{userData:{...n,type:"PathGeometry"}})}},cd=class extends Xh{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!$h(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=this.inputs.path.isClosed?e.length:e.length-1,l=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-l+1),s+2),a=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+l)%e.length:Math.min(O+l,e.length-1);a.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,G)=>{a[O]=a[O].clone().lerp(a[A],G),d[O]=IT(d[O],d[A],G)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(a.length-1,a.length-2,1-h)),o===0){let O=a.length-1;a[O].copy(a[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:v,vertices:b}=this._computeShapePoints(5),w=0,S=0;v.sort((O,A)=>O.start-A.start),v.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,G,z)=>A+(z===0||!G?2:1),0),S+=O.verticesCount,w=S});let T=S*u,_,x=0;if(this._isOpenEnded()){try{_=er({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=Yc}x=_.vertexCount}let C=T+2*x,P={positions:new Float32Array(C*3),normals:new Float32Array(C*3),uvs:new Float32Array(C*2)},I=[];v.forEach(O=>{this._extrudeRegion(O,b,d,a,P,I,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,I,P,d[0],a[0],!1),this._closeEnd(_,T+x,I,P,d[d.length-1],a[a.length-1],!0)),this.setAttribute("position",new ad(P.positions,3)),this.setAttribute("normal",new ad(P.normals,3)),this.setAttribute("uv",new ad(P.uvs,2)),this.setIndex(I)}_extractPathPoints(){let t=Ua(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new Qe,l=new Qe,c=new Qe,u=new Qe,a=new Qe(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(v).normalize(),S=b.clone().sub(g).normalize(),T=w.clone().add(S).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let C=new Zi().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new Qe(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new Zi().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:l,startScale:c,endScale:u}=this.inputs.parameters.extrusion,a=new Zi,d=new Zi;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));a.makeRotationZ(ld.lerp(s,s+l,m));let h=ld.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(a).multiply(d)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let b=y[v-1],w=y[v-0];g.push(b,w)}return g}),l;try{l=er({windingRule:t,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=$i}let c;try{c=er({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=$c}if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],b=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],b=l.elements[g+1],w=v+b,S={start:v,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let T=v,_=w-1,x=v+1,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],G=l.vertices[T*2+1],z=l.vertices[x*2+0],$=l.vertices[x*2+1],te=A-I,K=G-O,q=Math.sqrt(te*te+K*K);te/=q,K/=q;let k=A-z,R=G-$,D=Math.sqrt(k*k+R*R);k/=D,R/=D,S.normals[P*2+0]=-R,S.normals[P*2+1]=k;let B=l.vertexIndices[T];if(Array.isArray(B))S.continuous[P]=!1;else{let[L,F]=o.getCurveIndexFromVertexId(B-1,!0);if(F>0&&F<1)S.continuous[P]=!0;else{let W=F===1?L+1:L-1;W=(W+C)%C;let H=F===1?0:1,j=o.roundedCurves[L].getTangent(F),U=o.roundedCurves[W].getTangent(H);S.continuous[P]=j.dot(U)>.95}}y&&(S.normals[P*2+0]*=-1,S.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=w&&(x-=b)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new Qe,a=new Qe,d=new Qe,p=new Qe,f=new Yh;o.forEach((h,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;a.set(t[S+0],t[S+1],0),p.copy(u).sub(a),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,v,d,p,f),v++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;a.set(t[S+0],t[S+1],0),p.copy(a).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,v,d,p,f),v++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),v=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&v++;let w=b===e.count-1?0:v+1,S=y+v,T=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,T,S,x,_):l.push(S,T,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new Qe(0,0,c?-1:1).applyMatrix4(s),d=new Qe,p=new Yh;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as Zh,BufferGeometry as dd}from"three";import{mergeBufferGeometries as CT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Qh(){let n=new dd;return n.setAttribute("position",new Zh(new Float32Array([]),3)),n.setIndex(new Zh(new Uint16Array([]),1)),n}var NT=Qh().attributes,ET=12,MT=1,qn=class extends dd{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,NT),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:a}=e,d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,p=LT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Se().fromShape(S));this.vectorShapes=v;let b=v.map(S=>Tt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?MT:ET}})),w=b.length?CT(b):Qh();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,T])=>{this.setAttribute(S,T)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Br(new dd,qn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function LT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
1
|
+
var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var qg=Object.getOwnPropertyNames;var $g=Object.getPrototypeOf,Yg=Object.prototype.hasOwnProperty;var Gs=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Xg=(n,r)=>{for(var e in r)kl(n,e,{get:r[e],enumerable:!0})},Kg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of qg(r))!Yg.call(n,o)&&o!==e&&kl(n,o,{get:()=>r[o],enumerable:!(t=Wg(r,o))||t.enumerable});return n};var Rs=(n,r,e)=>(e=n!=null?Hg($g(n)):{},Kg(r||!n||!n.__esModule?kl(e,"default",{value:n,enumerable:!0}):e,n));var Dm=Gs((xc,Bm)=>{(function(n,r){typeof xc=="object"?Bm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(xc,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var u=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Fm=Gs((Ua,jm)=>{(function(n,r){typeof Ua=="object"&&typeof jm<"u"?r(Ua):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ua,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,b=r.length;if(b<v)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],T=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var C,P=new Array(v).fill(0);for(x=0;x<b;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(w[x]=p,m=0,c=x+1,s=x;s<b;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=d-p,s=c;s<v;s++)w[s]=S[x][s]/f;for(s=c;s<b;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*w[l]}}h<(y=Math.abs(P[x])+Math.abs(w[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)T[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=w[x],c=x}if(e){if(e==="f")for(x=v;x<b;x++){for(s=v;s<b;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(s=x;s<b;s++)S[s][x]=S[s][x]/p}else for(s=x;s<b;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*w[x],w[x]=a*w[x],!(Math.abs(d)<=o));x++)if(p=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[x]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][x],S[s][u]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[l-1])-g)*(y+g)+((p=w[l-1])-(f=w[l]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=w[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(w[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<b;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}w[c]=0,w[l]=d,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:S,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Ty=Gs(_l=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||r;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<a._howls.length;b++)a._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!r.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),b=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),w=b*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=S,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,b):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?C():(p._playLock=!0,p.once("resume",C),p._clearTimer(y._id))}else{var P=function(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var A=x.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._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."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._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}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,O,!1)};x.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._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&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var v=r.ctx.currentTime,b=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,b=Math.abs(v/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-S)/f;S=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},w)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),b=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,w=b*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),w)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var b=function(){a._playLock?setTimeout(b,0):v()};setTimeout(b,0)}else v()}else if(a._webAudio){var w=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,d=a._parent;d._duration=Math.ceil(a._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(a&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof _l<"u"&&(_l.Howler=r,_l.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],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(r,e,t,o,i,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return l},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._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},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var Bg=Gs(($X,Lg)=>{Lg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});import{FileLoader as CA,Loader as NA}from"three";var Ce=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Ce.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,Ce.prototype),{data:l,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ce.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function vi(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&vi(t)}return Object.freeze(n)}function du(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Ho=class extends Error{};function Vs(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function cr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function Wo(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function uu(){return typeof process<"u"}function pu(n,r){for(let e of n)r(e.id,e.data)!==!0&&pu(e.children,r)}function fu(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)fu(e,r)}var Ue=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ue.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&fu(o,t)}}traverse(e){pu(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,Ue.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Ho("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:l,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>du(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return cr(0,o,o);{let s=i[0].fi;return cr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return cr(c,c+o,o)}else return cr(s.fi,l.fi,o)}}};var qo;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(qo||(qo={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return uu()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,s=this,l={fi:t,id:o,data:i};return s=[...s,l],s.sort((u,a)=>u.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((a,d)=>a.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return cr(0,t,t);{let i=o[0].fi;return cr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return cr(l,l+t,t)}else return cr(i.fi,s.fi,t)}}};function $o(n){return n&&typeof n=="object"&&n instanceof Le}var Le=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!$o(t))return null;o+=1}t=t?Vs(t):new Le;for(let[c,u]of Object.entries(r.props)){let a=t[c];i[c]=a,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=Vs(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Vs(c);u[r.path[o-1]]=t,t=u}else{let u=new Le;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Le.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Mr;(t=>{function n(o,i){return bi(o,i)??o}t.apply=n;function r(o,i){return Wl(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=ut.zoomOnce(c,l[s]),c===void 0)return i;if(!$o(c))return;s+=1}if(c===void 0)return i;if(!!$o(c))if(i.type===0){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Hl([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Mr||(Mr={}));function Hl(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Hl(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function Zg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function bi(n,r){if(!$o(r))return r;if(n instanceof Ue){let e=Hl(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Zg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=bi(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Le)return Wl(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=bi(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Wl(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!$o(r))return r;if(!$o(n))return Mr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Le;for(let o of e){let i=Wl(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function mu(n,r){let e={cur:[],result:[],len:0};return n=Si(n,r,e)??n,[n,e.result]}function js(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Fs(n){n&&(n.len-=1)}function Qg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function hu(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,js(e,s));Fs(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=hu(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function Jg(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,js(e,s));return Fs(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Si(n,r,e){if(n instanceof Ue){let t=hu(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return Jg(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Si(i,r,js(e,s));return Fs(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Wo(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Si(s,r,js(e,i));Fs(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");Qg(e)}return t}else return}}var zs;(r=>{function n(e,t){let o=ut.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(zs||(zs={}));var rt;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function r(c,u){return e(c,u)?.data??c}l.applySimple=r;function e(c,u){let a=u.path;for(var d=[];;){let p;if(c instanceof Le&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===a.length&&(c instanceof Ue||c instanceof he||c instanceof Ce?p=c.runOp(u):p=qo.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof Ue){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ce){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Le){let b={...v,[g]:h};h=Object.setPrototypeOf(b,Le.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...v],h[g]=b}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof Ue){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return t(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(rt||(rt={}));var ql;(c=>{function n(){return[]}c.empty=n;function r(u,a){let d=[];for(let p of u){let[f,...m]=p.path;f===a&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,a){return u.map(d=>({...d,path:[a,...d.path]}))}c.addPrefix=e;function t(u,a){return[...u,...a]}c.concat=t;function o(u,a){return[...u.filter(p=>!a.some(f=>rt.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>rt.commutative(d,p)))}c.commutative=i;function s(u,a){for(let d of a){let p=l(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function l(u,a){var d=u;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=ut.zoom(d,[...m.path,m.id]),y=rt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=mu(d,{[m.id]:h});d=g;for(let b of v){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=rt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Ho)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(ql||(ql={}));var yu=Symbol(),ex=Symbol(),ks=Symbol(),go=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Us);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[ks];t&&t(),delete this._children[r]}}}},Yl=class extends go{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,qo.runOp(this._current,r),r.path)}},Xl=class extends go{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Ce.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},gu={get(n,r){if(r===ks)return()=>{n._parent=null};if(r===yu)return n._current;if(r===ex)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=Hs(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},tx={...gu,set(n,r,e){let t={type:0,props:{[r]:Ye(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},rx={...gu,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Yo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ks]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=Hs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},Xo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ks]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=Hs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function $l(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ut.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Us=class extends go{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){$l(this.ts,e,r),$l(this.actual,t,r),$l(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Hs(n,r,e){return e instanceof Ue?new Yo(n,r,e):e instanceof he?new Xo(n,r,e):e instanceof Ce?new Proxy(new Xl(n,r,e),rx):e!==null&&typeof e=="object"?Wo(e)?e:new Proxy(new Yl(n,r,e),tx):e}function Kl(n){let r=new Us(n);return[Hs(r,"",n),r]}function Ko(n,r){let[e,t]=Kl(n);return r(e),t.result()}function Ye(n){return n instanceof Yo||n instanceof Xo?n._current:n!==null&&typeof n=="object"?n[yu]:n}var ut;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof Ue||i instanceof Yo)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Xo)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(ut||(ut={}));function xu(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Wt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Ws=class{},wi=class extends Ws{constructor(e){super();this.id=e}},_i=class extends Ws{constructor(e){super();this.data=e}};var Ql;try{Ql=new TextDecoder}catch{}var ne,Yr,N=0;var Ou=[],Jl=Ou,ec=0,vt={},we,$r,Vt=0,dr=0,Nt,Lr,pt=[],Oe,vu={useRecords:!1,mapsAsObjects:!0},Ti=class{},rc=new Ti;rc.name="MessagePack 0xC1";var Zo=!1,ur=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(ne)return Eu(()=>($s(),this?this.unpack(r,e):ur.prototype.unpack.call(vu,r,e)));Yr=e>-1?e:r.length,N=0,ec=0,dr=0,$r=null,Jl=Ou,Nt=null,ne=r;try{Oe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof ur){if(vt=this,this.structures)return we=this.structures,qs();(!we||we.length>0)&&(we=[])}else vt=vu,(!we||we.length>0)&&(we=[]);return qs()}unpackMultiple(r,e){let t,o=0;try{Zo=!0;let i=r.length,s=this?this.unpack(r,i):Ks.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(qs())===!1)return}else{for(t=[s];N<i;)o=N,t.push(qs());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Zo=!1,$s()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function qs(){try{if(!vt.trusted&&!Zo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Ge();if(N==Yr)we.restoreStructures&&bu(),we=null,ne=null,Lr&&(Lr=null);else if(N>Yr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Zo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&bu(),$s(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function bu(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Ge(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&Au()[n&63];return r?(r.read||(r.read=oc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Cu()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}else if(n<192){let r=n-160;if(dr>=N)return $r.slice(N-Vt,(N+=r)-Vt);if(dr==0&&Yr<140){let e=r<16?nc(r):Iu(r);if(e!=null)return e}return tc(r)}else{let r;switch(n){case 192:return null;case 193:return Nt?(r=Ge(),r>0?Nt[1].slice(Nt.position1,Nt.position1+=r):Nt[0].slice(Nt.position0,Nt.position0-=r)):rc;case 194:return!1;case 195:return!0;case 196:return Zl(ne[N++]);case 197:return r=Oe.getUint16(N),N+=2,Zl(r);case 198:return r=Oe.getUint32(N),N+=4,Zl(r);case 199:return xo(ne[N++]);case 200:return r=Oe.getUint16(N),N+=2,xo(r);case 201:return r=Oe.getUint32(N),N+=4,xo(r);case 202:if(r=Oe.getFloat32(N),vt.useFloat32>2){let e=Xs[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Oe.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Oe.getUint16(N),N+=2,r;case 206:return r=Oe.getUint32(N),N+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigUint64(N),N+=8,r;case 208:return Oe.getInt8(N++);case 209:return r=Oe.getInt16(N),N+=2,r;case 210:return r=Oe.getInt32(N),N+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return Pu(ne[N++]&63);{let e=pt[r];if(e)return e.read?(N++,e.read(Ge())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,Pu(ne[N++]&63,ne[N++])):xo(2);case 214:return xo(4);case 215:return xo(8);case 216:return xo(16);case 217:return r=ne[N++],dr>=N?$r.slice(N-Vt,(N+=r)-Vt):nx(r);case 218:return r=Oe.getUint16(N),N+=2,dr>=N?$r.slice(N-Vt,(N+=r)-Vt):ix(r);case 219:return r=Oe.getUint32(N),N+=4,dr>=N?$r.slice(N-Vt,(N+=r)-Vt):sx(r);case 220:return r=Oe.getUint16(N),N+=2,wu(r);case 221:return r=Oe.getUint32(N),N+=4,wu(r);case 222:return r=Oe.getUint16(N),N+=2,_u(r);case 223:return r=Oe.getUint32(N),N+=4,_u(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var ox=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function oc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>ox.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ge);return n.highByte===0&&(n.read=Su(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ge()}return t}return e.count=0,n.highByte===0?Su(r,e):e}var Su=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||Au()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=oc(o,n)),o.read()};function Au(){let n=Eu(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var tc=Ys,nx=Ys,ix=Ys,sx=Ys;function Ys(n){let r;if(n<16&&(r=nc(n)))return r;if(n>64&&Ql)return Ql.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=Xe.apply(String,t),t.length=0)}return t.length>0&&(r+=Xe.apply(String,t)),r}function wu(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}function _u(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Cu()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}}var Xe=String.fromCharCode;function Iu(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return Xe.apply(String,e)}function nc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return Xe(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return Xe(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return Xe(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Xe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Zl(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function xo(n){let r=ne[N++];if(pt[r])return pt[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var Tu=new Array(4096);function Cu(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,dr>=N)return $r.slice(N-Vt,(N+=n)-Vt);if(!(dr==0&&Yr<180))return tc(n)}else return N--,Ge();let r=(n<<5^(n>1?Oe.getUint16(N):n>0?ne[N]:0))&4095,e=Tu[r],t=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return N=t,e.string;o-=3,t=N}for(e=[],Tu[r]=e,e.bytes=n;t<o;)i=Oe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?nc(n):Iu(n);return l!=null?e.string=l:e.string=tc(n)}var Pu=(n,r)=>{var e=Ge();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=oc(e,t),e.read()},Nu=typeof self=="object"?self:global;pt[0]=()=>{};pt[0].noBuffer=!0;pt[101]=()=>{let n=Ge();return(Nu[n[0]]||Error)(n[1])};pt[105]=n=>{let r=Oe.getUint32(N-4);Lr||(Lr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Lr.set(r,o);let i=Ge();return o.used?Object.assign(t,i):(o.target=i,i)};pt[112]=n=>{let r=Oe.getUint32(N-4),e=Lr.get(r);return e.used=!0,e.target};pt[115]=()=>new Set(Ge());var ic=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");pt[116]=n=>{let r=n[0],e=ic[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Nu[e](Uint8Array.prototype.slice.call(n,1).buffer)};pt[120]=()=>{let n=Ge();return new RegExp(n[0],n[1])};pt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Nt=[Ge(),Ge()],Nt.position0=0,Nt.position1=0;let t=N;N=e;try{return Ge()}finally{N=t}};pt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Eu(n){let r=Yr,e=N,t=ec,o=Vt,i=dr,s=$r,l=Jl,c=Lr,u=Nt,a=new Uint8Array(ne.slice(0,Yr)),d=we,p=we.slice(0,we.length),f=vt,m=Zo,h=n();return Yr=r,N=e,ec=t,Vt=o,dr=i,$r=s,Jl=l,Lr=c,Nt=u,ne=a,Zo=m,we=d,we.splice(0,we.length,...p),vt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function $s(){ne=null,Lr=null,we=null}function Mu(n){n.unpack?pt[n.type]=n.unpack:pt[n.type]=n}var Xs=new Array(147);for(let n=0;n<256;n++)Xs[n]=+("1e"+Math.floor(45.15-n*.30103));var Ks=new ur({useRecords:!1}),ax=Ks.unpack,lx=Ks.unpackMultiple,cx=Ks.unpack,Zs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},dx=new Float32Array(1),BI=new Uint8Array(dx.buffer,0,4);var Qs;try{Qs=new TextEncoder}catch{}var Js,ac,ea=typeof Buffer<"u",sc=ea?Buffer.allocUnsafeSlow:Uint8Array,Gu=ea?Buffer:Uint8Array,Lu=ea?4294967296:2144337920,j,je,M=0,pr,fr=null,ux=/[\u0080-\uFFFF]/,Pi=Symbol("record-id"),vo=class extends ur{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Gu.prototype.utf8Write?function(x,C,P){return j.utf8Write(x,C,P)}:Qs&&Qs.encodeInto?function(x,C){return Qs.encodeInto(x,j.subarray(C)).written}:!1,a=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],b=0,w=0;this.pack=this.encode=function(x,C){if(j||(j=new sc(8192),je=new DataView(j.buffer,0,8192),M=0),pr=j.length-10,pr-M<2048?(j=new sc(j.length),je=new DataView(j.buffer,0,j.length),pr=j.length-10,M=0):M=M+7&2147483640,t=M,l=a.structuredClone?new Map:null,a.bundleStrings?(fr=["",""],j[M++]=214,j[M++]=98,fr.position=M-t,M+=4):fr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<P;I++){let O=o[I];if(!O)continue;let A,R=o.transitions;for(let U=0,q=O.length;U<q;U++){let te=O[U];A=R[te],A||(A=R[te]=Object.create(null)),R=A}R[Pi]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),fr){je.setUint32(fr.position+t,M-fr.position-t);let P=fr;fr=null,S(P[0]),S(P[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>pr&&_(M),a.offset=M;let P=fx(j.subarray(t,M),l.idsToInsert);return l=null,P}return C&Vu?(j.start=t,j.end=M,j):j.subarray(t,M)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let P=0,I=v.length;P<I;P++)v[P][Pi]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=j.subarray(t,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&bx&&(M=t)}};let S=x=>{M>pr&&(j=_(M));var C=typeof x,P;if(C==="string"){let I=x.length;if(fr&&I>=8&&I<4096){let R=ux.test(x);fr[R?0:1]+=x,j[M++]=193,S(R?-I:I);return}let O;I<32?O=1:I<256?O=2:I<65536?O=3:O=5;let A=I*3;if(M+A>pr&&(j=_(M+A)),I<64||!u){let R,U,q,te=M+O;for(R=0;R<I;R++)U=x.charCodeAt(R),U<128?j[te++]=U:U<2048?(j[te++]=U>>6|192,j[te++]=U&63|128):(U&64512)===55296&&((q=x.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+(q&1023),R++,j[te++]=U>>18|240,j[te++]=U>>12&63|128,j[te++]=U>>6&63|128,j[te++]=U&63|128):(j[te++]=U>>12|224,j[te++]=U>>6&63|128,j[te++]=U&63|128);P=te-M-O}else P=u(x,M+O,A);P<32?j[M++]=160|P:P<256?(O<2&&j.copyWithin(M+2,M+1,M+1+P),j[M++]=217,j[M++]=P):P<65536?(O<3&&j.copyWithin(M+3,M+2,M+2+P),j[M++]=218,j[M++]=P>>8,j[M++]=P&255):(O<5&&j.copyWithin(M+5,M+3,M+3+P),j[M++]=219,je.setUint32(M,P),M+=4),M+=P}else if(C==="number")if(x>>>0===x)x<64?j[M++]=x:x<256?(j[M++]=204,j[M++]=x):x<65536?(j[M++]=205,j[M++]=x>>8,j[M++]=x&255):(j[M++]=206,je.setUint32(M,x),M+=4);else if(x>>0===x)x>=-32?j[M++]=256+x:x>=-128?(j[M++]=208,j[M++]=x+256):x>=-32768?(j[M++]=209,je.setInt16(M,x),M+=2):(j[M++]=210,je.setInt32(M,x),M+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){j[M++]=202,je.setFloat32(M,x);let O;if(I<4||(O=x*Xs[(j[M]&127)<<1|j[M+1]>>7])>>0===O){M+=4;return}else M--}j[M++]=203,je.setFloat64(M,x),M+=8}else if(C==="object")if(!x)j[M++]=192;else{if(l){let O=l.get(x);if(O){if(!O.id){let A=l.idsToInsert||(l.idsToInsert=[]);O.id=A.push(O)}j[M++]=214,j[M++]=112,je.setUint32(M,O.id),M+=4;return}else l.set(x,{offset:M-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?j[M++]=144|P:P<65536?(j[M++]=220,j[M++]=P>>8,j[M++]=P&255):(j[M++]=221,je.setUint32(M,P),M+=4);for(let O=0;O<P;O++)S(x[O])}else if(I===Map){P=x.size,P<16?j[M++]=128|P:P<65536?(j[M++]=222,j[M++]=P>>8,j[M++]=P&255):(j[M++]=223,je.setUint32(M,P),M+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=Js.length;O<A;O++){let R=ac[O];if(x instanceof R){let U=Js[O];if(U.write){U.type&&(j[M++]=212,j[M++]=U.type,j[M++]=0),S(U.write.call(this,x));return}let q=j,te=je,$=M;j=null;let W;try{W=U.pack.call(this,x,k=>(j=q,q=null,M+=k,M>pr&&_(M),{target:j,targetView:je,position:M-k}),S)}finally{q&&(j=q,je=te,M=$,pr=j.length-10)}W&&(W.length+M>pr&&_(W.length+M),M=px(W,j,M,U.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")j[M++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))j[M++]=211,je.setBigInt64(M,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)j[M++]=207,je.setBigUint64(M,x);else if(this.largeBigIntToFloat)j[M++]=203,je.setFloat64(M,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(C==="undefined")this.encodeUndefinedAsNil?j[M++]=192:(j[M++]=212,j[M++]=0,j[M++]=0);else if(C==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?j[M++]=128|P:P<65536?(j[M++]=222,j[M++]=P>>8,j[M++]=P&255):(j[M++]=223,je.setUint32(M,P),M+=4);let I;for(let O=0;O<P;O++)S(I=C[O]),S(x[I])}:(x,C)=>{j[M++]=222;let P=M-t;M+=2;let I=0;for(let O in x)(C||x.hasOwnProperty(O))&&(S(O),S(x[O]),I++);j[P+++t]=I>>8,j[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=C.length;R<U;R++){let q=C[R];P=I[q],P||(P=I[q]=Object.create(null),O++),I=P}let A=I[Pi];if(A)A>=96&&h?(j[M++]=((A-=96)&31)+96,j[M++]=A>>5):j[M++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=C.highByte=A>=96&&h?A-96>>5:-1;I[Pi]=A,s[A-64]=C,A<y?(C.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(j[M++]=(A&31)+96,j[M++]=R):j[M++]=A):(R>=0?(j[M++]=213,j[M++]=114,j[M++]=(A&31)+96,j[M++]=R):(j[M++]=212,j[M++]=114,j[M++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[Pi]=0),v.push(I),S(C))}for(let R=0,U=C.length;R<U;R++)S(x[C[R]])},_=x=>{let C;if(x>16777216){if(x-t>Lu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(Lu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,j.length-1)>>12)+1<<12;let P=new sc(C);return je=new DataView(P.buffer,0,C),j.copy?j.copy(P,0,t,x):P.set(j.slice(t,x)),M-=t,t=0,pr=P.length-10,j=P}}useBuffer(r){j=r,je=new DataView(j.buffer,j.byteOffset,j.byteLength),M=0}};ac=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ti];Js=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Bu(n,16,r):Du(ea?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Gu&&this.structuredClone?Bu(n,ic.indexOf(e.name),r):Du(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Bu(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Du(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function px(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function fx(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function Xr(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");ac.unshift(n.Class),Js.unshift(n)}Mu(n)}var Ru=new vo({useRecords:!1}),mx=Ru.pack,hx=Ru.pack;var{NEVER:yx,ALWAYS:gx,DECIMAL_ROUND:xx,DECIMAL_FIT:vx}=Zs,Vu=512,bx=1024;var ju=new vo({structuredClone:!0});Xr({Class:Ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ce.prototype),n}});Xr({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Xr({Class:Ue.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ue.prototype),n}});Xr({Class:wi.prototype.constructor,type:4,write(n){return n.id},read(n){return new wi(n)}});Xr({Class:_i.prototype.constructor,type:5,write(n){return n.data},read(n){return new _i(n)}});Xr({Class:Le.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});function Sx(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function lc(n){if(Wo(n))return n;if(Array.isArray(n))return n.map(lc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=lc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var ta;(t=>{function n(o){return ju.pack(o)}t.serialize=n;function r(o){return ju.unpack(o)}t.deserialize=r;function e(o){return Sx(n(lc(o))).toString()}t.checksum=e})(ta||(ta={}));var Fu;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(Fu||(Fu={}));var Kr;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(Kr||(Kr={}));var zu;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(zu||(zu={}));var Zr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=t})(Zr||(Zr={}));var bt;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(bt||(bt={}));var qt;(l=>{l.white={...bt.white,a:1},l.transparent={...bt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...bt.fromHex(c),a:u}}l.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}l.toRgb255a1=o;function i(c,u){return bt.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(qt||(qt={}));var ra;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ra||(ra={}));var Uu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Uu||(Uu={}));var ku;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(ku||(ku={}));var $t;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})($t||($t={}));var bo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(bo||(bo={}));var mr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(wx.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;_x.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;Tx.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;Px.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;Ox.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;Ax.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(mr||(mr={}));var oa;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(oa||(oa={}));var wx=["count"],_x=["radius","start","end","position","scale","rotation"],Tx=["position","scale","rotation"],Px=["count","size"],Ox=["count","position","scale","rotation"],Ax=["strength","scale","rotation","position","movement","seed","freqScale"];var na;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(na||(na={}));var ia;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:qt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ia||(ia={}));var cc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(cc||(cc={}));var dc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(dc||(dc={}));var sa;(r=>r.defaultData={...dc.defaultData,...cc.defaultData})(sa||(sa={}));var Qo;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Qo||(Qo={}));var Hu;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="light"}r.is=n})(Hu||(Hu={}));var Wu;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Wu||(Wu={}));var qu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],$u=["wrapping","image","video"],ft;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let u=i.texture;u&&Object.assign(u,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){switch(i){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,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 t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:Qo.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:bt.fromHex(5526619)};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]],steps:[0,1],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:qt.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:qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:qt.fromHexAndA(0,1),contourColor:qt.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}}}})(ft||(ft={}));var St;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:ft.defaultData("light",u),id:a}),p.push({fi:1,data:ft.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=ft.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:ft.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=ft.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:ft.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(St||(St={}));var Jo;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Jo||(Jo={}));var en;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(en||(en={}));var uc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var aa;(r=>{function n(e,t){let o={...e};return Ix.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(aa||(aa={}));var la={shape:uc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},Ix=["depth","offset","angle","twist","startScale","endScale"];var Oi;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Oi||(Oi={}));var ca;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,aa.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ca||(ca={}));var Qr;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:en.defaultData(),extrusion:la};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Jo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}r.defaultData=n})(Qr||(Qr={}));function Yu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Br(n,r){return Object.setPrototypeOf(n,r),n}function da(n){return Array.isArray(n)?n:[n]}function Xu(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Cx=typeof global=="object"&&global&&global.Object===Object&&global,ua=Cx;var Nx=typeof self=="object"&&self&&self.Object===Object&&self,Ex=ua||Nx||Function("return this")(),ke=Ex;var Mx=ke.Symbol,Ke=Mx;var Ku=Object.prototype,Lx=Ku.hasOwnProperty,Bx=Ku.toString,Ai=Ke?Ke.toStringTag:void 0;function Dx(n){var r=Lx.call(n,Ai),e=n[Ai];try{n[Ai]=void 0;var t=!0}catch{}var o=Bx.call(n);return t&&(r?n[Ai]=e:delete n[Ai]),o}var Zu=Dx;var Gx=Object.prototype,Rx=Gx.toString;function Vx(n){return Rx.call(n)}var Qu=Vx;var jx="[object Null]",Fx="[object Undefined]",Ju=Ke?Ke.toStringTag:void 0;function zx(n){return n==null?n===void 0?Fx:jx:Ju&&Ju in Object(n)?Zu(n):Qu(n)}var Et=zx;function Ux(n){return n!=null&&typeof n=="object"}var ot=Ux;var kx="[object Symbol]";function Hx(n){return typeof n=="symbol"||ot(n)&&Et(n)==kx}var tn=Hx;function Wx(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var pa=Wx;var qx=Array.isArray,Re=qx;var $x=1/0,ep=Ke?Ke.prototype:void 0,tp=ep?ep.toString:void 0;function rp(n){if(typeof n=="string")return n;if(Re(n))return pa(n,rp)+"";if(tn(n))return tp?tp.call(n):"";var r=n+"";return r=="0"&&1/n==-$x?"-0":r}var op=rp;function Yx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=Yx;function Xx(n){return n}var np=Xx;var Kx="[object AsyncFunction]",Zx="[object Function]",Qx="[object GeneratorFunction]",Jx="[object Proxy]";function e0(n){if(!Mt(n))return!1;var r=Et(n);return r==Zx||r==Qx||r==Kx||r==Jx}var fa=e0;var t0=ke["__core-js_shared__"],ma=t0;var ip=function(){var n=/[^.]+$/.exec(ma&&ma.keys&&ma.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function r0(n){return!!ip&&ip in n}var sp=r0;var o0=Function.prototype,n0=o0.toString;function i0(n){if(n!=null){try{return n0.call(n)}catch{}try{return n+""}catch{}}return""}var Dr=i0;var s0=/[\\^$.*+?()[\]{}|]/g,a0=/^\[object .+?Constructor\]$/,l0=Function.prototype,c0=Object.prototype,d0=l0.toString,u0=c0.hasOwnProperty,p0=RegExp("^"+d0.call(u0).replace(s0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function f0(n){if(!Mt(n)||sp(n))return!1;var r=fa(n)?p0:a0;return r.test(Dr(n))}var ap=f0;function m0(n,r){return n?.[r]}var lp=m0;function h0(n,r){var e=lp(n,r);return ap(e)?e:void 0}var wt=h0;var y0=wt(ke,"WeakMap"),ha=y0;var cp=Object.create,g0=function(){function n(){}return function(r){if(!Mt(r))return{};if(cp)return cp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),dp=g0;function x0(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var up=x0;function v0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var pp=v0;var b0=800,S0=16,w0=Date.now;function _0(n){var r=0,e=0;return function(){var t=w0(),o=S0-(t-e);if(e=t,o>0){if(++r>=b0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var fp=_0;function T0(n){return function(){return n}}var mp=T0;var P0=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),rn=P0;var O0=rn?function(n,r){return rn(n,"toString",{configurable:!0,enumerable:!1,value:mp(r),writable:!0})}:np,hp=O0;var A0=fp(hp),yp=A0;function I0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var gp=I0;var C0=9007199254740991,N0=/^(?:0|[1-9]\d*)$/;function E0(n,r){var e=typeof n;return r=r??C0,!!r&&(e=="number"||e!="symbol"&&N0.test(n))&&n>-1&&n%1==0&&n<r}var on=E0;function M0(n,r,e){r=="__proto__"&&rn?rn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ya=M0;function L0(n,r){return n===r||n!==n&&r!==r}var nn=L0;var B0=Object.prototype,D0=B0.hasOwnProperty;function G0(n,r,e){var t=n[r];(!(D0.call(n,r)&&nn(t,e))||e===void 0&&!(r in n))&&ya(n,r,e)}var sn=G0;function R0(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?ya(e,l,c):sn(e,l,c)}return e}var hr=R0;var xp=Math.max;function V0(n,r,e){return r=xp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=xp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),up(n,this,l)}}var vp=V0;var j0=9007199254740991;function F0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=j0}var an=F0;function z0(n){return n!=null&&an(n.length)&&!fa(n)}var ga=z0;var U0=Object.prototype;function k0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||U0;return n===e}var ln=k0;function H0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var bp=H0;var W0="[object Arguments]";function q0(n){return ot(n)&&Et(n)==W0}var pc=q0;var Sp=Object.prototype,$0=Sp.hasOwnProperty,Y0=Sp.propertyIsEnumerable,X0=pc(function(){return arguments}())?pc:function(n){return ot(n)&&$0.call(n,"callee")&&!Y0.call(n,"callee")},cn=X0;function K0(){return!1}var wp=K0;var Pp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_p=Pp&&typeof module=="object"&&module&&!module.nodeType&&module,Z0=_p&&_p.exports===Pp,Tp=Z0?ke.Buffer:void 0,Q0=Tp?Tp.isBuffer:void 0,J0=Q0||wp,So=J0;var ev="[object Arguments]",tv="[object Array]",rv="[object Boolean]",ov="[object Date]",nv="[object Error]",iv="[object Function]",sv="[object Map]",av="[object Number]",lv="[object Object]",cv="[object RegExp]",dv="[object Set]",uv="[object String]",pv="[object WeakMap]",fv="[object ArrayBuffer]",mv="[object DataView]",hv="[object Float32Array]",yv="[object Float64Array]",gv="[object Int8Array]",xv="[object Int16Array]",vv="[object Int32Array]",bv="[object Uint8Array]",Sv="[object Uint8ClampedArray]",wv="[object Uint16Array]",_v="[object Uint32Array]",Me={};Me[hv]=Me[yv]=Me[gv]=Me[xv]=Me[vv]=Me[bv]=Me[Sv]=Me[wv]=Me[_v]=!0;Me[ev]=Me[tv]=Me[fv]=Me[rv]=Me[mv]=Me[ov]=Me[nv]=Me[iv]=Me[sv]=Me[av]=Me[lv]=Me[cv]=Me[dv]=Me[uv]=Me[pv]=!1;function Tv(n){return ot(n)&&an(n.length)&&!!Me[Et(n)]}var Op=Tv;function Pv(n){return function(r){return n(r)}}var dn=Pv;var Ap=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ii=Ap&&typeof module=="object"&&module&&!module.nodeType&&module,Ov=Ii&&Ii.exports===Ap,fc=Ov&&ua.process,Av=function(){try{var n=Ii&&Ii.require&&Ii.require("util").types;return n||fc&&fc.binding&&fc.binding("util")}catch{}}(),Gr=Av;var Ip=Gr&&Gr.isTypedArray,Iv=Ip?dn(Ip):Op,xa=Iv;var Cv=Object.prototype,Nv=Cv.hasOwnProperty;function Ev(n,r){var e=Re(n),t=!e&&cn(n),o=!e&&!t&&So(n),i=!e&&!t&&!o&&xa(n),s=e||t||o||i,l=s?bp(n.length,String):[],c=l.length;for(var u in n)(r||Nv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||on(u,c)))&&l.push(u);return l}var va=Ev;function Mv(n,r){return function(e){return n(r(e))}}var ba=Mv;var Lv=ba(Object.keys,Object),Cp=Lv;var Bv=Object.prototype,Dv=Bv.hasOwnProperty;function Gv(n){if(!ln(n))return Cp(n);var r=[];for(var e in Object(n))Dv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Np=Gv;function Rv(n){return ga(n)?va(n):Np(n)}var un=Rv;function Vv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Ep=Vv;var jv=Object.prototype,Fv=jv.hasOwnProperty;function zv(n){if(!Mt(n))return Ep(n);var r=ln(n),e=[];for(var t in n)t=="constructor"&&(r||!Fv.call(n,t))||e.push(t);return e}var Mp=zv;function Uv(n){return ga(n)?va(n,!0):Mp(n)}var pn=Uv;var kv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Hv=/^\w*$/;function Wv(n,r){if(Re(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||tn(n)?!0:Hv.test(n)||!kv.test(n)||r!=null&&n in Object(r)}var Lp=Wv;var qv=wt(Object,"create"),Rr=qv;function $v(){this.__data__=Rr?Rr(null):{},this.size=0}var Bp=$v;function Yv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Dp=Yv;var Xv="__lodash_hash_undefined__",Kv=Object.prototype,Zv=Kv.hasOwnProperty;function Qv(n){var r=this.__data__;if(Rr){var e=r[n];return e===Xv?void 0:e}return Zv.call(r,n)?r[n]:void 0}var Gp=Qv;var Jv=Object.prototype,eb=Jv.hasOwnProperty;function tb(n){var r=this.__data__;return Rr?r[n]!==void 0:eb.call(r,n)}var Rp=tb;var rb="__lodash_hash_undefined__";function ob(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Rr&&r===void 0?rb:r,this}var Vp=ob;function fn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}fn.prototype.clear=Bp;fn.prototype.delete=Dp;fn.prototype.get=Gp;fn.prototype.has=Rp;fn.prototype.set=Vp;var mc=fn;function nb(){this.__data__=[],this.size=0}var jp=nb;function ib(n,r){for(var e=n.length;e--;)if(nn(n[e][0],r))return e;return-1}var Jr=ib;var sb=Array.prototype,ab=sb.splice;function lb(n){var r=this.__data__,e=Jr(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():ab.call(r,e,1),--this.size,!0}var Fp=lb;function cb(n){var r=this.__data__,e=Jr(r,n);return e<0?void 0:r[e][1]}var zp=cb;function db(n){return Jr(this.__data__,n)>-1}var Up=db;function ub(n,r){var e=this.__data__,t=Jr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var kp=ub;function mn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}mn.prototype.clear=jp;mn.prototype.delete=Fp;mn.prototype.get=zp;mn.prototype.has=Up;mn.prototype.set=kp;var eo=mn;var pb=wt(ke,"Map"),to=pb;function fb(){this.size=0,this.__data__={hash:new mc,map:new(to||eo),string:new mc}}var Hp=fb;function mb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Wp=mb;function hb(n,r){var e=n.__data__;return Wp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ro=hb;function yb(n){var r=ro(this,n).delete(n);return this.size-=r?1:0,r}var qp=yb;function gb(n){return ro(this,n).get(n)}var $p=gb;function xb(n){return ro(this,n).has(n)}var Yp=xb;function vb(n,r){var e=ro(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Xp=vb;function hn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}hn.prototype.clear=Hp;hn.prototype.delete=qp;hn.prototype.get=$p;hn.prototype.has=Yp;hn.prototype.set=Xp;var wo=hn;var bb="Expected a function";function hc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(bb);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(hc.Cache||wo),e}hc.Cache=wo;var Kp=hc;var Sb=500;function wb(n){var r=Kp(n,function(t){return e.size===Sb&&e.clear(),t}),e=r.cache;return r}var Zp=wb;var _b=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Tb=/\\(\\)?/g,Pb=Zp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(_b,function(e,t,o,i){r.push(o?i.replace(Tb,"$1"):t||e)}),r}),Qp=Pb;function Ob(n){return n==null?"":op(n)}var Jp=Ob;function Ab(n,r){return Re(n)?n:Lp(n,r)?[n]:Qp(Jp(n))}var jt=Ab;var Ib=1/0;function Cb(n){if(typeof n=="string"||tn(n))return n;var r=n+"";return r=="0"&&1/n==-Ib?"-0":r}var oo=Cb;function Nb(n,r){r=jt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[oo(r[e++])];return e&&e==t?n:void 0}var Sa=Nb;function Eb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var yn=Eb;var ef=Ke?Ke.isConcatSpreadable:void 0;function Mb(n){return Re(n)||cn(n)||!!(ef&&n&&n[ef])}var tf=Mb;function rf(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=tf),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?rf(l,r-1,e,t,o):yn(o,l):t||(o[o.length]=l)}return o}var of=rf;function Lb(n){var r=n==null?0:n.length;return r?of(n,1):[]}var nf=Lb;function Bb(n){return yp(vp(n,void 0,nf),n+"")}var wa=Bb;var Db=ba(Object.getPrototypeOf,Object),gn=Db;var Gb="[object Object]",Rb=Function.prototype,Vb=Object.prototype,sf=Rb.toString,jb=Vb.hasOwnProperty,Fb=sf.call(Object);function zb(n){if(!ot(n)||Et(n)!=Gb)return!1;var r=gn(n);if(r===null)return!0;var e=jb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&sf.call(e)==Fb}var af=zb;function Ub(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var lf=Ub;function kb(){this.__data__=new eo,this.size=0}var cf=kb;function Hb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var df=Hb;function Wb(n){return this.__data__.get(n)}var uf=Wb;function qb(n){return this.__data__.has(n)}var pf=qb;var $b=200;function Yb(n,r){var e=this.__data__;if(e instanceof eo){var t=e.__data__;if(!to||t.length<$b-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new wo(t)}return e.set(n,r),this.size=e.size,this}var ff=Yb;function xn(n){var r=this.__data__=new eo(n);this.size=r.size}xn.prototype.clear=cf;xn.prototype.delete=df;xn.prototype.get=uf;xn.prototype.has=pf;xn.prototype.set=ff;var vn=xn;function Xb(n,r){return n&&hr(r,un(r),n)}var mf=Xb;function Kb(n,r){return n&&hr(r,pn(r),n)}var hf=Kb;var vf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yf=vf&&typeof module=="object"&&module&&!module.nodeType&&module,Zb=yf&&yf.exports===vf,gf=Zb?ke.Buffer:void 0,xf=gf?gf.allocUnsafe:void 0;function Qb(n,r){if(r)return n.slice();var e=n.length,t=xf?xf(e):new n.constructor(e);return n.copy(t),t}var bf=Qb;function Jb(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var Sf=Jb;function eS(){return[]}var _a=eS;var tS=Object.prototype,rS=tS.propertyIsEnumerable,wf=Object.getOwnPropertySymbols,oS=wf?function(n){return n==null?[]:(n=Object(n),Sf(wf(n),function(r){return rS.call(n,r)}))}:_a,bn=oS;function nS(n,r){return hr(n,bn(n),r)}var _f=nS;var iS=Object.getOwnPropertySymbols,sS=iS?function(n){for(var r=[];n;)yn(r,bn(n)),n=gn(n);return r}:_a,Ta=sS;function aS(n,r){return hr(n,Ta(n),r)}var Tf=aS;function lS(n,r,e){var t=r(n);return Re(n)?t:yn(t,e(n))}var Pa=lS;function cS(n){return Pa(n,un,bn)}var Ci=cS;function dS(n){return Pa(n,pn,Ta)}var Oa=dS;var uS=wt(ke,"DataView"),Aa=uS;var pS=wt(ke,"Promise"),Ia=pS;var fS=wt(ke,"Set"),Ca=fS;var Pf="[object Map]",mS="[object Object]",Of="[object Promise]",Af="[object Set]",If="[object WeakMap]",Cf="[object DataView]",hS=Dr(Aa),yS=Dr(to),gS=Dr(Ia),xS=Dr(Ca),vS=Dr(ha),_o=Et;(Aa&&_o(new Aa(new ArrayBuffer(1)))!=Cf||to&&_o(new to)!=Pf||Ia&&_o(Ia.resolve())!=Of||Ca&&_o(new Ca)!=Af||ha&&_o(new ha)!=If)&&(_o=function(n){var r=Et(n),e=r==mS?n.constructor:void 0,t=e?Dr(e):"";if(t)switch(t){case hS:return Cf;case yS:return Pf;case gS:return Of;case xS:return Af;case vS:return If}return r});var Vr=_o;var bS=Object.prototype,SS=bS.hasOwnProperty;function wS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&SS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Nf=wS;var _S=ke.Uint8Array,Sn=_S;function TS(n){var r=new n.constructor(n.byteLength);return new Sn(r).set(new Sn(n)),r}var wn=TS;function PS(n,r){var e=r?wn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Ef=PS;var OS=/\w*$/;function AS(n){var r=new n.constructor(n.source,OS.exec(n));return r.lastIndex=n.lastIndex,r}var Mf=AS;var Lf=Ke?Ke.prototype:void 0,Bf=Lf?Lf.valueOf:void 0;function IS(n){return Bf?Object(Bf.call(n)):{}}var Df=IS;function CS(n,r){var e=r?wn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Gf=CS;var NS="[object Boolean]",ES="[object Date]",MS="[object Map]",LS="[object Number]",BS="[object RegExp]",DS="[object Set]",GS="[object String]",RS="[object Symbol]",VS="[object ArrayBuffer]",jS="[object DataView]",FS="[object Float32Array]",zS="[object Float64Array]",US="[object Int8Array]",kS="[object Int16Array]",HS="[object Int32Array]",WS="[object Uint8Array]",qS="[object Uint8ClampedArray]",$S="[object Uint16Array]",YS="[object Uint32Array]";function XS(n,r,e){var t=n.constructor;switch(r){case VS:return wn(n);case NS:case ES:return new t(+n);case jS:return Ef(n,e);case FS:case zS:case US:case kS:case HS:case WS:case qS:case $S:case YS:return Gf(n,e);case MS:return new t;case LS:case GS:return new t(n);case BS:return Mf(n);case DS:return new t;case RS:return Df(n)}}var Rf=XS;function KS(n){return typeof n.constructor=="function"&&!ln(n)?dp(gn(n)):{}}var Vf=KS;var ZS="[object Map]";function QS(n){return ot(n)&&Vr(n)==ZS}var jf=QS;var Ff=Gr&&Gr.isMap,JS=Ff?dn(Ff):jf,zf=JS;var e1="[object Set]";function t1(n){return ot(n)&&Vr(n)==e1}var Uf=t1;var kf=Gr&&Gr.isSet,r1=kf?dn(kf):Uf,Hf=r1;var o1=1,n1=2,i1=4,Wf="[object Arguments]",s1="[object Array]",a1="[object Boolean]",l1="[object Date]",c1="[object Error]",qf="[object Function]",d1="[object GeneratorFunction]",u1="[object Map]",p1="[object Number]",$f="[object Object]",f1="[object RegExp]",m1="[object Set]",h1="[object String]",y1="[object Symbol]",g1="[object WeakMap]",x1="[object ArrayBuffer]",v1="[object DataView]",b1="[object Float32Array]",S1="[object Float64Array]",w1="[object Int8Array]",_1="[object Int16Array]",T1="[object Int32Array]",P1="[object Uint8Array]",O1="[object Uint8ClampedArray]",A1="[object Uint16Array]",I1="[object Uint32Array]",Ee={};Ee[Wf]=Ee[s1]=Ee[x1]=Ee[v1]=Ee[a1]=Ee[l1]=Ee[b1]=Ee[S1]=Ee[w1]=Ee[_1]=Ee[T1]=Ee[u1]=Ee[p1]=Ee[$f]=Ee[f1]=Ee[m1]=Ee[h1]=Ee[y1]=Ee[P1]=Ee[O1]=Ee[A1]=Ee[I1]=!0;Ee[c1]=Ee[qf]=Ee[g1]=!1;function Na(n,r,e,t,o,i){var s,l=r&o1,c=r&n1,u=r&i1;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Mt(n))return n;var a=Re(n);if(a){if(s=Nf(n),!l)return pp(n,s)}else{var d=Vr(n),p=d==qf||d==d1;if(So(n))return bf(n,l);if(d==$f||d==Wf||p&&!o){if(s=c||p?{}:Vf(n),!l)return c?Tf(n,hf(s,n)):_f(n,mf(s,n))}else{if(!Ee[d])return o?n:{};s=Rf(n,d,l)}}i||(i=new vn);var f=i.get(n);if(f)return f;i.set(n,s),Hf(n)?n.forEach(function(y){s.add(Na(y,r,e,y,n,i))}):zf(n)&&n.forEach(function(y,g){s.set(g,Na(y,r,e,g,n,i))});var m=u?c?Oa:Ci:c?pn:un,h=a?void 0:m(n);return gp(h||n,function(y,g){h&&(g=y,y=n[g]),sn(s,g,Na(y,r,e,g,n,i))}),s}var Ea=Na;var C1=1,N1=4;function E1(n){return Ea(n,C1|N1)}var jr=E1;var M1="__lodash_hash_undefined__";function L1(n){return this.__data__.set(n,M1),this}var Yf=L1;function B1(n){return this.__data__.has(n)}var Xf=B1;function Ma(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new wo;++r<e;)this.add(n[r])}Ma.prototype.add=Ma.prototype.push=Yf;Ma.prototype.has=Xf;var Kf=Ma;function D1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Zf=D1;function G1(n,r){return n.has(r)}var Qf=G1;var R1=1,V1=2;function j1(n,r,e,t,o,i){var s=e&R1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var u=i.get(n),a=i.get(r);if(u&&a)return u==r&&a==n;var d=-1,p=!0,f=e&V1?new Kf:void 0;for(i.set(n,r),i.set(r,n);++d<l;){var m=n[d],h=r[d];if(t)var y=s?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!Zf(r,function(g,v){if(!Qf(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var La=j1;function F1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Jf=F1;function z1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var em=z1;var U1=1,k1=2,H1="[object Boolean]",W1="[object Date]",q1="[object Error]",$1="[object Map]",Y1="[object Number]",X1="[object RegExp]",K1="[object Set]",Z1="[object String]",Q1="[object Symbol]",J1="[object ArrayBuffer]",ew="[object DataView]",tm=Ke?Ke.prototype:void 0,yc=tm?tm.valueOf:void 0;function tw(n,r,e,t,o,i,s){switch(e){case ew:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case J1:return!(n.byteLength!=r.byteLength||!i(new Sn(n),new Sn(r)));case H1:case W1:case Y1:return nn(+n,+r);case q1:return n.name==r.name&&n.message==r.message;case X1:case Z1:return n==r+"";case $1:var l=Jf;case K1:var c=t&U1;if(l||(l=em),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=k1,s.set(n,r);var a=La(l(n),l(r),t,o,i,s);return s.delete(n),a;case Q1:if(yc)return yc.call(n)==yc.call(r)}return!1}var rm=tw;var rw=1,ow=Object.prototype,nw=ow.hasOwnProperty;function iw(n,r,e,t,o,i){var s=e&rw,l=Ci(n),c=l.length,u=Ci(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:nw.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var b=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(b===void 0?g===v||o(g,v,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var om=iw;var sw=1,nm="[object Arguments]",im="[object Array]",Ba="[object Object]",aw=Object.prototype,sm=aw.hasOwnProperty;function lw(n,r,e,t,o,i){var s=Re(n),l=Re(r),c=s?im:Vr(n),u=l?im:Vr(r);c=c==nm?Ba:c,u=u==nm?Ba:u;var a=c==Ba,d=u==Ba,p=c==u;if(p&&So(n)){if(!So(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new vn),s||xa(n)?La(n,r,e,t,o,i):rm(n,r,c,e,t,o,i);if(!(e&sw)){var f=a&&sm.call(n,"__wrapped__"),m=d&&sm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new vn),o(h,y,e,t,i)}}return p?(i||(i=new vn),om(n,r,e,t,o,i)):!1}var am=lw;function lm(n,r,e,t,o){return n===r?!0:n==null||r==null||!ot(n)&&!ot(r)?n!==n&&r!==r:am(n,r,e,t,lm,o)}var cm=lm;function cw(n,r){return n!=null&&r in Object(n)}var dm=cw;function dw(n,r,e){r=jt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=oo(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&an(o)&&on(s,o)&&(Re(n)||cn(n)))}var um=dw;function uw(n,r){return n!=null&&um(n,r,dm)}var pm=uw;function pw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var fm=pw;function fw(n,r){return r.length<2?n:Sa(n,lf(r,0,-1))}var mm=fw;function mw(n,r){return cm(n,r)}var Ni=mw;function hw(n,r){return r=jt(r,n),n=mm(n,r),n==null||delete n[oo(fm(r))]}var hm=hw;function yw(n){return af(n)?void 0:n}var ym=yw;var gw=1,xw=2,vw=4,bw=wa(function(n,r){var e={};if(n==null)return e;var t=!1;r=pa(r,function(i){return i=jt(i,n),t||(t=i.length>1),i}),hr(n,Oa(n),e),t&&(e=Ea(e,gw|xw|vw,ym));for(var o=r.length;o--;)hm(e,r[o]);return e}),_n=bw;function Sw(n,r,e,t){if(!Mt(n))return n;r=jt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=oo(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Mt(a)?a:on(r[o+1])?[]:{})}sn(l,c,u),l=l[c]}return n}var gm=Sw;function ww(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=Sa(n,s);e(l,s)&&gm(i,jt(s,n),l)}return i}var xm=ww;function _w(n,r){return xm(n,r,function(e,t){return pm(n,t)})}var vm=_w;var Tw=wa(function(n,r){return n==null?{}:vm(n,r)}),Tn=Tw;var bm;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(bm||(bm={}));var Pn;(o=>{o.identity={...ra.identity,hiddenMatrix:Zr.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return Yu({position:Kr.isEqual(i.position,s.position)?void 0:s.position,rotation:Kr.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:Kr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Zr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Pn||(Pn={}));var Sm;(r=>r.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Sm||(Sm={}));var Lt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Pn.identity,cloner:null})(Lt||(Lt={}));var wm;(r=>r.defaultData={type:"Empty",...Lt.defaultData})(wm||(wm={}));var _m;(r=>r.defaultData={type:"Component",...Lt.defaultData})(_m||(_m={}));var To;(r=>r.defaultData={type:"Mesh",...Lt.defaultData,...sa.defaultData})(To||(To={}));var On;(r=>r.defaultData={...Lt.defaultData,...Pn.identity,...bo.defaultData})(On||(On={}));var Tm;(r=>{function n(e){return{...Lt.defaultData,...ia.defaultData(e)}}r.defaultData=n})(Tm||(Tm={}));var An;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(An||(An={}));var no;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Lt.defaultData,...l,component:s,overrides:new Le,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=Pn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(no||(no={}));var Pm;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Zr.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...bo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(Pm||(Pm={}));var Po;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Le}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Le})))):$t.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=Ko(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&ft.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=Ko(l.materials,c=>{for(let u=0;u<l.materials.length;u++){let a=s.materials[u];if(typeof a!="string")for(let[d,p]of Object.entries(a.layers)){let f=c[u]?.layers?.data(d);f&&ft.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],u={orthographic:0,perspective:0,geometry:0};function a(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...oa.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,Pn.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),$t.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:ca.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:mr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:mr.merge(l.cloner,s.cloner)});else if(na.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=bt.clone(c.color))}return l}o.patch=t})(Po||(Po={}));var In;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(In||(In={}));var Da;(r=>r.defaultData={orbitControls:In.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(Da||(Da={}));var Cn;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Cn||(Cn={}));var Ga;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Br(o,Ce.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Cn.emptyImage,name:"AI generated image"}),Br(i,Ce.prototype)}t.defaultImages=r;function e(){return{materials:new Ce,images:new Ce,videos:new Ce,colors:new Ce,audios:new Ce,fonts:new Ce,penumbraSize:[2,2,2]}}t.emptyData=e})(Ga||(Ga={}));import{MathUtils as Ra}from"three";function Om(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...Tn(Ye(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ye(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Va(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function ja(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function Pw(n){Object.assign(n.scene.publish,{orbitControls:{...In.defaultData,...Ye(n.scene.publish.orbitControls)}})}function Ow(n){Object.assign(n.scene.publish.settings,{video:{...Da.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function Aw(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((qu.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))($u.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function Iw(n){n.scene.publish.withBackground=!0}function Cw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Nw(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function Ew(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function Mw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ye(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function Lw(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function Bw(n){function r(t){Object.setPrototypeOf(t,Le.prototype),t.texture&&Object.setPrototypeOf(t.texture,Le.prototype)}function e(t){Object.setPrototypeOf(t,Le.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=Ye(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],u=Ye(c).layers;e(u),c.layers=u}})})}function Am(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function gc(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...Ye(r),colors:e,steps:t};Object.assign(r,o)}})}function Dw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Im(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&gc(t)}):"material"in e&&typeof e.material!="string"&&gc(e.material)}),Object.values(n.shared.materials).forEach(r=>gc(r))}function Gw(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function Rw(n){n.shared.audios=Br({},Ce.prototype)}function Vw(n){n.shared.videos=Br({},Ce.prototype)}function jw(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function Fw(n){Object.entries(Ye(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ye(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function zw(n){n.scene.publish.settings.web.preload=!1}function Cm(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Uw(n){n.shared.fonts=Br({},Ce.prototype)}function kw(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function Hw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=St.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=kw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Lt.defaultData,...To.defaultData,flatShading:!1,wireframe:!1,geometry:{...Qr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ye(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function Ww(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Ra.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,Tn(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Ra.generateUUID(),data:u},{fi:1,id:Ra.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function qw(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...Tn(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...Tn(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:Ra.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Nm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=ft.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Em(n){Va(n,Nm),ja(n,Nm)}function $w(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function Yw(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function Xw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=St.defaultTwoLayerData("phong"))})}function Kw(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function Zw(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function Qw(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function Jw(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function e_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function t_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var Mm=37;function Lm(n){let r=n.schema??0;r!==Mm&&(console.warn("updating from ",r,"to ",Mm),r<1&&(ja(n,Om),Va(n,Om),n.schema=1),r<2&&(Pw(n),n.schema=2),r<3&&(Aw(n),n.schema=3),r<4&&(Iw(n),n.schema=4),r<5&&(Cw(n),n.schema=5),r<6&&(Nw(n),n.schema=6),r<7&&(Ew(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Im(n),n.schema=9),r<10&&(Dw(n),n.schema=10),r<11&&(Gw(n),n.schema=11),r<12&&(Im(n),n.schema=12),r<13&&(Rw(n),n.schema=13),r<14&&(jw(n),n.schema=14),r<15&&(Fw(n),n.schema=15),r<16&&(zw(n),n.schema=16),r<17&&(ja(n,Cm),Va(n,Cm),n.schema=17),r<18&&(ja(n,Am),Va(n,Am),n.schema=18),r<19&&(Ow(n),n.schema=19),r<20&&(Uw(n),Hw(n),n.schema=20),r<21&&(Ww(n),qw(n),n.schema=21),r<22&&(Em(n),n.schema=22),r<23&&($w(n),n.schema=23),r<24&&(Yw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Vw(n),r<25&&(n.schema=25)),r<26&&(Mw(n),n.schema=26),r<27&&(Lw(n),n.schema=27),r<28&&(Em(n),n.schema=28),r<29&&(Bw(n),n.schema=29),r<30&&(Xw(n),n.schema=30),r<31&&(Kw(n),n.schema=31),r<33&&(Zw(n),n.schema=33),r<34&&(Qw(n),n.schema=34),r<35&&(Jw(n),n.schema=35),r<36&&(e_(n),n.schema=36),r<37&&(t_(n),n.schema=37))}var ci=Rs(Dm());import{Object3D as _O,Vector3 as Gt,Euler as Yd,MathUtils as Yy,Matrix4 as Uo}from"three";var r_=.5*(Math.sqrt(3)-1),Li=(3-Math.sqrt(3))/6,o_=1/3,yr=1/6,sR=(Math.sqrt(5)-1)/4,aR=(5-Math.sqrt(5))/20,Bi=n=>Math.floor(n)|0,Gm=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),vc=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Fa(n=Math.random){let r=Vm(n),e=new Float64Array(r).map(o=>Gm[o%12*2]),t=new Float64Array(r).map(o=>Gm[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*r_,d=Bi(i+a),p=Bi(s+a),f=(d+p)*Li,m=d-f,h=p-f,y=i-m,g=s-h,v,b;y>g?(v=1,b=0):(v=0,b=1);let w=y-v+Li,S=g-b+Li,T=y-1+2*Li,_=g-1+2*Li,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[C],R=e[A],U=t[A];P*=P,l=P*P*(R*y+U*g)}let I=.5-w*w-S*S;if(I>=0){let A=x+v+r[C+b],R=e[A],U=t[A];I*=I,c=I*I*(R*w+U*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[C+1],R=e[A],U=t[A];O*=O,u=O*O*(R*T+U*_)}return 70*(l+c+u)}}function Rm(n=Math.random){let r=Vm(n),e=new Float64Array(r).map(i=>vc[i%12*3]),t=new Float64Array(r).map(i=>vc[i%12*3+1]),o=new Float64Array(r).map(i=>vc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*o_,m=Bi(s+f),h=Bi(l+f),y=Bi(c+f),g=(m+h+y)*yr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,C,P,I,O,A;S>=T?T>=_?(x=1,C=0,P=0,I=1,O=1,A=0):S>=_?(x=1,C=0,P=0,I=1,O=0,A=1):(x=0,C=0,P=1,I=1,O=0,A=1):T<_?(x=0,C=0,P=1,I=0,O=1,A=1):S<_?(x=0,C=1,P=0,I=0,O=1,A=1):(x=0,C=1,P=0,I=1,O=1,A=0);let R=S-x+yr,U=T-C+yr,q=_-P+yr,te=S-I+2*yr,$=T-O+2*yr,W=_-A+2*yr,k=S-1+3*yr,V=T-1+3*yr,G=_-1+3*yr,B=m&255,L=h&255,D=y&255,Y=.6-S*S-T*T-_*_;if(Y<0)u=0;else{let E=B+r[L+r[D]];Y*=Y,u=Y*Y*(e[E]*S+t[E]*T+o[E]*_)}let H=.6-R*R-U*U-q*q;if(H<0)a=0;else{let E=B+x+r[L+C+r[D+P]];H*=H,a=H*H*(e[E]*R+t[E]*U+o[E]*q)}let F=.6-te*te-$*$-W*W;if(F<0)d=0;else{let E=B+I+r[L+O+r[D+A]];F*=F,d=F*F*(e[E]*te+t[E]*$+o[E]*W)}let z=.6-k*k-V*V-G*G;if(z<0)p=0;else{let E=B+1+r[L+1+r[D+1]];z*=z,p=z*z*(e[E]*k+t[E]*V+o[E]*G)}return 32*(u+a+d+p)}}function Vm(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as n_}from"three";var Xt=new n_,za=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Xt.a.fromBufferAttribute(r,o),Xt.b.fromBufferAttribute(r,o+1),Xt.c.fromBufferAttribute(r,o+2),i*=Xt.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Xt.a.fromBufferAttribute(this.positionAttribute,r*3),Xt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Xt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Xt.a,o).addScaledVector(Xt.b,i).addScaledVector(Xt.c,1-(o+i)),Xt.getNormal(t),this}};import{Object3D as c_}from"three";var zm=Rs(Fm());import{Object3D as i_,Matrix4 as Fr}from"three";var s_=new Fr,a_=new Fr,l_=new Fr,Di;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Di||(Di={}));var Nn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Fr;this.matrixWorldRigid=new Fr;this.shearScale=new Fr;this.shearScaleInv=new Fr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof i_&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Di.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:l}=(0,zm.SVD)(o),c=s_.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=a_.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=l_.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Fr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Fr?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}};var bc=class extends Nn(c_){},d_=n=>n.type==="Mesh",zr=class extends bc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new zr(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return d_(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};import{Box3 as ZT,BufferGeometry as QT,MeshBasicMaterial as JT}from"three";import{Matrix4 as XT,Mesh as KT}from"three";import{Matrix4 as Ha,Vector3 as y_,Euler as g_}from"three";import{Box3 as u_,Line3 as p_,Matrix4 as Sc,Vector3 as Bt}from"three";var Oo=new Bt,Ao=new Bt,En=new Sc,km=[new Bt(-1,1,1),new Bt(-1,-1,1),new Bt(1,-1,1),new Bt(1,1,1),new Bt(-1,1,-1),new Bt(-1,-1,-1),new Bt(1,-1,-1),new Bt(1,1,-1)],f_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],m_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Um=(n,r,e)=>{n.updateEntityBoxSize(Oo,Ao),En.copy(r).multiply(n.matrixWorld),Ao.x===0&&Ao.y===0&&Ao.z===0?e.push(new Bt(Oo.x,Oo.y,Oo.z).applyMatrix4(En)):km.forEach(t=>{e.push(t.clone().multiply(Ao).add(Oo).applyMatrix4(En))})},Gi=class extends u_{constructor(){super(...arguments);this.matrix=new Sc;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Sc().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Bt);return}Um(s,t,i)}}):Um(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(En.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Ao).multiplyScalar(.5),this.getCenter(Oo),En.copy(this.matrix).setPosition(Oo),this.vertices=km.map(e=>e.clone().multiply(Ao).applyMatrix4(En))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=f_.map(([e,t])=>new p_(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Bt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=m_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Kt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as h_,CubicBezierCurve3 as wc,Vector3 as Zt}from"three";var Tc=class extends h_{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Pc=.001;function Oc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Pc}function _c(n,r){let e=new Zt(...n.position),t=new Zt(...n.controlNext.position),o=new Zt(...r.controlPrevious.position),i=new Zt(...r.position);return Oc(e,t,i)&&Oc(e,o,i)}function ka(n){let r=n.points.map(a=>new Zt(...a.data.position)),e=[n.points[0]],t=new Zt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Oc(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new Zt(...d.position),f=new Zt(...d.controlPrevious.position),m=new Zt(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,b=e[g].data,w=new Zt(...v.position),S=new Zt(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=_c(v,d),C=_c(d,b);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!_c(e[d].data,e[p].data))f.position.distanceTo(m.position)>Pc&&(h=new wc(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Pc&&(h=new wc(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),v=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),x=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new wc(f,x,C,m)}let u=new Tc;return c.forEach(a=>{a&&u.add(a)}),u}var Ie;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ie||(Ie={}));var Ri=n=>Ie.is(n),x_={type:"completeState",isfromEntity:!0},Wa=n=>class extends Nn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Gi;this._recursiveBBox=new Gi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Ie.is(o))return o}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Ie.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let s of this.data.states)Po.toOps(this.data,s.data).forEach(c=>{let u=zs.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=Po.patch(this.data,s),Po.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Ri(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Ie.is(o[i]))return o[i];if(Ie.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ie.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Ri(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ie.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ri(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ri(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ri(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return _n(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Zr.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ie.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ie.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return _n(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Wt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ut.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=ut.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,Po.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Wt(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(Mr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=ut.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=An.resolve(o.overrides,a),p.updateByOp(t,rt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of no.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of no.rootOverrideProps)if(Wt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,a);p&&d.updateByOp(p,rt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=rt.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!$t.is(t.props.type)&&Kt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Kt.changeEntityProptotype(this,o,i);for(let s of this.children)Ie.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Wt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Wt(t.path,["cloner"])!==null){let s=rt.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,l=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,a=ka(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=a.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new Ha;c.updateMatrixWorld();let m=new Ha().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(l==="tangential"){let y=new Ha().extractRotation(c.matrixWorld),g=a.getTangentAt(d).applyMatrix4(y).add(p),v=new Ha().lookAt(p,g,new y_(0,1,0)),b=new g_().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(x_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Kt.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Kt.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};import{ConeGeometry as S_}from"three";import{BufferGeometry as v_,CylinderGeometry as b_,Float32BufferAttribute as Ac,Vector2 as Qt,Vector3 as qa}from"three";var Wm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:u,radiusBottom:a,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new Vi(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new b_(u,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function io(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Hm(n){return new Qt(n.y,-n.x)}var Vi=class extends v_{constructor(r,e,t,o,i,s,l,c,u,a,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],y=[],g=[],v=0,b=t/2,w=new qa,S=new qa;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new Qt(r,b),_=new Qt(e,-b),x=null,C=null,P=null,I=null,O=T.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let q=T.clone();q.x-=A;let te=Math.PI-O.angle(),$=O.angle(),W=Math.tan($/2),k=Math.tan(te/2),V=W+k,G=p?V:k,B=p?V:W;if(u=Math.min(u,(r-R)/G,O.length()/V),a=Math.min(a,(e-U)/B,O.length()/V),u>0){let z=u/W;x=T.clone().sub(new Qt(z,u)),p&&(P=x.clone(),P.x-=A-V*u),T.sub(O.clone().setLength(z))}if(a>0){let z=a/k;C=_.clone().sub(new Qt(z,-a)),_.add(O.clone().setLength(z)),p&&(I=C.clone(),I.x-=A-V*a,q.sub(O.clone().setLength(z)))}O=T.clone().sub(_);let L=O.length()<.5,D=[];for(let z=0;z<=o;z++){let E=[],K=z/o,re=K*c+l,oe=new Qt(Math.sin(re),Math.cos(re));I&&C?(Y(E,K,oe,te,a,I,-1,!0),Y(E,K,oe,$,a,C,-1,!1)):C?(H(E,oe,C.x,0,-1),Y(E,K,oe,$,a,C,-1,!1)):s||H(E,oe,e,U,-1);let X=Hm(O).normalize();if(io(X,oe,w),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,ie=O.clone().multiplyScalar(Z).add(_);io(ie,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(K,.5+S.y/t),E.push(v++)}if(P&&x?(Y(E,K,oe,te,u,x,1,!1),Y(E,K,oe,$,u,P,1,!0)):x?(Y(E,K,oe,te,u,x,1,!1),H(E,oe,x.x,0,1)):s||H(E,oe,r,R,1),p&&!L){let ee=Hm(O).multiplyScalar(-1).normalize();io(ee,oe,w);for(let Z=0;Z<=i;Z++){let ie=Z/i,ce=O.clone().multiplyScalar(-ie).add(q);io(ce,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(K,.5+S.y/t),E.push(v++)}}p&&!s&&E.push(E[0]),D.push(E)}for(let z=0;z<D.length-1;z++)for(let E=0;E<D[0].length-1;E++){if(s&&p&&E==i)continue;let K=D[z][E],re=D[z+1][E],oe=D[z+1][E+1],X=D[z][E+1],ee=h[oe*3+0],Z=h[oe*3+2];m.push(K,re,X),(ee!=0||Z!=0)&&m.push(re,oe,X)}c<Math.PI*2&&(F(-1,D[0],l),F(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Ac(h,3)),this.setAttribute("normal",new Ac(y,3)),this.setAttribute("uv",new Ac(g,2));function Y(z,E,K,re,oe,X,ee,Z){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;Z&&(se-=1),se*=re;let fe=new Qt(Math.sin(se),Math.cos(se)*ee),De=fe.clone().multiplyScalar(oe).add(X);io(De,K,S),h.push(S.x,S.y,S.z),io(fe,K,w),y.push(w.x,w.y,w.z),g.push(E,.5+S.y/t),z.push(v++)}}function H(z,E,K,re,oe){let X=new qa,ee=new Qt,Z=[K,re];oe<0&&Z.reverse();for(let ie of Z)ee.set(ie,b*oe),io(ee,E,X),h.push(X.x,X.y,X.z),y.push(0,oe,0),g.push(.5,.5),z.push(v++)}function F(z,E,K){let re=new Qt(Math.sin(K),Math.cos(K)),oe=new Qt(-Math.cos(K),Math.sin(K)),X=new qa,ee=z<0?(ce,se,fe)=>m.push(ce,se,fe):(ce,se,fe)=>m.push(ce,fe,se),Z=new Qt((r+e+R+U)/4,0);io(Z,re,X),h.push(X.x,X.y,X.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let ie=v++;for(let ce of E){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(oe.x,0,oe.y);let fe=g.slice(ce*2,ce*2+2);g.push(...fe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var qm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:a,cornerSegments:d}=n.parameters,p;return u>0||a>0||c<360?p=new Vi(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new S_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as w_,BufferGeometry as __,Float32BufferAttribute as Ic,Vector3 as ji}from"three";var $m=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,u;return l==0?u=new w_(r,e,t,o,i,s):u=new Nc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Cc=Math.PI/2,Nc=class extends __{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,r/2,e/2,t/2);let a=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,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(a),this.setAttribute("position",new Ic(d,3)),this.setAttribute("normal",new Ic(p,3)),this.setAttribute("uv",new Ic(f,2));function y(b,w,S,T,_,x,C,P,I,O,A){let R=(x-2*l)/I,U=(C-2*l)/O,q=x/2-l,te=C/2-l,$=P/2,W=I+1,k=O+1,V=0,G=0,B=new ji;for(let L=0;L<k;L++){let D=L*U-te;for(let Y=0;Y<W;Y++){let H=Y*R-q;B[b]=H*T,B[w]=D*_,B[S]=$,d.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(Y/I),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<I;D++){let Y=m+D+W*L,H=m+D+W*(L+1),F=m+(D+1)+W*(L+1),z=m+(D+1)+W*L;a.push(Y,H,z),a.push(H,F,z),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,T,_,x,C,P,I,O,A){let R=(C-2*l)/O,U=C/2-l,q=P/2-l,te=I/2,$=O+1,W=0,k=0,V=new ji,G=new ji;for(let B=0;B<c+1;B++){let L=B/c*Cc,D=Math.sin(L)*l,Y=(1-Math.cos(L))*l,H=Math.sin(L),F=Math.cos(L);V[w]=(q+D)*_,V[S]=(te-Y)*x,G[b]=0,G[w]=H*Math.sign(V[w]),G[S]=F*Math.sign(V[S]);for(let z=0;z<$;z++){let E=z*R-U;V[b]=E*T,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(z/O),f.push(0),W+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+$*B,Y=m+L+$*(B+1),H=m+(L+1)+$*(B+1),F=m+(L+1)+$*B;a.push(D,Y,F),a.push(Y,H,F),k+=6}u.addGroup(h,k,A),h+=k,m+=W}function v(b,w,S){let T=new ji,_=new ji(r/2,e/2,t/2);_.subScalar(l);let x=[],C=b*w*S>0?(I,O,A)=>a.push(I,O,A):(I,O,A)=>a.push(I,A,O);for(let I=0;I<=c;I++){let O=[],A=Cc*(1-I/c),R=Math.cos(A),U=Math.sin(A),q=0;for(let te=0;te<=I;te++){let $=Math.cos(q),W=Math.sin(q);T.x=R*$,T.y=U,T.z=R*W;let k=_.clone().addScaledVector(T,l);d.push(b*k.x,w*k.y,S*k.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),q+=Cc/I}x.push(O)}let P=x.length-1;for(let I=0;I<P;I++){let O=x[I],A=x[I+1],R=O.length-1;C(O[0],A[1],A[0]);for(let U=1;U<=R;U++)C(O[U-1],O[U],A[U]),C(O[U],A[U+1],A[U])}}}};import{BufferGeometry as T_,Float32BufferAttribute as Ec,Triangle as P_,Vector3 as Ur,Vector2 as Mc}from"three";var so=class extends T_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Ec(l,3)),this.setAttribute("normal",new Ec(u,3)),this.setAttribute("uv",new Ec(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new Ur,h=m.clone(),y=new P_,g=i*o,v=o-g,b=s+1,w=new Ur,S=(W,k)=>w.subVectors(W,k).normalize(),T=(W,k)=>Array(W).fill(void 0).map(k),_=T(r.length/3,(W,k)=>new Ur().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let W=0;W<_.length;W++){let k=_[W],V=[],G,B,L,D=1e10,Y=-1;for(;(Y=e.indexOf(W,Y+1))!=-1;){let E=Y-Y%3;G=e[E+(Y+1)%3],B=e[E+(Y+2)%3],L=k.distanceToSquared(_[G]),D=Math.min(D,L),V.push([G,B,L])}D+=1e-6;let H=[],F=0,z=V.length;for(let E=0;E<z;E++){[G,B,L]=V[F];let K=x[G]?.includes(W)==!0;L<=D&&H.push(G+ +K*C),F=V.findIndex(re=>re[0]==B)}x.push(H)}let P=[];{let W=0,k=0,V,G,B=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let D=0;D<s-L;D++)[W,k]=[V+D+L+2,G+D+L+3],P.push(V,G,...B?[k,V]:[W,G],k,W),[V,G]=[W,k];P.push(V,G,V+s+2)}}let I=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),q=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let W=0;W<_.length;W++){m.copy(_[W]).normalize(),I.copy(m).multiplyScalar(v);let k=x[W];for(let H=0;H<k.length;H++){let F=k[H],z=k[(H+1)%f];y.setFromPointsAndIndices(_,W,F%C,z%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[W][H])}let V=[],G=[],B=[],L=new Ur;s==0&&[...te[W]].reduce((H,F)=>H.add(F),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let F=[],z=(H-1+f)%f,E=te[W][z],K=te[W][H];m.copy(E).sub(I),h.copy(K).sub(I);let re=I.angleTo(m),oe=m.angleTo(h),X=Math.cos(re)*g;s==0?O.copy(L):O.copy(I).setLength(v+X),G.push(X);let ee=[O,E,K];for(let Z=0;Z<2;Z++){let ie=ee[Z],ce=ee[Z+1];R.subVectors(ie,I),U.subVectors(ce,I),A.crossVectors(R,U).normalize();for(let se=0;se<b;se++){let fe=[re,oe][Z]*se/b;m.copy(R).applyAxisAngle(A,fe).add(I),V.push(m.clone()),Z&&(S(m,I),F.push([se==0?ie:m.clone(),w.clone()]))}Z&&(S(ce,I),F.push([ce,w.clone()]))}B.push(F)}q.push(B);let D=2*b,Y=2;for(let H=0;H<f;H++){let F=D*H,z=D*((H+1)%f),E=[V[F]];for(let re=1;re<b;re++){R=V[F+re],U=V[z+re],E.push(R);for(let oe=1,X=re-Y+1;oe<=X;oe++)m.lerpVectors(R,U,oe/(X+1)),m.sub(I).setLength(G[H]).add(I),E.push(m.clone());E.push(U)}for(let re=0;re<b;re++)E.push(V[re+b+F]);E.push(V[z+b]);let K=P.map(re=>E[re]);l.push(...K.map(re=>[re.x,re.y,re.z]).flat()),u.push(...K.map(re=>(S(re,I),[w.x,w.y,w.z])).flat())}}let $=[];for(let W=0;W<x.length;W++)for(let k=0;k<f;k++){let V=x[W][k];if(V<C){let G=x[V].findIndex(D=>D%C==W),B=q[W][k],L=q[V][G];for(let D=0;D<b;D++){let Y=B[D],H=L[b-D],F=B[D+1],z=L[b-(D+1)];[Y,H,F,F,H,z].forEach(E=>{l.push(E[0].x,E[0].y,E[0].z),u.push(E[1].x,E[1].y,E[1].z)})}$.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;$.length;){let W,k,V,G;[W,k]=$.splice(0,2);let B=[W];for(;W!=k;)B.push(k),V=$.indexOf(k),G=V%2,k=$.splice(V-G,2)[1-G];w.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=w.dot(B[0])<0;L&&w.negate();for(let D=1;D<=B.length-2;D++)[B[D+ +L],B[D+1-+L],B[0]].forEach(Y=>{l.push(Y.x,Y.y,Y.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Ur;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,C=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new Ur,m=new Ur,h=new Ur,y=new Ur,g=new Mc,v=new Mc,b=new Mc,w=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),b.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=S(y);w(g,x+0,f,C),w(v,x+2,m,C),w(b,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],P=c[_+4],I=Math.max(x,C,P),O=Math.min(x,C,P);I>.9&&O<.1&&(x<.2&&(c[_+0]+=1),C<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new so(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as O_}from"three";var Ym=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Fi(r*.5,i,s):new O_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Fi=class extends so{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],l=[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,l,c,r,e,t),this.type=c}static fromJSON(r){return new Fi(r.radius,r.corner,r.cornerSides)}};import{Plane as R_,Shape as ch,Vector2 as kr,Vector3 as V_,MathUtils as jc,LineCurve as Fc,QuadraticBezierCurve as dh,CubicBezierCurve as Ka}from"three";import{CubicBezierCurve as $a,EllipseCurve as A_,LineCurve as Ya,LineCurve3 as I_,MathUtils as C_,QuadraticBezierCurve as Bc,SplineCurve as N_,Vector2 as ct,Vector3 as Zm}from"three";var zi=1e-12,Mn=class{constructor(r){this.position=new ct;this.startPosition=new ct;this.uuid=C_.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Mn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ln=class extends Mn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ln(this.parent).copy(this)}},Jt=class extends Mn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ln(this),new Ln(this))}static create(e,t){let o=new Jt(e,new ct(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?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 Jt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new ct,t=new ct){let[o,i]=this.computeTangents();return o&&i&&(Xm(o,e),Xm(i,t)),[e,t]}computeTangent(e=new ct){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ct){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Xm(n,r=new ct){let e=n.length();return r.set(-n.y/e,n.x/e)}var Dc=n=>n,Bn=new ct,Xa=new ct,E_=new ct,M_=new ct,L_=new ct,B_=new ct,Qm=new Zm,Jm=new Zm;function eh(n){let r=new ct;r.addVectors(n.v0,Bn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ct;return e.addVectors(n.v2,Xa.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new $a(n.v0,r,e,n.v2)}function Ui(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function D_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function G_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Gc(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function th(n,r,e){return Km(n,r)&&Km(r,e)&&Lc(n.position,r.position,e.position)}function Lc(n,r,e){return Bn.copy(r).sub(n).cross(Xa.copy(e).sub(n))===0}function rh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(l+c,s+u),o.set(l-c,s-u),[t,o]}function oh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function nh(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),d;return Gc(r,n,e)>Math.PI&&(a*=-1),Ui(u,l)?d=(l+u)*(t/a-.5)*8/3/(s-c):d=(s+c)*(t/a-.5)*8/3/(u-l),o.set(r.x-d*l,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Rc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Km(n,r){return Lc(n.position,n.controls[1].position,r.position)&&Lc(n.position,r.controls[0].position,r.position)}function ih(n,r,e,t,o=.5){let i=Bn.subVectors(r,n).multiplyScalar(o).add(n),s=Xa.subVectors(e,r).multiplyScalar(o).add(r),l=E_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=M_.subVectors(s,i).multiplyScalar(o).add(i),a=L_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=B_.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,a.x,a.y,d.x,d.y,t.x,t.y]}function sh(n,r,e=12,t=!0){let o=Jm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=Dc(r[c]),a=Bn,d=ao(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof $a||u instanceof Bc||u instanceof Ya){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&G_(i,o))continue;i===void 0&&(i=Qm),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function ah(n,r,e,t=12,o=!0){let i=Jm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=Dc(r[c]),d=Bn,p=ao(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof $a||a instanceof Bc||a instanceof Ya){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Qm:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function Vc(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=ao(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=ao(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=ao(n[0].roundedCurveCorner,r)*.5),t}function ao(n,r=12){return n&&n instanceof A_?r*2:n&&(n instanceof Ya||n instanceof I_)?1:n&&n instanceof N_?r*n.points.length:r}function lh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Dc(r[s]),c=ao(l,e),u=Bn;for(let a=0;a<=c;a++)if(l instanceof $a||l instanceof Bc||l instanceof Ya){if(l.getPoint(a/c,u),o!==void 0&&D_(o,u,zi))continue;o===void 0&&(o=Xa),o.copy(u),n.push(u.x,u.y),i++}}return Ui(n[0],n[n.length-2],zi)&&Ui(n[1],n[n.length-1],zi)&&(n.pop(),n.pop()),t&&i>1&&!(Ui(n[i-1],n[1],zi)&&Ui(n[i-2],n[0],zi))&&(n.push(n[0],n[1]),i++),n}var zc=new kr,j_=new kr,F_=new kr,z_=new kr,U_=new kr,k_=new kr,Se=class extends ch{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new R_(new V_(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=jc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Jt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],u=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=u;else return a+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=zc.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=jc.generateUUID()){let i;e instanceof kr?i=e:i=new kr(e,t);let s=new Jt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return sh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Vc(this.points,e,!1),this.roundedCurveDivisions=Vc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return ah(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),lh(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=ao(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(Rc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(zc.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=l[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Rc(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(i,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,a=l&&c&&th(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),b=Math.min(g,v),w=1-b/h,S=b/y,T=d.getPointAt(w,zc),_=p.getPointAt(S,j_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Gc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,O]=rh(T,_,P,F_,z_),A=oh(I,O,s.position),[R,U]=nh(A,T,_,P,U_,k_);x=new Ka(T.clone(),R.clone(),U.clone(),_.clone())}else x=new dh(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Fc)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,u=l.getUtoTmapping(o,0),a=ih(l.v0,l.v1,l.v2,l.v3,u);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return t}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],u=e.points[i+3],a=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Jt(jc.generateUUID(),new kr(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Ka&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof dh&&(i[l]=eh(i[l]));for(l=0,c=i.length;l<c;l++){let d=i[l],p=l>0?i[l-1]:null,f;d instanceof Ka?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Fc&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof Ka?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof Fc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof ch&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var kc=Math.PI*2;function Uc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function H_(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function uh(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function W_(n,r,e,t,o,i,s,l,c,u){let a=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*d-a*f-d*p;m<0&&(m=0),m/=a*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,b=(s-h)/o,w=(l-y)/i,S=(-s-h)/o,T=(-l-y)/i,_=uh(1,0,b,w),x=uh(b,w,S,T);return!u&&x>0&&(x-=kc),u&&x<0&&(x+=kc),{centerx:g,centery:v,ang1:_,ang2:x}}function ph({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,a=(r-t)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=W_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(kc/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let b=0;b<v;b++)c.push(H_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Uc(b[0],o,i,h,y),{x:T,y:_}=Uc(b[1],o,i,h,y),{x,y:C}=Uc(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:C}})}import{BufferAttribute as el,BufferGeometry as Z_}from"three";var ve;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(ve||(ve={}));var Be;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Be||(Be={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,l,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),ki=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Za=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Dn=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),fh=function(){function n(){var r=new Dn,e=new ki,t=new Za(0),o=new Za(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Za(0),t=new Za(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;ue(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;ue(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new Dn,e=new Dn,t=new ki,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Dn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ki;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ki;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Dn;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new ki;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,l=r.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&ae.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)ue(c.Sym.next===u.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),mh=function(){function n(){this.handle=null}return n}(),hh=function(){function n(){this.key=null,this.node=0}return n}(),q_=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new mh,this.handles[t]=new hh;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new mh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new hh}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;ue(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Hc=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),yh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),$_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new yh,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new yh;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),Y_=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var l=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){ue(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Hc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do ue(ae.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,ue(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),i=ae.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new Dn,f,m;if(ue(!ae.vertEq(u,c)),ue(ae.edgeSign(c,r.event,s)<=0),ue(ae.edgeSign(u,r.event,l)>=0),ue(s!==r.event&&l!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ae.intersect(c,s,u,l,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(l.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(l.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ae.vertEq(p,s)||ae.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)>=0||!ae.vertEq(u,r.event)&&ae.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(ae.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ae.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,l,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ae.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ae.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,l,c;if(o=e.eUp,ae.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new Hc;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ae.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Hc,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new $_(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++t===1)),ue(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new q_(i,ae.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ae.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),X_=function(){function n(){this.mesh=new fh,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=ve.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,l,c=[0,0,0],u=[0,0,0],a=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ae.edgeGoesRight(t.Lprev)||ae.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===Be.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===Be.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new fh),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=Be.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Y_.computeInterior(this,s);var l=this.mesh;return e===Be.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===Be.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function er(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?Be.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new X_;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var IV=ve.ODD,CV=ve.NONZERO,NV=ve.POSITIVE,EV=ve.NEGATIVE,MV=ve.ABS_GEQ_TWO,LV=Be.POLYGONS,BV=Be.CONNECTED_POLYGONS,DV=Be.BOUNDARY_CONTOURS;import{BufferAttribute as Ja,BufferGeometry as K_}from"three";var Qa=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Qa.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Qa.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=u,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Hi=Qa;Hi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Wi={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},qc={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},$c={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Wc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Gn=class extends K_{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),C=[];for(let P=x.length-1;P>=1;P-=2){let I=x[P-1],O=x[P-0];C.push(I,O)}return C}),a;try{a=er({windingRule:l,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=Wi}let d;try{d=er({windingRule:ve.ODD,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=qc}if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let C=_*2,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Hi(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],O=P+I,A={start:P,count:I,normals:[],continuous:[],concave:[]},R=P,U=O-1,q=P+1,te=this._shape.roundedCurves.length;do{let V=R-P,G=a.vertices[U*2+0],B=a.vertices[U*2+1],L=a.vertices[R*2+0],D=a.vertices[R*2+1],Y=a.vertices[q*2+0],H=a.vertices[q*2+1],F=L-G,z=D-B,E=Math.sqrt(F*F+z*z);F/=E,z/=E;let K=L-Y,re=D-H,oe=Math.sqrt(K*K+re*re);K/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=K,A.concave[V]=F*re-z*K>0;let X=a.vertexIndices[R];if(Array.isArray(X))A.continuous[V]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)A.continuous[V]=!0;else{let ie=Z===1?ee+1:ee-1;ie=(ie+te)%te;let ce=Z===1?0:1,se=this._shape.roundedCurves[ee].getTangent(Z),fe=this._shape.roundedCurves[ie].getTangent(ce);A.continuous[V]=se.dot(fe)>.95}}x&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[U,R,q]=[R,q,q+1],q>=O&&(q-=I)}while(q!==P+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,O*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((V,G)=>[G,G]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(G))*this._bevelSize,L=[],D=[],Y=[],H=[],F=0;for(let E=0;E<I;E++){let K=E*2,re=(E-1+I)%I*2,oe=a.vertices[A.start*2+K+0],X=a.vertices[A.start*2+K+1],ee=-A.normals[re+0]*B,Z=-A.normals[re+1]*B,ie=-A.normals[K+0]*B,ce=-A.normals[K+1]*B;if(A.concave[E]||!A.concave[E]&&x){let se=Math.atan2(Z,ee),fe=Math.atan2(ce,ie);fe>se&&(fe-=Math.PI*2);let De=fe-se;if(A.continuous[E]||x){let ye=se+De/2,ze=Math.cos(ye)*B,Te=Math.sin(ye)*B;L[2*F+0]=oe+ze*(x?-1:1),L[2*F+1]=X+Te*(x?-1:1),H[F]=E,F++}else{let ye=Math.max(1,Math.floor(i/4*Math.abs(De)/Math.PI));for(let ze=0;ze<=ye;ze++){let Te=se+De*(ze/ye),gt=Math.cos(Te)*B,Rt=Math.sin(Te)*B;L[2*F+0]=oe+gt,L[2*F+1]=X+Rt,H[F]=E,F++}}}else L[2*F+0]=oe+ee,L[2*F+1]=X+Z,H[F]=E,D[E]=F,F++,L[2*F+0]=oe,L[2*F+1]=X,H[F]=E,F++,L[2*F+0]=oe+ie,L[2*F+1]=X+ce,H[F]=E,Y[E]=F,F++}let z=er({windingRule:ve.POSITIVE,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:E=>{let re=E.Org.idx,oe=H[re],X=H[(re+1)%H.length];E.idx=[oe,X],E.Sym.idx=[X,oe]},vertexIdCallback:E=>{let K=E.Lprev.idx;return[K?K[1]:0,E.idx?E.idx[0]:0]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!z.vertexCount)break;for(let E=0;E<z.vertexIndices.length;E++){let[K,re]=z.vertexIndices[E];if(K===re)continue;let oe=re;re<K&&(oe+=I);for(let X=K;X<oe;X++){let ee=X%I,Z=(X+1)%I;if(!A.continuous[ee]||!A.continuous[Z]){z.vertexIndices[E]=[K,ee],z.vertexIndices.splice(E+1,0,[Z,re]),z.vertices.splice((E+1)*2,0,z.vertices[E*2],z.vertices[E*2+1]);break}}}$.push({bevelI:V,angle:G,size:B,boundary:z,reverseMap:H,insetPoints:L})}let W=(V,G,B)=>{let L=0,D=V.boundary.vertexIndices.length;for(;L<D&&B(V.boundary.vertexIndices[G]);)G=(G+1)%D,L++;return L},k=g.length;for(let V=1;V<$.length;V++){let G=$[V-1],B=$[V],L=G.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let Y=A.concave.length,H=0,F=Wc(H,I);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)H++,F=Wc(H,I);let z=G.boundary.vertexIndices.findIndex(F),E=B.boundary.vertexIndices.findIndex(F);do z=(z+1)%L;while(F(G.boundary.vertexIndices[z]));do E=(E+1)%D;while(F(B.boundary.vertexIndices[E]));H=(H+1)%I;let K=H,re=this._buildBevelVert(A,G,(z-1+L)%L),oe=this._buildBevelVert(A,B,(E-1+D)%D),X=re,ee=oe,Z,ie,ce=!1;do{F=Wc(H,I);let se=W(G,z,F),fe=W(B,E,F),De=ce;if(ce=!1,se&&!fe){for(let ye=0;ye<se;ye++)Z=this._buildBevelVert(A,G,(z+ye)%L,ye/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;ce=!0}else if(!se&&fe)for(let ye=0;ye<fe;ye++)ie=this._buildBevelVert(A,B,(E+ye)%D,ye/(fe-1)),g.push(ee.topN,X.topP,ie.topP),g.push(X.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&fe)if(Z=this._buildBevelVert(A,G,z,0),ie=this._buildBevelVert(A,B,E,0),De?(g.push(X.topN,ie.topP,ee.topN),g.push(X.topN,Z.topP,ie.topP),g.push(ie.bottomP,X.bottomN,ee.bottomN),g.push(ie.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP)),X=Z,ee=ie,se===fe)for(let ye=1;ye<se;ye++)Z=this._buildBevelVert(A,G,(z+ye)%L,ye/(se-1)),ie=this._buildBevelVert(A,B,(E+ye)%D,ye/(fe-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP),X=Z,ee=ie;else if(se>fe){let ye=se/fe,ze=0;for(let Te=1;Te<se;Te++)Z=this._buildBevelVert(A,G,(z+Te)%L,Te/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Te>(ze+1)*ye&&(ze++,ie=this._buildBevelVert(A,B,(E+ze)%D,ze/(fe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ye=fe/se,ze=0;for(let Te=1;Te<fe;Te++)ie=this._buildBevelVert(A,B,(E+Te)%D,Te/(fe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie,Te>(ze+1)*ye&&(ze++,Z=this._buildBevelVert(A,G,(z+ze)%L,ze/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}z=(z+se)%L,E=(E+fe)%D,H=(H+1)%Y}while(H!==K)}if(this._buildWall($,A,g),x){let V=[];for(let G=g.length-1;G>=k+2;G-=3){let B=g[G-2],L=g[G-1],D=g[G-0];V.push(D,L,B)}g.splice(k,g.length-k,...V)}if(x){let V=[];for(let G=$[$.length-1].boundary.vertices.length-1;G>=1;G-=2){let B=$[$.length-1].boundary.vertices[G-1],L=$[$.length-1].boundary.vertices[G-0];V.push(B,L)}v.push(V)}if(!x){let V=$[$.length-1],G;try{G=er({windingRule:$.length>1?ve.POSITIVE:ve.ODD,elementType:Be.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{G=$c}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<G.elementCount*3;B+=3){let L=this._buildSurfaceVert(G,G.elements[B+0]),D=this._buildSurfaceVert(G,G.elements[B+1]),Y=this._buildSurfaceVert(G,G.elements[B+2]);g.push(L.top,D.top,Y.top),g.push(Y.bottom,D.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Ja(Uint32Array.from(g),1),w=new Ja(this._buffer.positions,3),S=new Ja(this._buffer.normals,3),T=new Ja(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,T.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",T),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,T=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],P=e.normals[g+1];if(p){let U=C-_,q=P-x;_=_+U*(1-i),x=x+q*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),O=I*3,A=I*2,R={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=x*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=x*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S,d||(I+=2,O+=6,A+=4,R.topP=I+0,R.bottomP=I+1,this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=C*f,this._buffer.normals[O+1]=P*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=C*f,this._buffer.normals[O+4]=P*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new Gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var Rn=class extends Z_{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=Be.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:Be.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}if(!c&&!u)try{l=er({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{l=Wi}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new el(new Float32Array(p*3),3),this._normalAttribute=new el(new Float32Array(p*3),3),this._uvAttribute=new el(new Float32Array(p*2),2),this._indexAttribute=new el(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1],C=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new Rn(this._shape,this._curveSegments);return e.userData=jr(this.userData),e}};var Vn=class extends Gn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Vn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var _t=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new Rn(n.shape,o,{windingRule:s}):l=new Vn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as xh,Vector2 as vh}from"three";var bh=Math.PI*2,Fn=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=Q_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=_t.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function Q_(n,r,e,t,o,i){if(t>=bh)return o>30||o%4===0?(eT(n,r,e,i),Math.round(o/4)):gh(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},u=ph({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?J_(n,s.x,s.y,u,o,r,e,i):gh(n,t,o,r,e,i)}function J_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(jn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=jn(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return l>0?Sh(n,i,s,l):n.addPoint(jn(0,0)),c}function gh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(jn(u,a))}return r<bh?i>0?Sh(n,t,o,i):n.addPoint(jn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&wh(n,t,o,i)),1}function eT(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(tl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(tl(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(tl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(tl(o,i-e,o+l,i-e,o-l,i-e)),t>0&&wh(n,r,e,t)}function jn(n,r){return new Jt(xh.generateUUID(),new vh(n,r))}function tl(n,r,e,t,o,i){let s=jn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Sh(n,r,e,t){_h(n,r,e,t).forEach(i=>n.addPoint(i))}function wh(n,r,e,t){let o=_h(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function _h(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new vh(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=xh.generateUUID(),u}).reverse();return l.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(u)}),l}import{BufferGeometry as tT,Float32BufferAttribute as Yc,Vector3 as Th}from"three";var Ph=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:u,cornerRadius:a,cornerSegments:d}=n.parameters,p=new qi(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},qi=class extends tT{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new Th,h=new Th,y=m(),g=m(),v=m(),b,w,S,T,_,x,C,P,I=m(),O=m(),A=m(),R=m(),U=m(),q=m(),te=m(),$=m(),W=t-2*c+.001,k=W/s,V=Math.ceil(l*s),G=V+1,B=W/V,L=-W/2,D=a+1,Y=2*Math.PI/a,H=Math.PI/2/p,F=.01,z=Math.min((1-d/100)*c,c-F),E=c-z,K=0,re=2,oe=p*re+re,X=D*oe/re,ee=X+D*G,Z=D*(G+oe),[ie,ce,se]=[3,3,2].map(Ve=>Array(Z*Ve).fill(0)),fe=[],De=i-c;function ye(Ve,Ct){let lr=Math.PI/2;x=Ct*B,P=2*Math.PI*(x%k)/k+lr,x+=L,C=Math.sin(P)*De,_=Math.cos(P)*De,r?Ve.set(_,C,x):Ve.set(_,x,C)}ye(h,-1e-10),ye(y,0),I.copy(h),ye(h,1);let ze=h.distanceTo(y),Te=f?0:E+z,gt=ze*V+2*Te,Rt=z,ko=gt-Te;for(let Ve=0;Ve<=V;Ve++){ye(g,Ve),$.subVectors(g,I).normalize(),I.copy(g),q.copy(g).setComponent(+r+1,0).normalize(),te.crossVectors($,q).normalize();let Ct=Ve===0,lr=Ve===V,Rg=Ct?3*Math.PI/2:H,Vg=Ct?Rt:ko,jg=Ct?D:ee,Fg=Ct?0:Z-D,zg=$.clone().multiplyScalar(Ct?-E:E).add(g),Ug=$.clone().multiplyScalar(Ct?-1:1).normalize();for(let Er=0;Er<D;Er++){let cu=Er*Y;if(O.addVectors(h.copy(q).multiplyScalar(c*Math.cos(cu)),y.copy(te).multiplyScalar(c*Math.sin(cu))),A.copy(O).normalize(),Ct||lr){f||(K=Fg+Er,[0,1,2].forEach(xt=>{ie[K*3+xt]=zg.getComponent(xt),ce[K*3+xt]=Ug.getComponent(xt)}),se[K*2]=+lr,se[K*2+1]=Er/a),y.copy(A).multiplyScalar(z),v.addVectors(g,y);for(let xt=0;xt<p;xt++){let Ul=xt*H+Rg;R.addVectors(h.copy($).multiplyScalar(E*Math.sin(Ul)),y.copy(A).multiplyScalar(E*Math.cos(Ul))),U.copy(R).normalize(),y.addVectors(v,R),R.normalize(),K=jg+xt*D+Er,[0,1,2].forEach(Ds=>{ie[K*3+Ds]=y.getComponent(Ds),ce[K*3+Ds]=U.getComponent(Ds)});let kg=+Ct+Math.sin(Ul);se[K*2]=(Vg+E*kg)/gt,se[K*2+1]=Er/a}}y.addVectors(g,O),K=X+Ve*D+Er,[0,1,2].forEach(xt=>{ie[K*3+xt]=y.getComponent(xt),ce[K*3+xt]=A.getComponent(xt)}),se[K*2]=(Te+Ve*ze)/gt,se[K*2+1]=Er/a}}let It=G+2*p+re,Ls=1,[Bs,xi]=[+f,It-1];f&&(xi-=1);for(let Ve=Bs;Ve<=xi-1;Ve++){let Ct=f&&Ve===xi-1;for(let lr=0;lr<D-1;lr++)b=Ve*D+lr,w=b+1,S=(Ct?lr:b)+D,T=(Ct?lr+1:w)+D,Ve===0?fe.push(w,T,S):Ve===It-2?fe.push(b,w,S):fe.push(b,w,S,w,T,S)}this.setIndex(fe),this.setAttribute("position",new Yc(ie,3)),this.setAttribute("normal",new Yc(ce,3)),this.setAttribute("uv",new Yc(se,2))}};import{IcosahedronGeometry as rT}from"three";var Oh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new $i(r*.5,i,s):new rT(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},$i=class extends so{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],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],l="IcosahedronGeometry";super(i,s,l,r,e,t),this.type=l}static fromJSON(r){return new $i(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as oT,Shape as nT}from"three";var Ah=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new nT;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new oT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Dh,BufferGeometryLoader as yT,Vector3 as gT,BoxGeometry as Gh}from"three";import{BufferGeometry as pT,Vector2 as Qc,Vector3 as Bh}from"three";import{Box3 as iT,BufferAttribute as Yi,BufferGeometry as Ih,Color as Zc,EventDispatcher as sT,Float32BufferAttribute as zn,Matrix3 as Ch,Matrix4 as Lh,MathUtils as aT,Object3D as lT,Sphere as cT,Vector2 as Dt,Vector3 as nt,Vector4 as dT}from"three";var gr=new Lh,Xc=new lT,rl=new nt,lo=class extends sT{constructor(){super(),this.uuid=aT.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new Ch().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return gr.makeRotationX(r),this.applyMatrix4(gr),this}rotateY(r){return gr.makeRotationY(r),this.applyMatrix4(gr),this}rotateZ(r){return gr.makeRotationZ(r),this.applyMatrix4(gr),this}translate(r,e,t){return gr.makeTranslation(r,e,t),this.applyMatrix4(gr),this}scale(r,e,t){return gr.makeScale(r,e,t),this.applyMatrix4(gr),this}lookAt(r){return Xc.lookAt(r),Xc.updateMatrix(),this.applyMatrix4(Xc.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new nt().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new Zc().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new nt().fromBufferAttribute(s,p),new nt().fromBufferAttribute(s,f),new nt().fromBufferAttribute(s,m)],v=new Un(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Dt().fromBufferAttribute(c,p),new Dt().fromBufferAttribute(c,f),new Dt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Dt().fromBufferAttribute(u,p),new Dt().fromBufferAttribute(u,f),new Dt().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(rl).negate(),this.translate(rl.x,rl.y,rl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new Lh;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new nt,e=new nt;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new nt;if(r){let t=new nt,o=new nt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],u=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,u),o.subVectors(c,u),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new lo;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let u=new nt,a={a:new nt,b:new nt,c:new nt};i.push(u),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(l.normal),u.a.copy(l.vertexNormals[0]),u.b.copy(l.vertexNormals[1]),u.c.copy(l.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new iT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new cT),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,l=r.vertices,c=this.faces,u=r.faces,a=this.colors,d=r.colors;e!==void 0&&(o=new Ch().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,b=new Un(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=v.length;w<S;w++)y=v[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++)v.push(g[b].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new nt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,b),_=a(_,5,w),_=a(_,6,S),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(b&&t.push(d(h.normal)),w){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new lo().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Kc().fromGeometry(this),e=new Ih,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",ol.call(new Yi(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",ol.call(new Yi(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Nh.call(new Yi(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Eh.call(new Yi(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Eh.call(new Yi(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let u=s[l],a=new zn(u.data.length*3,3);a.name=u.name,i.push(ol.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new zn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Mh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new zn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Mh.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new Ih,t=r.geometry;if(r.isPoints||r.isLine){let o=new zn(t.vertices.length*3,3),i=new zn(t.colors.length*3,3);if(e.setAttribute("position",ol.call(o,t.vertices)),e.setAttribute("color",Nh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new zn(t.lineDistances.length,1);e.setAttribute("lineDistance",uT.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};lo.prototype.isGeometry=!0;var Kc=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let b=v.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=v.normal;this.normals.push(S,S,S)}let w=v.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Dt,new Dt,new Dt))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Dt,new Dt,new Dt))}for(let S=0;S<c;S++){let T=l[S].vertices;u[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<d;S++){let T=a[S].vertexNormals[g];p[S].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Un=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new nt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Zc,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function uT(n){return this.array.set(n),this}function Nh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new Zc),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Eh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new Dt),r[e++]=i.x,r[e++]=i.y}return this}function ol(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new nt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Mh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new dT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var fT=["a","b","c"];function mT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Jc(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function ed(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,u;if(t.has(c))u=t.get(c);else{let a=e[s],d=e[l];u={a,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function hT(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],ed(s.a,s.b,n,t,s,e),ed(s.b,s.c,n,t,s,e),ed(s.c,s.a,n,t,s,e)}function nl(n,r,e,t,o){n.push(new Un(r,e,t,void 0,void 0,o))}function kn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function il(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var sl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof pT?r=new lo().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Bh,t,o,i,s,l,c=r.vertices,u=r.faces,a=r.faceVertexUvs[0],d=a!==void 0&&a.length>0,p=[],f=new Map;hT(c,u,p,f);let m=[],h,y,g,v,b,w,S;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new Bh,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[mT(v,fT[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,C,P,I,O,A=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,q,te,$,W=[],k=[],V,G,B,L,D=new Qc,Y=new Qc,H=new Qc;for(o=0,i=u.length;o<i;o++)v=u[o],q=Number(Jc(v.a,v.b,f).newEdge)+U,te=Number(Jc(v.b,v.c,f).newEdge)+U,$=Number(Jc(v.c,v.a,f).newEdge)+U,nl(W,q,te,$,v.materialIndex),nl(W,v.a,q,$,v.materialIndex),nl(W,v.b,te,q,v.materialIndex),nl(W,v.c,$,te,v.materialIndex),d&&(V=a[o],G=V[0],B=V[1],L=V[2],D.set(kn(G.x,B.x),kn(G.y,B.y)),Y.set(kn(B.x,L.x),kn(B.y,L.y)),H.set(kn(G.x,L.x),kn(G.y,L.y)),il(k,D,Y,H),il(k,G,D,H),il(k,B,Y,D),il(k,L,H,Y));r.vertices=R,r.faces=W,d&&(r.faceVertexUvs[0]=k)}};var We=new gT,Rh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Dh().copy(new Gh(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(We),t={width:We.x,height:We.y,depth:We.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Dh().copy(new Gh(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(We)):We.set(s.width,s.height,s.depth),(r!==We.x||e!==We.y||t!==We.z)&&i.scale(We.x===0?1:r/We.x,We.y===0?1:e/We.y,We.z===0?1:t/We.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new sl(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new yT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(We);let s=100/We.x;Object.assign(i.parameters,{width:100,height:We.y*s,depth:We.z*s}),r(this.build(i))})}};var al=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=_t.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as xT,Float32BufferAttribute as td,Vector2 as xr,Vector3 as Ze}from"three";var Vh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=new od(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Xi(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function rd(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let u=s.add(l).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,t/Math.sin(u))}}function vT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var od=class extends xT{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,b=new Ze(0,-f,0),w=new Ze(0,f,0),S=new xr(r,-f),T=new xr(h,-f),_=new xr(0,w.y).sub(T),x=new xr(0,w.y).sub(S),C=new xr(_.y,-_.x).normalize(),P=new xr(x.y,-x.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let k=new Ze(C.x,C.y,0),V=new Ze(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);A=k.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),q=new Ze;if(!i){u.push(b.x,b.y,b.z),a.push(0,-1,0),d.push(0,0);let k=p++,V=[],G=S.clone(),B=R/Math.cos(Math.PI/t);G.x-=B;for(let L=0;L<t;L++){let D=L/t*Math.PI*2+m,Y=new xr(Math.sin(D),Math.cos(D));Xi(G,Y,q),u.push(q.x,q.y,q.z),a.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],k,V[(L+1)%V.length])}let te=[];{let k=new Ze,V=new Ze,G=new Ze,B=new Ze,L=new Ze,D=new Ze;for(let Y=0;Y<t;Y++){let H=Y/t*Math.PI*2+m,F=(Y+.5)/t*Math.PI*2+m,z=(Y+1)/t*Math.PI*2+m,E=new xr(Math.sin(H),Math.cos(H)),K=new xr(Math.sin(F),Math.cos(F)),re=new xr(Math.sin(z),Math.cos(z));Xi(S,E,V),Xi(S,re,G),Xi(C,K,k),rd(w,V,G,U,U,B),u.push(B.x,B.y,B.z),rd(V,w,G,U,R,L),u.push(L.x,L.y,L.z),rd(G,V,w,R,U,D),u.push(D.x,D.y,D.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,X=p++,ee=p++;if(c.push(oe,X,ee),s>0){{let ce=V.clone().add(G).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),De=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ye=D.clone().sub(L);$(ce,ye,De,_.angle())}let Z,ie;{let ce=new Ze;Xi(P,re,ce);let se=D.clone().add(B).multiplyScalar(.5);se=vT(se,G,w);let fe=D.clone().sub(B);[Z,ie]=$(se,fe,ce,A,B.y)}{let ce=Z,se=ce.clone().setY(0).normalize(),fe=new Ze(0,-1,0),De=se.clone().cross(fe);W(ce,se,fe,De)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,fe=w.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let De=new Ze,ye=[];for(let Te=0;Te<l;Te++){let gt=[],Rt=Math.PI/2-se*Te/l,ko=Math.cos(Rt),It=Math.sin(Rt),Ls=F;for(let Bs=0;Bs<=Te;Bs++){let xi=Math.cos(Ls),Ve=Math.sin(Ls);k.x=ko*Ve,k.y=It,k.z=ko*xi,De.copy(fe).addScaledVector(k,s),u.push(De.x,De.y,De.z),a.push(k.x,k.y,k.z),d.push(0,0),gt.push(p++),Ls+=Math.PI*2/Te/t}ye.push(gt)}ie.reverse(),ye.push(ie);let ze=ye.length-1;for(let Te=0;Te<ze;Te++){let gt=ye[Te],Rt=ye[Te+1],ko=gt.length-1;c.push(Rt[1],gt[0],Rt[0]);for(let It=1;It<=ko;It++)c.push(gt[It],gt[It-1],Rt[It]),c.push(Rt[It+1],gt[It],Rt[It])}}}}}this.setIndex(c),this.setAttribute("position",new td(u,3)),this.setAttribute("normal",new td(a,3)),this.setAttribute("uv",new td(d,2));function $(k,V,G,B,L){let D=-B/2,Y=(Math.PI-B)/2,H=V.clone().normalize().cross(G);k.addScaledVector(G,-s/Math.sin(Y));let F=new Ze,z=new Ze,E=1,K=p,re=[];for(let oe=0;oe<=l;oe++){let X=D+oe/l*B;z.set(0,0,0),z.addScaledVector(H,Math.sin(X)),z.addScaledVector(G,Math.cos(X));for(let ee=0;ee<=E;ee++){let Z=ee/E-.5;if(F.copy(k),F.addScaledVector(V,Z),F.addScaledVector(z,s),L!=null){let ie=Math.max(0,F.y-L);F.addScaledVector(V,-ie/V.y)}u.push(F.x,F.y,F.z),a.push(z.x,z.y,z.z),d.push(0,0),ee===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let X=0;X<E;X++){let ee=K+X+(E+1)*oe,Z=ee+(E+1),ie=Z+1,ce=ee+1;c.push(ee,Z,ce),c.push(Z,ie,ce)}return[k.clone().addScaledVector(V,.5),re]}function W(k,V,G,B){let L=Math.PI/2,D=x.angle()-L,Y=[],H=new Ze,F=new Ze;for(let E=0;E<=l;E++){let K=[],re=E/l;for(let oe=0;oe<=E;oe++){let ee=((E?oe/E:0)-.5)*v,Z=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(D)*Z),se=(L+ce)*re,fe=Math.cos(se),De=Math.sin(se);H.set(0,0,0),H.addScaledVector(V,De*Z),H.addScaledVector(G,fe),H.addScaledVector(B,De*ie),F.copy(k).addScaledVector(H,s),u.push(F.x,F.y,F.z),a.push(H.x,H.y,H.z),d.push(0,0),K.push(p++)}Y.push(K)}let z=Y.length-1;for(let E=0;E<z;E++){let K=Y[E],re=Y[E+1],oe=K.length-1;c.push(K[0],re[1],re[0]);for(let X=1;X<=oe;X++)c.push(K[X-1],K[X],re[X]),c.push(K[X],re[X+1],re[X])}}}};var ll=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,T){return S>e&&T>t?Math.min(w*e/S,w*t/T):S>e?w*e/S:T>t?w*t/T:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=d.x,y=d.y,g=a.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let v=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=_t.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as bT}from"three";var jh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:u}=n.parameters,a=new bT(.5*r,o,i,s,l,c,u);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as ST}from"three";var Fh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new ST(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as wT,Float32BufferAttribute as nd,Vector3 as _T}from"three";var zh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new id(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},id=class extends wT{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(F=0,z=0,E=0)=>new _T(F,z,E),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,T,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),C=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=S.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,S.z-a),m.subVectors(S,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(R).add(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let q=(Math.PI-o)/s;for(let F=0;F<=s;F++){let z=p+o+F*q;m.set(0,Math.sin(z)*A,Math.cos(z)*A),m.add(U),h.set(0,x(z),C(z)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let te=Math.sin(q/2)*A*2,$=d.length-1,W=d[0][0].distanceTo(d[1][0]),k=d[$-1][0].distanceTo(d[$][0]),V=W+te*s+k;d[0].push(1);for(let F=0;F<=s;F++)d[F+1].push(1-(W+F*te)/V);d[$].push(0);let[G,B,L]=d[0],D,Y,H;for(let F=1;F<d.length;F++)[D,Y,H]=d[F],l.push(b,G.y,G.z,b,D.y,D.z,w,G.y,G.z,w,G.y,G.z,b,D.y,D.z,w,D.y,D.z),c.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),u.push(0,L,0,H,1,L,1,L,0,H,1,H),[G,B,L]=[D,Y,H];this.setAttribute("position",new nd(l,3)),this.setAttribute("normal",new nd(c,3)),this.setAttribute("uv",new nd(u,2))}};var cl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,T=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(T,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,T)),y+=h,S=f+Math.cos(y)*g,T=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,T)),y+=h}a.isClosed=!0;for(let w=0,S=a.points.length;w<S;w++)a.points[w].roundness=i;a.roundness=i,a.update();let b=_t.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as TT}from"three";var Uh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new TT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var kh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=PT(r,e,t,r*.5,s,i,0,0,o,l,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function PT(n,r,e,t,o,i,s,l,c,u,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new qi(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as OT}from"three";var Hh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new OT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Wh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=_t.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as $h,Vector3 as Qe,Matrix4 as Ki,BufferGeometry as Yh,BufferAttribute as sd,MathUtils as ad}from"three";function qh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function AT(n,r,e){let t=[new Qe,new Qe,new Qe],o=[new Qe,new Qe,new Qe];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let l=o[s],c=ad.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new Ki().makeBasis(t[0],t[1],t[2])}var Xh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??Fn.create({parameters:uc}).userData.shape;return{path:n.path??en.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...la,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new ld(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Yh,{userData:{...n,type:"PathGeometry"}})}},ld=class extends Yh{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!qh(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=this.inputs.path.isClosed?e.length:e.length-1,l=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-l+1),s+2),a=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+l)%e.length:Math.min(O+l,e.length-1);a.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,R)=>{a[O]=a[O].clone().lerp(a[A],R),d[O]=AT(d[O],d[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(a.length-1,a.length-2,1-h)),o===0){let O=a.length-1;a[O].copy(a[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:v,vertices:b}=this._computeShapePoints(5),w=0,S=0;v.sort((O,A)=>O.start-A.start),v.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let T=S*u,_,x=0;if(this._isOpenEnded()){try{_=er({windingRule:ve.ODD,elementType:Be.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=$c}x=_.vertexCount}let C=T+2*x,P={positions:new Float32Array(C*3),normals:new Float32Array(C*3),uvs:new Float32Array(C*2)},I=[];v.forEach(O=>{this._extrudeRegion(O,b,d,a,P,I,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,I,P,d[0],a[0],!1),this._closeEnd(_,T+x,I,P,d[d.length-1],a[a.length-1],!0)),this.setAttribute("position",new sd(P.positions,3)),this.setAttribute("normal",new sd(P.normals,3)),this.setAttribute("uv",new sd(P.uvs,2)),this.setIndex(I)}_extractPathPoints(){let t=ka(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new Qe,l=new Qe,c=new Qe,u=new Qe,a=new Qe(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(v).normalize(),S=b.clone().sub(g).normalize(),T=w.clone().add(S).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let C=new Ki().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new Qe(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new Ki().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:l,startScale:c,endScale:u}=this.inputs.parameters.extrusion,a=new Ki,d=new Ki;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));a.makeRotationZ(ad.lerp(s,s+l,m));let h=ad.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(a).multiply(d)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let b=y[v-1],w=y[v-0];g.push(b,w)}return g}),l;try{l=er({windingRule:t,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=Wi}let c;try{c=er({windingRule:ve.ODD,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=qc}if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],b=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],b=l.elements[g+1],w=v+b,S={start:v,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let T=v,_=w-1,x=v+1,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],R=l.vertices[T*2+1],U=l.vertices[x*2+0],q=l.vertices[x*2+1],te=A-I,$=R-O,W=Math.sqrt(te*te+$*$);te/=W,$/=W;let k=A-U,V=R-q,G=Math.sqrt(k*k+V*V);k/=G,V/=G,S.normals[P*2+0]=-V,S.normals[P*2+1]=k;let B=l.vertexIndices[T];if(Array.isArray(B))S.continuous[P]=!1;else{let[L,D]=o.getCurveIndexFromVertexId(B-1,!0);if(D>0&&D<1)S.continuous[P]=!0;else{let Y=D===1?L+1:L-1;Y=(Y+C)%C;let H=D===1?0:1,F=o.roundedCurves[L].getTangent(D),z=o.roundedCurves[Y].getTangent(H);S.continuous[P]=F.dot(z)>.95}}y&&(S.normals[P*2+0]*=-1,S.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=w&&(x-=b)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new Qe,a=new Qe,d=new Qe,p=new Qe,f=new $h;o.forEach((h,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;a.set(t[S+0],t[S+1],0),p.copy(u).sub(a),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,v,d,p,f),v++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;a.set(t[S+0],t[S+1],0),p.copy(a).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,v,d,p,f),v++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),v=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&v++;let w=b===e.count-1?0:v+1,S=y+v,T=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,T,S,x,_):l.push(S,T,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new Qe(0,0,c?-1:1).applyMatrix4(s),d=new Qe,p=new $h;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as Kh,BufferGeometry as cd}from"three";import{mergeBufferGeometries as IT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Zh(){let n=new cd;return n.setAttribute("position",new Kh(new Float32Array([]),3)),n.setIndex(new Kh(new Uint16Array([]),1)),n}var CT=Zh().attributes,NT=12,ET=1,Hn=class extends cd{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,CT),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:a}=e,d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,p=MT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Se().fromShape(S));this.vectorShapes=v;let b=v.map(S=>_t.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?ET:NT}})),w=b.length?IT(b):Zh();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,T])=>{this.setAttribute(S,T)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Br(new cd,Hn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function MT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
2
2
|
`?(t[t.length-1]+=o,o="",i===`
|
|
3
|
-
`&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as pd,BufferAttribute as ry,Uint32BufferAttribute as fd,Float32BufferAttribute as md,Matrix4 as RT,Vector3 as Ji,Sphere as VT,Box3 as jT,BoxGeometry as FT}from"three";var ey,Yn=new Promise(n=>{ey=n}),Jh=!1;async function ty(){if(Jh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.335/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});ey(i),Jh=!0}import{BufferGeometryLoader as BT}from"three";function Co(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new BT().parse(n);else{if(n.type==="SubdivGeometry")return new Fe(n,e);if(n.type==="TextGeometry")return new qn(n,r)}let o;try{o=ud(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(tn.defaultData(),100,100);t.shape=i,o=ud(t)}return o}import{Matrix4 as DT}from"three";var GT=new DT;function Qi(n,r,e,t){let o=n.position.array,i=n.normal.array,s=GT.makeScale(r,e,t).invert().elements,l,c,u;for(var a=0,d=o.length;a<d;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],u=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*u,i[a+1]=s[1]*l+s[5]*c+s[9]*u,i[a+2]=s[2]*l+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var cl=new jT,Xn=new Ji,de;Yn.then(n=>{de=n});var oy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ny=new Uint32Array([0,1,2,3]),iy=new Uint8Array([4]),Fe=class extends pd{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Kr.div(t,o);this.subdividedGeometry&&Qi(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Qi(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Xn.fromArray(i));let l=Xn.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Fe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new FT(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new VT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;cl.setFromBufferAttribute(t),cl.getCenter(o),e.boundingSphere.radius=o.distanceTo(cl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),cl.getSize(Xn);let i={width:Xn.x,height:Xn.y,depth:Xn.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=Fe.allocate(e,i)}catch(a){console.error(a,e),s=Fe.allocate({positionWASM:oy,indexWASM:ny,verticesPerFaceWASM:iy},i)}if(de.set_destination_refinement_level(s,0),l=Fe.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=Fe.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=Fe.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i;if(e.type==="TorusGeometry"&&e.arc===Math.PI*2){let{width:d,height:p,depth:f,arc:m,tubularSegments:h,radialSegments:y}=e;i=new Io(!0,d,f,p,d*.5,m/(2*Math.PI),h,f/2,0,y,0,0,!0)}else i=e.shape!==void 0?t.geometry:Co(e,o,!1);let s,l,c,u;({positions:s,triIndices:u}=xd(i.getAttribute("position"),i.getIndex()));let a;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,p=d+e.radialSegments*3;a=[d,p]}return{indices:l,verticesPerFace:c}=vd(s,u,i,a),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=oy,i=ny,s=iy);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),b=new Uint32Array(de.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new RT().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?de.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):de.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),S}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,u=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=de.HEAPU32[u[d]>>2],b=de.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let w=new pd;if(w.setIndex(new fd(b,1)),w.setAttribute("position",new md(f,3)),w.setAttribute("normal",new md(h,3)),t){w.setAttribute("faceMap",new fd(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new ry(S,4))}return de.free_mesh_data(l),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=de.HEAPU32[l[u]>>2],d=de.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=de.HEAPU32[l[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new pd;m.setAttribute("position",new md(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new ry(h,3)),m.setIndex(new fd(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var sy=["getX","getY","getZ"];function xd(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<t;u++){let a=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[sy[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[sy[p]](a));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var dl=new Ji,hd=new Ji,yd=new Ji,gd=new Ji;function vd(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),l=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((d,p)=>Math.floor(p/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let u=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(u++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??r.length;s<l;)if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){dl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),hd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),yd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),gd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),hd.sub(dl).normalize(),yd.sub(dl).normalize(),gd.sub(dl).normalize();let c=hd.cross(yd).dot(gd);Math.abs(c)>.005||t&&t.some((u,a)=>a%2===1?!1:s>=t[a]&&s<t[a+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,d=0;a<n.length;a+=3,d++)n[a+2]===0&&(s.push(d),c++),n[a+2]===u&&l.push(d);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var tr={};Kg(tr,{calcBoolean:()=>WT,calcBooleanTopological:()=>HT,freeMeshSet:()=>YT,getMeshSet:()=>qT,transformMeshSet:()=>$T});var zT,ay=new Promise(n=>{zT=n});import{Float32BufferAttribute as ly,Sphere as UT}from"three";var ye,Kn;ay.then(n=>ye=n);function kT(n,r,e){let t,{positions:o,triIndices:i}=xd(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=vd(o,i,n);s=c.length,t=[];for(let u=0,a=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[a++])}}else{let l=i.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=i[c++],t[u++]=i[c++],t[u++]=i[c++]}return{positions:o,faceIndices:t,nFaces:s}}function cy(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,r):new Float32Array(ye.HEAPF32.buffer,i,r)).set(n,0),i}function dy(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function HT(n,r){Kn===void 0&&(Kn=ye.init_csg());let e=cy(n),t=ye.csg_calc_topological(Kn,e,n.length,dy(r));ye._free(e);let o=6,i=ye.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ye.HEAPU32[i[l]>>2],u=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ye.HEAPU32[i[l]>>2],d=new Uint32Array(ye.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ye.HEAPU32[i[l]>>2],f=new Uint8Array(ye.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ye.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function WT(n,r,e,t){Kn===void 0&&(Kn=ye.init_csg());let o=cy(n),i=ye.csg_calc(Kn,o,n.length,t,dy(r));ye._free(o);let s=5,l=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ye.HEAPU32[l[u]>>2],d=ye.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ye.HEAPU32[l[u]>>2],f=ye.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new ly(d,3)),e.setAttribute("normal",new ly(f,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new UT),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(i),m}function qT(n,r,e){if(ye===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,v)=>g+v,0)+i);for(let g=0,v=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=kT(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=ye._malloc(a),m=new Float32Array(ye.HEAPF32.buffer,f,c),h=new Uint32Array(ye.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ye.get_csg_mesh(f,s,f+d,l,i)}function $T(n,r){ye.transform_csg_mesh(n,r.elements)}function YT(n){ye.free_csg_mesh(n)}var XT={ConeGeometry:$m,CubeGeometry:Ym,CylinderGeometry:qm,DodecahedronGeometry:Xm,EllipseGeometry:Un,HelixGeometry:Oh,IcosahedronGeometry:Ah,LatheGeometry:Ih,NonParametricGeometry:Vh,PolygonGeometry:sl,PyramidGeometry:jh,RectangleGeometry:al,SphereGeometry:Fh,PlaneGeometry:zh,BackdropGeometry:Uh,StarGeometry:ll,TextFrameGeometry:kh,TorusGeometry:Hh,TorusKnotGeometry:Wh,TriangleGeometry:qh,PathGeometry:Kh,VectorGeometry:Tt},ud=n=>XT[n.type].create(n);function es(n){return n!==null&&"booleanOp"in n}var Zn=class extends Ha(ZT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new KT}updateVisible(){super.updateVisible(),this.visible=!es(this.parent)&&this.visible,es(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(tr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),es(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Zn&&(e.freeBooleanPointer(),es(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&es(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var ul=new QT;function ts(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,u=-1/0,a=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>u&&(u=f),m>a&&(a=m)}ul.min.set(i,s,l),ul.max.set(c,u,a),ul.getCenter(t),ul.getSize(o).multiplyScalar(.5)}var tP=new JT,rP=new eP,it=class extends Zn{constructor(r,e){super(tP,rP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?ts(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as dO,Matrix4 as uO,Sphere as Gy,Vector3 as pO}from"three";import{BufferAttribute as aO,Float32BufferAttribute as Dy,MathUtils as Wd,Vector3 as qd}from"three";import{ShaderMaterial as YP}from"three";import{CubeReflectionMapping as mP,CubeRefractionMapping as hP,CubeUVReflectionMapping as yP,LinearEncoding as my,sRGBEncoding as gP}from"three";var rs=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};import{MathUtils as oP}from"three";var Je=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=oP.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof Je&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var bd=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},qe=new bd;import{Vector2 as uy}from"three";import{MathUtils as nP}from"three";var le=class extends Je{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=nP.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ne=class extends le{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var et=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof uy?e:new uy(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as py}from"three";var st=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof py?e:new py(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as iP}from"three";var $e=class extends iP{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],l=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Ft=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof $e?e:new $e(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var sP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,fy=/[a-z_0-9]+/gi,Q=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let l,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let a=[];for(;l=fy.exec(this.src);)a.push(l);for(let d=0;d<a.length;d++){let p=a[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&qe.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=qe.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||qe.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&qe.contains(h)&&e.include(qe.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=sP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(fy);if(l){let c=0;for(;c<l.length;){let u=l[c++],a;u==="in"||u==="out"||u==="inout"?a=l[c++]:(a=u,u="");let d=l[c++];this.inputs.push({name:d,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var aP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Sd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Sd.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,u="",a=aP.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},be=Sd;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var lP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
-
)*?)}`,"gim"),
|
|
3
|
+
`&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as ud,BufferAttribute as ty,Uint32BufferAttribute as pd,Float32BufferAttribute as fd,Matrix4 as GT,Vector3 as Qi,Sphere as RT,Box3 as VT,BoxGeometry as jT}from"three";var Jh,qn=new Promise(n=>{Jh=n}),Qh=!1;async function ey(){if(Qh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.337/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});Jh(i),Qh=!0}import{BufferGeometryLoader as LT}from"three";function Io(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new LT().parse(n);else{if(n.type==="SubdivGeometry")return new Fe(n,e);if(n.type==="TextGeometry")return new Hn(n,r)}let o;try{o=dd(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(Jo.defaultData(),100,100);t.shape=i,o=dd(t)}return o}import{Matrix4 as BT}from"three";var DT=new BT;function Zi(n,r,e,t){let o=n.position.array,i=n.normal.array,s=DT.makeScale(r,e,t).invert().elements,l,c,u;for(var a=0,d=o.length;a<d;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],u=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*u,i[a+1]=s[1]*l+s[5]*c+s[9]*u,i[a+2]=s[2]*l+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var dl=new VT,$n=new Qi,de;qn.then(n=>{de=n});var ry=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),oy=new Uint32Array([0,1,2,3]),ny=new Uint8Array([4]),Fe=class extends ud{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Kr.div(t,o);this.subdividedGeometry&&Zi(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Zi(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply($n.fromArray(i));let l=$n.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Fe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new jT(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new RT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;dl.setFromBufferAttribute(t),dl.getCenter(o),e.boundingSphere.radius=o.distanceTo(dl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),dl.getSize($n);let i={width:$n.x,height:$n.y,depth:$n.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=Fe.allocate(e,i)}catch(a){console.error(a,e),s=Fe.allocate({positionWASM:ry,indexWASM:oy,verticesPerFaceWASM:ny},i)}if(de.set_destination_refinement_level(s,0),l=Fe.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=Fe.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=Fe.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0?t.geometry:Io(e,o,!1),s,l,c,u;({positions:s,triIndices:u}=gd(i.getAttribute("position"),i.getIndex()));let a;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,p=d+e.radialSegments*3;a=[d,p]}return{indices:l,verticesPerFace:c}=xd(s,u,i,a),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=ry,i=oy,s=ny);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),b=new Uint32Array(de.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new GT().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?de.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):de.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),S}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,u=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=de.HEAPU32[u[d]>>2],b=de.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let w=new ud;if(w.setIndex(new pd(b,1)),w.setAttribute("position",new fd(f,3)),w.setAttribute("normal",new fd(h,3)),t){w.setAttribute("faceMap",new pd(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new ty(S,4))}return de.free_mesh_data(l),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=de.HEAPU32[l[u]>>2],d=de.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=de.HEAPU32[l[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new ud;m.setAttribute("position",new fd(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new ty(h,3)),m.setIndex(new pd(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var iy=["getX","getY","getZ"];function gd(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<t;u++){let a=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[iy[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[iy[p]](a));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var ul=new Qi,md=new Qi,hd=new Qi,yd=new Qi;function xd(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),l=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((d,p)=>Math.floor(p/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let u=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(u++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??r.length;s<l;)if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){ul.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),md.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),hd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),yd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),md.sub(ul).normalize(),hd.sub(ul).normalize(),yd.sub(ul).normalize();let c=md.cross(hd).dot(yd);Math.abs(c)>.005||t&&t.some((u,a)=>a%2===1?!1:s>=t[a]&&s<t[a+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,d=0;a<n.length;a+=3,d++)n[a+2]===0&&(s.push(d),c++),n[a+2]===u&&l.push(d);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var tr={};Xg(tr,{calcBoolean:()=>HT,calcBooleanTopological:()=>kT,freeMeshSet:()=>$T,getMeshSet:()=>WT,transformMeshSet:()=>qT});var FT,sy=new Promise(n=>{FT=n});import{Float32BufferAttribute as ay,Sphere as zT}from"three";var ge,Yn;sy.then(n=>ge=n);function UT(n,r,e){let t,{positions:o,triIndices:i}=gd(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=xd(o,i,n);s=c.length,t=[];for(let u=0,a=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[a++])}}else{let l=i.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=i[c++],t[u++]=i[c++],t[u++]=i[c++]}return{positions:o,faceIndices:t,nFaces:s}}function ly(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,r):new Float32Array(ge.HEAPF32.buffer,i,r)).set(n,0),i}function cy(n){switch(n){case 0:return ge.OP.UNION;case 1:return ge.OP.INTERSECTION;case 2:return ge.OP.A_MINUS_B;case 3:return ge.OP.B_MINUS_A;case 4:return ge.OP.SYMMETRIC_DIFFERENCE;case 5:return ge.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function kT(n,r){Yn===void 0&&(Yn=ge.init_csg());let e=ly(n),t=ge.csg_calc_topological(Yn,e,n.length,cy(r));ge._free(e);let o=6,i=ge.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],u=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],d=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ge.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function HT(n,r,e,t){Yn===void 0&&(Yn=ge.init_csg());let o=ly(n),i=ge.csg_calc(Yn,o,n.length,t,cy(r));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ge.HEAPU32[l[u]>>2],d=ge.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ge.HEAPU32[l[u]>>2],f=ge.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new ay(d,3)),e.setAttribute("normal",new ay(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new zT),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},ge.free_mesh_data(i),m}function WT(n,r,e){if(ge===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,v)=>g+v,0)+i);for(let g=0,v=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=UT(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=ge._malloc(a),m=new Float32Array(ge.HEAPF32.buffer,f,c),h=new Uint32Array(ge.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ge.get_csg_mesh(f,s,f+d,l,i)}function qT(n,r){ge.transform_csg_mesh(n,r.elements)}function $T(n){ge.free_csg_mesh(n)}var YT={ConeGeometry:qm,CubeGeometry:$m,CylinderGeometry:Wm,DodecahedronGeometry:Ym,EllipseGeometry:Fn,HelixGeometry:Ph,IcosahedronGeometry:Oh,LatheGeometry:Ah,NonParametricGeometry:Rh,PolygonGeometry:al,PyramidGeometry:Vh,RectangleGeometry:ll,SphereGeometry:jh,PlaneGeometry:Fh,BackdropGeometry:zh,StarGeometry:cl,TextFrameGeometry:Uh,TorusGeometry:kh,TorusKnotGeometry:Hh,TriangleGeometry:Wh,PathGeometry:Xh,VectorGeometry:_t},dd=n=>YT[n.type].create(n);function Ji(n){return n!==null&&"booleanOp"in n}var Xn=class extends Wa(KT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new XT}updateVisible(){super.updateVisible(),this.visible=!Ji(this.parent)&&this.visible,Ji(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(tr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ji(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Xn&&(e.freeBooleanPointer(),Ji(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Ji(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var pl=new ZT;function es(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,u=-1/0,a=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>u&&(u=f),m>a&&(a=m)}pl.min.set(i,s,l),pl.max.set(c,u,a),pl.getCenter(t),pl.getSize(o).multiplyScalar(.5)}var eP=new QT,tP=new JT,it=class extends Xn{constructor(r,e){super(eP,tP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?es(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as cO,Matrix4 as dO,Sphere as Dy,Vector3 as uO}from"three";import{BufferAttribute as sO,Float32BufferAttribute as By,MathUtils as Hd,Vector3 as Wd}from"three";import{ShaderMaterial as $P}from"three";import{CubeReflectionMapping as fP,CubeRefractionMapping as mP,CubeUVReflectionMapping as hP,LinearEncoding as fy,sRGBEncoding as yP}from"three";var ts=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};import{MathUtils as rP}from"three";var Je=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=rP.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof Je&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var vd=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},qe=new vd;import{Vector2 as dy}from"three";import{MathUtils as oP}from"three";var le=class extends Je{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=oP.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ne=class extends le{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var et=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof dy?e:new dy(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as uy}from"three";var st=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof uy?e:new uy(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as nP}from"three";var $e=class extends nP{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],l=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Ft=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof $e?e:new $e(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var iP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,py=/[a-z_0-9]+/gi,Q=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let l,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let a=[];for(;l=py.exec(this.src);)a.push(l);for(let d=0;d<a.length;d++){let p=a[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&qe.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=qe.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||qe.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&qe.contains(h)&&e.include(qe.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=iP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(py);if(l){let c=0;for(;c<l.length;){let u=l[c++],a;u==="in"||u==="out"||u==="inout"?a=l[c++]:(a=u,u="");let d=l[c++];this.inputs.push({name:d,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var sP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,bd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||bd.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,u="",a=sP.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},be=bd;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var aP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
+
)*?)}`,"gim"),lP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Kn=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 t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=aP.exec(e);if(t){let o=t[2],i;for(;i=lP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Zn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};qe.addKeyword("uv",function(){return new Zn});qe.addKeyword("uv2",function(){return new Zn(1)});import{LinearEncoding as cP,sRGBEncoding as dP}from"three";var Co=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Co.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case cP:return["Linear"];case dP:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Co.Nodes[this.method],l=e.include(s);if(l===Co.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,t)}else return e.format(l+"( "+o+" )",i,t)}fromEncoding(e){let t=Co.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Co.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},mt=Co;mt.Nodes={LinearToLinear:new Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
5
5
|
`)),sRGBToLinear:new Q(["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(`
|
|
6
6
|
`)),LinearTosRGB:new Q(["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(`
|
|
7
|
-
`))},mt.LINEAR_TO_LINEAR="LinearToLinear",mt.SRGB_TO_LINEAR="sRGBToLinear",mt.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends Q{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as
|
|
7
|
+
`))},mt.LINEAR_TO_LINEAR="LinearToLinear",mt.SRGB_TO_LINEAR="sRGBToLinear",mt.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends Q{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as uP}from"three";var Tt=class extends Ne{constructor(e=new uP,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Zn,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new mt(new _e("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,t)}};var J=class extends Ne{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var rs=class extends le{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,t)+"( ",u=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let d=l.inputs[a],p=this.inputs[a]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var Sd=class extends le{constructor(e,t,o=Sd.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},Pt=Sd;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Ae=class extends le{constructor(e,t=Ae.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,l=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ae.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,u===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},pe=Ae;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var Qn=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new rs(Qn.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new mt(new _e("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new mt(new _e("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new mt(new _e("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new mt(new _e("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new _e(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new _e(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new _e(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new _e(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new _e("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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new rs(Qn.Nodes.roughnessToMip,[i]),l=new pe(s,Qn.Nodes.m0,Qn.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(l,pe.FLOOR),u=new pe(l,pe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Pt(c,new J(1).setReadonly(!0),Pt.ADD)),p=new pe(a,d,u,pe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},Jn=Qn;Jn.Nodes=function(){let e=new Kn(`struct TextureCubeUVData {
|
|
8
8
|
vec4 tl;
|
|
9
9
|
vec4 tr;
|
|
10
10
|
vec4 br;
|
|
@@ -83,7 +83,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
83
83
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
84
84
|
}
|
|
85
85
|
return mip;
|
|
86
|
-
}`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var
|
|
86
|
+
}`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var No=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??No.VIEW}getShared(){return this.scope===No.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let l;switch(this.scope){case No.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case No.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case No.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},tt=No;tt.LOCAL="local",tt.WORLD="world",tt.VIEW="view",tt.NORMAL="normal";qe.addKeyword("viewNormal",function(){return new tt(tt.VIEW)});qe.addKeyword("localNormal",function(){return new tt(tt.NORMAL)});qe.addKeyword("worldNormal",function(){return new tt(tt.WORLD)});var vr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??vr.LOCAL}getType(){switch(this.scope){case vr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case vr.LOCAL:case vr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case vr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case vr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case vr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case vr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},Ot=vr;Ot.LOCAL="local",Ot.WORLD="world",Ot.VIEW="view",Ot.PROJECTION="projection";qe.addKeyword("position",function(){return new Ot});qe.addKeyword("worldPosition",function(){return new Ot(Ot.WORLD)});qe.addKeyword("viewPosition",function(){return new Ot(Ot.VIEW)});var rr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??rr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case rr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case rr.VECTOR:{let s=new tt(tt.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new Ot(Ot.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;a&&(d=`normalize( mix( ${d}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case rr.CUBE:{let s=new rr(rr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case rr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new rr(rr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${l};`),i="reflectSphereVec"):i=l;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},br=rr;br.CUBE="cube",br.SPHERE="sphere",br.VECTOR="vector";var fl=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Jn(this.value,t??new br(br.VECTOR),o),this.irradianceNode=new Jn(this.value,new tt(tt.WORLD),new J(1).setReadonly(!0))}generate(e,t){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,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};import{CubeTexture as pP}from"three";var ml=class extends Ne{constructor(e=new pP,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new br,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new mt(new _e("",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,t)}};var my=["x","y","z","w"],gP=["float","vec2","vec3","vec4"],xP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},vP={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[]"},hl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
|
|
87
87
|
`);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",`
|
|
88
88
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
89
89
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -128,7 +128,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
128
128
|
`}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",s=""){let l=this.getVars(o),c=l[r];if(!c){let u=l.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},l.push(c),l[r]=c}return c}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
|
|
129
129
|
`)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],l=s.type,c=s.name,u=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?t+=e+" "+a.substring(0,a.length-2)+" "+c+`[${u}];
|
|
130
130
|
`:t+=e+" "+a+" "+c+`;
|
|
131
|
-
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Je?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,u=new
|
|
131
|
+
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Je?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,u=new ts({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}else{let l=this.inputs.uniforms,c=l.list.length,u=new ts({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?qe.get(r):r,this.context.include===!1)return r.name;r instanceof Q?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof Kn&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof Q&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return gP[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case fP:case mP:return new ml(t);case hP:return new fl(new Tt(t));default:return new Tt(t)}else{if(t.isVector2)return new et(t);if(t.isVector3)return new st(t);if(t.isVector4)return new Ft(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return xP[r]||r}getFormatByType(r){return vP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return my[r]}getIndexByElement(r){return my.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=fy,e===fy&&this.context.gamma&&(e=yP),e}};import{Vector2 as Lo,Vector3 as _r,Vector4 as oi}from"three";var Pe=class extends Ne{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof $e?e:new $e(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return u?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var xe=class extends Ne{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,l){return e.format(this.value.toString(),i,t)}};import{UniformsLib as bP,UniformsUtils as SP}from"three";var Eo=class extends Je{constructor(){super("basic");this.nodeType="Basic";this.color=new Pe(5526619),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(SP.merge([bP.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
132
132
|
`));let i=["#include <beginnormal_vertex>",`
|
|
133
133
|
#if !defined( USE_LAYER_DISPLACE )
|
|
134
134
|
#include <defaultnormal_vertex>
|
|
@@ -146,9 +146,9 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
146
146
|
#include <begin_vertex>
|
|
147
147
|
#endif /* !USE_LAYER_DISPLACE */
|
|
148
148
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
149
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
149
|
+
`)}else{this.color===void 0&&(this.color=new Pe(5526619)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
150
150
|
`));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
|
|
151
|
-
`)}return t}};import{UniformsLib as
|
|
151
|
+
`)}return t}};import{UniformsLib as hy,UniformsUtils as wP}from"three";var or=class extends Ne{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var at={normalRenderTarget:new Tt,normalRenderTargetDepth:new Tt,transmissionRenderTarget:new Tt,transmissionSize:new et(2048,2048),transmissionRenderTargetDepth:new Tt,pixelRatioNode:new J(1),resolution:new et,penumbraSize:new or(5,.5)};for(let n of Object.values(at))n.isRenderGlobal=!0;var os=class extends Je{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Pe(5526619),this.emissive=new Pe(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"lambert"}build(e){let t;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(wP.merge([hy.fog,hy.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(`
|
|
152
152
|
`));let i=["#include <beginnormal_vertex>",`
|
|
153
153
|
#ifndef USE_LAYER_DISPLACE
|
|
154
154
|
#include <defaultnormal_vertex>
|
|
@@ -240,7 +240,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
240
240
|
#pragma unroll_loop_end
|
|
241
241
|
#endif
|
|
242
242
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
243
|
-
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize}),this.color===void 0&&(this.color=new
|
|
243
|
+
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==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(`
|
|
244
244
|
`));let d=["#include <normal_fragment_begin>",`
|
|
245
245
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
246
246
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -254,7 +254,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
254
254
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
255
255
|
}
|
|
256
256
|
`),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
|
|
257
|
-
`)}return t}};import{UniformsLib as
|
|
257
|
+
`)}return t}};import{UniformsLib as yy,UniformsUtils as _P}from"three";var yl=class extends Je{constructor(){super("phong");this.nodeType="Phong";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"phong"}build(e){let t;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(_P.merge([yy.fog,yy.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(`
|
|
258
258
|
`));let i=["#include <beginnormal_vertex>",`
|
|
259
259
|
#ifndef USE_LAYER_DISPLACE
|
|
260
260
|
#include <defaultnormal_vertex>
|
|
@@ -273,7 +273,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
273
273
|
#include <begin_vertex>
|
|
274
274
|
#endif
|
|
275
275
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
276
|
-
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize}),this.color===void 0&&(this.color=new
|
|
276
|
+
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==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(`
|
|
277
277
|
`));let d=["#include <normal_fragment_begin>",`
|
|
278
278
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
279
279
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -289,7 +289,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
289
289
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
290
290
|
}
|
|
291
291
|
`),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
|
|
292
|
-
`)}return t}};import{UniformsLib as
|
|
292
|
+
`)}return t}};import{UniformsLib as wd,UniformsUtils as TP}from"three";var ns=class extends Je{constructor(){super("standard");this.nodeType="Standard";this.color=new Pe(5526619),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"physical"}build(e){let t;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(TP.merge([wd.fog,wd.lights])),wd.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(`
|
|
293
293
|
`));let i=["#include <beginnormal_vertex>",`
|
|
294
294
|
#if !defined( USE_LAYER_DISPLACE )
|
|
295
295
|
#include <defaultnormal_vertex>
|
|
@@ -307,7 +307,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
307
307
|
#include <begin_vertex>
|
|
308
308
|
#endif /* !USE_LAYER_DISPLACE */
|
|
309
309
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
310
|
-
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new
|
|
310
|
+
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Pe(5526619)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#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(`
|
|
311
311
|
`));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
312
312
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
313
313
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -323,7 +323,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
323
323
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${u.result} );
|
|
324
324
|
}
|
|
325
325
|
`),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
|
|
326
|
-
`)}return t}};import{UniformsLib as
|
|
326
|
+
`)}return t}};import{UniformsLib as gy,UniformsUtils as PP}from"three";var is=class extends Je{constructor(){super("toon");this.nodeType="Toon";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"toon"}build(e){let t;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(PP.merge([gy.fog,gy.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(`
|
|
327
327
|
`));let i=["#include <beginnormal_vertex>",`
|
|
328
328
|
#ifndef USE_LAYER_DISPLACE
|
|
329
329
|
#include <defaultnormal_vertex>
|
|
@@ -341,7 +341,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
341
341
|
#include <begin_vertex>
|
|
342
342
|
#endif
|
|
343
343
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
344
|
-
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize}),this.color===void 0&&(this.color=new
|
|
344
|
+
`)}else{e.mergeUniform({penumbraSize:at.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==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>",`
|
|
345
345
|
varying vec3 vViewPosition;
|
|
346
346
|
struct ToonMaterial {
|
|
347
347
|
vec3 diffuseColor;
|
|
@@ -377,7 +377,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
377
377
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
378
378
|
}
|
|
379
379
|
`),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
|
|
380
|
-
`)}return t}};var co=class extends Ne{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};import{Matrix3 as
|
|
380
|
+
`)}return t}};var co=class extends Ne{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};import{Matrix3 as OP}from"three";var ei=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new OP}generateReadonly(e,t,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Vector4 as xy}from"three";var nr=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof xy?new Array(e).fill(t):new Array(e).fill(new xy(0))}};var ss=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(ss||{}),dt=function(){let r=new Q(`vec3 random3(vec3 c) {
|
|
381
381
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
382
382
|
vec3 r;
|
|
383
383
|
r.z = fract(512.0*j);
|
|
@@ -554,7 +554,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
554
554
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
555
555
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
556
556
|
return 2.2 * n_xyz;
|
|
557
|
-
}`,[o,i,d]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p}}();var
|
|
557
|
+
}`,[o,i,d]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p}}();var as=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=u,this.colorC=a,this.colorD=d,this.alpha=p,this.noiseType=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(ss)[this.noiseType.value],c=new Q(`vec3 ${l}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) {
|
|
558
558
|
vec3 st = position / size;
|
|
559
559
|
st /= scale;
|
|
560
560
|
vec3 q = vec3(${l}(st),
|
|
@@ -574,14 +574,14 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
574
574
|
|
|
575
575
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
576
576
|
return clamp(color, 0.0, 1.0).rgb;
|
|
577
|
-
}`,[dt.simplex,dt.simplexFractal,dt.simplexAshima,dt.fbm,dt.perlin]),u=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(u+"("+a.join(",")+")",this.getType(e),t)}};
|
|
577
|
+
}`,[dt.simplex,dt.simplexFractal,dt.simplexAshima,dt.fbm,dt.perlin]),u=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(u+"("+a.join(",")+")",this.getType(e),t)}};as.numOctaves=5;var _d=class extends le{constructor(e,t,o,i,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(_d.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=_d;ls.Nodes=function(){return{fresnel:new Q(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
578
578
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
579
579
|
|
|
580
580
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
581
581
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
582
582
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
583
583
|
return color;
|
|
584
|
-
}`)}}();var
|
|
584
|
+
}`)}}();var Td=class extends le{constructor(e,t,o,i,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Td.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},cs=Td;cs.Nodes=function(){let e=new Q(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
585
585
|
vec3 st = position / noiseScale;
|
|
586
586
|
vec3 q = vec3(simplex3d(st),
|
|
587
587
|
simplex3d(st + vec3(1.0)),
|
|
@@ -603,7 +603,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
603
603
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
604
604
|
|
|
605
605
|
return res;
|
|
606
|
-
}`,[e])}}();var
|
|
606
|
+
}`,[e])}}();var Pd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=a,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
607
607
|
vID = randomColor.r;
|
|
608
608
|
if (${s}) {
|
|
609
609
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -617,7 +617,7 @@ var Wg=Object.create;var Hl=Object.defineProperty;var qg=Object.getOwnPropertyDe
|
|
|
617
617
|
// if this offset is the biggest of all the potential offsets
|
|
618
618
|
gl_Position = ${c}_clipPosition;
|
|
619
619
|
}
|
|
620
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
620
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Pd.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ds=Pd;ds.Nodes=function(){let e=new Q(`
|
|
621
621
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
622
622
|
{
|
|
623
623
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -757,7 +757,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
757
757
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
758
758
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
759
759
|
return result;
|
|
760
|
-
}`,[e])}}();var
|
|
760
|
+
}`,[e])}}();var Od=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Od.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},us=Od;us.Nodes=function(){let e=new Q(`
|
|
761
761
|
float gaussian(vec2 i) {
|
|
762
762
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
763
763
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
@@ -845,7 +845,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
845
845
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
846
846
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
847
847
|
return transmission;
|
|
848
|
-
}`,[l])}}();var
|
|
848
|
+
}`,[l])}}();var ti=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=u,this.colors=a,this.steps=d,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Q(`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) {
|
|
849
849
|
vec4 color = colors[0];
|
|
850
850
|
#ifdef ${o}_IS_VECTOR
|
|
851
851
|
#ifdef ${o}_LINEAR
|
|
@@ -885,7 +885,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
885
885
|
|
|
886
886
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
887
887
|
return color.rgb;
|
|
888
|
-
}`,[
|
|
888
|
+
}`,[ti.Nodes.vectorLinearWorldSpaceDepth,ti.Nodes.vectorLinearObjectSpaceDepth,ti.Nodes.vectorSphericalObjectSpaceDepth,ti.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ps=ti;ps.Nodes=function(){let e=new Q(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
889
889
|
vec3 n = normalize(direction);
|
|
890
890
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
891
891
|
return ( dist - near ) / ( far - near );
|
|
@@ -899,7 +899,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
899
899
|
}`),i=new Q(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
900
900
|
float dist = length(position - origin);
|
|
901
901
|
return ( dist - near ) / ( far - near );
|
|
902
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
902
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var fs=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Ad=(e=>(e.NOISE="noise",e.MAP="map",e))(Ad||{}),Id=class extends le{constructor(e,t,o,i,s){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Ad)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ei(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Ad)[this.displacementTypeIndex.value]){case"map":{o=e.include(Id.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let l=Object.values(ss)[this.noiseFunctionIndex.value],c=new Q(`vec3 orthogonal(vec3 v) {
|
|
903
903
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
904
904
|
}`),u=new Q(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
905
905
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
@@ -919,7 +919,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
919
919
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
920
920
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
921
921
|
return displaced_position;
|
|
922
|
-
}`,[u,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
922
|
+
}`,[u,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ms=Id;ms.Nodes=function(){let e=new Q(`vec3 orthogonal(vec3 v) {
|
|
923
923
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
924
924
|
}`),t=new Q(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
925
925
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -941,7 +941,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
941
941
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
942
942
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
943
943
|
return displaced_position;
|
|
944
|
-
}`,[e,t])}}();var
|
|
944
|
+
}`,[e,t])}}();var Cd=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Cd.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},hs=Cd;hs.Nodes=function(){return{gradient:new Q(`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) {
|
|
945
945
|
vec4 color = colors[0];
|
|
946
946
|
vec2 m = morph / vUv.xy;
|
|
947
947
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -983,7 +983,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
983
983
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
984
984
|
|
|
985
985
|
return color.xyz;
|
|
986
|
-
}`)}}();var
|
|
986
|
+
}`)}}();var gs=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.mat=u,this.alpha=a,this.mode=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(gs.Nodes.cylindrical);break;case 2:i=e.include(gs.Nodes.spherical);break;case 1:let l=["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 Q(`
|
|
987
987
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
988
988
|
|
|
989
989
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -1002,7 +1002,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
1002
1002
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1003
1003
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1004
1004
|
return col;
|
|
1005
|
-
}`);i=e.include(c);break;default:i=e.include(
|
|
1005
|
+
}`);i=e.include(c);break;default:i=e.include(gs.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 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(i+"("+s.join(",")+")",this.getType(e),t)}},ys=gs;ys.Nodes=function(){let e=new Q(`
|
|
1006
1006
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1007
1007
|
vec3 posN = normalize(position);
|
|
1008
1008
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -1076,14 +1076,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1076
1076
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1077
1077
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1078
1078
|
return col;
|
|
1079
|
-
}`);return{cylindrical:e,spherical:t,uv:o}}();var
|
|
1079
|
+
}`);return{cylindrical:e,spherical:t,uv:o}}();var Nd=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t}generate(e,t){if(e.isShader("fragment")){let o=e.include(Nd.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},xs=Nd;xs.Nodes=function(){return{customNormal:new Q(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
1080
1080
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
1081
1081
|
normal *= step( vec3(0.5), cnormal );
|
|
1082
1082
|
|
|
1083
1083
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1084
1084
|
|
|
1085
1085
|
return normal;
|
|
1086
|
-
}`)}}();import{Vector2 as
|
|
1086
|
+
}`)}}();import{Vector2 as vs,Vector3 as Sr,Vector4 as gl}from"three";function ht(n,r){return r.color(n)}function vy(n,r){switch(n.type){case"fresnel":return CP(n,r);case"gradient":return NP(n);case"depth":return EP(n);case"normal":return MP(n);case"noise":return LP(n,r);case"rainbow":return BP(n);case"toon":return DP(n,r);case"outline":return GP(n,r);case"transmission":return RP(n,r);case"color":return IP(n,r)}}function AP(n){return{type:n.type}}function wr(n){let{alpha:r,mode:e}=n;return{...AP(n),alpha:r,mode:e}}function IP(n,r){return{...wr(n),color:ht(n.color,r)}}function CP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...wr(n),color:ht(s,r),bias:e,scale:t,intensity:o,factor:i}}function NP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...wr(n),gradientType:r,smooth:e,colors:t.map(c=>new gl(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new vs(...s),morph:new vs(...l),angle:i}}function EP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...wr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Sr(...s),direction:l?new Sr(...l):new Sr(1,0,0),colors:c.map(d=>d!==void 0?new gl(d[0],d[1],d[2],d[3]):new gl(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function MP(n){let{cnormal:r}=n;return{...wr(n),cnormal:new Sr(r[0],r[1],r[2])}}function LP(n,r){return{...wr(n),scale:n.scale,move:n.move,fA:new vs(...n.fA),fB:new vs(...n.fB),size:new Sr(...n.size),distortion:new vs(...n.distortion),colorA:ht(n.colorA,r),colorB:ht(n.colorB,r),colorC:ht(n.colorC,r),colorD:ht(n.colorD,r),noiseType:n.noiseType}}function BP(n){return{...wr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Sr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Sr(...n.offset)}}function DP(n,r){return{...wr(n),positioning:n.positioning,colors:n.colors.map(e=>new gl(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Sr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:ht(n.shadowColor,r),offset:new Sr(...n.offset)}}function GP(n,r){return{...wr(n),outlineColor:ht(n.outlineColor,r),contourColor:ht(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Sr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function RP(n,r){return{...wr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var uo=class extends $e{};import{Vector4 as FP}from"three";import{VideoTexture as VP,Texture as jP}from"three";var xl=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Md=class extends xl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Ed;function by(n){return typeof n=="string"?n:(Ed||(Ed=new Md),Ed.load(n))}var vl=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},bl=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var ri=class extends vl{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type=="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let l=this[s];l&&(l.image=this.img,l.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(s=>{o.onloadend=l=>{i=l.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=by(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new VP(this.img,void 0,e,e):o=new jP(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var zt=class extends ri{};var po=class extends Ne{};var Ld={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Bd={depth:["colors"]};function zP(n,r,e){let t=Ld[n.type],o=Bd[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Dd(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let s=i.image,l=r.image(s),c=t;c.image instanceof zt||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof zt||c.image.deref(),c.image=l}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",l=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(l.repeat=i.repeat),"offset"in i&&(l.offset=i.offset),l.updateMatrix()}return o}function Sy(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Gd(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof po))switch(o=o||zP(e,i,s),l.constructor){case Pe:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Ft:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case et:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case st:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Tt:{Dd(s,r,e);break}case nr:{l.value=s.map(c=>new FP(...c));break}default:{l.value=s;break}}}return o}var Rd=class extends le{constructor(e,t,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Rd.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},bs=Rd;bs.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1087
1087
|
vec3 viewDir = normalize( vViewPosition );
|
|
1088
1088
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1089
1089
|
vec3 y = cross( viewDir, x );
|
|
@@ -1095,7 +1095,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1095
1095
|
|
|
1096
1096
|
return matcapColor.rgb;
|
|
1097
1097
|
}
|
|
1098
|
-
`)}}();var
|
|
1098
|
+
`)}}();var Mo=class extends po{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as UP}from"three";var Sl=class extends po{constructor(e){super("v3");this.image=e;this._value=new UP}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Vd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=u,this.offset=a,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Vd.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ss=Vd;Ss.Nodes=function(){let e=new Q(`float rand(float n) {
|
|
1099
1099
|
return fract(sin(n) * 43758.5453123);
|
|
1100
1100
|
}`),t=new Q(`float hash1(float p) {
|
|
1101
1101
|
p = fract(p * 0.011);
|
|
@@ -1331,8 +1331,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1331
1331
|
|
|
1332
1332
|
return color.xyz;
|
|
1333
1333
|
|
|
1334
|
-
}`,[dt.simplex,e,o,s])}}();import{Matrix3 as HP}from"three";function _y(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Sl=class extends ri{constructor(e,t){super(new HP);this.repeat=e;this.offset=t;_y(this.value,e,t)}updateMatrix(){_y(this.value,this.repeat,this.offset)}};var Tr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Rd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Pr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new Lo(i,t.texture.wrapping),l=new bl(i),c=new Sl(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),a=new xe(t.projection??0),d=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new et(t.size?new Bo(t.size[0],t.size[1]):new Bo(100,100)),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new gs(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new ke(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Lo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new xe(t.mode??0),u=new Ss(s,l,c),a=new _e(u.calpha,"f");return new ke(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new st(new _r(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new xe(t.noiseType??0),a=new hs(l,c,i,s,u);return new _s(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return $P(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene?.markNeedsUpdateRendererDirty(),!0):wy(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Gd(o.props,t.shared,this):!0;return!1}dispose(){if(WP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof zt||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ke=class extends Tr{constructor(e,t,o,i,s,l,c){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c}},_s=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Pr=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Mo,u={};else if(o.category==="lambert"){s=new ns;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new ss;let a=new J(o.shininess??30),d=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new is;let a=new J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new hl;let a=new J(o.shininess??30),d=new Te(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Pr(e,t,o,s,u)}get category(){return this.node.category}};function WP(n){let r=n instanceof Tr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function qP(n,r,e,t){switch(n.type){case"color":{let o=new Te(t.color??5526619),i=new J(t.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(t.mode??0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new xe(t.mode??0),d=new cs(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new ke(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new st(t.wavelengths??new _r(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new st(t.offset??new _r(0,0,0)),a=new J(t.alpha??1),d=new ds(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new ke(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=at.transmissionSize,c=at.transmissionRenderTarget,u=at.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new et(d/a,1):new et(1,a/d),f=new J(t.alpha??1),m=new ps(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new nr(t.colors.length,t.colors):(i=new nr(10,new ii(0,0,0,1)),i.value[1]=new ii(1,1,1,1));let s;t.steps?s=new or(t.steps.length,t.steps):(s=new or(10,1),s.value[0]=0);let l=new st(t.source??new _r(0,0,0)),c=new co(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new Ft(t.shadowColor),p=new st(t.offset??new _r(0,0,0)),f=new J(t.alpha??1),m=new ws(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Te(t.outlineColor??16777215),i=new Te(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new st(t.contourDirection??new _r(0,1,0)),f=new co(t.positionalLines??!1),m=new co(t.compensation??!0),h=at.normalRenderTarget,y=at.normalRenderTargetDepth,g=at.pixelRatioNode,v=at.resolution,b=new J(t.alpha??1),w=new us(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,b),S=new _e(w.calpha,"f"),T=new xe(t.mode??0);return new ke(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,alpha:b,mode:T},w,T,S)}case"depth":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new st(t.origin??new _r),d=new st(t.direction??new _r),p;t.colors?p=new nr(t.colors.length,t.colors):(p=new nr(2,new ii(0,0,0,1)),p.value[1]=new ii(1,1,1,1));let f;t.steps?f=new or(t.steps.length,t.steps):(f=new or(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new xe(t.mode??0),y=new fs(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new st(t.size??new _r(100,100,100)),s=new J(t.move??1),l=new et(t.fA??new Bo(1.7,9.2)),c=new et(t.fB??new Bo(8.3,2.8)),u=new et(t.distortion??new Bo(1,1)),a=new Ft(t.colorA),d=new Ft(t.colorB),p=new Ft(t.colorC),f=new Ft(t.colorD),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new ls(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new ke(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new st(t.cnormal??new _r(1,1,1)),i=new J(t.alpha??1),s=new xe(t.mode??0),l=new vs(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ke(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s;t.colors?s=new nr(t.colors.length,t.colors):(s=new nr(10,new ii(0,0,0,1)),s.value[1]=new ii(1,1,1,1));let l;t.steps?l=new or(t.steps.length,t.steps):(l=new or(10,1),l.value[0]=0);let c=new et(t.offset??new Bo(0,0)),u=new et(t.morph??new Bo(0,0)),a=new J(t.angle??0),d=new J(t.alpha??1),p=new xe(t.mode??0),f=new ys(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Te(1,0,0,1),i=new J(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function $P(n,r,e,t){let o=by(e,t);return qP(e,n,r,o)}function Rd(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function Ty(n,r){let e=0;for(let t of n.layers)if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}return e<1}var It=class extends YP{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Fd=class extends It{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},si=class extends It{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new Fd(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??wt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Tr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=Ty(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof Pr),this.lightLayer===void 0&&(this.lightLayer=new Pr(0,"",{...ft.defaultData("light","phong"),visible:!1},new Mo,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=Ty(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=Tr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),o.scene?.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene?.markNeedsUpdateRendererDirty();else if(e.type===6){let l=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=Tr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}blendColors(){let e=this.layers.findIndex(o=>o instanceof ke),t=this.layers.findIndex(o=>o instanceof Pr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof ke&&(o=new ms(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Pr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ke&&(e=new ms(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof _s);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Ot(t,e[o].position,Ot.ADD),t=new Ot(t,new J(.5).setReadonly(!0),Ot.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Bd[t.type]??[]).map(l=>t[l]),i=(Dd[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new ml;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ke){let t=e.params.texture;if(t instanceof Lo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(It.prototype,{properties:{get:function(){return this.fragment.properties}}});var Do=class extends si{};var Iy=Gs(Py());var Oy=new Map;function Ay(n){if(typeof n=="string")return n;let r=Oy.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Oy.set(n,r)),r.url}var Go=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:Ay(r),format:"wav"},this.sound=new Iy.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as XP,Vector2 as Ro,Path as Cy,Shape as KP,ShapeUtils as ZP,Color as QP}from"three";var _l=class{constructor(){this.type="ShapePath";this.color=new QP;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Cy,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,v){let b=h.x,w=y.x,S=g.x,T=v.x,_=h.y,x=y.y,C=g.y,P=v.y,I=(T-S)*(_-C)-(P-C)*(b-S),O=(w-b)*(_-C)-(x-_)*(b-S),A=(P-C)*(w-b)-(T-S)*(x-_),G=I/A,z=O/A;if(A===0&&I!==0||G<=0||G>=1||z<0||z>1)return null;if(I===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(b+t.t*(w-b)).toPrecision(10),K=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:K,t:t.t}}return null}else{for(let K=0;K<2;K++)if(i(K===0?g:v,h,y),t.loc===e.ORIGIN){let q=K===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(b+G*(w-b)).toPrecision(10),te=+(_+G*(x-_)).toPrecision(10);return{x:$,y:te,t:G}}}function i(h,y,g){let v=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,T=v*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=w/v:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],C=o(w,S,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new Ro(C.x,C.y)))}}return v}function l(h,y,g){let v=new Ro;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(T=>{b.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,v,b){(b==null||b==="")&&(b="nonzero");let w=new Ro;h.boundingBox.getCenter(w);let S=[new Ro(g,w.y),new Ro(v,w.y)],T=l(S,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;if(P.push(h.identifier),b==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,G=null;for(let z=0;z<P.length;z++){let $=P[z];y[$]&&(O?(G=y[$].isCW,O=!1,A=$):G!==y[$].isCW&&(G=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>b&&(b=T.x),T.x<w&&(w=T.x)}d<=b&&(d=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:ZP.isClockWise(y),identifier:u++,boundingBox:new XP(new Ro(w,v),new Ro(b,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new KP;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Cy;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Ey,zd=new Promise(n=>{Ey=n}),Ny=!1;async function My(){if(Ny)return;let n=await import("./opentype.js");Ey(n),Ny=!0}var Ts=class{async load(r,e,t=()=>{}){let{load:o}=await zd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await zd;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function JP(n){return await(await fetch(n)).arrayBuffer()}var eO=new Ts;async function Ud(n){let r,e,t=!1;if(n.url?(r=await JP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await eO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as tO,LineCurve as rO,QuadraticBezierCurve as oO}from"three";function nO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Tl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Ud(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Ud(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,s=[],l=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let a=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[l];if(nO(a,p)||c)s.push({char:d,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:d,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
|
|
1334
|
+
}`,[dt.simplex,e,o,s])}}();import{Matrix3 as kP}from"three";function wy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var wl=class extends ei{constructor(e,t){super(new kP);this.repeat=e;this.offset=t;wy(this.value,e,t)}updateMatrix(){wy(this.value,this.repeat,this.offset)}};var Tr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Gd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Pr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new Mo(i,t.texture.wrapping),l=new Sl(i),c=new wl(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),a=new xe(t.projection??0),d=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new et(t.size?new Lo(t.size[0],t.size[1]):new Lo(100,100)),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new ys(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new He(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Mo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new xe(t.mode??0),u=new bs(s,l,c),a=new _e(u.calpha,"f");return new He(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new st(new _r(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new xe(t.noiseType??0),a=new ms(l,c,i,s,u);return new ws(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return qP(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene?.markNeedsUpdateRendererDirty(),!0):Sy(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Dd(o.props,t.shared,this):!0;return!1}dispose(){if(HP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof zt||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},He=class extends Tr{constructor(e,t,o,i,s,l,c){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c}},ws=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Pr=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Eo,u={};else if(o.category==="lambert"){s=new os;let a=new Pe(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new is;let a=new J(o.shininess??30),d=new Pe(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new ns;let a=new J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new yl;let a=new J(o.shininess??30),d=new Pe(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Pr(e,t,o,s,u)}get category(){return this.node.category}};function HP(n){let r=n instanceof Tr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function WP(n,r,e,t){switch(n.type){case"color":{let o=new Pe(t.color??5526619),i=new J(t.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(t.mode??0);return o.alpha=i,new He(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Pe(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new xe(t.mode??0),d=new ls(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new He(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new st(t.wavelengths??new _r(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new st(t.offset??new _r(0,0,0)),a=new J(t.alpha??1),d=new cs(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new He(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=at.transmissionSize,c=at.transmissionRenderTarget,u=at.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new et(d/a,1):new et(1,a/d),f=new J(t.alpha??1),m=new us(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new He(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new nr(t.colors.length,t.colors):(i=new nr(10,new oi(0,0,0,1)),i.value[1]=new oi(1,1,1,1));let s;t.steps?s=new or(t.steps.length,t.steps):(s=new or(10,1),s.value[0]=0);let l=new st(t.source??new _r(0,0,0)),c=new co(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new Ft(t.shadowColor),p=new st(t.offset??new _r(0,0,0)),f=new J(t.alpha??1),m=new Ss(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new He(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Pe(t.outlineColor??16777215),i=new Pe(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new st(t.contourDirection??new _r(0,1,0)),f=new co(t.positionalLines??!1),m=new co(t.compensation??!0),h=at.normalRenderTarget,y=at.normalRenderTargetDepth,g=at.pixelRatioNode,v=at.resolution,b=new J(t.alpha??1),w=new ds(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,b),S=new _e(w.calpha,"f"),T=new xe(t.mode??0);return new He(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,alpha:b,mode:T},w,T,S)}case"depth":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new st(t.origin??new _r),d=new st(t.direction??new _r),p;t.colors?p=new nr(t.colors.length,t.colors):(p=new nr(2,new oi(0,0,0,1)),p.value[1]=new oi(1,1,1,1));let f;t.steps?f=new or(t.steps.length,t.steps):(f=new or(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new xe(t.mode??0),y=new ps(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new st(t.size??new _r(100,100,100)),s=new J(t.move??1),l=new et(t.fA??new Lo(1.7,9.2)),c=new et(t.fB??new Lo(8.3,2.8)),u=new et(t.distortion??new Lo(1,1)),a=new Ft(t.colorA),d=new Ft(t.colorB),p=new Ft(t.colorC),f=new Ft(t.colorD),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new as(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new He(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new st(t.cnormal??new _r(1,1,1)),i=new J(t.alpha??1),s=new xe(t.mode??0),l=new xs(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new He(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s;t.colors?s=new nr(t.colors.length,t.colors):(s=new nr(10,new oi(0,0,0,1)),s.value[1]=new oi(1,1,1,1));let l;t.steps?l=new or(t.steps.length,t.steps):(l=new or(10,1),l.value[0]=0);let c=new et(t.offset??new Lo(0,0)),u=new et(t.morph??new Lo(0,0)),a=new J(t.angle??0),d=new J(t.alpha??1),p=new xe(t.mode??0),f=new hs(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Pe(1,0,0,1),i=new J(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new He(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function qP(n,r,e,t){let o=vy(e,t);return WP(e,n,r,o)}function Gd(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function _y(n,r){let e=0;for(let t of n.layers)if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}return e<1}var At=class extends $P{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},jd=class extends At{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},ni=class extends At{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new jd(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??St.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Tr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=_y(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof Pr),this.lightLayer===void 0&&(this.lightLayer=new Pr(0,"",{...ft.defaultData("light","phong"),visible:!1},new Eo,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=_y(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=Tr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),o.scene?.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene?.markNeedsUpdateRendererDirty();else if(e.type===6){let l=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=Tr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}blendColors(){let e=this.layers.findIndex(o=>o instanceof He),t=this.layers.findIndex(o=>o instanceof Pr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof He&&(o=new fs(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Pr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof He&&(e=new fs(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof ws);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Pt(t,e[o].position,Pt.ADD),t=new Pt(t,new J(.5).setReadonly(!0),Pt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Ld[t.type]??[]).map(l=>t[l]),i=(Bd[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new hl;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof He){let t=e.params.texture;if(t instanceof Mo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(At.prototype,{properties:{get:function(){return this.fragment.properties}}});var Bo=class extends ni{};var Ay=Rs(Ty());var Py=new Map;function Oy(n){if(typeof n=="string")return n;let r=Py.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Py.set(n,r)),r.url}var Do=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:Oy(r),format:"wav"},this.sound=new Ay.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as YP,Vector2 as Go,Path as Iy,Shape as XP,ShapeUtils as KP,Color as ZP}from"three";var Tl=class{constructor(){this.type="ShapePath";this.color=new ZP;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Iy,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,v){let b=h.x,w=y.x,S=g.x,T=v.x,_=h.y,x=y.y,C=g.y,P=v.y,I=(T-S)*(_-C)-(P-C)*(b-S),O=(w-b)*(_-C)-(x-_)*(b-S),A=(P-C)*(w-b)-(T-S)*(x-_),R=I/A,U=O/A;if(A===0&&I!==0||R<=0||R>=1||U<0||U>1)return null;if(I===0&&A===0){for(let q=0;q<2;q++)if(i(q===0?g:v,h,y),t.loc===e.ORIGIN){let te=q===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(b+t.t*(w-b)).toPrecision(10),$=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:$,t:t.t}}return null}else{for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let W=$===0?g:v;return{x:W.x,y:W.y,t:t.t}}let q=+(b+R*(w-b)).toPrecision(10),te=+(_+R*(x-_)).toPrecision(10);return{x:q,y:te,t:R}}}function i(h,y,g){let v=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,T=v*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=w/v:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],C=o(w,S,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new Go(C.x,C.y)))}}return v}function l(h,y,g){let v=new Go;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(T=>{b.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,v,b){(b==null||b==="")&&(b="nonzero");let w=new Go;h.boundingBox.getCenter(w);let S=[new Go(g,w.y),new Go(v,w.y)],T=l(S,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;if(P.push(h.identifier),b==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let U=0;U<P.length;U++){let q=P[U];y[q]&&(O?(R=y[q].isCW,O=!1,A=q):R!==y[q].isCW&&(R=y[q].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>b&&(b=T.x),T.x<w&&(w=T.x)}d<=b&&(d=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:KP.isClockWise(y),identifier:u++,boundingBox:new YP(new Go(w,v),new Go(b,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new XP;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Iy;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Ny,Fd=new Promise(n=>{Ny=n}),Cy=!1;async function Ey(){if(Cy)return;let n=await import("./opentype.js");Ny(n),Cy=!0}var _s=class{async load(r,e,t=()=>{}){let{load:o}=await Fd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Fd;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function QP(n){return await(await fetch(n)).arrayBuffer()}var JP=new _s;async function zd(n){let r,e,t=!1;if(n.url?(r=await QP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await JP.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as eO,LineCurve as tO,QuadraticBezierCurve as rO}from"three";function oO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Pl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=zd(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=zd(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,s=[],l=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let a=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[l];if(oO(a,p)||c)s.push({char:d,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:d,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
|
|
1335
1335
|
`,e),u=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(v=>[]),h=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let b=r[v],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,b,c);let T=[];try{T=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<S.length;_++){let x=S[_],C=x.index===0?`
|
|
1336
1336
|
`:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],I=0,O=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),d+=O+I;let A=0;if(C===`
|
|
1337
|
-
`)A=u;else if(C===" ")A=a;else{let
|
|
1338
|
-
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new _l,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&u.type!=="Z"&&a.x===u.x&&-a.y===u.y))switch(u.type){case"M":l.moveTo(u.x,-u.y);break;case"L":l.lineTo(u.x,-u.y);break;case"Q":l.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":l.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return l.subPaths.forEach(u=>{let a=iO(u.curves);a!==void 0&&u.currentPoint.distanceTo(a)>0&&u.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function iO(n){if(n.length){let r=n[0];if(r instanceof rO)return r.v1;if(r instanceof tO||r instanceof oO)return r.v0}}var kd=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Ps=class extends kd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Co(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Ly={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Hd=class extends vl{constructor(e){super();this.shared=e}create(e){return new ni(e,this.shared)}},Vo=class{constructor(r,e={}){this.geometryCache=new Ps(!0);this.geometryCache2=new Ps(!1);this.imageHolderCache=new Hd(this);this.thisContext={scene:Ly,shared:this};this.deletedMaterial=new Do(wt.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new zt(En.emptyImage,this);this.deletedVideo=new zt(en.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Do(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new si(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new zt(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new zt(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new uo(e.r,e.g,e.b,e.a):this.colors[r]=new uo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new $e(0,0,0,0))}else return"a"in r?new $e(r.r,r.g,r.b,r.a):new $e(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Go)return e;{let t=new Go({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Go&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Tl(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Go&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},By=new Vo(Da.emptyData());var ir=class extends it{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),vu(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(Wt(e.path,["material"])&&this.material instanceof It)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(rt.drop(e,1),t.material,o);else if(Wt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(rt.drop(e,2),s,o)}}}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene?.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene?.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene?.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&ca(this.material).forEach(e=>{e instanceof It&&(e instanceof Do||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as sO}from"three";var lt=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof sO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Vo){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ii.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ii.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Wt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(rt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let a={...this.data.geometry,...i};this.localGeometry=Co(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Qi(this.localGeometry.attributes,s/u.sxPrev,l/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=l,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Co(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Mi(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Fe&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function lO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new qd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new qd})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new Dy(i,3))}function cO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new qd;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new Dy(t,3))}function ai(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof It)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?cO(n):lO(n)}function li(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Wd.seededRandom(o),Wd.seededRandom(o+1e4),Wd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new aO(t,3))}var fO;Yn.then(n=>{fO=n});var Or=new dO,Os=new pO;function Ry(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var jo=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new uO;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Fe.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ai(this),li(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,it.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Gy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(t),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(Os),this.hasNonUniformScale&&Os.divide(this.scale);let i={width:Os.x,height:Os.y,depth:Os.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Gy);let o=t.boundingSphere.center;Or.getCenter(o),t.boundingSphere.radius=o.distanceTo(Or.max)}freeSubdivPointer(){this.subdivPointer&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};import{Triangle as mO,Vector3 as zo}from"three";var Vy=-1,hO=1,jy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Fy={polygon_center:0,edge:1,vertex:2},As=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Vy)*(e-t)/(hO-Vy)+t};function zy(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var yO=new zo,Pl=new zo,gO=new zo,xO=new zo;function ci(n,r){let e=gO.fromArray(n),t=xO.fromArray(r);Pl.copy(t).sub(e);let o=Pl.length();return Pl.normalize().multiplyScalar(o*.5),yO.copy(e).add(Pl).toArray()}var Ut=new mO,Ol=new zo,Al=new zo,Fo=new zo;function Uy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Ol.fromArray(n.index.array,e*3),Ut.setFromAttributeAndIndices(n.attributes.position,Ol.x,Ol.y,Ol.z),Ut.getNormal(Al),Ut.getMidpoint(Fo),!(isNaN(Fo.x)||isNaN(Fo.y)||isNaN(Fo.z))){let{a:t,b:o,c:i}=Ut,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ci(s,l),f=ci(l,c),m=ci(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=Ut.getMidpoint(Fo).toArray();y===u&&!g&&(v=[f,m,m],b=p),y===a&&!g&&(v=[p,m,m],b=f),y===d&&!g&&(v=[p,f,f],b=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:b,norm:Ut.getNormal(Al).toArray()})}return r}function ky(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Ut.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Ut.getNormal(Al),Ut.getMidpoint(Fo);let o=Ut.a.toArray(),i=Ut.b.toArray(),s=Ut.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ci(o,i),ci(i,s),ci(s,o)],midpoint:Fo.toArray(),norm:Al.toArray()})}return r}var vO=4,bO=.5,$d=n=>.5*(1-Math.cos(n*Math.PI)),Yd=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),l=r-o,c=e-i,u=t-s,a,d,p=0,f=.5,m,h,y;for(let g=0;g<vO;g++){let v=o+(i<<4)+(s<<8);a=$d(l),d=$d(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=d*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=d*(y-h),m+=$d(u)*(h-m),p+=m*f,f*=bO,o<<=1,l*=2,i<<=1,c*=2,s<<=1,u*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,l;return{setSeed(c){l=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return l=(1664525*l+1013904223)%4294967296,l/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Hy=Yd;import{Vector3 as SO,Matrix4 as wO,Ray as _O}from"three";var Wy=new SO,qy=new wO,$y=new _O;function Yy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var di=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(qy.copy(o).invert(),$y.copy(e.ray).applyMatrix4(qy),$y.intersectBox(this.singleBBox,Wy))){let i=Wy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var yt=1e-4,Ar,Qy,Jy,eg,Ky=new Gt,Zy=new Gt;Yn.then(n=>{Ar=n,Qy=[Ar.get_face_center,Ar.get_edge_midpoint,Ar.get_vertex_position],Jy=[Ar.get_face_normal,Ar.get_edge_normal,Ar.get_vertex_normal],eg=[Ar.face_count,Ar.edge_count,Ar.vertex_count]});var PO=new ko,OO=new ko,fo=new Gt,Uo=new Gt,Is=new Gt,Kd=new Gt,AO=new Gt,IO=new Gt;var Hr=new Hy,pi=class extends Mn(TO){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof zr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof zr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new zr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new zr(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Xy.DEG2RAD,i=t.end*Xy.DEG2RAD,s=o-i,l=new Xd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Gt(0,0,1);break;case"y":c=new Gt(0,1,0);break;default:case"x":c=new Gt(1,0,0);break}let u=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";Hr.noiseSeed(u.seed);let d=ja((0,ui.default)(u.seed)),p=As(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?Hr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||yt,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||yt,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||yt,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,u.position[0])),m.position.y+=t.position[1]+p(f,me(y,u.position[1])),m.position.z+=t.position[2]+p(f,me(y,u.position[2]));let v=p(f,me(y,u.rotation[0])),b=p(f,me(y,u.rotation[1])),w=p(f,me(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+b,m.rotation.z+=l.z+w):m.rotation.set(l.x+v,l.y+b,l.z+w)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Xd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let l=ja((0,ui.default)(i.seed)),c=As(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?Hr.noise(d):l(d,d),f=c(u,me(p,i.rotation[0])),m=c(u,me(p,i.rotation[1])),h=c(u,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,me(p,i.scale[0]))||yt,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||yt,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||yt,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,me(p,i.position[0])),a.position.y=t.position[1]*u+c(u,me(p,i.position[1])),a.position.z=t.position[2]*u+c(u,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=As(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let c=Vm((0,ui.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new Gt(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?Hr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||yt,y.scale.y=1+s(t,me(h,i.scale[1]))||yt,y.scale.z=1+s(t,me(h,i.scale[2]))||yt;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),b=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,b),y.position.x=o.size[0]*d-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,me(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?Hr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||yt,m.scale.y=1+s(t,me(f,i.scale[1]))||yt,m.scale.z=1+s(t,me(f,i.scale[2]))||yt;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Xd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let l=ja((0,ui.default)(i.seed)),c=As(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof di)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,b=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),S=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[b/v,w/v,S/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(b=>b.norm))}):a.push(g)});let f=zy(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Fa(this.objectForSample).build(),h=jy[t.axis],y=this.children;m.setRandomGenerator((0,ui.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?Hr.noise(b):l(b,b),S=c(g,me(w,i.rotation[0])),T=c(g,me(w,i.rotation[1])),_=c(g,me(w,i.rotation[2]));t.spreadType==="random"?m.sample(Is,Kd):(f.length&&(Is.fromArray(f[g].pos),Kd.fromArray(f[g].norm)),this.objectForSample instanceof jo&&Is.applyMatrix4(PO.copy(this.objectForSample.matrixWorld).invert())),Is.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Is),fo.fromArray(h);let x=t.align==="normal"?Kd:this.object.getWorldDirection(IO),C=Uo.fromArray(t.position);Uo.x+=Uo.x+c(g,me(w,i.position[0])),Uo.y+=Uo.y+c(g,me(w,i.position[1])),Uo.z+=Uo.z+c(g,me(w,i.position[2]));let P=Math.acos(x.dot(fo)),I=AO.crossVectors(fo,x).normalize(),O=OO.makeRotationAxis(I,P),A=x.clone().cross(this.object.up).normalize(),G=A.clone().cross(x).normalize(),z=new ko().makeBasis(A,x,G),$=new Gt(fo.y,fo.z,fo.x).normalize(),te=$.clone().cross(fo).normalize(),K=new ko().makeBasis($,fo,te).invert(),q=new ko().multiplyMatrices(z,K);v.rotation.setFromRotationMatrix(q),C.applyMatrix4(O),v.position.add(C),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(w,i.scale[0]))||yt,v.scale.y=v.scale.y+t.scale[1]+c(g,me(w,i.scale[1]))||yt,v.scale.z=v.scale.z+t.scale[2]+c(g,me(w,i.scale[2]))||yt,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof jo){let t=this.objectForSample,o=Fy[e],i=eg[o],s=Qy[o],l=Jy[o],c=[],u=i(t.subdivPointerNew);for(let a=0;a<=u-1;a++){let d=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);Ky.fromArray(d).applyMatrix4(t.matrixWorld),Zy.fromArray(p),c.push({pos:Ky.toArray(),norm:Zy.toArray()})}return c}else return(this.objectForSample.geometry.index?Uy(this.objectForSample.geometry):ky(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=jr(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof it?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new ko,this.hiddenMatrix=new ko,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as yA,Scene as gA,Vector3 as xA,Fog as vA,Box3 as bA,MeshBasicMaterial as SA}from"three";import{Camera as FO,OrthographicCamera as ng,PerspectiveCamera as zO,Vector3 as ar,Object3D as ig,Quaternion as UO}from"three";import{Camera as BO,LineSegments as DO,BufferGeometry as GO,LineBasicMaterial as RO,Color as Qd,Vector3 as VO,Float32BufferAttribute as rg}from"three";import{BoxGeometry as CO}from"three";var Ir=n=>{var r;return r=class extends n{},r.geometryHelper=new CO(30,30,30),r};import{Ray as NO,Sphere as EO,Matrix4 as MO,Vector3 as Wr}from"three";var Il=new NO,Zd=new EO,tg=new MO,Cr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Zd.copy(i.boundingSphere),Zd.applyMatrix4(s),e.ray.intersectsSphere(Zd)===!1||(tg.copy(s).invert(),Il.copy(e.ray).applyMatrix4(tg),i.boundingBox!==null&&Il.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(d.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),a=d.getX(m+2),l=y(n,e,Il,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Wr,w=new Wr,S=new Wr,T=new Wr,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=I,G=O-1;A<G;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),Il.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new Wr,C=new Wr,P=new Wr,I=new Wr,O=new Wr;if(x.fromBufferAttribute(w,S),C.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,C,P,!1,I)===null)return null;O.copy(I),O.applyMatrix4(g.matrixWorld);let G=v.ray.origin.distanceTo(O);return G<v.near||G>v.far?null:{faceIndex:1,distance:G,point:O.clone(),object:g}}};var Cl=new VO,kt=new BO,Jd=class extends DO{constructor(e){let t=new GO,o=new RO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new Qd(15711266),u=new Qd(15711266),a=new Qd(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",a),d("u2","u3",a),d("u3","u1",a);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}t.setAttribute("position",new rg(i,3)),t.setAttribute("color",new rg(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;kt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;sr("n1",t,e,kt,-i,-s,l),sr("n2",t,e,kt,i,-s,l),sr("n3",t,e,kt,-i,s,l),sr("n4",t,e,kt,i,s,l);let c=l;sr("f1",t,e,kt,-i,-s,c),sr("f2",t,e,kt,i,-s,c),sr("f3",t,e,kt,-i,s,c),sr("f4",t,e,kt,i,s,c);let u=c,a=.5;sr("u1",t,e,kt,i*.7*a,s*1.1,u),sr("u2",t,e,kt,-i*.7*a,s*1.1,u),sr("u3",t,e,kt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,r,e,t,o,i,s){Cl.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],Cl.x,Cl.y,Cl.z)}}var Nl=class extends Ir(Jd){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,t){Cr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as og,BoxGeometry as jO}from"three";var El;(r=>r.is=e=>"objectHelper"in e)(El||(El={}));var mo=(n,r)=>class extends Ha(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof og&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof jO?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof og&&(i.visible=!1)}}};var eu=790,fi=new ar,tu=new ar,ru=new UO,ou=new ar,Cs=new ar,nu=new ar,Nr=class extends mo(FO,Nl){constructor(e="",t={...In.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=bo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??eu,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new ng(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new ng(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new zO(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new ar(e,t,o)),super.lookAt(e),this.getWorldPosition(fi),this.targetOffset=fi.distanceTo(e)}getTarget(e=new ar){return this.getWorldDirection(tu),this.getWorldPosition(fi),tu.multiplyScalar(this.targetOffset),e.copy(fi).add(tu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(fi),fi.distanceTo(e)}updateUp(){this.getWorldQuaternion(ru),ou.set(0,0,1).applyQuaternion(ru),Cs.copy(ig.DEFAULT_UP),this.isUpVectorFlipped&&Cs.negate(),Cs.applyQuaternion(ru),nu.copy(ig.DEFAULT_UP).projectOnPlane(ou),this.angleOffsetFromUp=nu.angleTo(Cs),this.angleOffsetFromUp*=nu.cross(Cs).dot(ou)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new ar),i=e.getWorldDirection(new ar).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new ar),i=this.getWorldDirection(new ar).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??eu,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;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,t,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,o,i,s,l)}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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom,autoZoom:!0,autoZoomFrustumSize:eu},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Pn(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{BufferGeometry as sg,Float16BufferAttribute as kO,Matrix4 as HO}from"three";var ag=new HO;var Ht=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new sg;this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof Ht&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof it&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=tr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof Ht&&s.needsTransformForDownstream===!0?(tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(ag.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),tr.transformMeshSet(s.booleanMeshSetAddress,ag),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new kO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return tr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new sg,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=tr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ai(this),li(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as WO}from"three";var lg;(r=>{function n(e){return Ie.is(e)&&e instanceof WO}r.is=n})(lg||(lg={}));var mi=(n,r)=>class extends mo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var hi=n=>n instanceof it,Ns=n=>n!==null&&n instanceof Ht,cg=n=>n instanceof Nr;var iu=n=>El.is(n);import{Group as $O}from"three";import{AxesHelper as qO}from"three";var ho=class extends Ir(qO){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Cr(this.object,ho.geometryHelper,e,t)}update(){}};var Es=class extends mo($O,ho){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as QO,CameraHelper as dg}from"three";import{DirectionalLightHelper as YO}from"three";var yi=class extends Ir(YO){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,yi.geometryHelper,e,t)}};import{PointLightHelper as XO}from"three";var gi=class extends Ir(XO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,gi.geometryHelper,e,t)}};import{SpotLightHelper as KO,Vector3 as ZO}from"three";var Ml=class extends Ir(KO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,Ml.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ml._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Ms=Ml;Ms._vector=new ZO;function JO(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var Ll=class extends mi(QO,yi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new dg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof dg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&JO(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t&&this.update()}};import{PointLight as eA,Vector3 as Bl,Box3 as tA,Box3Helper as ug,Color as rA}from"three";var Dl=class extends mi(eA,gi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new Bl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Bl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new tA(s,l),u=new ug(c,new rA(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof ug){let t=this.shadow.camera,o=new Bl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Bl(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};import{SpotLight as oA,CameraHelper as pg,MathUtils as nA,Vector3 as yg,Quaternion as iA}from"three";var fg=new yg,mg=new yg,hg=new iA,Gl=class extends mi(oA,Ms){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=nA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new pg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof pg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),mg.setFromMatrixPosition(this.matrixWorld),hg.setFromRotationMatrix(this.matrixWorld),fg.copy(this.up).applyQuaternion(hg).negate().multiplyScalar(this.distance),this.target.position.copy(mg).add(fg),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Rl=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?ts(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var xi=class extends lt{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=al;break;case"Ellipse":i=Un;break;case"Polygon":i=sl;break;case"Star":i=ll;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?ts(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as sA}from"three";var qr=class extends mo(sA,ho){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of no.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of no.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Ie.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Vl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&xg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Vl(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Ie.is(e)&&Vl(e)}}function gg(n,r,e,t){return n.component===r&&Mi(n.identity,t)?n.overrideData===e?2:1:0}function xg(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof qr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Ie.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=Cn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ie.is(m)?m:null,p!==null){let h=gg(p,u,d,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=gg(p,u,d,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=d?Mr.apply(u.data,d):u.data;$t.is(m.type)&&(m={...m,type:"Empty"}),p=Kt.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,xg(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Ie.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function aA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new di(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new jo(n,r,e):r.geometry.type==="PathGeometry"?t=new xi(n,r,e):r.geometry.type==="VectorGeometry"?t=new Rl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Ht(n,r,e):t=new lt(n,r,e),t)}function jl(n,r,e){return r.type==="Mesh"?aA(n,r,e):r.type==="Empty"?new Es(n,r):r.type==="PointLight"?new Dl(n,r,e):r.type==="SpotLight"?new Gl(n,r,e):r.type==="DirectionalLight"?new Ll(n,r,e):r.type==="Component"||r.type==="Instance"?new qr(n,r,e):$t.is(r.type)?new Nr(n,r):(console.error(r),new Es(n,r))}Kt.createEntity=jl;function lA(n,r,e){let t=jl(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Kt.changeEntityProptotype=lA;Kt.Cloner=pi;function vg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as dA,Ray as uA,Raycaster as pA}from"three";function bg(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,li(n),ai(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function Sg(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),e}function wg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)bg(e,e.material[t])&&(r=!0);else bg(e,e.material)&&(r=!0)}),r}function _g(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Sg(e,e.material[t])&&(r=!0);else Sg(e,e.material)&&(r=!0)}),r}var fA=new pA,mA=new dA,hA=new uA;function su(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=mA.copy(i.matrixWorld).invert(),l=hA.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let u=fA;u.set(l.origin,l.direction),u.near=r.near,u.far=r.far;let a=u.intersectObject(n,!1);a.length>0&&e.push({...a[0],object:t?i:n})}}var Fl=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let l=i.length-2;l>=0;l--)if(!e.has(i[l])){let c=r.find(i[l]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[l]}`),e.add(i[l])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var wA=new SA;wA.wireframe=!0;var Tg=new xA,au=class extends gA{constructor(e,t){super();this.data=e;this.backupFog=new vA(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.geometryCacheChanged=!1;this.bgColor=new $e(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Fl;this.needsRecomputeInstances=!1;this.ambientLight=new yA(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=_g(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=wg(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Ku(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),hi(i)&&Ns(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),o.parent.remove(o),Ns(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),hi(o)&&(o.freeBooleanPointer(),i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof xi&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),hi(o)&&(o.invalidateUpstreamBooleanData(),Ns(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{vg(s,t,o,{scene:this,shared:i}),s instanceof lt&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(ht(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Nr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Ns(o)&&o.recomputeBoolean(),o instanceof Nr&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ie.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ie.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=Qo(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...ca(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;ut.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof qr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Qo(s.data,l=>{l.events.delete(i.id)}).data)}):i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof qr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Vl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof qr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Ie.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Nr(au.PERSONAL_CAMERA_ID,{...In.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ie.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((hi(s)||iu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),su(s,e,t)),o(s))}};return o(this),t}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ie.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((hi(s)||iu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),su(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ie.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ie.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Ri.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ie.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=ht(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=ht(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=ht(e.groundColor,t)),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.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,s,l){let c={scene:this,shared:l},u=jl(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,l)),u.updateState(t,c),u instanceof lt&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],u=this.find(l),a=c?u.recursiveBBox:u.singleBBox;t.push(...a.vertices)}let o=new bA;return o.setFromPoints(t),o.getCenter(Tg),Tg}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof it)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof It&&e(t.material[o]);else t.material instanceof It&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),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=i})})}},vi=au;vi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",vi.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";import{DRACOLoader as _A}from"three/examples/jsm/loaders/DRACOLoader.js";var yo;function TA(){return yo||(yo=new _A,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function PA(n){if(yo){let r={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await yo.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Pg(n,r){let[e,t]=Zl(ea.deserialize(new Uint8Array(n)));Bm(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await TA();for(let i of o){let s=await PA(Ye(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:u,itemSize:a})=>{l[c]={array:u,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as CX}from"three";import{mergeBufferGeometries as MX}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Og(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as Ag,ShaderLib as OA}from"three";function Ig(n){let r=new Set;return n.traverse(e=>{if(e instanceof ir)if(Ve(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(AA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Ag,specularColor:new Ag});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},OA.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else IA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function AA(n){return n.getLayersOfType("transmission").length>0}function IA(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function Cg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Ng(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as CA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Eg(n){let r=[];return n.traverse(e=>{e instanceof pi&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Og(c),c}),s=CA(e.parameters.hideBase?i:[t instanceof it?t.geometry:[],...i]);t instanceof it&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:By})}),n}function Mg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Lg(n){Object.values(n.shared.materials).forEach(r=>{lu(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?lu(e.material):"materials"in e&&e.materials.forEach(t=>{lu(t)})})}function lu(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Rg=Gs(Dg(),1),Gg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",cu=class extends EA{load(r,e,t,o=console.error){let i=new NA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Gg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Gg),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},t,o)}async parse(r){let e=await Pg(r,Lg);e.version&&(0,Rg.default)(e.version,"0.9.335")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Ry(e)&&ty(),Yy(e)&&My()].filter(Boolean));let t=new Vo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new vi(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&cg(s)&&Object.assign(s,{makeDefault:!0})}return o=Eg(o),o=Ig(o),o=Cg(o),o=Ng(o),o=Mg(o),o}};export{cu as default};
|
|
1337
|
+
`)A=u;else if(C===" ")A=a;else{let R=this.createPath(x,o,d,p,e);R&&(A=R.offsetX-(I+O),f.push(R.path))}if(P.replacements.length===1)h[v].push([d,p]),m[v].push(A);else{let R=P.replacements.map($=>(t.glyphs.get($).advanceWidth??0)*o),U=R.reduce(($,W)=>$+=W,0),q=R.map($=>$/U),te=d;for(let $=0;$<q.length;$++){let W=A*q[$];h[v].push([te,p]),m[v].push(W),te+=W}}d+=A,y=x}p-=i}let g=[];for(let v=0,b=f.length;v<b;v++)g.push(...f[v].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
|
|
1338
|
+
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new Tl,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&u.type!=="Z"&&a.x===u.x&&-a.y===u.y))switch(u.type){case"M":l.moveTo(u.x,-u.y);break;case"L":l.lineTo(u.x,-u.y);break;case"Q":l.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":l.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return l.subPaths.forEach(u=>{let a=nO(u.curves);a!==void 0&&u.currentPoint.distanceTo(a)>0&&u.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function nO(n){if(n.length){let r=n[0];if(r instanceof tO)return r.v1;if(r instanceof eO||r instanceof rO)return r.v0}}var Ud=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Ts=class extends Ud{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Io(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var My={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var kd=class extends bl{constructor(e){super();this.shared=e}create(e){return new ri(e,this.shared)}},Ro=class{constructor(r,e={}){this.geometryCache=new Ts(!0);this.geometryCache2=new Ts(!1);this.imageHolderCache=new kd(this);this.thisContext={scene:My,shared:this};this.deletedMaterial=new Bo(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new zt(Cn.emptyImage,this);this.deletedVideo=new zt(Qo.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Bo(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new ni(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new zt(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new zt(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new uo(e.r,e.g,e.b,e.a):this.colors[r]=new uo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new $e(0,0,0,0))}else return"a"in r?new $e(r.r,r.g,r.b,r.a):new $e(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Do)return e;{let t=new Do({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Do&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Pl(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Do&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Ly=new Ro(Ga.emptyData());var ir=class extends it{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),xu(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(Wt(e.path,["material"])&&this.material instanceof At)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(rt.drop(e,1),t.material,o);else if(Wt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(rt.drop(e,2),s,o)}}}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene?.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene?.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene?.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&da(this.material).forEach(e=>{e instanceof At&&(e instanceof Bo||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as iO}from"three";var lt=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof iO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Ro){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Oi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Oi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Wt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(rt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let a={...this.data.geometry,...i};this.localGeometry=Io(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Zi(this.localGeometry.attributes,s/u.sxPrev,l/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=l,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Io(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Ni(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Fe&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function aO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new Wd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new Wd})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new By(i,3))}function lO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new Wd;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new By(t,3))}function ii(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof At)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?lO(n):aO(n)}function si(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Hd.seededRandom(o),Hd.seededRandom(o+1e4),Hd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new sO(t,3))}var pO;qn.then(n=>{pO=n});var Or=new cO,Ps=new uO;function Gy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Vo=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new dO;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Fe.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ii(this),si(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,it.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Dy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(t),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(Ps),this.hasNonUniformScale&&Ps.divide(this.scale);let i={width:Ps.x,height:Ps.y,depth:Ps.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Dy);let o=t.boundingSphere.center;Or.getCenter(o),t.boundingSphere.radius=o.distanceTo(Or.max)}freeSubdivPointer(){this.subdivPointer&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};import{Triangle as fO,Vector3 as Fo}from"three";var Ry=-1,mO=1,Vy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},jy={polygon_center:0,edge:1,vertex:2},Os=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Ry)*(e-t)/(mO-Ry)+t};function Fy(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var hO=new Fo,Ol=new Fo,yO=new Fo,gO=new Fo;function ai(n,r){let e=yO.fromArray(n),t=gO.fromArray(r);Ol.copy(t).sub(e);let o=Ol.length();return Ol.normalize().multiplyScalar(o*.5),hO.copy(e).add(Ol).toArray()}var Ut=new fO,Al=new Fo,Il=new Fo,jo=new Fo;function zy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Al.fromArray(n.index.array,e*3),Ut.setFromAttributeAndIndices(n.attributes.position,Al.x,Al.y,Al.z),Ut.getNormal(Il),Ut.getMidpoint(jo),!(isNaN(jo.x)||isNaN(jo.y)||isNaN(jo.z))){let{a:t,b:o,c:i}=Ut,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ai(s,l),f=ai(l,c),m=ai(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=Ut.getMidpoint(jo).toArray();y===u&&!g&&(v=[f,m,m],b=p),y===a&&!g&&(v=[p,m,m],b=f),y===d&&!g&&(v=[p,f,f],b=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:b,norm:Ut.getNormal(Il).toArray()})}return r}function Uy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Ut.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Ut.getNormal(Il),Ut.getMidpoint(jo);let o=Ut.a.toArray(),i=Ut.b.toArray(),s=Ut.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ai(o,i),ai(i,s),ai(s,o)],midpoint:jo.toArray(),norm:Il.toArray()})}return r}var xO=4,vO=.5,qd=n=>.5*(1-Math.cos(n*Math.PI)),$d=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),l=r-o,c=e-i,u=t-s,a,d,p=0,f=.5,m,h,y;for(let g=0;g<xO;g++){let v=o+(i<<4)+(s<<8);a=qd(l),d=qd(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=d*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=d*(y-h),m+=qd(u)*(h-m),p+=m*f,f*=vO,o<<=1,l*=2,i<<=1,c*=2,s<<=1,u*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,l;return{setSeed(c){l=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return l=(1664525*l+1013904223)%4294967296,l/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},ky=$d;import{Vector3 as bO,Matrix4 as SO,Ray as wO}from"three";var Hy=new bO,Wy=new SO,qy=new wO;function $y(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var li=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Wy.copy(o).invert(),qy.copy(e.ray).applyMatrix4(Wy),qy.intersectBox(this.singleBBox,Hy))){let i=Hy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var yt=1e-4,Ar,Zy,Qy,Jy,Xy=new Gt,Ky=new Gt;qn.then(n=>{Ar=n,Zy=[Ar.get_face_center,Ar.get_edge_midpoint,Ar.get_vertex_position],Qy=[Ar.get_face_normal,Ar.get_edge_normal,Ar.get_vertex_normal],Jy=[Ar.face_count,Ar.edge_count,Ar.vertex_count]});var TO=new Uo,PO=new Uo,fo=new Gt,zo=new Gt,As=new Gt,Xd=new Gt,OO=new Gt,AO=new Gt;var Hr=new ky,di=class extends Nn(_O){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof zr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof zr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new zr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new zr(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Yy.DEG2RAD,i=t.end*Yy.DEG2RAD,s=o-i,l=new Yd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Gt(0,0,1);break;case"y":c=new Gt(0,1,0);break;default:case"x":c=new Gt(1,0,0);break}let u=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";Hr.noiseSeed(u.seed);let d=Fa((0,ci.default)(u.seed)),p=Os(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?Hr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||yt,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||yt,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||yt,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,u.position[0])),m.position.y+=t.position[1]+p(f,me(y,u.position[1])),m.position.z+=t.position[2]+p(f,me(y,u.position[2]));let v=p(f,me(y,u.rotation[0])),b=p(f,me(y,u.rotation[1])),w=p(f,me(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+b,m.rotation.z+=l.z+w):m.rotation.set(l.x+v,l.y+b,l.z+w)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Yd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let l=Fa((0,ci.default)(i.seed)),c=Os(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?Hr.noise(d):l(d,d),f=c(u,me(p,i.rotation[0])),m=c(u,me(p,i.rotation[1])),h=c(u,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,me(p,i.scale[0]))||yt,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||yt,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||yt,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,me(p,i.position[0])),a.position.y=t.position[1]*u+c(u,me(p,i.position[1])),a.position.z=t.position[2]*u+c(u,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=Os(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let c=Rm((0,ci.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new Gt(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?Hr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||yt,y.scale.y=1+s(t,me(h,i.scale[1]))||yt,y.scale.z=1+s(t,me(h,i.scale[2]))||yt;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),b=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,b),y.position.x=o.size[0]*d-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,me(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?Hr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||yt,m.scale.y=1+s(t,me(f,i.scale[1]))||yt,m.scale.z=1+s(t,me(f,i.scale[2]))||yt;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Yd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let l=Fa((0,ci.default)(i.seed)),c=Os(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof li)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,b=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),S=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[b/v,w/v,S/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(b=>b.norm))}):a.push(g)});let f=Fy(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new za(this.objectForSample).build(),h=Vy[t.axis],y=this.children;m.setRandomGenerator((0,ci.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?Hr.noise(b):l(b,b),S=c(g,me(w,i.rotation[0])),T=c(g,me(w,i.rotation[1])),_=c(g,me(w,i.rotation[2]));t.spreadType==="random"?m.sample(As,Xd):(f.length&&(As.fromArray(f[g].pos),Xd.fromArray(f[g].norm)),this.objectForSample instanceof Vo&&As.applyMatrix4(TO.copy(this.objectForSample.matrixWorld).invert())),As.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(As),fo.fromArray(h);let x=t.align==="normal"?Xd:this.object.getWorldDirection(AO),C=zo.fromArray(t.position);zo.x+=zo.x+c(g,me(w,i.position[0])),zo.y+=zo.y+c(g,me(w,i.position[1])),zo.z+=zo.z+c(g,me(w,i.position[2]));let P=Math.acos(x.dot(fo)),I=OO.crossVectors(fo,x).normalize(),O=PO.makeRotationAxis(I,P),A=x.clone().cross(this.object.up).normalize(),R=A.clone().cross(x).normalize(),U=new Uo().makeBasis(A,x,R),q=new Gt(fo.y,fo.z,fo.x).normalize(),te=q.clone().cross(fo).normalize(),$=new Uo().makeBasis(q,fo,te).invert(),W=new Uo().multiplyMatrices(U,$);v.rotation.setFromRotationMatrix(W),C.applyMatrix4(O),v.position.add(C),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(w,i.scale[0]))||yt,v.scale.y=v.scale.y+t.scale[1]+c(g,me(w,i.scale[1]))||yt,v.scale.z=v.scale.z+t.scale[2]+c(g,me(w,i.scale[2]))||yt,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Vo){let t=this.objectForSample,o=jy[e],i=Jy[o],s=Zy[o],l=Qy[o],c=[],u=i(t.subdivPointerNew);for(let a=0;a<=u-1;a++){let d=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);Xy.fromArray(d).applyMatrix4(t.matrixWorld),Ky.fromArray(p),c.push({pos:Xy.toArray(),norm:Ky.toArray()})}return c}else return(this.objectForSample.geometry.index?zy(this.objectForSample.geometry):Uy(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=jr(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof it?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Uo,this.hiddenMatrix=new Uo,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as hA,Scene as yA,Vector3 as gA,Fog as xA,Box3 as vA,MeshBasicMaterial as bA}from"three";import{Camera as jO,OrthographicCamera as og,PerspectiveCamera as FO,Vector3 as ar,Object3D as ng,Quaternion as zO}from"three";import{Camera as LO,LineSegments as BO,BufferGeometry as DO,LineBasicMaterial as GO,Color as Zd,Vector3 as RO,Float32BufferAttribute as tg}from"three";import{BoxGeometry as IO}from"three";var Ir=n=>{var r;return r=class extends n{},r.geometryHelper=new IO(30,30,30),r};import{Ray as CO,Sphere as NO,Matrix4 as EO,Vector3 as Wr}from"three";var Cl=new CO,Kd=new NO,eg=new EO,Cr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Kd.copy(i.boundingSphere),Kd.applyMatrix4(s),e.ray.intersectsSphere(Kd)===!1||(eg.copy(s).invert(),Cl.copy(e.ray).applyMatrix4(eg),i.boundingBox!==null&&Cl.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(d.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),a=d.getX(m+2),l=y(n,e,Cl,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Wr,w=new Wr,S=new Wr,T=new Wr,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=I,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),Cl.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let q=e.ray.origin.distanceTo(T);q<e.near||q>e.far||t.push({distance:q,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new Wr,C=new Wr,P=new Wr,I=new Wr,O=new Wr;if(x.fromBufferAttribute(w,S),C.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,C,P,!1,I)===null)return null;O.copy(I),O.applyMatrix4(g.matrixWorld);let R=v.ray.origin.distanceTo(O);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Nl=new RO,kt=new LO,Qd=class extends BO{constructor(e){let t=new DO,o=new GO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new Zd(15711266),u=new Zd(15711266),a=new Zd(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",a),d("u2","u3",a),d("u3","u1",a);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}t.setAttribute("position",new tg(i,3)),t.setAttribute("color",new tg(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;kt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;sr("n1",t,e,kt,-i,-s,l),sr("n2",t,e,kt,i,-s,l),sr("n3",t,e,kt,-i,s,l),sr("n4",t,e,kt,i,s,l);let c=l;sr("f1",t,e,kt,-i,-s,c),sr("f2",t,e,kt,i,-s,c),sr("f3",t,e,kt,-i,s,c),sr("f4",t,e,kt,i,s,c);let u=c,a=.5;sr("u1",t,e,kt,i*.7*a,s*1.1,u),sr("u2",t,e,kt,-i*.7*a,s*1.1,u),sr("u3",t,e,kt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,r,e,t,o,i,s){Nl.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],Nl.x,Nl.y,Nl.z)}}var El=class extends Ir(Qd){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,t){Cr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as rg,BoxGeometry as VO}from"three";var Ml;(r=>r.is=e=>"objectHelper"in e)(Ml||(Ml={}));var mo=(n,r)=>class extends Wa(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof rg&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof VO?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof rg&&(i.visible=!1)}}};var Jd=790,ui=new ar,eu=new ar,tu=new zO,ru=new ar,Is=new ar,ou=new ar,Nr=class extends mo(jO,El){constructor(e="",t={...On.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=bo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??Jd,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new og(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new og(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new FO(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new ar(e,t,o)),super.lookAt(e),this.getWorldPosition(ui),this.targetOffset=ui.distanceTo(e)}getTarget(e=new ar){return this.getWorldDirection(eu),this.getWorldPosition(ui),eu.multiplyScalar(this.targetOffset),e.copy(ui).add(eu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ui),ui.distanceTo(e)}updateUp(){this.getWorldQuaternion(tu),ru.set(0,0,1).applyQuaternion(tu),Is.copy(ng.DEFAULT_UP),this.isUpVectorFlipped&&Is.negate(),Is.applyQuaternion(tu),ou.copy(ng.DEFAULT_UP).projectOnPlane(ru),this.angleOffsetFromUp=ou.angleTo(Is),this.angleOffsetFromUp*=ou.cross(Is).dot(ru)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new ar),i=e.getWorldDirection(new ar).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new ar),i=this.getWorldDirection(new ar).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??Jd,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;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,t,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,o,i,s,l)}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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom,autoZoom:!0,autoZoomFrustumSize:Jd},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return _n(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{BufferGeometry as ig,Float32BufferAttribute as UO,Matrix4 as kO}from"three";var sg=new kO;var Ht=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new ig;this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof Ht&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof it&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=tr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof Ht&&s.needsTransformForDownstream===!0?(tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(sg.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),tr.transformMeshSet(s.booleanMeshSetAddress,sg),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new UO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return tr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new ig,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=tr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ii(this),si(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as HO}from"three";var ag;(r=>{function n(e){return Ie.is(e)&&e instanceof HO}r.is=n})(ag||(ag={}));var pi=(n,r)=>class extends mo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var fi=n=>n instanceof it,Cs=n=>n!==null&&n instanceof Ht,lg=n=>n instanceof Nr;var nu=n=>Ml.is(n);import{Group as qO}from"three";import{AxesHelper as WO}from"three";var ho=class extends Ir(WO){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Cr(this.object,ho.geometryHelper,e,t)}update(){}};var Ns=class extends mo(qO,ho){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as ZO,CameraHelper as cg}from"three";import{DirectionalLightHelper as $O}from"three";var mi=class extends Ir($O){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,mi.geometryHelper,e,t)}};import{PointLightHelper as YO}from"three";var hi=class extends Ir(YO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,hi.geometryHelper,e,t)}};import{SpotLightHelper as XO,Vector3 as KO}from"three";var Ll=class extends Ir(XO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,Ll.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ll._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Es=Ll;Es._vector=new KO;function QO(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var Bl=class extends pi(ZO,mi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new cg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof cg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&QO(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t&&this.update()}};import{PointLight as JO,Vector3 as Dl,Box3 as eA,Box3Helper as dg,Color as tA}from"three";var Gl=class extends pi(JO,hi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new Dl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Dl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new eA(s,l),u=new dg(c,new tA(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof dg){let t=this.shadow.camera,o=new Dl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Dl(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};import{SpotLight as rA,CameraHelper as ug,MathUtils as oA,Vector3 as hg,Quaternion as nA}from"three";var pg=new hg,fg=new hg,mg=new nA,Rl=class extends pi(rA,Es){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=oA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new ug(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof ug&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),fg.setFromMatrixPosition(this.matrixWorld),mg.setFromRotationMatrix(this.matrixWorld),pg.copy(this.up).applyQuaternion(mg).negate().multiplyScalar(this.distance),this.target.position.copy(fg).add(pg),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Vl=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?es(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var yi=class extends lt{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=ll;break;case"Ellipse":i=Fn;break;case"Polygon":i=al;break;case"Star":i=cl;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?es(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as iA}from"three";var qr=class extends mo(iA,ho){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of no.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of no.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Ie.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),jl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&gg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function jl(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Ie.is(e)&&jl(e)}}function yg(n,r,e,t){return n.component===r&&Ni(n.identity,t)?n.overrideData===e?2:1:0}function gg(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof qr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Ie.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=An.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ie.is(m)?m:null,p!==null){let h=yg(p,u,d,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=yg(p,u,d,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=d?Mr.apply(u.data,d):u.data;$t.is(m.type)&&(m={...m,type:"Empty"}),p=Kt.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,gg(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Ie.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function sA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new li(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Vo(n,r,e):r.geometry.type==="PathGeometry"?t=new yi(n,r,e):r.geometry.type==="VectorGeometry"?t=new Vl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Ht(n,r,e):t=new lt(n,r,e),t)}function Fl(n,r,e){return r.type==="Mesh"?sA(n,r,e):r.type==="Empty"?new Ns(n,r):r.type==="PointLight"?new Gl(n,r,e):r.type==="SpotLight"?new Rl(n,r,e):r.type==="DirectionalLight"?new Bl(n,r,e):r.type==="Component"||r.type==="Instance"?new qr(n,r,e):$t.is(r.type)?new Nr(n,r):(console.error(r),new Ns(n,r))}Kt.createEntity=Fl;function aA(n,r,e){let t=Fl(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Kt.changeEntityProptotype=aA;Kt.Cloner=di;function xg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as cA,Ray as dA,Raycaster as uA}from"three";function vg(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,si(n),ii(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function bg(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),e}function Sg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)vg(e,e.material[t])&&(r=!0);else vg(e,e.material)&&(r=!0)}),r}function wg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)bg(e,e.material[t])&&(r=!0);else bg(e,e.material)&&(r=!0)}),r}var pA=new uA,fA=new cA,mA=new dA;function iu(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=fA.copy(i.matrixWorld).invert(),l=mA.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let u=pA;u.set(l.origin,l.direction),u.near=r.near,u.far=r.far;let a=u.intersectObject(n,!1);a.length>0&&e.push({...a[0],object:t?i:n})}}var zl=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let l=i.length-2;l>=0;l--)if(!e.has(i[l])){let c=r.find(i[l]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[l]}`),e.add(i[l])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var SA=new bA;SA.wireframe=!0;var _g=new gA,su=class extends yA{constructor(e,t){super();this.data=e;this.backupFog=new xA(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.geometryCacheChanged=!1;this.bgColor=new $e(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new zl;this.needsRecomputeInstances=!1;this.ambientLight=new hA(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=wg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Sg(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Xu(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),fi(i)&&Cs(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),o.parent.remove(o),Cs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),fi(o)&&(o.freeBooleanPointer(),i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof yi&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),fi(o)&&(o.invalidateUpstreamBooleanData(),Cs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{xg(s,t,o,{scene:this,shared:i}),s instanceof lt&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(ht(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Nr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Cs(o)&&o.recomputeBoolean(),o instanceof Nr&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ie.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ie.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=Ko(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...da(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;ut.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof qr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Ko(s.data,l=>{l.events.delete(i.id)}).data)}):i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof qr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),jl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof qr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Ie.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Nr(su.PERSONAL_CAMERA_ID,{...On.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ie.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((fi(s)||nu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),iu(s,e,t)),o(s))}};return o(this),t}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ie.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((fi(s)||nu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),iu(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ie.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ie.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Di.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ie.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=ht(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=ht(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=ht(e.groundColor,t)),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.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,s,l){let c={scene:this,shared:l},u=Fl(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,l)),u.updateState(t,c),u instanceof lt&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],u=this.find(l),a=c?u.recursiveBBox:u.singleBBox;t.push(...a.vertices)}let o=new vA;return o.setFromPoints(t),o.getCenter(_g),_g}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof it)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof At&&e(t.material[o]);else t.material instanceof At&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),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=i})})}},gi=su;gi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",gi.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";import{DRACOLoader as wA}from"three/examples/jsm/loaders/DRACOLoader.js";var yo;function _A(){return yo||(yo=new wA,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function TA(n){if(yo){let r={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await yo.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Tg(n,r){let[e,t]=Kl(ta.deserialize(new Uint8Array(n)));Lm(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await _A();for(let i of o){let s=await TA(Ye(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:u,itemSize:a})=>{l[c]={array:u,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as OX}from"three";import{mergeBufferGeometries as CX}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Pg(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as Og,ShaderLib as PA}from"three";function Ag(n){let r=new Set;return n.traverse(e=>{if(e instanceof ir)if(Re(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(OA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Og,specularColor:new Og});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},PA.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else AA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function OA(n){return n.getLayersOfType("transmission").length>0}function AA(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function Ig(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Cg(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as IA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ng(n){let r=[];return n.traverse(e=>{e instanceof di&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Pg(c),c}),s=IA(e.parameters.hideBase?i:[t instanceof it?t.geometry:[],...i]);t instanceof it&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Ly})}),n}function Eg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Mg(n){Object.values(n.shared.materials).forEach(r=>{au(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?au(e.material):"materials"in e&&e.materials.forEach(t=>{au(t)})})}function au(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Gg=Rs(Bg(),1),Dg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",lu=class extends NA{load(r,e,t,o=console.error){let i=new CA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Dg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Dg),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},t,o)}async parse(r){let e=await Tg(r,Mg);e.version&&(0,Gg.default)(e.version,"0.9.337")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Gy(e)&&ey(),$y(e)&&Ey()].filter(Boolean));let t=new Ro(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new gi(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&lg(s)&&Object.assign(s,{makeDefault:!0})}return o=Ng(o),o=Ag(o),o=Ig(o),o=Cg(o),o=Eg(o),o}};export{lu as default};
|