@splinetool/loader 0.9.91 → 0.9.94
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 +60 -60
- package/build/SplineLoader.js +55 -55
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,28 +1,8 @@
|
|
|
1
|
-
var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDescriptor;var ch=Object.getOwnPropertyNames;var uh=Object.getPrototypeOf,ph=Object.prototype.hasOwnProperty;var _c=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),dh=(n,t)=>{for(var e in t)Aa(n,e,{get:t[e],enumerable:!0})},mh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ch(t))!ph.call(n,o)&&o!==e&&Aa(n,o,{get:()=>t[o],enumerable:!(r=lh(t,o))||r.enumerable});return n};var Sc=(n,t,e)=>(e=n!=null?ah(uh(n)):{},mh(t||!n||!n.__esModule?Aa(e,"default",{value:n,enumerable:!0}):e,n));var wf=_c(Sa=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||t;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 u=this||t;if(a=parseFloat(a),u.ctx||p(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||t;u.ctx||p(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||t,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||t,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,p()),a},codecs:function(a){return(this||t)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||t;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),m=a._navigator?a._navigator.userAgent:"",f=m.match(/OPR\/([0-6].)/g),h=f&&parseInt(f[0].split("/")[1],10)<33,g=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,x=m.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return a._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||t;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 u=function(d){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var m=new Audio;m._unlocked=!0,a._releaseHtml5Audio(m)}catch{a.noAudio=!0;break}for(var f=0;f<a._howls.length;f++)if(!a._howls[f]._webAudio)for(var h=a._howls[f]._getSoundIds(),g=0;g<h.length;g++){var x=a._howls[f]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._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",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<a._howls.length;A++)a._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var u=this||t;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var d=0;d<a._howls[u]._sounds.length;d++)if(!a._howls[u]._sounds[d]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var m=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(m,m)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!t.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 u=0;u<a._howls.length;u++)a._howls[u]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var t=new n,e=function(a){var u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return t.ctx||p(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._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},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var a=this,u=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var m,f;if(a._format&&a._format[d])m=a._format[d];else{if(f=a._src[d],typeof f!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}m=/^data:audio\/([^;,]+);/i.exec(f),m||(m=/\.([^.]+)$/.exec(f.split("?",1)[0])),m&&(m=m[1].toLowerCase())}if(m||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),m&&t.codecs(m)){u=a._src[d];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,u){var d=this,m=null;if(typeof a=="number")m=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__default",!d._playLock)){for(var f=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(f++,m=d._sounds[h]._id);f===1?a=null:m=null}}var g=m?d._soundById(m):d._inactiveSound();if(!g)return null;if(m&&!a&&(a=g._sprite||"__default"),d._state!=="loaded"){g._sprite=a,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(m&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[a][0]/1e3),A=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-v),_=A*1e3/Math.abs(g._rate),b=d._sprite[a][0]/1e3,D=(d._sprite[a][0]+d._sprite[a][1])/1e3;g._sprite=a,g._ended=!1;var S=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[a][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var I=function(){d._playLock=!1,S(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,v,86400):y.bufferSource.noteGrainOn(0,v,A):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,A),_!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?I():(d._playLock=!0,d.once("resume",I),d._clearTimer(g._id))}else{var T=function(){y.currentTime=v,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,S(),N.then(function(){d._playLock=!1,y._unlocked=!0,u?d._loadQueue():d._emit("play",g._id)}).catch(function(){d._playLock=!1,d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),g._ended=!0,g._paused=!0})):u||(d._playLock=!1,S(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(j){d._emit("playerror",g._id,j)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var P=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||P)T();else{d._playLock=!0,d._state="loading";var C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),d._clearTimer(g._id)}}return g._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var d=u._getSoundIds(a),m=0;m<d.length;m++){u._clearTimer(d[m]);var f=u._soundById(d[m]);if(f&&!f._paused&&(f._seek=u.seek(d[m]),f._rateSeek=0,f._paused=!0,u._stopFade(d[m]),f._node))if(u._webAudio){if(!f._node.bufferSource)continue;typeof f._node.bufferSource.stop>"u"?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),u._cleanBuffer(f._node)}else(!isNaN(f._node.duration)||f._node.duration===1/0)&&f._node.pause();arguments[1]||u._emit("pause",f?f._id:null)}return u},stop:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var m=d._getSoundIds(a),f=0;f<m.length;f++){d._clearTimer(m[f]);var h=d._soundById(m[f]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(m[f]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,u)}}),d;if(typeof u>"u")if(typeof a=="boolean")d._muted=a;else return d._muted;for(var m=d._getSoundIds(u),f=0;f<m.length;f++){var h=d._soundById(m[f]);h&&(h._muted=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,u=arguments,d,m;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var f=a._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,u)}}),a;typeof m>"u"&&(a._volume=d),m=a._getSoundIds(m);for(var x=0;x<m.length;x++)g=a._soundById(m[x]),g&&(g._volume=d,u[2]||a._stopFade(m[x]),a._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),a._emit("volume",g._id))}else return g=m?a._soundById(m):a._sounds[0],g?g._volume:0;return a},fade:function(a,u,d,m){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(a,u,d,m)}}),f;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),f.volume(a,m);for(var h=f._getSoundIds(m),g=0;g<h.length;g++){var x=f._soundById(h[g]);if(x){if(m||f._stopFade(h[g]),f._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=a,x._node.gain.setValueAtTime(a,v),x._node.gain.linearRampToValueAtTime(u,A)}f._startFadeInterval(x,a,u,d,h[g],typeof m>"u")}}return f},_startFadeInterval:function(a,u,d,m,f,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),_=Math.max(4,A>0?m/A:m),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var D=(Date.now()-b)/m;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?a._volume=x:g.volume(x,a._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,g.volume(d,a._id),g._emit("fade",a._id))},_)},_stopFade:function(a){var u=this,d=u._soundById(a);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,a),d._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,d,m,f;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return f=a._soundById(parseInt(u[0],10)),f?f._loop:!1;else u.length===2&&(d=u[0],m=parseInt(u[1],10));for(var h=a._getSoundIds(m),g=0;g<h.length;g++)f=a._soundById(h[g]),f&&(f._loop=d,a._webAudio&&f._node&&f._node.bufferSource&&(f._node.bufferSource.loop=d,d&&(f._node.bufferSource.loopStart=f._start||0,f._node.bufferSource.loopEnd=f._stop,a.playing(h[g])&&(a.pause(h[g],!0),a.play(h[g],!0)))));return a},rate:function(){var a=this,u=arguments,d,m;if(u.length===0)m=a._sounds[0]._id;else if(u.length===1){var f=a._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,u)}}),a;typeof m>"u"&&(a._rate=d),m=a._getSoundIds(m);for(var x=0;x<m.length;x++)if(g=a._soundById(m[x]),g){a.playing(m[x])&&(g._rateSeek=a.seek(m[x]),g._playStart=a._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,a._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=a.seek(m[x]),A=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-v,_=A*1e3/Math.abs(g._rate);(a._endTimers[m[x]]||!g._paused)&&(a._clearTimer(m[x]),a._endTimers[m[x]]=setTimeout(a._ended.bind(a,g),_)),a._emit("rate",g._id)}}else return g=a._soundById(m),g?g._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,m;if(u.length===0)a._sounds.length&&(m=a._sounds[0]._id);else if(u.length===1){var f=a._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):a._sounds.length&&(m=a._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));if(typeof m>"u")return 0;if(typeof d=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var g=a._soundById(m);if(g)if(typeof d=="number"&&d>=0){var x=a.playing(m);x&&a.pause(m,!0),g._seek=d,g._ended=!1,a._clearTimer(m),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&a.play(m,!0),a._emit("seek",m)};if(x&&!a._webAudio){var A=function(){a._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(a._webAudio){var _=a.playing(m)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+_*Math.abs(g._rate))}else return g._node.currentTime;return a},playing:function(a){var u=this;if(typeof a=="number"){var d=u._soundById(a);return d?!d._paused:!1}for(var m=0;m<u._sounds.length;m++)if(!u._sounds[m]._paused)return!0;return!1},duration:function(a){var u=this,d=u._duration,m=u._soundById(a);return m&&(d=u._sprite[m._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,d=0;d<u.length;d++)u[d]._paused||a.stop(u[d]._id),a._webAudio||(a._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,a._clearTimer(u[d]._id);var m=t._howls.indexOf(a);m>=0&&t._howls.splice(m,1);var f=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){f=!1;break}return o&&f&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,m){var f=this,h=f["_on"+a];return typeof u=="function"&&h.push(m?{id:d,fn:u,once:m}:{id:d,fn:u}),f},off:function(a,u,d){var m=this,f=m["_on"+a],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<f.length;h++){var g=d===f[h].id;if(u===f[h].fn&&g||!u&&g){f.splice(h,1);break}}else if(a)m["_on"+a]=[];else{var x=Object.keys(m);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(m[x[h]])&&(m[x[h]]=[])}return m},once:function(a,u,d){var m=this;return m.on(a,u,d,1),m},_emit:function(a,u,d){for(var m=this,f=m["_on"+a],h=f.length-1;h>=0;h--)(!f[h].id||f[h].id===u||a==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(m,f[h].fn),0),f[h].once&&m.off(a,f[h].fn,f[h].id));return m._loadQueue(a),m},_loadQueue:function(a){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===a&&(u._queue.shift(),u._loadQueue()),a||d.action()}return u},_ended:function(a){var u=this,d=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var m=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&m&&u.stop(a._id,!0).play(a._id),u._webAudio&&m){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var f=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),f)}return u._webAudio&&!m&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),t._autoSuspend()),!u._webAudio&&!m&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var d=u._soundById(a);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,d=0;d<u._sounds.length;d++)if(a===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new r(a)},_drain:function(){var a=this,u=a._pool,d=0,m=0;if(!(a._sounds.length<u)){for(m=0;m<a._sounds.length;m++)a._sounds[m]._ended&&d++;for(m=a._sounds.length-1;m>=0;m--){if(d<=u)return;a._sounds[m]._ended&&(a._webAudio&&a._sounds[m]._node&&a._sounds[m]._node.disconnect(0),a._sounds.splice(m,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],m=0;m<u._sounds.length;m++)d.push(u._sounds[m]._id);return d}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._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,t.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),d))try{a.bufferSource.buffer=t._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),a._node.gain.setValueAtTime(d,t.ctx.currentTime),a._node.paused=!0,a._node.connect(t.masterGain)):t.noAudio||(a._node=t._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(t._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._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,u=a._parent;u._duration=Math.ceil(a._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),m=new Uint8Array(d.length),f=0;f<d.length;++f)m[f]=d.charCodeAt(f);l(m.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(g){h.setRequestHeader(g,a._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="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[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},m=function(f){f&&u._sounds.length>0?(o[u._src]=f,c(u,f)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(m).catch(d):t.ctx.decodeAudioData(a,m,d)},c=function(a,u){u&&!a._duration&&(a._duration=u.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())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(a&&d&&d<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Sa<"u"&&(Sa.Howler=t,Sa.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,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,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")l._orientation=[t,e,r,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(r,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(t,e,r,o,i,s);else return c;return l},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),s=0;s<i.length;s++){var l=r._soundById(i[s]);if(l)if(typeof t=="number")l._stereo=t,l._pos=[t,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(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(t,0,0):l._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",l._id);else return l._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];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 t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];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 t=="number")c._orientation=[t,e,r],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(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),l=0;l<s.length;l++)if(i=t._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Pf=_c((wa,Of)=>{(function(n,t){typeof wa=="object"&&typeof Of<"u"?t(wa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(wa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,l,c,p,a,u,d,m,f,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var _=[],b=[],D=[],S=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(S).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var I,T=new Array(v).fill(0);for(y=0;y<A;y++)for(s=0;s<v;s++)b[y][s]=t[y][s];for(y=0;y<v;y++){for(_[y]=d,f=0,c=y+1,s=y;s<A;s++)f+=Math.pow(b[s][y],2);if(f<i)d=0;else for(m=(u=b[y][y])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y]=u-d,s=c;s<v;s++){for(f=0,l=y;l<A;l++)f+=b[l][y]*b[l][s];for(u=f/m,l=y;l<A;l++)b[l][s]=b[l][s]+u*b[l][y]}for(T[y]=d,f=0,s=c;s<v;s++)f+=Math.pow(b[y][s],2);if(f<i)d=0;else{for(m=(u=b[y][y+1])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y+1]=u-d,s=c;s<v;s++)_[s]=b[y][s]/m;for(s=c;s<A;s++){for(f=0,l=c;l<v;l++)f+=b[s][l]*b[y][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+f*_[l]}}h<(g=Math.abs(T[y])+Math.abs(_[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(m=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/m;for(s=c;s<v;s++){for(f=0,l=c;l<v;l++)f+=b[y][l]*D[l][s];for(l=c;l<v;l++)D[l][s]=D[l][s]+f*D[l][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=_[y],c=y}if(e){if(e==="f")for(y=v;y<A;y++){for(s=v;s<A;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=T[y],s=c;s<S;s++)b[y][s]=0;if(d!==0){for(m=b[y][y]*d,s=c;s<S;s++){for(f=0,l=c;l<A;l++)f+=b[l][y]*b[l][s];for(u=f/m,l=y;l<A;l++)b[l][s]=b[l][s]+u*b[l][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,l=v-1;0<=l;l--)for(var P=0;P<50;P++){for(I=!1,c=l;0<=c;c--){if(Math.abs(_[c])<=o){I=!0;break}if(Math.abs(T[c-1])<=o)break}if(!I){for(a=0,p=c-(f=1),y=c;y<l+1&&(u=f*_[y],_[y]=a*_[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),a=d/(m=T[y]),f=-u/m,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*a+x*f,b[s][y]=-g*f+x*a}if(x=T[l],c===l){if(x<0&&(T[l]=-x,r))for(s=0;s<v;s++)D[s][l]=-D[s][l];break}for(h=T[c],u=(((g=T[l-1])-x)*(g+x)+((d=_[l-1])-(m=_[l]))*(d+m))/(2*m*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+m*(g/(u<0?u-d:u+d)-m))/h,y=c+(f=a=1);y<l+1;y++){if(d=_[y],g=T[y],m=f*d,d*=a,x=Math.sqrt(u*u+m*m),u=h*(a=u/(_[y-1]=x))+d*(f=m/x),d=-h*f+d*a,m=g*f,g*=a,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*a+x*f,D[s][y]=-h*f+x*a;if(x=Math.sqrt(u*u+m*m),u=(a=u/(T[y-1]=x))*d+(f=m/x)*g,h=-f*d+a*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*a+x*f,b[s][y]=-g*f+x*a}_[c]=0,_[l]=u,T[l]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as d1,Loader as m1}from"three";function xo(n,t){return Object.setPrototypeOf(n,t),n}function wc(n){return Array.isArray(n)?n:[n]}var fh=typeof global=="object"&&global&&global.Object===Object&&global,Di=fh;var hh=typeof self=="object"&&self&&self.Object===Object&&self,gh=Di||hh||Function("return this")(),Fe=gh;var yh=Fe.Symbol,nt=yh;var Tc=Object.prototype,xh=Tc.hasOwnProperty,vh=Tc.toString,Pn=nt?nt.toStringTag:void 0;function bh(n){var t=xh.call(n,Pn),e=n[Pn];try{n[Pn]=void 0;var r=!0}catch{}var o=vh.call(n);return r&&(t?n[Pn]=e:delete n[Pn]),o}var Ac=bh;var _h=Object.prototype,Sh=_h.toString;function wh(n){return Sh.call(n)}var Cc=wh;var Th="[object Null]",Ah="[object Undefined]",Nc=nt?nt.toStringTag:void 0;function Ch(n){return n==null?n===void 0?Ah:Th:Nc&&Nc in Object(n)?Ac(n):Cc(n)}var xt=Ch;function Nh(n){return n!=null&&typeof n=="object"}var et=Nh;var Oh="[object Symbol]";function Ph(n){return typeof n=="symbol"||et(n)&&xt(n)==Oh}var vo=Ph;function Ih(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Bi=Ih;var Lh=Array.isArray,Me=Lh;var Mh=1/0,Oc=nt?nt.prototype:void 0,Pc=Oc?Oc.toString:void 0;function Ic(n){if(typeof n=="string")return n;if(Me(n))return Bi(n,Ic)+"";if(vo(n))return Pc?Pc.call(n):"";var t=n+"";return t=="0"&&1/n==-Mh?"-0":t}var Lc=Ic;function Dh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Dh;function Bh(n){return n}var Ei=Bh;var Eh="[object AsyncFunction]",Gh="[object Function]",Rh="[object GeneratorFunction]",Fh="[object Proxy]";function Vh(n){if(!ze(n))return!1;var t=xt(n);return t==Gh||t==Rh||t==Eh||t==Fh}var bo=Vh;var zh=Fe["__core-js_shared__"],Gi=zh;var Mc=function(){var n=/[^.]+$/.exec(Gi&&Gi.keys&&Gi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Uh(n){return!!Mc&&Mc in n}var Dc=Uh;var kh=Function.prototype,jh=kh.toString;function Hh(n){if(n!=null){try{return jh.call(n)}catch{}try{return n+""}catch{}}return""}var fr=Hh;var Wh=/[\\^$.*+?()[\]{}|]/g,qh=/^\[object .+?Constructor\]$/,$h=Function.prototype,Xh=Object.prototype,Yh=$h.toString,Kh=Xh.hasOwnProperty,Qh=RegExp("^"+Yh.call(Kh).replace(Wh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zh(n){if(!ze(n)||Dc(n))return!1;var t=bo(n)?Qh:qh;return t.test(fr(n))}var Bc=Zh;function Jh(n,t){return n?.[t]}var Ec=Jh;function eg(n,t){var e=Ec(n,t);return Bc(e)?e:void 0}var ut=eg;var tg=ut(Fe,"WeakMap"),Ri=tg;var Gc=Object.create,rg=function(){function n(){}return function(t){if(!ze(t))return{};if(Gc)return Gc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Rc=rg;function og(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Fc=og;function ng(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Fi=ng;var ig=800,sg=16,ag=Date.now;function lg(n){var t=0,e=0;return function(){var r=ag(),o=sg-(r-e);if(e=r,o>0){if(++t>=ig)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Vc=lg;function cg(n){return function(){return n}}var zc=cg;var ug=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),_o=ug;var pg=_o?function(n,t){return _o(n,"toString",{configurable:!0,enumerable:!1,value:zc(t),writable:!0})}:Ei,Uc=pg;var dg=Vc(Uc),Vi=dg;function mg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var kc=mg;var fg=9007199254740991,hg=/^(?:0|[1-9]\d*)$/;function gg(n,t){var e=typeof n;return t=t??fg,!!t&&(e=="number"||e!="symbol"&&hg.test(n))&&n>-1&&n%1==0&&n<t}var Cr=gg;function yg(n,t,e){t=="__proto__"&&_o?_o(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=yg;function xg(n,t){return n===t||n!==n&&t!==t}var Nr=xg;var vg=Object.prototype,bg=vg.hasOwnProperty;function _g(n,t,e){var r=n[t];(!(bg.call(n,t)&&Nr(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=_g;function Sg(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var l=t[i],c=r?r(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?So(e,l,c):wo(e,l,c)}return e}var St=Sg;var jc=Math.max;function wg(n,t,e){return t=jc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=jc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=r[o];return l[t]=e(s),Fc(n,this,l)}}var zi=wg;function Tg(n,t){return Vi(zi(n,t,Ei),n+"")}var Hc=Tg;var Ag=9007199254740991;function Cg(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Ag}var To=Cg;function Ng(n){return n!=null&&To(n.length)&&!bo(n)}var Or=Ng;function Og(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Or(e)&&Cr(t,e.length):r=="string"&&t in e)?Nr(e[t],n):!1}var Wc=Og;function Pg(n){return Hc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Wc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var l=e[r];l&&n(t,l,r,i)}return t})}var qc=Pg;var Ig=Object.prototype;function Lg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Ig;return n===e}var Ao=Lg;function Mg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var $c=Mg;var Dg="[object Arguments]";function Bg(n){return et(n)&&xt(n)==Dg}var Ca=Bg;var Xc=Object.prototype,Eg=Xc.hasOwnProperty,Gg=Xc.propertyIsEnumerable,Rg=Ca(function(){return arguments}())?Ca:function(n){return et(n)&&Eg.call(n,"callee")&&!Gg.call(n,"callee")},hr=Rg;function Fg(){return!1}var Yc=Fg;var Zc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Kc=Zc&&typeof module=="object"&&module&&!module.nodeType&&module,Vg=Kc&&Kc.exports===Zc,Qc=Vg?Fe.Buffer:void 0,zg=Qc?Qc.isBuffer:void 0,Ug=zg||Yc,Co=Ug;var kg="[object Arguments]",jg="[object Array]",Hg="[object Boolean]",Wg="[object Date]",qg="[object Error]",$g="[object Function]",Xg="[object Map]",Yg="[object Number]",Kg="[object Object]",Qg="[object RegExp]",Zg="[object Set]",Jg="[object String]",ey="[object WeakMap]",ty="[object ArrayBuffer]",ry="[object DataView]",oy="[object Float32Array]",ny="[object Float64Array]",iy="[object Int8Array]",sy="[object Int16Array]",ay="[object Int32Array]",ly="[object Uint8Array]",cy="[object Uint8ClampedArray]",uy="[object Uint16Array]",py="[object Uint32Array]",Ne={};Ne[oy]=Ne[ny]=Ne[iy]=Ne[sy]=Ne[ay]=Ne[ly]=Ne[cy]=Ne[uy]=Ne[py]=!0;Ne[kg]=Ne[jg]=Ne[ty]=Ne[Hg]=Ne[ry]=Ne[Wg]=Ne[qg]=Ne[$g]=Ne[Xg]=Ne[Yg]=Ne[Kg]=Ne[Qg]=Ne[Zg]=Ne[Jg]=Ne[ey]=!1;function dy(n){return et(n)&&To(n.length)&&!!Ne[xt(n)]}var Jc=dy;function my(n){return function(t){return n(t)}}var No=my;var eu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,In=eu&&typeof module=="object"&&module&&!module.nodeType&&module,fy=In&&In.exports===eu,Na=fy&&Di.process,hy=function(){try{var n=In&&In.require&&In.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),gr=hy;var tu=gr&&gr.isTypedArray,gy=tu?No(tu):Jc,Ui=gy;var yy=Object.prototype,xy=yy.hasOwnProperty;function vy(n,t){var e=Me(n),r=!e&&hr(n),o=!e&&!r&&Co(n),i=!e&&!r&&!o&&Ui(n),s=e||r||o||i,l=s?$c(n.length,String):[],c=l.length;for(var p in n)(t||xy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Cr(p,c)))&&l.push(p);return l}var ki=vy;function by(n,t){return function(e){return n(t(e))}}var ji=by;var _y=ji(Object.keys,Object),ru=_y;var Sy=Object.prototype,wy=Sy.hasOwnProperty;function Ty(n){if(!Ao(n))return ru(n);var t=[];for(var e in Object(n))wy.call(n,e)&&e!="constructor"&&t.push(e);return t}var ou=Ty;function Ay(n){return Or(n)?ki(n):ou(n)}var Oo=Ay;function Cy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var nu=Cy;var Ny=Object.prototype,Oy=Ny.hasOwnProperty;function Py(n){if(!ze(n))return nu(n);var t=Ao(n),e=[];for(var r in n)r=="constructor"&&(t||!Oy.call(n,r))||e.push(r);return e}var iu=Py;function Iy(n){return Or(n)?ki(n,!0):iu(n)}var Ht=Iy;var Ly=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,My=/^\w*$/;function Dy(n,t){if(Me(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||vo(n)?!0:My.test(n)||!Ly.test(n)||t!=null&&n in Object(t)}var su=Dy;var By=ut(Object,"create"),yr=By;function Ey(){this.__data__=yr?yr(null):{},this.size=0}var au=Ey;function Gy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var lu=Gy;var Ry="__lodash_hash_undefined__",Fy=Object.prototype,Vy=Fy.hasOwnProperty;function zy(n){var t=this.__data__;if(yr){var e=t[n];return e===Ry?void 0:e}return Vy.call(t,n)?t[n]:void 0}var cu=zy;var Uy=Object.prototype,ky=Uy.hasOwnProperty;function jy(n){var t=this.__data__;return yr?t[n]!==void 0:ky.call(t,n)}var uu=jy;var Hy="__lodash_hash_undefined__";function Wy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=yr&&t===void 0?Hy:t,this}var pu=Wy;function Po(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Po.prototype.clear=au;Po.prototype.delete=lu;Po.prototype.get=cu;Po.prototype.has=uu;Po.prototype.set=pu;var Oa=Po;function qy(){this.__data__=[],this.size=0}var du=qy;function $y(n,t){for(var e=n.length;e--;)if(Nr(n[e][0],t))return e;return-1}var Pr=$y;var Xy=Array.prototype,Yy=Xy.splice;function Ky(n){var t=this.__data__,e=Pr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Yy.call(t,e,1),--this.size,!0}var mu=Ky;function Qy(n){var t=this.__data__,e=Pr(t,n);return e<0?void 0:t[e][1]}var fu=Qy;function Zy(n){return Pr(this.__data__,n)>-1}var hu=Zy;function Jy(n,t){var e=this.__data__,r=Pr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var gu=Jy;function Io(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Io.prototype.clear=du;Io.prototype.delete=mu;Io.prototype.get=fu;Io.prototype.has=hu;Io.prototype.set=gu;var Ir=Io;var e0=ut(Fe,"Map"),Lr=e0;function t0(){this.size=0,this.__data__={hash:new Oa,map:new(Lr||Ir),string:new Oa}}var yu=t0;function r0(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var xu=r0;function o0(n,t){var e=n.__data__;return xu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Mr=o0;function n0(n){var t=Mr(this,n).delete(n);return this.size-=t?1:0,t}var vu=n0;function i0(n){return Mr(this,n).get(n)}var bu=i0;function s0(n){return Mr(this,n).has(n)}var _u=s0;function a0(n,t){var e=Mr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Su=a0;function Lo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Lo.prototype.clear=yu;Lo.prototype.delete=vu;Lo.prototype.get=bu;Lo.prototype.has=_u;Lo.prototype.set=Su;var Ln=Lo;var l0="Expected a function";function Pa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(l0);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(Pa.Cache||Ln),e}Pa.Cache=Ln;var wu=Pa;var c0=500;function u0(n){var t=wu(n,function(r){return e.size===c0&&e.clear(),r}),e=t.cache;return t}var Tu=u0;var p0=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,d0=/\\(\\)?/g,m0=Tu(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(p0,function(e,r,o,i){t.push(o?i.replace(d0,"$1"):r||e)}),t}),Au=m0;function f0(n){return n==null?"":Lc(n)}var Cu=f0;function h0(n,t){return Me(n)?n:su(n,t)?[n]:Au(Cu(n))}var wt=h0;var g0=1/0;function y0(n){if(typeof n=="string"||vo(n))return n;var t=n+"";return t=="0"&&1/n==-g0?"-0":t}var Dr=y0;function x0(n,t){t=wt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Dr(t[e++])];return e&&e==r?n:void 0}var Hi=x0;function v0(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Mo=v0;var Nu=nt?nt.isConcatSpreadable:void 0;function b0(n){return Me(n)||hr(n)||!!(Nu&&n&&n[Nu])}var Ou=b0;function Pu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Ou),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?Pu(l,t-1,e,r,o):Mo(o,l):r||(o[o.length]=l)}return o}var Iu=Pu;function _0(n){var t=n==null?0:n.length;return t?Iu(n,1):[]}var Lu=_0;function S0(n){return Vi(zi(n,void 0,Lu),n+"")}var Wi=S0;var w0=ji(Object.getPrototypeOf,Object),Do=w0;var T0="[object Object]",A0=Function.prototype,C0=Object.prototype,Mu=A0.toString,N0=C0.hasOwnProperty,O0=Mu.call(Object);function P0(n){if(!et(n)||xt(n)!=T0)return!1;var t=Do(n);if(t===null)return!0;var e=N0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Mu.call(e)==O0}var qi=P0;function I0(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Du=I0;function L0(){this.__data__=new Ir,this.size=0}var Bu=L0;function M0(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Eu=M0;function D0(n){return this.__data__.get(n)}var Gu=D0;function B0(n){return this.__data__.has(n)}var Ru=B0;var E0=200;function G0(n,t){var e=this.__data__;if(e instanceof Ir){var r=e.__data__;if(!Lr||r.length<E0-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Ln(r)}return e.set(n,t),this.size=e.size,this}var Fu=G0;function Bo(n){var t=this.__data__=new Ir(n);this.size=t.size}Bo.prototype.clear=Bu;Bo.prototype.delete=Eu;Bo.prototype.get=Gu;Bo.prototype.has=Ru;Bo.prototype.set=Fu;var $i=Bo;function R0(n,t){return n&&St(t,Oo(t),n)}var Vu=R0;function F0(n,t){return n&&St(t,Ht(t),n)}var zu=F0;var Hu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Uu=Hu&&typeof module=="object"&&module&&!module.nodeType&&module,V0=Uu&&Uu.exports===Hu,ku=V0?Fe.Buffer:void 0,ju=ku?ku.allocUnsafe:void 0;function z0(n,t){if(t)return n.slice();var e=n.length,r=ju?ju(e):new n.constructor(e);return n.copy(r),r}var Xi=z0;function U0(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Wu=U0;function k0(){return[]}var Yi=k0;var j0=Object.prototype,H0=j0.propertyIsEnumerable,qu=Object.getOwnPropertySymbols,W0=qu?function(n){return n==null?[]:(n=Object(n),Wu(qu(n),function(t){return H0.call(n,t)}))}:Yi,Eo=W0;function q0(n,t){return St(n,Eo(n),t)}var $u=q0;var $0=Object.getOwnPropertySymbols,X0=$0?function(n){for(var t=[];n;)Mo(t,Eo(n)),n=Do(n);return t}:Yi,Ki=X0;function Y0(n,t){return St(n,Ki(n),t)}var Xu=Y0;function K0(n,t,e){var r=t(n);return Me(n)?r:Mo(r,e(n))}var Qi=K0;function Q0(n){return Qi(n,Oo,Eo)}var Yu=Q0;function Z0(n){return Qi(n,Ht,Ki)}var Zi=Z0;var J0=ut(Fe,"DataView"),Ji=J0;var ex=ut(Fe,"Promise"),es=ex;var tx=ut(Fe,"Set"),ts=tx;var Ku="[object Map]",rx="[object Object]",Qu="[object Promise]",Zu="[object Set]",Ju="[object WeakMap]",ep="[object DataView]",ox=fr(Ji),nx=fr(Lr),ix=fr(es),sx=fr(ts),ax=fr(Ri),Qr=xt;(Ji&&Qr(new Ji(new ArrayBuffer(1)))!=ep||Lr&&Qr(new Lr)!=Ku||es&&Qr(es.resolve())!=Qu||ts&&Qr(new ts)!=Zu||Ri&&Qr(new Ri)!=Ju)&&(Qr=function(n){var t=xt(n),e=t==rx?n.constructor:void 0,r=e?fr(e):"";if(r)switch(r){case ox:return ep;case nx:return Ku;case ix:return Qu;case sx:return Zu;case ax:return Ju}return t});var Go=Qr;var lx=Object.prototype,cx=lx.hasOwnProperty;function ux(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&cx.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var tp=ux;var px=Fe.Uint8Array,Ia=px;function dx(n){var t=new n.constructor(n.byteLength);return new Ia(t).set(new Ia(n)),t}var Ro=dx;function mx(n,t){var e=t?Ro(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var rp=mx;var fx=/\w*$/;function hx(n){var t=new n.constructor(n.source,fx.exec(n));return t.lastIndex=n.lastIndex,t}var op=hx;var np=nt?nt.prototype:void 0,ip=np?np.valueOf:void 0;function gx(n){return ip?Object(ip.call(n)):{}}var sp=gx;function yx(n,t){var e=t?Ro(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var rs=yx;var xx="[object Boolean]",vx="[object Date]",bx="[object Map]",_x="[object Number]",Sx="[object RegExp]",wx="[object Set]",Tx="[object String]",Ax="[object Symbol]",Cx="[object ArrayBuffer]",Nx="[object DataView]",Ox="[object Float32Array]",Px="[object Float64Array]",Ix="[object Int8Array]",Lx="[object Int16Array]",Mx="[object Int32Array]",Dx="[object Uint8Array]",Bx="[object Uint8ClampedArray]",Ex="[object Uint16Array]",Gx="[object Uint32Array]";function Rx(n,t,e){var r=n.constructor;switch(t){case Cx:return Ro(n);case xx:case vx:return new r(+n);case Nx:return rp(n,e);case Ox:case Px:case Ix:case Lx:case Mx:case Dx:case Bx:case Ex:case Gx:return rs(n,e);case bx:return new r;case _x:case Tx:return new r(n);case Sx:return op(n);case wx:return new r;case Ax:return sp(n)}}var ap=Rx;function Fx(n){return typeof n.constructor=="function"&&!Ao(n)?Rc(Do(n)):{}}var os=Fx;var Vx="[object Map]";function zx(n){return et(n)&&Go(n)==Vx}var lp=zx;var cp=gr&&gr.isMap,Ux=cp?No(cp):lp,up=Ux;var kx="[object Set]";function jx(n){return et(n)&&Go(n)==kx}var pp=jx;var dp=gr&&gr.isSet,Hx=dp?No(dp):pp,mp=Hx;var Wx=1,qx=2,$x=4,fp="[object Arguments]",Xx="[object Array]",Yx="[object Boolean]",Kx="[object Date]",Qx="[object Error]",hp="[object Function]",Zx="[object GeneratorFunction]",Jx="[object Map]",ev="[object Number]",gp="[object Object]",tv="[object RegExp]",rv="[object Set]",ov="[object String]",nv="[object Symbol]",iv="[object WeakMap]",sv="[object ArrayBuffer]",av="[object DataView]",lv="[object Float32Array]",cv="[object Float64Array]",uv="[object Int8Array]",pv="[object Int16Array]",dv="[object Int32Array]",mv="[object Uint8Array]",fv="[object Uint8ClampedArray]",hv="[object Uint16Array]",gv="[object Uint32Array]",Ce={};Ce[fp]=Ce[Xx]=Ce[sv]=Ce[av]=Ce[Yx]=Ce[Kx]=Ce[lv]=Ce[cv]=Ce[uv]=Ce[pv]=Ce[dv]=Ce[Jx]=Ce[ev]=Ce[gp]=Ce[tv]=Ce[rv]=Ce[ov]=Ce[nv]=Ce[mv]=Ce[fv]=Ce[hv]=Ce[gv]=!0;Ce[Qx]=Ce[hp]=Ce[iv]=!1;function ns(n,t,e,r,o,i){var s,l=t&Wx,c=t&qx,p=t&$x;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var a=Me(n);if(a){if(s=tp(n),!l)return Fi(n,s)}else{var u=Go(n),d=u==hp||u==Zx;if(Co(n))return Xi(n,l);if(u==gp||u==fp||d&&!o){if(s=c||d?{}:os(n),!l)return c?Xu(n,zu(s,n)):$u(n,Vu(s,n))}else{if(!Ce[u])return o?n:{};s=ap(n,u,l)}}i||(i=new $i);var m=i.get(n);if(m)return m;i.set(n,s),mp(n)?n.forEach(function(g){s.add(ns(g,t,e,g,n,i))}):up(n)&&n.forEach(function(g,x){s.set(x,ns(g,t,e,x,n,i))});var f=p?c?Zi:Yu:c?Ht:Oo,h=a?void 0:f(n);return kc(h||n,function(g,x){h&&(x=g,g=n[x]),wo(s,x,ns(g,t,e,x,n,i))}),s}var is=ns;var yv=1,xv=4;function vv(n){return is(n,yv|xv)}var Mn=vv;function bv(n,t){return n!=null&&t in Object(n)}var yp=bv;function _v(n,t,e){t=wt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Dr(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&To(o)&&Cr(s,o)&&(Me(n)||hr(n)))}var xp=_v;function Sv(n,t){return n!=null&&xp(n,t,yp)}var vp=Sv;function wv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),l=s.length;l--;){var c=s[n?l:++o];if(e(i[c],c,i)===!1)break}return t}}var bp=wv;var Tv=bp(),_p=Tv;function Av(n,t,e){(e!==void 0&&!Nr(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var Dn=Av;function Cv(n){return et(n)&&Or(n)}var Sp=Cv;function Nv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Bn=Nv;function Ov(n){return St(n,Ht(n))}var wp=Ov;function Pv(n,t,e,r,o,i,s){var l=Bn(n,e),c=Bn(t,e),p=s.get(c);if(p){Dn(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=Me(c),m=!d&&Co(c),f=!d&&!m&&Ui(c);a=c,d||m||f?Me(l)?a=l:Sp(l)?a=Fi(l):m?(u=!1,a=Xi(c,!0)):f?(u=!1,a=rs(c,!0)):a=[]:qi(c)||hr(c)?(a=l,hr(l)?a=wp(l):(!ze(l)||bo(l))&&(a=os(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),Dn(n,e,a)}var Tp=Pv;function Ap(n,t,e,r,o){n!==t&&_p(t,function(i,s){if(o||(o=new $i),ze(i))Tp(n,t,s,e,Ap,r,o);else{var l=r?r(Bn(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),Dn(n,s,l)}},Ht)}var Cp=Ap;function Iv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Np=Iv;function Lv(n,t){return t.length<2?n:Hi(n,Du(t,0,-1))}var Op=Lv;var Mv=qc(function(n,t,e){Cp(n,t,e)}),Zr=Mv;function Dv(n,t){return t=wt(t,n),n=Op(n,t),n==null||delete n[Dr(Np(t))]}var Pp=Dv;function Bv(n){return qi(n)?void 0:n}var Ip=Bv;var Ev=1,Gv=2,Rv=4,Fv=Wi(function(n,t){var e={};if(n==null)return e;var r=!1;t=Bi(t,function(i){return i=wt(i,n),r||(r=i.length>1),i}),St(n,Zi(n),e),r&&(e=is(e,Ev|Gv|Rv,Ip));for(var o=t.length;o--;)Pp(e,t[o]);return e}),Fo=Fv;function Vv(n,t,e,r){if(!ze(n))return n;t=wt(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=Dr(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];p=r?r(a,c,l):void 0,p===void 0&&(p=ze(a)?a:Cr(t[o+1])?[]:{})}wo(l,c,p),l=l[c]}return n}var Lp=Vv;function zv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=Hi(n,s);e(l,s)&&Lp(i,wt(s,n),l)}return i}var Mp=zv;function Uv(n,t){return Mp(n,t,function(e,r){return vp(n,r)})}var Dp=Uv;var kv=Wi(function(n,t){return n==null?{}:Dp(n,t)}),La=kv;var Vo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Vo||(Vo={}));var Jr;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(Jr||(Jr={}));var Bp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(Bp||(Bp={}));var zo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,l){return[i[0]+(s[0]-i[0])*l,i[1]+(s[1]-i[1])*l,i[2]+(s[2]-i[2])*l]}o.lerp=r})(zo||(zo={}));var Ep;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(Ep||(Ep={}));var Br;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let l=s.slice(0);for(var c=0,p=s.length;c<p;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=r})(Br||(Br={}));var pt;(c=>{c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,a){return p.r===a.r&&p.g===a.g&&p.b===a.b}c.equals=s;function l(p,a,u){return{r:p.r+(a.r-p.r)*u,g:p.g+(a.g-p.g)*u,b:p.b+(a.b-p.b)*u}}c.lerp=l})(pt||(pt={}));var vt;(l=>{l.white={...pt.white,a:1},l.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function r(c,p){return{...pt.fromHex(c),a:p}}l.fromHexAndA=r;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,p){return pt.equals(c,p)&&c.a===p.a}l.equals=i;function s(c,p,a){return{r:c.r+(p.r-c.r)*a,g:c.g+(p.g-c.g)*a,b:c.b+(p.b-c.b)*a,a:c.a+(p.a-c.a)*a}}l.lerp=s})(vt||(vt={}));var ss;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ss||(ss={}));var Gp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Gp||(Gp={}));var Rp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Rp||(Rp={}));var as;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(as||(as={}));var Pe=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Pe.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,l={...e,[i]:s};return Object.setPrototypeOf(l,Pe.prototype),{data:l,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Pe.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function En(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&En(r)}return Object.freeze(n)}function Fp(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var ls=class extends Error{};function Wt(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function cs(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 Vp(){return typeof process<"u"}function zp(n,t){for(let e of n)t(e.id,e.data),zp(e.children,t)}function Up(n,t){t(n.id,n.data);for(let e of n.children)Up(e,t)}var Tt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Tt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)En(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Up(o,r)}}traverse(e){zp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),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:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(a=>a.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:l}}Object.setPrototypeOf(i,Tt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:l}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return p=[...p,a],p.sort((d,m)=>d.fi-m.fi),e.localIndex=p.indexOf(a),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(p=>p.id===r);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:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===i)throw new ls("cyclic tree");m=this.parent(m)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(m=>m.id===i);c=[...c];let a=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((m,f)=>m.fi-f.fi),e.localIndex=c.indexOf(a),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:l,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Fp(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Wt(0,o,o);{let s=i[0].fi;return Wt(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==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 Wt(c,c+o,o)}else return Wt(s.fi,l.fi,o)}}};var us;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(us||(us={}));var Ie=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ie.prototype)}deepFreeze(){let e=0;for(;e<this.length;)En(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ie.prototype);let r=e;return Vp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,l={fi:r,id:o,data:i};return s=[...s,l],s.sort((p,a)=>p.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((a,u)=>a.fi-u.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 r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Wt(0,r,r);{let i=o[0].fi;return Wt(i-r,i,r)}}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 Wt(l,l+r,r)}else return Wt(i.fi,s.fi,r)}}};var kp=Symbol(),ds=Symbol(),Uo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof ps);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ds];r&&r(),delete this._children[t]}}}},Da=class extends Uo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,us.runOp(this._current,t))}},Ba=class extends Uo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Pe.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},jp={get(n,t){if(t===ds)return()=>{n._parent=null};if(t===kp)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=ms(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},jv={...jp,set(n,t,e){let r={type:0,props:{[t]:Er(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},Hv={...jp,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},ko=class extends Uo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ds]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ms(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},jo=class extends Uo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ds]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ms(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Ma(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&fs.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var ps=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Ma(this.ts,e,t),Ma(this.actual,r,t),Ma(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ms(n,t,e){return e instanceof Tt?new ko(n,t,e):e instanceof Ie?new jo(n,t,e):e instanceof Pe?new Proxy(new Ba(n,t,e),Hv):e!==null&&typeof e=="object"?cs(e)?e:new Proxy(new Da(n,t,e),jv):e}function Ea(n){let t=new ps(n);return[ms(t,"",n),t]}function Ga(n,t){let[e,r]=Ea(n);return t(e),r.result()}function Er(n){return n instanceof ko||n instanceof jo?n._current:n!==null&&typeof n=="object"?n[kp]:n}var fs;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let l=e(s,o);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...i};return Object.keys(l).forEach(p=>{delete c[p]}),c}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof Tt||o instanceof ko)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Ie||o instanceof jo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(fs||(fs={}));var hs=class{},Gn=class extends hs{constructor(e){super();this.id=e}},Rn=class extends hs{constructor(e){super();this.data=e}};var Fa;try{Fa=new TextDecoder}catch{}var te,Rr,w=0;var Qp=[],Va=Qp,za=0,dt={},xe,Gr,At=0,qt=0,bt,xr,it=[],we,Hp={useRecords:!1,mapsAsObjects:!0},Fn=class{},ka=new Fn;ka.name="MessagePack 0xC1";var Ho=!1,$t=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return rd(()=>(ys(),this?this.unpack(t,e):$t.prototype.unpack.call(Hp,t,e)));Rr=e>-1?e:t.length,w=0,za=0,qt=0,Gr=null,Va=Qp,bt=null,te=t;try{we=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof $t){if(dt=this,this.structures)return xe=this.structures,gs();(!xe||xe.length>0)&&(xe=[])}else dt=Hp,(!xe||xe.length>0)&&(xe=[]);return gs()}unpackMultiple(t,e){let r,o=0;try{Ho=!0;let i=t.length,s=this?this.unpack(t,i):bs.unpack(t,i);if(e){for(e(s);w<i;)if(o=w,e(gs())===!1)return}else{for(r=[s];w<i;)o=w,r.push(gs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Ho=!1,ys()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function gs(){try{if(!dt.trusted&&!Ho){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=De();if(w==Rr)xe.restoreStructures&&Wp(),xe=null,te=null,xr&&(xr=null);else if(w>Rr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ho)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Wp(),ys(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Wp(){for(let n in xe.restoreStructures)xe[n]=xe.restoreStructures[n];xe.restoreStructures=null}function De(){let n=te[w++];if(n<160)if(n<128){if(n<64)return n;{let t=xe[n&63]||dt.getStructures&&Zp()[n&63];return t?(t.read||(t.read=ja(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[ed()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}else if(n<192){let t=n-160;if(qt>=w)return Gr.slice(w-At,(w+=t)-At);if(qt==0&&Rr<140){let e=t<16?Ha(t):Jp(t);if(e!=null)return e}return Ua(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=De(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):ka;case 194:return!1;case 195:return!0;case 196:return Ra(te[w++]);case 197:return t=we.getUint16(w),w+=2,Ra(t);case 198:return t=we.getUint32(w),w+=4,Ra(t);case 199:return eo(te[w++]);case 200:return t=we.getUint16(w),w+=2,eo(t);case 201:return t=we.getUint32(w),w+=4,eo(t);case 202:if(t=we.getFloat32(w),dt.useFloat32>2){let e=vs[(te[w]&127)<<1|te[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=we.getFloat64(w),w+=8,t;case 204:return te[w++];case 205:return t=we.getUint16(w),w+=2,t;case 206:return t=we.getUint32(w),w+=4,t;case 207:return dt.int64AsNumber?(t=we.getUint32(w)*4294967296,t+=we.getUint32(w+4)):t=we.getBigUint64(w),w+=8,t;case 208:return we.getInt8(w++);case 209:return t=we.getInt16(w),w+=2,t;case 210:return t=we.getInt32(w),w+=4,t;case 211:return dt.int64AsNumber?(t=we.getInt32(w)*4294967296,t+=we.getUint32(w+4)):t=we.getBigInt64(w),w+=8,t;case 212:if(t=te[w++],t==114)return Kp(te[w++]&63);{let e=it[t];if(e)return e.read?(w++,e.read(De())):e.noBuffer?(w++,e()):e(te.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=te[w],t==114?(w++,Kp(te[w++]&63,te[w++])):eo(2);case 214:return eo(4);case 215:return eo(8);case 216:return eo(16);case 217:return t=te[w++],qt>=w?Gr.slice(w-At,(w+=t)-At):qv(t);case 218:return t=we.getUint16(w),w+=2,qt>=w?Gr.slice(w-At,(w+=t)-At):$v(t);case 219:return t=we.getUint32(w),w+=4,qt>=w?Gr.slice(w-At,(w+=t)-At):Xv(t);case 220:return t=we.getUint16(w),w+=2,$p(t);case 221:return t=we.getUint32(w),w+=4,$p(t);case 222:return t=we.getUint16(w),w+=2,Xp(t);case 223:return t=we.getUint32(w),w+=4,Xp(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var Wv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ja(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Wv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(De);return n.highByte===0&&(n.read=qp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=De()}return r}return e.count=0,n.highByte===0?qp(t,e):e}var qp=(n,t)=>function(){let e=te[w++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Zp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ja(o,n)),o.read()};function Zp(){let n=rd(()=>(te=null,dt.getStructures()));return xe=dt._mergeStructures(n,xe)}var Ua=xs,qv=xs,$v=xs,Xv=xs;function xs(n){let t;if(n<16&&(t=Ha(n)))return t;if(n>64&&Fa)return Fa.decode(te.subarray(w,w+=n));let e=w+n,r=[];for(t="";w<e;){let o=te[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[w++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[w++]&63,s=te[w++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[w++]&63,s=te[w++]&63,l=te[w++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function $p(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}function Xp(n){if(dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[ed()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}}var qe=String.fromCharCode;function Jp(n){let t=w,e=new Array(n);for(let r=0;r<n;r++){let o=te[w++];if((o&128)>0){w=t;return}e[r]=o}return qe.apply(String,e)}function Ha(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[w++];if((t&128)>1){w-=1;return}return qe(t)}}else{let t=te[w++],e=te[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(n<3)return qe(t,e);let r=te[w++];if((r&128)>0){w-=3;return}return qe(t,e,r)}else{let t=te[w++],e=te[w++],r=te[w++],o=te[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=te[w++];if((i&128)>0){w-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=te[w++],s=te[w++];if((i&128)>0||(s&128)>0){w-=6;return}if(n<7)return qe(t,e,r,o,i,s);let l=te[w++];if((l&128)>0){w-=7;return}return qe(t,e,r,o,i,s,l)}else{let i=te[w++],s=te[w++],l=te[w++],c=te[w++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){w-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,l,c);{let p=te[w++];if((p&128)>0){w-=9;return}return qe(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=te[w++],a=te[w++];if((p&128)>0||(a&128)>0){w-=10;return}if(n<11)return qe(t,e,r,o,i,s,l,c,p,a);let u=te[w++];if((u&128)>0){w-=11;return}return qe(t,e,r,o,i,s,l,c,p,a,u)}else{let p=te[w++],a=te[w++],u=te[w++],d=te[w++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){w-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,l,c,p,a,u,d);{let m=te[w++];if((m&128)>0){w-=13;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,m)}}else{let m=te[w++],f=te[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(n<15)return qe(t,e,r,o,i,s,l,c,p,a,u,d,m,f);let h=te[w++];if((h&128)>0){w-=15;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,m,f,h)}}}}}function Ra(n){return dt.copyBuffers?Uint8Array.prototype.slice.call(te,w,w+=n):te.subarray(w,w+=n)}function eo(n){let t=te[w++];if(it[t])return it[t](te.subarray(w,w+=n));throw new Error("Unknown extension type "+t)}var Yp=new Array(4096);function ed(){let n=te[w++];if(n>=160&&n<192){if(n=n-160,qt>=w)return Gr.slice(w-At,(w+=n)-At);if(!(qt==0&&Rr<180))return Ua(n)}else return w--,De();let t=(n<<5^(n>1?we.getUint16(w):n>0?te[w]:0))&4095,e=Yp[t],r=w,o=w+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=we.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],Yp[t]=e,e.bytes=n;r<o;)i=we.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let l=n<16?Ha(n):Jp(n);return l!=null?e.string=l:e.string=Ua(n)}var Kp=(n,t)=>{var e=De();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=xe[n];return o&&o.isShared&&((xe.restoreStructures||(xe.restoreStructures=[]))[n]=o),xe[n]=e,e.read=ja(e,r),e.read()},td=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=De();return(td[n[0]]||Error)(n[1])};it[105]=n=>{let t=we.getUint32(w-4);xr||(xr=new Map);let e=te[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};xr.set(t,o);let i=De();return o.used?Object.assign(r,i):(o.target=i,i)};it[112]=n=>{let t=we.getUint32(w-4),e=xr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(De());var Wa=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Wa[t];if(!e)throw new Error("Could not find typed array for code "+t);return new td[e](Uint8Array.prototype.slice.call(n,1).buffer)};it[120]=()=>{let n=De();return new RegExp(n[0],n[1])};it[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=w;w+=t-4,bt=[De(),De()],bt.position0=0,bt.position1=0;let r=w;w=e;try{return De()}finally{w=r}};it[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 rd(n){let t=Rr,e=w,r=za,o=At,i=qt,s=Gr,l=Va,c=xr,p=bt,a=new Uint8Array(te.slice(0,Rr)),u=xe,d=xe.slice(0,xe.length),m=dt,f=Ho,h=n();return Rr=t,w=e,za=r,At=o,qt=i,Gr=s,Va=l,xr=c,bt=p,te=a,Ho=f,xe=u,xe.splice(0,xe.length,...d),dt=m,we=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function ys(){te=null,xr=null,xe=null}function od(n){n.unpack?it[n.type]=n.unpack:it[n.type]=n}var vs=new Array(147);for(let n=0;n<256;n++)vs[n]=+("1e"+Math.floor(45.15-n*.30103));var bs=new $t({useRecords:!1}),Yv=bs.unpack,Kv=bs.unpackMultiple,Qv=bs.unpack,_s={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Zv=new Float32Array(1),x3=new Uint8Array(Zv.buffer,0,4);var Ss;try{Ss=new TextEncoder}catch{}var ws,$a,Ts=typeof Buffer<"u",qa=Ts?Buffer.allocUnsafeSlow:Uint8Array,ad=Ts?Buffer:Uint8Array,nd=Ts?4294967296:2144337920,R,Ee,O=0,Xt,Yt=null,Jv=/[\u0080-\uFFFF]/,Vn=Symbol("record-id"),to=class extends $t{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=ad.prototype.utf8Write?function(y,I,T){return R.utf8Write(y,I,T)}:Ss&&Ss.encodeInto?function(y,I){return Ss.encodeInto(y,R.subarray(I)).written}:!1,a=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=m>32||f+m>64,g=m+64,x=m+f+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,_=0;this.pack=this.encode=function(y,I){if(R||(R=new qa(8192),Ee=new DataView(R.buffer,0,8192),O=0),Xt=R.length-10,Xt-O<2048?(R=new qa(R.length),Ee=new DataView(R.buffer,0,R.length),Xt=R.length-10,O=0):O=O+7&2147483640,r=O,l=a.structuredClone?new Map:null,a.bundleStrings?(Yt=["",""],R[O++]=214,R[O++]=98,Yt.position=O-r,O+=4):Yt=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let T=o.sharedLength||0;if(T>m)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<T;P++){let C=o[P];if(!C)continue;let N,j=o.transitions;for(let W=0,oe=C.length;W<oe;W++){let ce=C[W];N=j[ce],N||(N=j[ce]=Object.create(null)),j=N}j[Vn]=P+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),Yt){Ee.setUint32(Yt.position+r,O-Yt.position-r);let T=Yt;Yt=null,b(T[0]),b(T[1])}if(a.offset=O,l&&l.idsToInsert){O+=l.idsToInsert.length*6,O>Xt&&S(O),a.offset=O;let T=tb(R.subarray(r,O),l.idsToInsert);return l=null,T}return I&cd?(R.start=r,R.end=O,R):R.subarray(r,O)}finally{if(o){if(_<10&&_++,A>1e4)o.transitions=null,_=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,P=v.length;T<P;T++)v[T][Vn]=0;v=[]}if(i&&a.saveStructures){let T=o.sharedLength||m;o.length>T&&(o=o.slice(0,T));let P=R.subarray(r,O);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=T,P)}}I&lb&&(O=r)}};let b=y=>{O>Xt&&(R=S(O));var I=typeof y,T;if(I==="string"){let P=y.length;if(Yt&&P>=8&&P<4096){let j=Jv.test(y);Yt[j?0:1]+=y,R[O++]=193,b(j?-P:P);return}let C;P<32?C=1:P<256?C=2:P<65536?C=3:C=5;let N=P*3;if(O+N>Xt&&(R=S(O+N)),P<64||!p){let j,W,oe,ce=O+C;for(j=0;j<P;j++)W=y.charCodeAt(j),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=y.charCodeAt(j+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),j++,R[ce++]=W>>18|240,R[ce++]=W>>12&63|128,R[ce++]=W>>6&63|128,R[ce++]=W&63|128):(R[ce++]=W>>12|224,R[ce++]=W>>6&63|128,R[ce++]=W&63|128);T=ce-O-C}else T=p(y,O+C,N);T<32?R[O++]=160|T:T<256?(C<2&&R.copyWithin(O+2,O+1,O+1+T),R[O++]=217,R[O++]=T):T<65536?(C<3&&R.copyWithin(O+3,O+2,O+2+T),R[O++]=218,R[O++]=T>>8,R[O++]=T&255):(C<5&&R.copyWithin(O+5,O+3,O+3+T),R[O++]=219,Ee.setUint32(O,T),O+=4),O+=T}else if(I==="number")if(y>>>0===y)y<64?R[O++]=y:y<256?(R[O++]=204,R[O++]=y):y<65536?(R[O++]=205,R[O++]=y>>8,R[O++]=y&255):(R[O++]=206,Ee.setUint32(O,y),O+=4);else if(y>>0===y)y>=-32?R[O++]=256+y:y>=-128?(R[O++]=208,R[O++]=y+256):y>=-32768?(R[O++]=209,Ee.setInt16(O,y),O+=2):(R[O++]=210,Ee.setInt32(O,y),O+=4);else{let P;if((P=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[O++]=202,Ee.setFloat32(O,y);let C;if(P<4||(C=y*vs[(R[O]&127)<<1|R[O+1]>>7])>>0===C){O+=4;return}else O--}R[O++]=203,Ee.setFloat64(O,y),O+=8}else if(I==="object")if(!y)R[O++]=192;else{if(l){let C=l.get(y);if(C){if(!C.id){let N=l.idsToInsert||(l.idsToInsert=[]);C.id=N.push(C)}R[O++]=214,R[O++]=112,Ee.setUint32(O,C.id),O+=4;return}else l.set(y,{offset:O-r})}let P=y.constructor;if(P===Object)D(y,!0);else if(P===Array){T=y.length,T<16?R[O++]=144|T:T<65536?(R[O++]=220,R[O++]=T>>8,R[O++]=T&255):(R[O++]=221,Ee.setUint32(O,T),O+=4);for(let C=0;C<T;C++)b(y[C])}else if(P===Map){T=y.size,T<16?R[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,Ee.setUint32(O,T),O+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=ws.length;C<N;C++){let j=$a[C];if(y instanceof j){let W=ws[C];if(W.write){W.type&&(R[O++]=212,R[O++]=W.type,R[O++]=0),b(W.write.call(this,y));return}let oe=R,ce=Ee,ie=O;R=null;let K;try{K=W.pack.call(this,y,U=>(R=oe,oe=null,O+=U,O>Xt&&S(O),{target:R,targetView:Ee,position:O-U}),b)}finally{oe&&(R=oe,Ee=ce,O=ie,Xt=R.length-10)}K&&(K.length+O>Xt&&S(K.length+O),O=eb(K,R,O,W.type));return}}D(y,!y.hasOwnProperty)}}else if(I==="boolean")R[O++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[O++]=211,Ee.setBigInt64(O,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[O++]=207,Ee.setBigUint64(O,y);else if(this.largeBigIntToFloat)R[O++]=203,Ee.setFloat64(O,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");O+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[O++]=192:(R[O++]=212,R[O++]=0,R[O++]=0);else if(I==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},D=this.useRecords===!1?this.variableMapSize?y=>{let I=Object.keys(y),T=I.length;T<16?R[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,Ee.setUint32(O,T),O+=4);let P;for(let C=0;C<T;C++)b(P=I[C]),b(y[P])}:(y,I)=>{R[O++]=222;let T=O-r;O+=2;let P=0;for(let C in y)(I||y.hasOwnProperty(C))&&(b(C),b(y[C]),P++);R[T+++r]=P>>8,R[T+r]=P&255}:y=>{let I=Object.keys(y),T,P=s.transitions||(s.transitions=Object.create(null)),C=0;for(let j=0,W=I.length;j<W;j++){let oe=I[j];T=P[oe],T||(T=P[oe]=Object.create(null),C++),P=T}let N=P[Vn];if(N)N>=96&&h?(R[O++]=((N-=96)&31)+96,R[O++]=N>>5):R[O++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let j=I.highByte=N>=96&&h?N-96>>5:-1;P[Vn]=N,s[N-64]=I,N<g?(I.isShared=!0,s.sharedLength=N-63,i=!0,j>=0?(R[O++]=(N&31)+96,R[O++]=j):R[O++]=N):(j>=0?(R[O++]=213,R[O++]=114,R[O++]=(N&31)+96,R[O++]=j):(R[O++]=212,R[O++]=114,R[O++]=N),C&&(A+=_*C),v.length>=f&&(v.shift()[Vn]=0),v.push(P),b(I))}for(let j=0,W=I.length;j<W;j++)b(y[I[j]])},S=y=>{let I;if(y>16777216){if(y-r>nd)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(nd,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new qa(I);return Ee=new DataView(T.buffer,0,I),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),O-=r,r=0,Xt=T.length-10,R=T}}useBuffer(t){R=t,Ee=new DataView(R.buffer,R.byteOffset,R.byteLength),O=0}};$a=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Fn];ws=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?id(n,16,t):sd(Ts?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==ad&&this.structuredClone?id(n,Wa.indexOf(e.name),t):sd(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function id(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function sd(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function eb(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function tb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let l=i+r;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 ro(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)");$a.unshift(n.Class),ws.unshift(n)}od(n)}var ld=new to({useRecords:!1}),rb=ld.pack,ob=ld.pack;var{NEVER:nb,ALWAYS:ib,DECIMAL_ROUND:sb,DECIMAL_FIT:ab}=_s,cd=512,lb=1024;var ud=new to({structuredClone:!0});ro({Class:Pe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Pe.prototype),n}});ro({Class:Ie.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ie.prototype),n}});ro({Class:Tt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Tt.prototype),n}});ro({Class:Gn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Gn(n)}});ro({Class:Rn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Rn(n)}});function cb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function Xa(n){if(cs(n))return n;if(Array.isArray(n))return n.map(Xa);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Xa(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var As;(r=>{function n(o){return ud.pack(o)}r.serialize=n;function t(o){return ud.unpack(o)}r.deserialize=t;function e(o){return cb(n(Xa(o))).toString()}r.checksum=e})(As||(As={}));var Cs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Cs||(Cs={}));var Ns;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:vt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ns||(Ns={}));var Ya;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ya||(Ya={}));var Ka;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Ka||(Ka={}));var Os;(t=>t.defaultData={...Ka.defaultData,...Ya.defaultData,cloner:null,booleanExclude:null})(Os||(Os={}));var Qa=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Qa||{}),Za=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Za||{}),Ja=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Ja||{}),Ps;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:vt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Ps||(Ps={}));var pd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],dd=["wrapping","image"],Fr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:pt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...pt.fromHex(6710886),a:1},colorB:{...pt.fromHex(6710886),a:1},colorC:{...pt.fromHex(16777215),a:1},colorD:{...pt.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:vt.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:vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:vt.fromHexAndA(0,1),contourColor:vt.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}}}})(Fr||(Fr={}));var vr;(l=>{function n(c){return!c.layers.some(a=>{if(a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")return!0})&&!e(c)}l.isMergable=n;function t(c){let p="";return c.layers.forEach(a=>{Object.entries(a.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(m=>p+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${d}`})}),p}l.getHash=t;function e(c){let p=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(p+=(1-p)*a.data.alpha);return p<1}l.isTransparent=e;function r(){return{layers:new Ie}}l.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}l.defaultData=o;function i(c,p="layer1",a="layer2"){let u=new Ie;return u.push({fi:0,data:Fr.defaultData("light",c),id:p}),u.push({fi:1,data:Fr.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="basic",a="layer1",u="layer2"){let d=Fr.defaultData("texture");Object.assign(d.texture,{image:c});let m=new Ie;return m.push({fi:0,data:d,id:a}),m.push({fi:1,data:Fr.defaultData("light",p),id:u}),{layers:m}}l.defaultTwoLayerTextureData=s})(vr||(vr={}));var Wo;(t=>{function n(){return{points:new Ie,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Wo||(Wo={}));var Is;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Is||(Is={}));var zn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Wo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(zn||(zn={}));var Un;(o=>{o.identity={...ss.identity,hiddenMatrix:Br.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:zo.isEqual(i.position,s.position)?null:s.position,rotation:zo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:zo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Br.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Un||(Un={}));var br;(t=>t.defaultData={states:new Ie,events:new Ie,visible:!0,raycastLock:!1,...Un.identity})(br||(br={}));var md;(t=>t.defaultData={type:"Empty",...br.defaultData})(md||(md={}));var Ls;(t=>t.defaultData={type:"Mesh",...br.defaultData,...Os.defaultData})(Ls||(Ls={}));var fd;(t=>t.defaultData={type:"TextFrame",...br.defaultData,...Ps.defaultData})(fd||(fd={}));var Ms;(t=>t.defaultData={...br.defaultData,...Un.identity,...Jr.defaultData})(Ms||(Ms={}));var hd;(t=>{function n(e){return{...br.defaultData,...Ns.defaultData(e)}}t.defaultData=n})(hd||(hd={}));var gd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Br.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ie,events:new Ie,...Jr.defaultData},r.defaultMeshObject={name:"Rectangle",...br.defaultData,...Ls.defaultData,geometry:zn.defaultData("RectangleGeometry"),material:vr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...br.defaultData,...Ls.defaultData,geometry:zn.defaultData("BooleanGeometry"),material:vr.defaultTwoLayerData("phong","layer1","layer2")}))(gd||(gd={}));var yd;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Ga(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&Zr(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ga(i.materials,s=>{for(let l=0;l<i.materials.length;l++){let c=o.materials[l];if(typeof c!="string")for(let[p,a]of Object.entries(c.layers)){let u=s[l]?.layers?.data(p);u&&Zr(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Un.merge(i,o)),Vo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Cs.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=pt.clone(s.color))}return i}e.patch=t})(yd||(yd={}));var Ds;(t=>t.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,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Ds||(Ds={}));var ub={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},pb={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Bs={CC0:ub,Originals:pb};var qo;(c=>{let n=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let p={},a=0;for(let u of n)p[`image_${a}`]={data:u,name:`Image ${a}`,asset:!1},a++;a=0;for(let u of t)p[`matcap_${a}`]={data:u,name:`Matcap ${a}`,asset:!1},a++;return p}c.defaultImages=e;function r(){let p={};return p["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},p}c.defaultColors=r;function o(){let p={},a={...Bs.CC0,...Bs.Originals},u=0;for(let[d,m]of Object.entries(a)){let f=m.split("/").pop()??"unknown",h=m.split(".").pop(),g="";if(h==="mp3")g="audio/mpeg";else if(h==="wav")g="audio/wav";else continue;p[`audio_${u}`]={name:d,filename:f,data:m,mimeType:g,asset:!1,free:d in Bs.CC0},u++}return p}c.defaultAudios=o,c.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function s(){return{materials:new Pe,images:new Pe,colors:new Pe,audios:new Pe,penumbraSize:[.5,.5,.5]}}c.emptyData=s;function l(){return{materials:new Pe,images:xo(e(),Pe.prototype),colors:xo(r(),Pe.prototype),audios:xo(o(),Pe.prototype),penumbraSize:new Array(5).fill(.5)}}c.defaultData=l})(qo||(qo={}));function rl(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...La(Er(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Er(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function db(n){Object.values(n.shared.materials).forEach(t=>rl(t))}function mb(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&rl(r)}):"material"in e&&typeof e.material!="string"&&rl(e.material)})}function fb(n){Object.assign(n.scene.publish,{orbitControls:{...Ds.defaultData,...Er(n.scene.publish.orbitControls)}})}function hb(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((pd.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(dd.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function gb(n){n.scene.publish.withBackground=!0}function yb(n){n.scene.publish.settings.web={compress:!0,preset:1}}function xb(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function vb(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function bb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function tl(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...Er(t),colors:e,steps:r};Object.assign(t,o)}})}function _b(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function xd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&tl(r)}):"material"in e&&typeof e.material!="string"&&tl(e.material)}),Object.values(n.shared.materials).forEach(t=>tl(t))}function Sb(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,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 wb(n){n.shared.audios=xo(qo.defaultAudios(),Pe.prototype)}var vd=13;function bd(n){let t=n.schema??0;t!==vd&&(console.warn("updating from ",t,"to ",vd),t<1&&(mb(n),db(n),n.schema=1),t<2&&(fb(n),n.schema=2),t<3&&(hb(n),n.schema=3),t<4&&(gb(n),n.schema=4),t<5&&(yb(n),n.schema=5),t<6&&(xb(n),n.schema=6),t<7&&(vb(n),n.schema=7),t<8&&(bb(n),n.schema=8),t<9&&(xd(n),n.schema=9),t<10&&(_b(n),n.schema=10),t<11&&(Sb(n),n.schema=11),t<12&&(xd(n),n.schema=12),t<13&&(wb(n),n.schema=13))}var Es;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(Es||(Es={}));import{Color as Tb}from"three";var Ue=class extends Tb{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};import{ConeBufferGeometry as Nb}from"three";import{BufferGeometry as Ab,CylinderBufferGeometry as Cb,Float32BufferAttribute as ol,Vector2 as Mt,Vector3 as Gs}from"three";var Sd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:p,radiusBottom:a,cornerRadius:u,cornerSegments:d,hollow:m}=n.parameters,f;return u||m?f=new kn(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,m):f=new Cb(p,a,r,o,i,s,l,c*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function Vr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function _d(n){return new Mt(n.y,-n.x)}var kn=class extends Ab{constructor(t,e,r,o,i,s,l,c,p,a,u,d,m=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,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&&(p=0,a=0);let f=[],h=[],g=[],x=[],v=0,A=r/2,_=new Gs,b=new Gs;m&&t==0&&(t=p),m&&e==0&&(e=a);let D=new Mt(t,A),S=new Mt(e,-A),y=null,I=null,T=null,P=null,C=D.clone().sub(S),N=0,j=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),j=t-N,W=e-N);let oe=D.clone();oe.x-=N;let ce=Math.PI-C.angle(),ie=C.angle(),K=Math.tan(ie/2),U=Math.tan(ce/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-j)/E,C.length()/F),a=Math.min(a,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new Mt(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(a>0){let z=a/U;I=S.clone().sub(new Mt(z,-a)),S.add(C.clone().setLength(z)),d&&(P=I.clone(),P.x-=N-F*a,oe.sub(C.clone().setLength(z)))}C=D.clone().sub(S);let L=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+l,ee=new Mt(Math.sin(J),Math.cos(J));P&&I?(Q(M,q,ee,ce,a,P,-1,!0),Q(M,q,ee,ie,a,I,-1,!1)):I?(k(M,ee,I.x,0,-1),Q(M,q,ee,ie,a,I,-1,!1)):s||k(M,ee,e,W,-1);let H=_d(C).normalize();if(Vr(H,ee,_),!L)for(let Z=0;Z<=i;Z++){let $=Z/i,re=C.clone().multiplyScalar($).add(S);Vr(re,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ce,p,y,1,!1),Q(M,q,ee,ie,p,T,1,!0)):y?(Q(M,q,ee,ce,p,y,1,!1),k(M,ee,y.x,0,1)):s||k(M,ee,t,j,1),d&&!L){let Z=_d(C).multiplyScalar(-1).normalize();Vr(Z,ee,_);for(let $=0;$<=i;$++){let re=$/i,le=C.clone().multiplyScalar(-re).add(oe);Vr(le,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];f.push(q,J,H),(Z!=0||$!=0)&&f.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],l),V(1,G[G.length-1],l+c)),this.setIndex(f),this.setAttribute("position",new ol(h,3)),this.setAttribute("normal",new ol(g,3)),this.setAttribute("uv",new ol(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Z<0?le:1-le;$&&(ne-=1),ne*=J;let me=new Mt(Math.sin(ne),Math.cos(ne)*Z),Le=me.clone().multiplyScalar(ee).add(H);Vr(Le,q,b),h.push(b.x,b.y,b.z),Vr(me,q,_),g.push(_.x,_.y,_.z),x.push(M,.5+b.y/r),z.push(v++)}}function k(z,M,q,J,ee){let H=new Gs,Z=new Mt,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),Vr(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new Mt(Math.sin(q),Math.cos(q)),ee=new Mt(-Math.cos(q),Math.sin(q)),H=new Gs,Z=z<0?(le,ne,me)=>f.push(le,ne,me):(le,ne,me)=>f.push(le,me,ne),$=new Mt((t+e+j+W)/4,0);Vr($,J,H),h.push(H.x,H.y,H.z),g.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let le of M){let ne=h.slice(le*3,le*3+3);h.push(...ne),g.push(ee.x,0,ee.y);let me=x.slice(le*2,le*2+2);x.push(...me),v++}for(let le=re+1;le<v-1;le++)Z(re,le,le+1);Z(re,v-1,re+1)}}};var wd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,d;return p>0||a>0||c<360?d=new kn(0,t/2,r,o,i,s,l,c*Math.PI/180,p,a,u,0,!0):d=new Nb(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Ob,BufferGeometry as Pb,Float32BufferAttribute as nl,Vector3 as jn}from"three";var Td=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,p;return l==0?p=new Ob(t,e,r,o,i,s):p=new sl(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},il=Math.PI/2,sl=class extends Pb{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,t/2,e/2,r/2);let a=[],u=[],d=[],m=[],f=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),l>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,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 nl(u,3)),this.setAttribute("normal",new nl(d,3)),this.setAttribute("uv",new nl(m,2));function g(A,_,b,D,S,y,I,T,P,C,N){let j=(y-2*l)/P,W=(I-2*l)/C,oe=y/2-l,ce=I/2-l,ie=T/2,K=P+1,U=C+1,F=0,E=0,B=new jn;for(let L=0;L<U;L++){let G=L*W-ce;for(let Q=0;Q<K;Q++){let k=Q*j-oe;B[A]=k*D,B[_]=G*S,B[b]=ie,u.push(B.x,B.y,B.z),B[A]=0,B[_]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),m.push(Q/P),m.push(1-L/C),F+=1}}for(let L=0;L<C;L++)for(let G=0;G<P;G++){let Q=f+G+K*L,k=f+G+K*(L+1),V=f+(G+1)+K*(L+1),z=f+(G+1)+K*L;a.push(Q,k,z),a.push(k,V,z),E+=6}p.addGroup(h,E,N),h+=E,f+=F}function x(A,_,b,D,S,y,I,T,P,C,N){let j=(I-2*l)/C,W=I/2-l,oe=T/2-l,ce=P/2,ie=C+1,K=0,U=0,F=new jn,E=new jn;for(let B=0;B<c+1;B++){let L=B/c*il,G=Math.sin(L)*l,Q=(1-Math.cos(L))*l,k=Math.sin(L),V=Math.cos(L);F[_]=(oe+G)*S,F[b]=(ce-Q)*y,E[A]=0,E[_]=k*Math.sign(F[_]),E[b]=V*Math.sign(F[b]);for(let z=0;z<ie;z++){let M=z*j-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),m.push(z/C),m.push(0),K+=1}}for(let B=0;B<c;B++)for(let L=0;L<C;L++){let G=f+L+ie*B,Q=f+L+ie*(B+1),k=f+(L+1)+ie*(B+1),V=f+(L+1)+ie*B;a.push(G,Q,V),a.push(Q,k,V),U+=6}p.addGroup(h,U,N),h+=U,f+=K}function v(A,_,b){let D=new jn,S=new jn(t/2,e/2,r/2);S.subScalar(l);let y=[],I=A*_*b>0?(P,C,N)=>a.push(P,C,N):(P,C,N)=>a.push(P,N,C);for(let P=0;P<=c;P++){let C=[],N=il*(1-P/c),j=Math.cos(N),W=Math.sin(N),oe=0;for(let ce=0;ce<=P;ce++){let ie=Math.cos(oe),K=Math.sin(oe);D.x=j*ie,D.y=W,D.z=j*K;let U=S.clone().addScaledVector(D,l);u.push(A*U.x,_*U.y,b*U.z),d.push(A*D.x,_*D.y,b*D.z),m.push(0,0),C.push(f++),oe+=il/P}y.push(C)}let T=y.length-1;for(let P=0;P<T;P++){let C=y[P],N=y[P+1],j=C.length-1;I(C[0],N[1],N[0]);for(let W=1;W<=j;W++)I(C[W-1],C[W],N[W]),I(C[W],N[W+1],N[W])}}}};import{BufferGeometry as Ib,Float32BufferAttribute as al,Triangle as Lb,Vector3 as _r,Vector2 as ll}from"three";var zr=class extends Ib{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new al(l,3)),this.setAttribute("normal",new al(p,3)),this.setAttribute("uv",new al(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new _r,h=f.clone(),g=new Lb,x=i*o,v=o-x,A=s+1,_=new _r,b=(K,U)=>_.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),S=D(t.length/3,(K,U)=>new _r().fromArray(t,U*3).setLength(o)),y=[],I=1e6;for(let K=0;K<S.length;K++){let U=S[K],F=[],E,B,L,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],L=U.distanceToSquared(S[E]),G=Math.min(G,L),F.push([E,B,L])}G+=1e-6;let k=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,L]=F[V];let q=y[E]?.includes(K)==!0;L<=G&&k.push(E+ +q*I),V=F.findIndex(J=>J[0]==B)}y.push(k)}let T=[];{let K=0,U=0,F,E,B=m==3;for(let L=0;L<=s;L++){F=L*(L+1)/2,E=(L+1)*(L+2)/2;for(let G=0;G<s-L;G++)[K,U]=[F+G+L+2,E+G+L+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let P=f.clone(),C=f.clone(),N=f.clone(),j=f.clone(),W=f.clone(),oe=[],ce=D(S.length,()=>D(m,()=>f.clone()));for(let K=0;K<S.length;K++){f.copy(S[K]).normalize(),P.copy(f).multiplyScalar(v);let U=y[K];for(let k=0;k<U.length;k++){let V=U[k],z=U[(k+1)%m];g.setFromPointsAndIndices(S,K,V%I,z%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(P,ce[K][k])}let F=[],E=[],B=[],L=new _r;s==0&&[...ce[K]].reduce((k,V)=>k.add(V),L).multiplyScalar(1/m);for(let k=0;k<m;k++){let V=[],z=(k-1+m)%m,M=ce[K][z],q=ce[K][k];f.copy(M).sub(P),h.copy(q).sub(P);let J=P.angleTo(f),ee=f.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(L):C.copy(P).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],le=Z[$+1];j.subVectors(re,P),W.subVectors(le,P),N.crossVectors(j,W).normalize();for(let ne=0;ne<A;ne++){let me=[J,ee][$]*ne/A;f.copy(j).applyAxisAngle(N,me).add(P),F.push(f.clone()),$&&(b(f,P),V.push([ne==0?re:f.clone(),_.clone()]))}$&&(b(le,P),V.push([le,_.clone()]))}B.push(V)}oe.push(B);let G=2*A,Q=2;for(let k=0;k<m;k++){let V=G*k,z=G*((k+1)%m),M=[F[V]];for(let J=1;J<A;J++){j=F[V+J],W=F[z+J],M.push(j);for(let ee=1,H=J-Q+1;ee<=H;ee++)f.lerpVectors(j,W,ee/(H+1)),f.sub(P).setLength(E[k]).add(P),M.push(f.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[z+A]);let q=T.map(J=>M[J]);l.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,P),[_.x,_.y,_.z])).flat())}}let ie=[];for(let K=0;K<y.length;K++)for(let U=0;U<m;U++){let F=y[K][U];if(F<I){let E=y[F].findIndex(G=>G%I==K),B=oe[K][U],L=oe[F][E];for(let G=0;G<A;G++){let Q=B[G],k=L[A-G],V=B[G+1],z=L[A-(G+1)];[Q,k,V,V,k,z].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}ie.push(B[0][0],L[A][0],B[A][0],L[0][0])}}for(;ie.length;){let K,U,F,E;[K,U]=ie.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=ie.indexOf(U),E=F%2,U=ie.splice(F-E,2)[1-E];_.subVectors(B[0],B[1]).cross(f.subVectors(B[0],B[2])).normalize();let L=_.dot(B[0])<0;L&&_.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +L],B[G+1-+L],B[0]].forEach(Q=>{l.push(Q.x,Q.y,Q.z),p.push(_.x,_.y,_.z)})}}function u(){let d=new _r;for(let S=0;S<l.length;S+=3){d.x=l[S+0],d.y=l[S+1],d.z=l[S+2];let y=b(d)/2/Math.PI+.5,I=D(d)/Math.PI+.5;c.push(y,1-I)}let m=new _r,f=new _r,h=new _r,g=new _r,x=new ll,v=new ll,A=new ll,_=(S,y,I,T)=>{T<0&&S.x===1&&(c[y]=S.x-1),I.x===0&&I.z===0&&(c[y]=T/2/Math.PI+.5)};for(let S=0,y=0;S<l.length;S+=9,y+=6){m.set(l[S+0],l[S+1],l[S+2]),f.set(l[S+3],l[S+4],l[S+5]),h.set(l[S+6],l[S+7],l[S+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(m).add(f).add(h).divideScalar(3);let I=b(g);_(x,y+0,m,I),_(v,y+2,f,I),_(A,y+4,h,I)}for(let S=0;S<c.length;S+=6){let y=c[S+0],I=c[S+2],T=c[S+4],P=Math.max(y,I,T),C=Math.min(y,I,T);P>.9&&C<.1&&(y<.2&&(c[S+0]+=1),I<.2&&(c[S+2]+=1),T<.2&&(c[S+4]+=1))}function b(S){return Math.atan2(S.z,-S.x)}function D(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(t){return new zr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Mb}from"three";var Ad=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Hn(t*.5,i,s):new Mb(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Hn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],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,t,e,r),this.type=c}static fromJSON(t){return new Hn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as jb,Plane as Hb,Shape as zd,Vector2 as Sr,Vector3 as Wb,MathUtils as hl,LineCurve as gl,QuadraticBezierCurve as Ud,CubicBezierCurve as zs}from"three";import{CubicBezierCurve as Rs,EllipseCurve as Db,LineCurve as Fs,LineCurve3 as Bb,MathUtils as Eb,QuadraticBezierCurve as ul,SplineCurve as Gb,Vector2 as tt,Vector3 as Od}from"three";var Wn=1e-12,Xo=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Eb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Xo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Yo=class extends Xo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Yo(this.parent).copy(this)}},Dt=class extends Xo{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Yo(this),new Yo(this))}static create(e,r){let o=new Dt(e,new tt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Dt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new tt,r=new tt){let[o,i]=this.computeTangents();return o&&i&&(Cd(o,e),Cd(i,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Cd(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var pl=n=>n,Ko=new tt,Vs=new tt,Rb=new tt,Fb=new tt,Vb=new tt,zb=new tt,Pd=new Od,Id=new Od;function Ld(n){let t=new tt;t.addVectors(n.v0,Ko.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(n.v2,Vs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Rs(n.v0,t,e,n.v2)}function qn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Ub(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function kb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function dl(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function Md(n,t,e){return Nd(n,t)&&Nd(t,e)&&cl(n.position,t.position,e.position)}function cl(n,t,e){return Ko.copy(t).sub(n).cross(Vs.copy(e).sub(n))===0}function Dd(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,l=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(l+c,s+p),o.set(l-c,s-p),[r,o]}function Bd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Ed(n,t,e,r,o,i){let s=t.x-n.x,l=t.y-n.y,c=e.x-n.x,p=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+p)*(l+p)),u;return dl(t,n,e)>Math.PI&&(a*=-1),qn(p,l)?u=(l+p)*(r/a-.5)*8/3/(s-c):u=(s+c)*(r/a-.5)*8/3/(p-l),o.set(t.x-u*l,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function ml(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Nd(n,t){return cl(n.position,n.controls[1].position,t.position)&&cl(n.position,t.controls[0].position,t.position)}function Gd(n,t,e,r,o=.5){let i=Ko.subVectors(t,n).multiplyScalar(o).add(n),s=Vs.subVectors(e,t).multiplyScalar(o).add(t),l=Rb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=Fb.subVectors(s,i).multiplyScalar(o).add(i),a=Vb.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=zb.subVectors(a,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,a.x,a.y,u.x,u.y,r.x,r.y]}function Rd(n,t,e=12,r=!0){let o=Id.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=pl(t[c]),a=Ko,u=Ur(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Rs||p instanceof ul||p instanceof Fs){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&kb(i,o))continue;i===void 0&&(i=Pd),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Fd(n,t,e,r=12,o=!0){let i=Id.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=pl(t[c]),u=Ko,d=Ur(a,r);l.push(d);for(let m=0;m<=d;m++)if(a instanceof Rs||a instanceof ul||a instanceof Fs){if(a.getPoint(m/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Pd:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.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 fl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=Ur(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=Ur(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Ur(n[0].roundedCurveCorner,t)*.5),r}function Ur(n,t=12){return n&&n instanceof Db?t*2:n&&(n instanceof Fs||n instanceof Bb)?1:n&&n instanceof Gb?t*n.points.length:t}function Vd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=pl(t[s]),c=Ur(l,e),p=Ko;for(let a=0;a<=c;a++)if(l instanceof Rs||l instanceof ul||l instanceof Fs){if(l.getPoint(a/c,p),o!==void 0&&Ub(o,p,Wn))continue;o===void 0&&(o=Vs),o.copy(p),n.push(p.x,p.y),i++}}return qn(n[0],n[n.length-2],Wn)&&qn(n[1],n[n.length-1],Wn)&&(n.pop(),n.pop()),r&&i>1&&!(qn(n[i-1],n[1],Wn)&&qn(n[i-2],n[0],Wn))&&(n.push(n[0],n[1]),i++),n}var yl=new Sr,qb=new Sr,$b=new Sr,Xb=new Sr,Yb=new Sr,Kb=new Sr,_e=class extends zd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new jb;this.plane=new Hb(new Wb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=hl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new _e;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Dt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>_e.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],p=c.points.length-1,a=c.getPointIndexById(e);if(a<0)i+=p;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)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return r+l;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=yl.set(e,r);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,r);this._update(!1)}createPoint(e,r=0,o=hl.generateUUID()){let i;e instanceof Sr?i=e:i=new Sr(e,r);let s=new Dt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Rd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=fl(this.points,e,!1),this.roundedCurveDivisions=fl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Fd(e,this.curves,r,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Vd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Ur(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(ml(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(yl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=l[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){ml(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let l=this.points[o-1];this._applyCurveForPoint(s,l)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],a=l.roundness,u=c&&p&&Md(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,m=l.curveAfter;if(d===void 0||m===void 0)continue;let f=l.roundedCurveBefore,h=l.roundedCurveAfter,g=d.getLength(),x=m.getLength(),v=Math.min(a,g*.499),A=Math.min(a,x*.499),_=Math.min(v,A),b=1-_/g,D=_/x,S=d.getPointAt(b,yl),y=m.getPointAt(D,qb);this._subSplitCurve(d,f,b,S,void 0),this._subSplitCurve(m,h,D,void 0,y);let I;if(this.useCubicForRoundedCorners){let T=dl(S,l.position,y)/2,P=Math.tan(T)*S.distanceTo(l.position),[C,N]=Dd(S,y,P,$b,Xb),j=Bd(C,N,l.position),[W,oe]=Ed(j,S,y,P,Yb,Kb);I=new zs(S.clone(),W.clone(),oe.clone(),y.clone())}else I=new Ud(S.clone(),l.position.clone(),y.clone());l.roundedCurveCorner=I,this.roundedCurves.splice(i+o,0,I),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof gl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let l=e,c=r,p=l.getUtoTmapping(o,0),a=Gd(l.v0,l.v1,l.v2,l.v3,p);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 r}clone(){let e=new _e(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],p=e.points[i+3],a=e.points[i+4],u=e.points[i+5],d=e.points[i+6],m=new Dt(hl.generateUUID(),new Sr(s,l));m.controls[0].position.set(c,p),m.controls[1].position.set(a,u),m.roundness=d,this.points.push(m)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new _e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof zs&&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 Ud&&(i[l]=Ld(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,m;u instanceof zs?(m=this.createPoint(u.v0),m.controls[1].position.copy(u.v1)):u instanceof gl&&(m=this.createPoint(u.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let p=i[i.length-1],a=!1;return p instanceof zs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof gl&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof zd&&(this.shapeHoles=e.holes.map(i=>{let s=new _e;return s.fromShape(i),s})),this.update(),this}};var vl=Math.PI*2;function xl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Qb(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function kd(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function Zb(n,t,e,r,o,i,s,l,c,p){let a=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),m=Math.pow(l,2),f=a*u-a*m-u*d;f<0&&(f=0),f/=a*m+u*d,f=Math.sqrt(f)*(c===p?-1:1);let h=f*o/i*l,g=f*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,_=(l-g)/i,b=(-s-h)/o,D=(-l-g)/i,S=kd(1,0,A,_),y=kd(A,_,b,D);return!p&&y>0&&(y-=vl),p&&y<0&&(y+=vl),{centerx:x,centery:v,ang1:S,ang2:y}}function jd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,a=(t-r)/2;if(p===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=Zb(n,t,e,r,o,i,p,a,s,l),{ang1:m,ang2:f}=d,{centerx:h,centery:g}=d,x=Math.abs(f)/(vl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);f/=v;for(let A=0;A<v;A++)c.push(Qb(m,f)),m+=f;return c.map(A=>{let{x:_,y:b}=xl(A[0],o,i,h,g),{x:D,y:S}=xl(A[1],o,i,h,g),{x:y,y:I}=xl(A[2],o,i,h,g);return{x1:_,y1:b,x2:D,y2:S,x:y,y:I}})}import{BufferAttribute as ks,BufferGeometry as o_}from"three";var Oe;(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"})(Oe||(Oe={}));var ke;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ke||(ke={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var se=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,l,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),l=n.edgeEval(r,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,e.s)):(s=n.edgeSign(t,r,e),l=-n.edgeSign(t,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),l=n.transEval(r,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,e.t)):(s=n.transSign(t,r,e),l=-n.transSign(t,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,o.t)):i.t=(r.t+e.t)/2},n}(),$n=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}(),Us=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Qo=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}(),Hd=function(){function n(){var t=new Qo,e=new $n,r=new Us(0),o=new Us(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new Us(0),r=new Us(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Qo,e=new Qo,r=new $n,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Qo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new $n;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new $n;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Qo;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new $n;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,l;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,l=t.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,l,c,p;for(i=t,i=t;(o=i.next)!==t;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),p=r,p=r;(c=p.next)!==r;p=c)ue(c.Sym.next===p.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===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Wd=function(){function n(){this.handle=null}return n}(),qd=function(){function n(){this.key=null,this.node=0}return n}(),Jb=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Wd,this.handles[r]=new qd;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Wd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new qd}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ue(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),bl=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}(),$d=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),e_=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new $d,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new $d;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),t_=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var l=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new bl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Oe.ODD:return(e&1)!==0;case Oe.NONZERO:return e!==0;case Oe.POSITIVE:return e>0;case Oe.NEGATIVE:return e<0;case Oe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,l=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}l.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(l,o)),n.finishRegion(t,s),l=i.eUp,s=i}return l},n.addRightEdges=function(t,e,r,o,i,s){var l,c,p,a,u=!0;p=r;do ue(se.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),p=l.eUp.Sym,p.Org===a.Org;)p.Onext!==a&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(a.Oprev,p)),l.windingNumber=c.windingNumber-p.winding,l.inside=n.isWindingInside(t,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,a),n.deleteRegion(t,c),t.mesh.delete(a)),u=!1,c=l,a=p;c.dirty=!0,ue(c.windingNumber-p.winding===l.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),l=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+l*r.coords[0],t.coords[1]+=s*e.coords[1]+l*r.coords[1],t.coords[2]+=s*e.coords[2]+l*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(ue(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,l=i.Org,c=o.Dst,p=i.Dst,a,u,d=new Qo,m,f;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,l)>=0),ue(s!==t.event&&l!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),u=Math.max(l.t,p.t),a>u))return!1;if(se.vertLeq(s,l)){if(se.edgeSign(p,s,l)>0)return!1}else if(se.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,l,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(l.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(l.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=se.vertLeq(s,l)?s:l,se.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),se.vertEq(d,s)||se.vertEq(d,l)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.edgeSign(p,t.event,d)<=0?p===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(se.edgeSign(c,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),se.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,l,p),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,p=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(l.Org,t.event)&&(t.mesh.splice(i.Oprev,l),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,l,c;if(o=e.eUp,se.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}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(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,l,c,p=new bl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,l=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(l.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=t.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(t,i,null);l.Onext===s?n.connectRightVertex(t,o,l):n.addRightEdges(t,o,l.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new bl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new e_(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,l=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,l)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new Jb(i,se.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!se.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),r_=function(){function n(){this.mesh=new Hd,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=Oe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,l,c=[0,0,0],p=[0,0,0],a=[0,0,0],u=[0,0,0],d=[0,0,0],m=[null,null,null],f=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,f[g]=e,c[g]=i,m[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,f[x]=e),i>c[x]&&(c[x]=i,m[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(l=0,r=f[v],o=m[v],a[0]=r.coords[0]-o.coords[0],a[1]=r.coords[1]-o.coords[1],a[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],d[0]=a[1]*u[2]-a[2]*u[1],d[1]=a[2]*u[0]-a[0]*u[2],d[2]=a[0]*u[1]-a[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>l&&(l=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);l<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=t.next;l!==t;l=l.next)l.s=this.dot_(l.coords,r),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(se.edgeGoesRight(r.Lprev)||se.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,l=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>r)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===ke.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1;if(e===ke.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,p=0,a=0;i=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){s=0,o=r=l.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Hd),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Oe.ODD),e===void 0&&(e=ke.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),t_.computeInterior(this,s);var l=this.mesh;return e===ke.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===ke.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function oo(n){var t=n.windingRule,e=t===void 0?Oe.ODD:t,r=n.elementType,o=r===void 0?ke.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,p=n.normal,a=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,m=n.strict,f=m===void 0?!0:m,h=n.debug,g=h===void 0?!1:h;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var x=new r_;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,a,f),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var C2=Oe.ODD,N2=Oe.NONZERO,O2=Oe.POSITIVE,P2=Oe.NEGATIVE,I2=Oe.ABS_GEQ_TWO,L2=ke.POLYGONS,M2=ke.CONNECTED_POLYGONS,D2=ke.BOUNDARY_CONTOURS;var Zo=class extends o_{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Oe.ODD;this.elementType=ke.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Oe.ODD,elementType:ke.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,p=!0,a,u;for(let f=0,h=i.length/2;f<h;f++){let g=f*2,x=i[g+0],v=i[g+1];if(a!==void 0&&x!==a&&(c=!1),u!==void 0&&v!==u&&(p=!1),a=x,u=v,!c&&!p)break}!c&&!p&&(l=oo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=l?.vertexCount??1,m=l?.elementCount??1;if(this._positionAttribute=new ks(new Float32Array(d*3),3),this._normalAttribute=new ks(new Float32Array(d*3),3),this._uvAttribute=new ks(new Float32Array(d*2),2),this._indexAttribute=new ks(new Uint32Array(m*3),1),l){let f=1/0,h=-1/0,g=1/0,x=-1/0;for(let _=0,b=d;_<b;_++){let D=_*2,S=l.vertices[D+0],y=l.vertices[D+1];S<f&&(f=S),S>h&&(h=S),y<g&&(g=y),y>x&&(x=y)}let v=h-f,A=x-g;for(let _=0,b=d;_<b;_++){let D=_*2,S=l.vertices[D+0],y=l.vertices[D+1],I=(S-f)/v,T=(y-g)/A;this._positionAttribute.setXYZ(_,S,y,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,I,T)}for(let _=0,b=m;_<b;_++){let D=_*3,S=l.elements[D+0],y=l.elements[D+1],I=l.elements[D+2];this._indexAttribute.setX(D+0,S),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,I)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new Zo(this._shape,this._curveSegments);return e.userData=Mn(this.userData),e}};import{BufferAttribute as Hs,BufferGeometry as n_}from"three";var js=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*js.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*js.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=p,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Xn=js;Xn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var _l=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Jo=class extends n_{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let l=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(S=>{let y=S.extractShapePointsToFlatArray([],i),I=[];for(let T=y.length-1;T>=1;T-=2){let P=y[T-1],C=y[T-0];I.push(P,C)}return I}),p=oo({windingRule:Oe.ODD,elementType:ke.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),a=oo({windingRule:Oe.ODD,elementType:ke.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(a){p.elementCount+=a.elementCount;for(let S=0;S<a.elements.length;S++){let y=a.elements[S],I=S%2===0?p.vertexCount:0;p.elements.push(y+I)}for(let S=0;S<a.vertexIndices.length;S++){let y=a.vertexIndices[S],I=p.vertexCount;p.vertexIndices.push(y+I)}for(let S=0;S<a.vertices.length;S++){let y=a.vertices[S];p.vertices.push(y)}}let d=1/0,m=-1/0,f=1/0,h=-1/0;for(let S=0,y=p.vertexCount;S<y;S++){let I=S*2,T=p.vertices[I+0],P=p.vertices[I+1];T<d&&(d=T),T>m&&(m=T),P<f&&(f=P),P>h&&(h=P)}this._minX=d,this._minY=f,this._width=m-d,this._height=h-f;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new Xn(g);let x=[],v=[];for(let S=p.elementCount-1;S>=0;S--){let y=S>=u,I=S*2,T=p.elements[I+0],P=p.elements[I+1],C=T+P,N={start:T,count:P,normals:[],continuous:[],concave:[]},j=T,W=C-1,oe=T+1,ce=this._shape.roundedCurves.length;do{let F=j-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],L=p.vertices[j*2+0],G=p.vertices[j*2+1],Q=p.vertices[oe*2+0],k=p.vertices[oe*2+1],V=L-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=L-Q,J=G-k,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[j];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Z].getTangent($),me=this._shape.roundedCurves[re].getTangent(le);N.continuous[F]=ne.dot(me)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,j,oe]=[j,oe,oe+1],oe>=C&&(oe-=P)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:P,vertexIndices:new Array(P).fill(!0).map((F,E)=>[E,E]),elements:[0,P],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,L=[],G=[],Q=[],k=[],V=0;for(let M=0;M<P;M++){let q=M*2,J=(M-1+P)%P*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,le=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ne=Math.atan2($,Z),me=Math.atan2(le,re);me>ne&&(me-=Math.PI*2);let Le=me-ne;if(N.continuous[M]||y){let fe=ne+Le/2,Re=Math.cos(fe)*B,be=Math.sin(fe)*B;L[2*V+0]=ee+Re*(y?-1:1),L[2*V+1]=H+be*(y?-1:1),k[V]=M,V++}else{let fe=Math.max(1,Math.floor(i/4*Math.abs(Le)/Math.PI));for(let Re=0;Re<=fe;Re++){let be=ne+Le*(Re/fe),lt=Math.cos(be)*B,_t=Math.sin(be)*B;L[2*V+0]=ee+lt,L[2*V+1]=H+_t,k[V]=M,V++}}}else L[2*V+0]=ee+Z,L[2*V+1]=H+$,k[V]=M,G[M]=V,V++,L[2*V+0]=ee,L[2*V+1]=H,k[V]=M,V++,L[2*V+0]=ee+re,L[2*V+1]=H+le,k[V]=M,Q[M]=V,V++}let z=oo({windingRule:Oe.POSITIVE,elementType:ke.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let J=M.Org.idx,ee=k[J],H=k[(J+1)%k.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=P);for(let H=q;H<ee;H++){let Z=H%P,$=(H+1)%P;if(!N.continuous[Z]||!N.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}ie.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:k,insetPoints:L})}let K=(F,E,B)=>{let L=0,G=F.boundary.vertexIndices.length;for(;L<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,L++;return L},U=x.length;for(let F=1;F<ie.length;F++){let E=ie[F-1],B=ie[F],L=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!L||!G)break;let Q=N.concave.length,k=0,V=_l(k,P);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=_l(k,P);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%L;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));k=(k+1)%P;let q=k,J=this.buildBevelVert(N,E,(z-1+L)%L),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,le=!1;do{V=_l(k,P);let ne=K(E,z,V),me=K(B,M,V),Le=le;if(le=!1,ne&&!me){for(let fe=0;fe<ne;fe++)$=this.buildBevelVert(N,E,(z+fe)%L,fe/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;le=!0}else if(!ne&&me)for(let fe=0;fe<me;fe++)re=this.buildBevelVert(N,B,(M+fe)%G,fe/(me-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ne&&me)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Le?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ne===me)for(let fe=1;fe<ne;fe++)$=this.buildBevelVert(N,E,(z+fe)%L,fe/(ne-1)),re=this.buildBevelVert(N,B,(M+fe)%G,fe/(me-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ne>me){let fe=ne/me,Re=0;for(let be=1;be<ne;be++)$=this.buildBevelVert(N,E,(z+be)%L,be/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,be>(Re+1)*fe&&(Re++,re=this.buildBevelVert(N,B,(M+Re)%G,Re/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let fe=me/ne,Re=0;for(let be=1;be<me;be++)re=this.buildBevelVert(N,B,(M+be)%G,be/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,be>(Re+1)*fe&&(Re++,$=this.buildBevelVert(N,E,(z+Re)%L,Re/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ne)%L,M=(M+me)%G,k=(k+1)%Q}while(k!==q)}{let F=ie[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let L=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,L.topN,L.bottomN),x.push(G.topP,L.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],L=x[E-1],G=x[E-0];F.push(G,L,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ie[ie.length-1].boundary.vertices[E-1],L=ie[ie.length-1].boundary.vertices[E-0];F.push(B,L)}v.push(F)}if(!y){let F=ie[ie.length-1],E=oo({windingRule:ie.length>1?Oe.POSITIVE:Oe.ODD,elementType:ke.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let L=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(L.top,G.top,Q.top),x.push(Q.bottom,G.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Hs(Uint32Array.from(x),1),_=new Hs(this._buffer.positions,3),b=new Hs(this._buffer.normals,3),D=new Hs(this._buffer.uvs,2);_.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",_),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),a=p*3,u=p*2,d={top:p+0,bottom:p+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[u+0]=l,this._buffer.uvs[u+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[u+2]=l,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],p,a,u,d;l!==c?(a=l,p=c,d=!1,u=e.continuous[a]&&e.continuous[p]):(p=l,a=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let m=Math.cos(r.angle),f=Math.sin(r.angle),h=o*2,g=p*2,x=a*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],_=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,S=e.normals[g+0],y=e.normals[g+1],I=e.normals[x+0],T=e.normals[x+1];if(d){let W=I-S,oe=T-y;S=S+W*(1-i),y=y+oe*(1-i);let ce=Math.sqrt(S*S+y*y);S/=ce,y/=ce}let P=this._buffer.get(u?2:4),C=P*3,N=P*2,j={i:o,fi:p,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=S*m,this._buffer.normals[C+1]=y*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=S*m,this._buffer.normals[C+4]=y*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(P+=2,C+=6,N+=4,j.topP=P+0,j.bottomP=P+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=I*m,this._buffer.normals[C+1]=T*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=I*m,this._buffer.normals[C+4]=T*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=j,j}clone(){let e=new Jo(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Mn(this.userData),e}};var st=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof _e?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new _e(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new _e(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Zo(n.shape,o):s=new Jo(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Yd,Vector2 as Kd}from"three";var Qd=Math.PI*2,Zd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p=n.shape,a=t*.5,u=e*.5,d=i_(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let m=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(m,{userData:{...n,type:"EllipseGeometry"}})}};function i_(n,t,e,r,o,i){if(r>=Qd)return o>30||o%4===0?(a_(n,t,e,i),Math.round(o/4)):Xd(n,r,o,t,e,i);let s={x:0,y:e},l=r+Math.PI*.5,c={x:Math.cos(l)*t,y:Math.sin(l)*e},p=jd({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?s_(n,s.x,s.y,p,o,t,e,i):Xd(n,r,o,t,e,i)}function s_(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(en(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],m=en(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),m.controls[0].position.set(u.x2,u.y2),n.addPoint(m)}return l>0?Jd(n,i,s,l):n.addPoint(en(0,0)),c}function Xd(n,t,e,r,o,i){let s=-t/e;for(let l=0;l<=e;l++){let c=s*l,p=Math.sin(c)*r,a=Math.cos(c)*o;n.addPoint(en(p,a))}return t<Qd?i>0?Jd(n,r,o,i):n.addPoint(en(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&em(n,r,o,i)),1}function a_(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(Ws(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(Ws(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Ws(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(Ws(o,i-e,o+l,i-e,o-l,i-e)),r>0&&em(n,t,e,r)}function en(n,t){return new Dt(Yd.generateUUID(),new Kd(n,t))}function Ws(n,t,e,r,o,i){let s=en(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Jd(n,t,e,r){tm(n,t,e,r).forEach(i=>n.addPoint(i))}function em(n,t,e,r){let o=tm(n,t,e,r),i=new _e;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function tm(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Kd(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=Yd.generateUUID(),p}).reverse();return l.forEach(c=>{c.position.multiply(s);let p=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(p)}),l}import{BufferGeometry as l_,Float32BufferAttribute as Sl,Vector3 as rm}from"three";var om=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:p,cornerRadius:a,cornerSegments:u}=n.parameters,d=new Yn(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Yn=class extends l_{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,p=1,a=1,u=1,d=1){super();let m=t&&s===1;m&&(d=0),u>100&&(u=100);let f=()=>new rm,h=new rm,g=f(),x=f(),v=f(),A,_,b,D,S,y,I,T,P=f(),C=f(),N=f(),j=f(),W=f(),oe=f(),ce=f(),ie=f(),K=r-2*c+.001,U=K/s,F=Math.ceil(l*s),E=F+1,B=K/F,L=-K/2,G=a+1,Q=2*Math.PI/a,k=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(Be=>Array($*Be).fill(0)),me=[],Le=i-c;function fe(Be,yt){let jt=Math.PI/2;y=yt*B,T=2*Math.PI*(y%U)/U+jt,y+=L,I=Math.sin(T)*Le,S=Math.cos(T)*Le,t?Be.set(S,I,y):Be.set(S,y,I)}fe(h,-1e-10),fe(g,0),P.copy(h),fe(h,1);let Re=h.distanceTo(g),be=M+z,lt=Re*F+2*be,_t=z,go=lt-be;for(let Be=0;Be<=F;Be++){fe(x,Be),ie.subVectors(x,P).normalize(),P.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let yt=Be===0,jt=Be===F,eh=yt?3*Math.PI/2:k,th=yt?_t:go,rh=yt?G:Z,oh=yt?0:$-G,nh=ie.clone().multiplyScalar(yt?-M:M).add(x),ih=ie.clone().multiplyScalar(yt?-1:1).normalize();for(let mr=0;mr<G;mr++){let bc=mr*Q;if(C.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(bc)),g.copy(ce).multiplyScalar(c*Math.sin(bc))),N.copy(C).normalize(),yt||jt){m||(q=oh+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=nh.getComponent(ct),le[q*3+ct]=ih.getComponent(ct)}),ne[q*2]=+jt,ne[q*2+1]=mr/a),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let Ta=ct*k+eh;j.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(Ta)),g.copy(N).multiplyScalar(M*Math.cos(Ta))),W.copy(j).normalize(),g.addVectors(v,j),j.normalize(),q=rh+ct*G+mr,[0,1,2].forEach(Mi=>{re[q*3+Mi]=g.getComponent(Mi),le[q*3+Mi]=W.getComponent(Mi)});let sh=+yt+Math.sin(Ta);ne[q*2]=(th+M*sh)/lt,ne[q*2+1]=mr/a}}g.addVectors(x,C),q=H+Be*G+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=g.getComponent(ct),le[q*3+ct]=N.getComponent(ct)}),ne[q*2]=(be+Be*Re)/lt,ne[q*2+1]=mr/a}}let gt=E+2*d+J,yo=1,[Ii,Li]=m?[yo,yo+E-1]:[0,gt-1];for(let Be=Ii;Be<=Li-1;Be++){let yt=m&&Be===Li-1;for(let jt=0;jt<G-1;jt++)A=Be*G+jt,_=A+1,b=(yt?jt:A)+G,D=(yt?jt+1:_)+G,Be===0?me.push(_,D,b):Be===gt-2?me.push(A,_,b):me.push(A,_,b,_,D,b)}this.setIndex(me),this.setAttribute("position",new Sl(re,3)),this.setAttribute("normal",new Sl(le,3)),this.setAttribute("uv",new Sl(ne,2))}};import{IcosahedronBufferGeometry as c_}from"three";var nm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Kn(t*.5,i,s):new c_(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Kn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],l="IcosahedronGeometry";super(i,s,l,t,e,r),this.type=l}static fromJSON(t){return new Kn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as u_,Shape as p_}from"three";var im=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new p_;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new u_(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as pm,BufferGeometryLoader as __,Vector3 as S_,BoxBufferGeometry as dm}from"three";import{BufferGeometry as y_,Vector2 as Al,Vector3 as um}from"three";import{Box3 as d_,BufferAttribute as Qn,BufferGeometry as sm,Color as lm,EventDispatcher as m_,Float32BufferAttribute as tn,Matrix3 as am,Matrix4 as cm,MathUtils as f_,Object3D as h_,Sphere as g_,Vector2 as Ct,Vector3 as rt}from"three";var Kt=new cm,wl=new h_,qs=new rt,kr=class extends m_{constructor(){super(),this.uuid=f_.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new am().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,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(t){return Kt.makeRotationX(t),this.applyMatrix4(Kt),this}rotateY(t){return Kt.makeRotationY(t),this.applyMatrix4(Kt),this}rotateZ(t){return Kt.makeRotationZ(t),this.applyMatrix4(Kt),this}translate(t,e,r){return Kt.makeTranslation(t,e,r),this.applyMatrix4(Kt),this}scale(t,e,r){return Kt.makeScale(t,e,r),this.applyMatrix4(Kt),this}lookAt(t){return wl.lookAt(t),wl.updateMatrix(),this.applyMatrix4(wl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new rt().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new lm().fromBufferAttribute(l,d));function a(d,m,f,h){let g=l===void 0?[]:[e.colors[d].clone(),e.colors[m].clone(),e.colors[f].clone()],x=s===void 0?[]:[new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,m),new rt().fromBufferAttribute(s,f)],v=new rn(d,m,f,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ct().fromBufferAttribute(c,d),new Ct().fromBufferAttribute(c,m),new Ct().fromBufferAttribute(c,f)]),p!==void 0&&e.faceVertexUvs[1].push([new Ct().fromBufferAttribute(p,d),new Ct().fromBufferAttribute(p,m),new Ct().fromBufferAttribute(p,f)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let m=u[d],f=m.start,h=m.count;for(let g=f,x=f+h;g<x;g+=3)r!==void 0?a(r.getX(g),r.getX(g+1),r.getX(g+2),m.materialIndex):a(g,g+1,g+2,m.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(qs).negate(),this.translate(qs.x,qs.y,qs.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new cm;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,l),e.subVectors(s,l),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],p=this.vertices[l.b],a=this.vertices[l.c];r.subVectors(a,p),o.subVectors(c,p),r.cross(o),e[l.a].add(r),e[l.b].add(r),e[l.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new kr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let p=new rt,a={a:new rt,b:new rt,c:new rt};i.push(p),s.push(a)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(l.normal),p.a.copy(l.vertexNormals[0]),p.b.copy(l.vertexNormals[1]),p.c.copy(l.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new d_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new g_),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,l=t.vertices,c=this.faces,p=t.faces,a=this.colors,u=t.colors;e!==void 0&&(o=new am().getNormalMatrix(e));for(let d=0,m=l.length;d<m;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,m=u.length;d<m;d++)a.push(u[d].clone());for(let d=0,m=p.length;d<m;d++){let f=p[d],h,g,x=f.vertexNormals,v=f.vertexColors,A=new rn(f.a+i,f.b+i,f.c+i);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let _=0,b=x.length;_<b;_++)h=x[_].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(f.color);for(let _=0,b=v.length;_<b;_++)g=v[_],A.vertexColors.push(g.clone());A.materialIndex=f.materialIndex+r,c.push(A)}for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;c++){let a=this.vertices[c],u=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let u=[a.a,a.b,a.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(p,1)}let l=this.vertices.length-r.length;return this.vertices=r,l}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),l&&l.push(i[p])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let h in f)f[h]!==void 0&&(t[h]=f[h]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let h=this.vertices[f];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],l={},c=[],p={};for(let f=0;f<this.faces.length;f++){let h=this.faces[f],g=!0,x=!1,v=this.faceVertexUvs[0][f]!==void 0,A=h.normal.length()>0,_=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,S=0;if(S=a(S,0,0),S=a(S,1,g),S=a(S,2,x),S=a(S,3,v),S=a(S,4,A),S=a(S,5,_),S=a(S,6,b),S=a(S,7,D),r.push(S),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][f];r.push(m(y[0]),m(y[1]),m(y[2]))}if(A&&r.push(u(h.normal)),_){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function a(f,h,g){return g?f|1<<h:f&~(1<<h)}function u(f){let h=f.x.toString()+f.y.toString()+f.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(f.x,f.y,f.z)),i[h]}function d(f){let h=f.r.toString()+f.g.toString()+f.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(f.getHex())),l[h]}function m(f){let h=f.x.toString()+f.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(f.x,f.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new kr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,m=e.length;d<m;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,m=r.length;d<m;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,m=o.length;d<m;d++)this.faces.push(o[d].clone());for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,m=i.length;d<m;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)f.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){f.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)f.normals.push(i[d].normals[h].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let d=0,m=s.length;d<m;d++){let f={};if(s[d].vertexNormals!==void 0){f.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),f.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){f.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)f.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(f)}let l=t.skinWeights;for(let d=0,m=l.length;d<m;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,m=c.length;d<m;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,m=p.length;d<m;d++)this.lineDistances.push(p[d]);let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Tl().fromGeometry(this),e=new sm,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Qn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Qn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Qn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Qn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Qn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let p=s[l],a=new tn(p.data.length*3,3);a.name=p.name,i.push(a.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new tn(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new tn(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new sm,r=t.geometry;if(t.isPoints||t.isLine){let o=new tn(r.vertices.length*3,3),i=new tn(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new tn(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};kr.prototype.isGeometry=!0;var Tl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=t.morphTargets,c=l.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:l[x].name,data:[]};this.morphTargets.position=p}let a=t.morphNormals,u=a.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:a[x].name,data:[]};this.morphTargets.normal=d}let m=t.skinIndices,f=t.skinWeights,h=m.length===r.length,g=f.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let _=v.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new Ct,new Ct,new Ct))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new Ct,new Ct,new Ct))}for(let b=0;b<c;b++){let D=l[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=a[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(m[v.a],m[v.b],m[v.c]),g&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},rn=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new lm,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var x_=["a","b","c"];function v_(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Cl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Nl(n,t,e,r,o,i){let s=Math.min(n,t),l=Math.max(n,t),c=s+"_"+l,p;if(r.has(c))p=r.get(c);else{let a=e[s],u=e[l];p={a,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function b_(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Nl(s.a,s.b,n,r,s,e),Nl(s.b,s.c,n,r,s,e),Nl(s.c,s.a,n,r,s,e)}function $s(n,t,e,r,o){n.push(new rn(t,e,r,void 0,void 0,o))}function on(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Xs(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Ys=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof y_?t=new kr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new um,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],m=new Map;b_(c,p,d,m);let f=[],h,g,x,v,A,_,b;for(let V of Array.from(m.keys())){for(g=m.get(V),x=new um,A=3/8,_=1/8,b=g.faces.length,b!=2&&(A=.5,_=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],l=0;l<3&&(h=c[v_(v,x_[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(_),x.add(e),g.newEdge=f.length,f.push(x)}let D,S,y,I,T,P,C,N=[];for(o=0,i=c.length;o<i;o++){for(P=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),S=1-r*Number(D),y=D,r<=2&&(r==2?(S=3/4,y=1/8):r==1||r==0),C=P.clone().multiplyScalar(S),e.set(0,0,0),s=0;s<r;s++)I=T[s],h=I.a!==P?I.a:I.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let j=N.concat(f),W=N.length,oe,ce,ie,K=[],U=[],F,E,B,L,G=new Al,Q=new Al,k=new Al;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Cl(v.a,v.b,m).newEdge)+W,ce=Number(Cl(v.b,v.c,m).newEdge)+W,ie=Number(Cl(v.c,v.a,m).newEdge)+W,$s(K,oe,ce,ie,v.materialIndex),$s(K,v.a,oe,ie,v.materialIndex),$s(K,v.b,ce,oe,v.materialIndex),$s(K,v.c,ie,ce,v.materialIndex),u&&(F=a[o],E=F[0],B=F[1],L=F[2],G.set(on(E.x,B.x),on(E.y,B.y)),Q.set(on(B.x,L.x),on(B.y,L.y)),k.set(on(E.x,L.x),on(E.y,L.y)),Xs(U,G,Q,k),Xs(U,E,G,k),Xs(U,B,Q,G),Xs(U,L,k,Q));t.vertices=j,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var je=new S_,mm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new pm().copy(new dm(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(je),r={width:je.x,height:je.y,depth:je.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new pm().copy(new dm(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(je)):je.set(s.width,s.height,s.depth),(t!==je.x||e!==je.y||r!==je.z)&&i.scale(je.x===0?1:t/je.x,je.y===0?1:e/je.y,je.z===0?1:r/je.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Ys(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new __(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(je);let s=100/je.x;Object.assign(i.parameters,{width:100,height:je.y*s,depth:je.z*s}),t(this.build(i))})}};var fm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5,u=0,d=0,m=2*Math.PI/r;for(let h=0;h<r;h++){let g=m*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*a;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let f=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as w_,Float32BufferAttribute as Ol,Vector2 as Qt,Vector3 as $e}from"three";var hm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=new Il(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function Zn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Pl(n,t,e,r,o,i){let s=t.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),r===o){let p=s.add(l).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(l,r/Math.sin(p))}}function T_(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Il=class extends w_{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,l=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),l=Math.floor(l);let c=[],p=[],a=[],u=[],d=0,m=e/2,f=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new $e(0,-m,0),_=new $e(0,m,0),b=new Qt(t,-m),D=new Qt(h,-m),S=new Qt(0,_.y).sub(D),y=new Qt(0,_.y).sub(b),I=new Qt(S.y,-S.x).normalize(),T=new Qt(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-S.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new $e(I.x,I.y,0),F=new $e(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let j=s/Math.tan((Math.PI-S.angle())/2),W=s/Math.tan((Math.PI-N)/2),oe=new $e;if(!i){p.push(A.x,A.y,A.z),a.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=j/Math.cos(Math.PI/r);E.x-=B;for(let L=0;L<r;L++){let G=L/r*Math.PI*2+f,Q=new Qt(Math.sin(G),Math.cos(G));Zn(E,Q,oe),p.push(oe.x,oe.y,oe.z),a.push(0,-1,0),u.push(0,0),F.push(d++)}for(let L=0;L<F.length;L++)c.push(F[L],U,F[(L+1)%F.length])}let ce=[];{let U=new $e,F=new $e,E=new $e,B=new $e,L=new $e,G=new $e;for(let Q=0;Q<r;Q++){let k=Q/r*Math.PI*2+f,V=(Q+.5)/r*Math.PI*2+f,z=(Q+1)/r*Math.PI*2+f,M=new Qt(Math.sin(k),Math.cos(k)),q=new Qt(Math.sin(V),Math.cos(V)),J=new Qt(Math.sin(z),Math.cos(z));Zn(b,M,F),Zn(b,J,E),Zn(I,q,U),Pl(_,F,E,W,W,B),p.push(B.x,B.y,B.z),Pl(F,_,E,W,j,L),p.push(L.x,L.y,L.z),Pl(E,F,_,j,W,G),p.push(G.x,G.y,G.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let le=F.clone().add(E).multiplyScalar(.5),ne=_.clone().sub(le).normalize(),Le=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),fe=G.clone().sub(L);ie(le,fe,Le,S.angle())}let $,re;{let le=new $e;Zn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=T_(ne,E,_);let me=G.clone().sub(B);[$,re]=ie(ne,me,le,N,B.y)}{let le=$,ne=le.clone().setY(0).normalize(),me=new $e(0,-1,0),Le=ne.clone().cross(me);K(le,ne,me,Le)}ce.concat(re);{let le=S.angle(),ne=Math.PI-le,me=_.clone();me.y-=s/Math.sin(le-Math.PI/2);let Le=new $e,fe=[];for(let be=0;be<l;be++){let lt=[],_t=Math.PI/2-ne*be/l,go=Math.cos(_t),gt=Math.sin(_t),yo=V;for(let Ii=0;Ii<=be;Ii++){let Li=Math.cos(yo),Be=Math.sin(yo);U.x=go*Be,U.y=gt,U.z=go*Li,Le.copy(me).addScaledVector(U,s),p.push(Le.x,Le.y,Le.z),a.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),yo+=Math.PI*2/be/r}fe.push(lt)}re.reverse(),fe.push(re);let Re=fe.length-1;for(let be=0;be<Re;be++){let lt=fe[be],_t=fe[be+1],go=lt.length-1;c.push(_t[1],lt[0],_t[0]);for(let gt=1;gt<=go;gt++)c.push(lt[gt],lt[gt-1],_t[gt]),c.push(_t[gt+1],lt[gt],_t[gt])}}}}}this.setIndex(c),this.setAttribute("position",new Ol(p,3)),this.setAttribute("normal",new Ol(a,3)),this.setAttribute("uv",new Ol(u,2));function ie(U,F,E,B,L){let G=-B/2,Q=(Math.PI-B)/2,k=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new $e,z=new $e,M=1,q=d,J=[];for(let ee=0;ee<=l;ee++){let H=G+ee/l*B;z.set(0,0,0),z.addScaledVector(k,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),L!=null){let re=Math.max(0,V.y-L);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.z),a.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<l;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,le=Z+1;c.push(Z,$,le),c.push($,re,le)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let L=Math.PI/2,G=y.angle()-L,Q=[],k=new $e,V=new $e;for(let M=0;M<=l;M++){let q=[],J=M/l;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),le=Math.atan(Math.tan(G)*$),ne=(L+le)*J,me=Math.cos(ne),Le=Math.sin(ne);k.set(0,0,0),k.addScaledVector(F,Le*$),k.addScaledVector(E,me),k.addScaledVector(B,Le*re),V.copy(U).addScaledVector(k,s),p.push(V.x,V.y,V.z),a.push(k.x,k.y,k.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var gm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},a={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(_,b,D){return b>e&&D>r?Math.min(_*e/b,_*r/D):b>e?_*e/b:D>r?_*r/D:_}let m=[];m[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=a.x,h=u.x,g=u.y,x=a.y;t.addPoint(t.createPoint(f,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(f,x)),t.isClosed=!0;let v=!0;for(let _=0,b=t.points.length;_<b;_++)t.points[_].roundness=m[_],_>0&&m[_]!==m[_-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=st.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as A_}from"three";var ym=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:p}=n.parameters,a=new A_(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as C_}from"three";var xm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new C_(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as N_,Float32BufferAttribute as Ll,Vector3 as O_}from"three";var vm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new Ml(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Ml=class extends N_{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],p=[],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 u=[],d=Math.PI/2,m=(V=0,z=0,M=0)=>new O_(V,z,M),f=m(),h=m(),[g,x,v]=[e/2,t/2,r/2],A=-x,_=+x,[b,D,S]=[m(A,-g,+v),m(A,-g,-v),m(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),I=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));S.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,P=b.z-a;o<=d?(S.z=Math.min(T,P),S.z==P&&(S.y-=(T-P)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-a),f.subVectors(b,D),h.subVectors(S,D);let C=Math.min(f.length(),h.length())*i/100,N=C*Math.tan(o/2),j=C/Math.cos(o/2),W=f.clone().normalize().add(h.normalize()).setLength(j).add(D);f.set(0,y(o,!0),I(o,!0)),u.push([S,f.clone()]);let oe=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*oe;f.set(0,Math.sin(z)*N,Math.cos(z)*N),f.add(W),h.set(0,y(z),I(z)),u.push([f.clone(),h.clone()])}u.push([b,m(0,1,0)]);let ce=Math.sin(oe/2)*N*2,ie=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[ie-1][0].distanceTo(u[ie][0]),F=K+ce*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ce)/F);u[ie].push(0);let[E,B,L]=u[0],G,Q,k;for(let V=1;V<u.length;V++)[G,Q,k]=u[V],l.push(A,E.y,E.z,A,G.y,G.z,_,E.y,E.z,_,E.y,E.z,A,G.y,G.z,_,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,L,0,k,1,L,1,L,0,k,1,k),[E,B,L]=[G,Q,k];this.setAttribute("position",new Ll(l,3)),this.setAttribute("normal",new Ll(c,3)),this.setAttribute("uv",new Ll(p,2))}};var bm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,a=n.shape,u=t*.5,d=e*.5,m=0,f=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let _=0;_<o;_++){let b=h*_,D=m+Math.sin(b)*u,S=f+Math.cos(b)*d;a.addPoint(a.createPoint(D,S))}}else for(let _=0;_<o;_++){let b=m+Math.cos(g)*u,D=f+Math.sin(g)*d;a.addPoint(a.createPoint(b,D)),g+=h,b=m+Math.cos(g)*x,D=f+Math.sin(g)*v,_<=o,a.addPoint(a.createPoint(b,D)),g+=h}a.isClosed=!0;for(let _=0,b=a.points.length;_<b;_++)a.points[_].roundness=i;a.roundness=i,a.update();let A=st.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as P_}from"three";var Ks=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new P_(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var _m=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=I_(t,e,r,t*.5,s,i,0,0,o,l,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function I_(n,t,e,r,o,i,s,l,c,p,a){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new Yn(!0,n,t,e,r,o,i,s,l,c,p,a)}import{TorusKnotBufferGeometry as L_}from"three";var Sm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,l=t*.5;l!==e&&(l-=e);let c=new L_(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var wm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof _e?n.shape:new _e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-p,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))),c.isClosed=!0;for(let d=0,m=c.points.length;d<m;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=st.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferGeometry as Fm,BufferAttribute as Vm,Uint32BufferAttribute as zl,Float32BufferAttribute as Ul,Matrix4 as J_,Vector3 as oa}from"three";var M_,Qs=new Promise(n=>{M_=n});import{BufferGeometryLoader as Q_}from"three";import{EventDispatcher as X_,Matrix3 as Y_,Vector3 as Vl}from"three";import{Mesh as q_,Matrix4 as $_}from"three";import{Matrix4 as Lm}from"three";import{Object3D as E_,Matrix4 as G_}from"three";import{HemisphereLight as Tm}from"three";function Ve(n,t){return t.color(n)}var Dl=n=>"isEntity"in n,Zt=n=>"isAbstractMesh"in n,Jt=n=>n!==null&&n.objectType==="BooleanObject",Am=n=>n.objectType==="CombinedCamera";var Zs=n=>"objectHelper"in n;function D_(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Br.identity)),e&&(n.updateMatrix(),Jt(n.parent)&&Zt(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function B_(n,t){D_(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Cm(n,t,e){B_(n,t),t.color!==void 0&&(n.color=Ve(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Tm)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Tm)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Nm(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Js=n=>class extends n{hasEntityChild(){return this.children.some(e=>Dl(e))}isDescendantOf(e){e instanceof E_&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new G_().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Dl(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Pm,Line3 as R_,Matrix4 as Bl,Vector3 as Nt}from"three";var nn=new Pm,er=new Nt,tr=new Nt,sn=new Bl,Im=[new Nt(-1,1,1),new Nt(-1,-1,1),new Nt(1,-1,1),new Nt(1,1,1),new Nt(-1,1,-1),new Nt(-1,-1,-1),new Nt(1,-1,-1),new Nt(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]],V_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function z_(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,p=-1/0;for(let a=e;a<r;a++){let u=t.getX(a),d=t.getY(a),m=t.getZ(a);u<o&&(o=u),d<i&&(i=d),m<s&&(s=m),u>l&&(l=u),d>c&&(c=d),m>p&&(p=m)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var Om=(n,t,e)=>{if(Zt(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?er.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(z_(nn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),nn.getCenter(er)),n.forceComputeSize?nn.getSize(tr).multiplyScalar(.5):tr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Zs(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");nn.setFromArray(r.array),nn.getCenter(er),nn.getSize(tr).multiplyScalar(.5)}else er.setScalar(0),tr.setScalar(0);sn.copy(t).multiply(n.matrixWorld),tr.x===0&&tr.y===0&&tr.z===0?e.push(new Nt(er.x,er.y,er.z).applyMatrix4(sn)):Im.forEach(r=>{e.push(r.clone().multiply(tr).add(er).applyMatrix4(sn))})},Jn=class extends Pm{constructor(){super(...arguments);this.matrix=new Bl;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Bl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Om(s,r,i)}):Om(e,r,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(sn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(tr).multiplyScalar(.5),this.getCenter(er),sn.copy(this.matrix).setPosition(er),this.vertices=Im.map(e=>e.clone().multiply(tr).applyMatrix4(sn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=F_.map(([e,r])=>new R_(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Nt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=V_.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var rr=n=>"isEntity"in n,Mm=n=>"isAbstractMesh"in n,Ot=n=>class extends Js(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Lm;this._singleBBox=new Jn;this._recursiveBBox=new Jn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{rr(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)rr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)rr(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)rr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Lm,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)rr(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Fo(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Fo(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as k_,Vector3 as ei,Euler as Dm,MathUtils as jr}from"three";import{Object3D as U_}from"three";var El=class extends U_{},ea=class extends El{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var no=class extends k_{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new ei),i=.1;this.parameters=as.defaultData(o.toArray(),i),Zr(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new ea(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*jr.DEG2RAD,i=r.end*jr.DEG2RAD,s=o-i,l=new Dm(r.rotation[0]*jr.DEG2RAD,r.rotation[1]*jr.DEG2RAD,r.rotation[2]*jr.DEG2RAD),c;switch(r.axis){case"z":c=new ei(0,0,1);break;case"y":c=new ei(0,1,0);break;default:case"x":c=new ei(1,0,0);break}for(let[p,a]of this.children.entries()){a.scale.x=r.scale[0],a.scale.y=r.scale[1],a.scale.z=r.scale[2],a.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":a.rotation.set(0,u,0);break;case"y":a.rotation.set(0,0,u);break;case"z":a.rotation.set(u,0,0);break}a.translateOnAxis(c,r.radius),a.position.x+=r.position[0],a.position.y+=r.position[1],a.position.z+=r.position[2],r.alignment===!0?(a.rotation.x+=l.x,a.rotation.y+=l.y,a.rotation.z+=l.z):a.rotation.copy(l)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Dm(r.rotation[0]*jr.DEG2RAD,r.rotation[1]*jr.DEG2RAD,r.rotation[2]*jr.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new ei(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let a=this.children[r++];a.scale.setScalar(1),a.rotation.set(0,0,0),a.position.x=o.size[0]*l-s.x,a.position.y=o.size[1]*c-s.y,a.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let l=0;l<o.count[2];l++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*l}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),Zr(this.parameters,e),this.update(),this}};import{MathUtils as Gl,BufferAttribute as j_,Vector3 as Rl,Float32BufferAttribute as Bm}from"three";function H_(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=new Rl(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Rl})}t.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=t.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Bm(o,3))}function W_(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Rl;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Bm(e,3))}function Hr(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?W_(n):H_(n)}}function Wr(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[Gl.seededRandom(r),Gl.seededRandom(r+1e4),Gl.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new j_(e,3))}var Xe=class extends Ot(q_){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new $_;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Fl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),l=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=l,this.geometry.computeBoundingSphere(),Hr(this),r.getAttribute("randomColor")&&Wr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=ti(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new no(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new no(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Bt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Jt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Zt(e)&&(e.freeBooleanPointer(),Jt(e)&&e.invalidateUpstreamBooleanData())}};var K_=new Vl(0,0,1),Em=new Vl,Gm=new Vl,Rm=new Y_,an=class extends Xe{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new X_;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Rm.getNormalMatrix(this.matrixWorld),Em.copy(K_).applyMatrix3(Rm).normalize(),Gm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Em,Gm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),l=new an(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Xe.prototype.raycast.call(this,e,r)}};function ta(n,t){return Z_(n)}function Z_(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=_e.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new Q_().parse(n));let e;try{e=ti(t)}catch(r){console.error(r)}if(!e){let r=_e.createFromState(Wo.defaultData(),100,100);t.shape=r,e=ti(t)}return e}var pe;Qs.then(n=>{pe=n});var zm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Um=new Uint32Array([0,1,2,3]),km=new Uint8Array([4]),Pt=class{static build(n,t,e,r,o){let i,s,l,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(pe.free_bvh(e),pe.free_subdivision_surface(e));try{i=Pt.allocate(n,o)}catch(p){console.error(p,n),i=Pt.allocate({positionWASM:zm,indexWASM:Um,verticesPerFaceWASM:km},o)}pe.set_destination_refinement_level(i,0),s=Pt.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Pt.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(pe.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Pt.buildLevel(i,!1,c):l=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:ta(n),r,o,i,s;({positions:r,triIndices:s}=Wl(e.getAttribute("position"),e.getIndex()));let l;if(n.type==="CylinderGeometry"&&n.cornerRadius===0&&n.hollow===0&&n.openEnded===!1){let c=n.radialSegments*n.heightSegments*3*2,p=c+n.radialSegments*3;l=[c,p]}return{indices:o,verticesPerFace:i}=ql(r,s,e,l),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=zm,r=Um,o=km);let l=e.length,c=r.length,p=o.length,a=e.length+i.length+s.length,u=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,m=a*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),g=new Float32Array(pe.HEAPF32.buffer,h,a),x=new Uint32Array(pe.HEAPU32.buffer,h+m,u);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(_=>_!==1)&&(v=new J_().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,l,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,l,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return pe._free(h),A}static buildLevel(n,t,e,r,o){let i=o?pe.get_mesh_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e,o.elements):pe.get_mesh_data(n,t?pe.Level.CONTROL:pe.Level.REFINED,e),s=8,l=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=pe.HEAPU32[l[p]>>2],u=pe.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=pe.HEAPU32[l[p]>>2],m=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=pe.HEAPU32[l[p]>>2],h=pe.HEAPU32.subarray(f>>2,(f>>2)+c[p]);p++;let g=pe.HEAPU32[l[p]>>2],x=pe.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new Fm;if(v.setIndex(new zl(x,1)),v.setAttribute("position",new Ul(u,3)),v.setAttribute("normal",new Ul(m,3)),t){v.setAttribute("faceMap",new zl(h,1));let A=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new Vm(A,4))}return pe.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,pe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=pe.get_wireframe_data_for_base_level(n),o=4,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=pe.HEAPU32[i[l]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=pe.HEAPU32[i[l]>>2],u=pe.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new Fm;d.setAttribute("position",new Ul(p,3));let m=new Float32Array(p.length);for(let f=0,h=p.length;f<h;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new Vm(m,3)),d.setIndex(new zl(u,1)),pe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||pe.set_destination_refinement_level(n,t);let o=e?pe.get_topological_data2(n,r?pe.Level.CONTROL:pe.Level.REFINED,e.elements):pe.get_topological_data(n,r?pe.Level.CONTROL:pe.Level.REFINED),i=6,s=pe.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=pe.HEAPU32[s[c]>>2],a=new Float32Array(pe.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=pe.HEAPU32[s[c]>>2],d=new Uint32Array(pe.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let m=pe.HEAPU32[s[c]>>2],f=new Uint8Array(pe.HEAPU32.subarray(m>>2,(m>>2)+l[c]));return pe.free_topological_data(o),{positions:a,indices:d,verticesPerFace:f}}};var jm=["getX","getY","getZ"];function Wl(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],l=1e4;for(let p=0;p<r;p++){let a=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[jm[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[jm[d]](a));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var ra=new oa,kl=new oa,jl=new oa,Hl=new oa;function ql(n,t,e,r){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=0;for(let p=0;p<s.length;p+=2)l+=(s[p]-s[(p===0?s.length:p)-2])*(s[p+1]+s[(p===0?s.length:p)-1]);n.length=0;let c=0;if(l<0)for(let p=0;p<s.length;p+=2)n.push(s[p],s[p+1],0),o.push(c++);else for(let p=s.length-2;p>=0;p-=2)n.push(s[p],s[p+1],0),o.push(c++);return i.push(c),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??t.length;s<l;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){ra.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),kl.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),jl.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Hl.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),kl.sub(ra).normalize(),jl.sub(ra).normalize(),Hl.sub(ra).normalize();let c=kl.cross(jl).dot(Hl);Math.abs(c)>.005||r&&r.some((p,a)=>a%2===1?!1:s>=r[a]&&s<r[a+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0;for(let p=0,a=0;p<n.length;p+=3,a++)n[p+2]===0&&(s.push(a),c++),n[p+2]===e.userData.parameters.depth&&l.push(a);if(e.userData.parameters.extrudeBevelSize===0){let p=l[0];l[0]=l[1],l[1]=p}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Bt={};dh(Bt,{calcBoolean:()=>nS,calcBooleanTopological:()=>oS,freeMeshSet:()=>aS,getMeshSet:()=>iS,transformMeshSet:()=>sS});var eS,Hm=new Promise(n=>{eS=n});import{Float32BufferAttribute as Wm,Sphere as tS}from"three";var he,ln;Hm.then(n=>he=n);function rS(n,t){let e,{positions:r,triIndices:o}=Wl(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:l}=ql(r,o,n);i=l.length,e=[];for(let c=0,p=0;c<i;c++){e.push(l[c]);for(let a=0;a<l[c];a++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let l=0,c=0;c<e.length;)e[c++]=3,i++,e[c++]=o[l++],e[c++]=o[l++],e[c++]=o[l++]}return{positions:r,faceIndices:e,nFaces:i}}function qm(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=he._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(he.HEAPU32.buffer,i,t):new Float32Array(he.HEAPF32.buffer,i,t)).set(n,0),i}function $m(n){switch(n){case 0:return he.OP.UNION;case 1:return he.OP.INTERSECTION;case 2:return he.OP.A_MINUS_B;case 3:return he.OP.B_MINUS_A;case 4:return he.OP.SYMMETRIC_DIFFERENCE;case 5:return he.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function oS(n,t){ln===void 0&&(ln=he.init_csg());let e=qm(n),r=he.csg_calc_topological(ln,e,n.length,$m(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=he.HEAPU32[i[l]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=he.HEAPU32[i[l]>>2],u=new Uint32Array(he.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=he.HEAPU32[i[l]>>2],m=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:m}}function nS(n,t,e,r){ln===void 0&&(ln=he.init_csg());let o=qm(n),i=he.csg_calc(ln,o,n.length,r,$m(t));he._free(o);let s=5,l=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=he.HEAPU32[l[p]>>2],u=he.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=he.HEAPU32[l[p]>>2],m=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=c[p];e.setAttribute("position",new Wm(u,3)),e.setAttribute("normal",new Wm(m,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new tS),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},he.free_mesh_data(i),f}function iS(n,t){if(he===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let h=n.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((g,x)=>g+x,0)+o);for(let g=0,x=0,v=0;g<h.verticesPerFace.length;g++){r[v++]=h.verticesPerFace[g];for(let A=0;A<h.verticesPerFace[g];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=rS(n,t));let i=e.length,s=r.length,l=e.length,c=r.length,p=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,a=l*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=he._malloc(p),m=new Float32Array(he.HEAPF32.buffer,d,l),f=new Uint32Array(he.HEAPU32.buffer,d+a,c);return m.set(e,0),f.set(r,0),he.get_csg_mesh(d,i,d+a,s,o)}function sS(n,t){he.transform_csg_mesh(n,t.elements)}function aS(n){he.free_csg_mesh(n)}var Fl={ConeGeometry:wd,CubeGeometry:Td,CylinderGeometry:Sd,DodecahedronGeometry:Ad,EllipseGeometry:Zd,HelixGeometry:om,IcosahedronGeometry:nm,LatheGeometry:im,NonParametricGeometry:mm,PolygonGeometry:fm,PyramidGeometry:hm,RectangleGeometry:gm,SphereGeometry:ym,PlaneGeometry:xm,BackdropGeometry:vm,StarGeometry:bm,TextFrameGeometry:Ks,TorusGeometry:_m,TorusKnotGeometry:Sm,TriangleGeometry:wm,VectorGeometry:st},ti=n=>Fl[n.type].create(n);import{BufferGeometry as Xm,Matrix4 as lS}from"three";var Ym=new lS;var na=class extends Xe{constructor(e=new Xm,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];Jt(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Mm(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Bt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Bt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else Jt(i)&&i.needsTransformForDownstream===!0?(Bt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Ym.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Bt.transformMeshSet(i.booleanMeshSetAddress,Ym),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Bt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Xm,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Bt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Hr(this),Wr(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as TS,OrthographicCamera as AS,PerspectiveCamera as CS,Vector3 as Gt,Object3D as Zm,Quaternion as NS}from"three";import{BoxBufferGeometry as cS}from"three";var or=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new cS(30,30,30),t};import{Camera as fS,LineSegments as hS,BufferGeometry as gS,LineBasicMaterial as yS,Color as Xl,Vector3 as xS,Float32BufferAttribute as Qm}from"three";import{Ray as uS,Sphere as pS,Matrix4 as dS,Vector3 as wr}from"three";var ia=new uS,$l=new pS,Km=new dS,nr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),$l.copy(i.boundingSphere),$l.applyMatrix4(s),e.ray.intersectsSphere($l)===!1||(Km.copy(s).invert(),ia.copy(e.ray).applyMatrix4(Km),i.boundingBox!==null&&ia.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,u=i.index,d=i.attributes.position,m=i.drawRange,f,h;if(o===!1){let x=Math.max(0,m.start),v=Math.min(u.count,m.start+m.count);for(f=x,h=v;f<h;f+=3)if(c=u.getX(f),p=u.getX(f+1),a=u.getX(f+2),l=g(n,e,ia,d,c,p,a),l){l.faceIndex=Math.floor(f/3),r.push(l);return}}else{let v=i.attributes.position,A=new wr,_=new wr,b=new wr,D=new wr,S=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=I*I,P=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let N=P,j=C-1;N<j;N+=S){if(A.fromBufferAttribute(v,N),_.fromBufferAttribute(v,N+1),ia.distanceSqToSegment(A,_,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(D);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,_,b,D,S){let y=new wr,I=new wr,T=new wr,P=new wr,C=new wr;if(y.fromBufferAttribute(_,b),I.fromBufferAttribute(_,D),T.fromBufferAttribute(_,S),A.intersectTriangle(y,I,T,!1,P)===null)return null;C.copy(P),C.applyMatrix4(x.matrixWorld);let j=v.ray.origin.distanceTo(C);return j<v.near||j>v.far?null:{faceIndex:1,distance:j,point:C.clone(),object:x}}};var sa=new xS,It=new fS,Yl=class extends hS{constructor(e){let r=new gS,o=new yS({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new Xl(15711266),p=new Xl(15711266),a=new Xl(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(m,f,h){d(m,h),d(f,h)}function d(m,f){i.push(0,0,0),s.push(f.r,f.g,f.b),l[m]===void 0&&(l[m]=[]),l[m].push(i.length/3-1)}r.setAttribute("position",new Qm(i,3)),r.setAttribute("color",new Qm(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;It.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;Et("n1",r,e,It,-i,-s,l),Et("n2",r,e,It,i,-s,l),Et("n3",r,e,It,-i,s,l),Et("n4",r,e,It,i,s,l);let c=l;Et("f1",r,e,It,-i,-s,c),Et("f2",r,e,It,i,-s,c),Et("f3",r,e,It,-i,s,c),Et("f4",r,e,It,i,s,c);let p=c,a=.5;Et("u1",r,e,It,i*.7*a,s*1.1,p),Et("u2",r,e,It,-i*.7*a,s*1.1,p),Et("u3",r,e,It,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Et(n,t,e,r,o,i,s){sa.set(o,i,s).unproject(r);let l=t[n];if(l!==void 0){let c=e.getAttribute("position");for(let p=0,a=l.length;p<a;p++)c.setXYZ(l[p],sa.x,sa.y,sa.z)}}var aa=class extends or(Yl){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){nr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as vS}from"three";var cn=class extends or(vS){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,cn.geometryHelper,e,r)}};import{AxesHelper as bS}from"three";var un=class extends or(bS){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){nr(this.object,un.geometryHelper,e,r)}update(){}};import{PointLightHelper as _S}from"three";var pn=class extends or(_S){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,pn.geometryHelper,e,r)}};import{SpotLightHelper as SS,Vector3 as wS}from"three";var la=class extends or(SS){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){nr(this.object,la.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=la._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},ri=la;ri._vector=new wS;var ir=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ve(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var dn=new Gt,Kl=new Gt,Tr=class extends ir(Ot(TS),aa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Jr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new AS(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new CS(o,e/r,i??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new Tr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(dn),this.targetOffset=dn.distanceTo(e)}getTarget(e=new Gt){return this.getWorldDirection(Kl),this.getWorldPosition(dn),Kl.multiplyScalar(this.targetOffset),e.copy(dn).add(Kl),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(dn),dn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new NS),r=new Gt(0,0,1).applyQuaternion(e),o=new Gt().copy(Zm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Gt().copy(Zm.DefaultUp).projectOnPlane(r),s=new Gt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Gt),i=e.getWorldDirection(new Gt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Gt),i=this.getWorldDirection(new Gt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,l):this.orthoCamera.setViewOffset(e,r,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,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Fo(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as OS}from"three";var io=class extends ir(Ot(OS),un){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new io().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as PS,CameraHelper as ca}from"three";var mn=class extends ir(Ot(PS),cn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new ca(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new mn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Nm(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as IS,Vector3 as ua,Box3 as LS,Box3Helper as pa,Color as MS}from"three";var fn=class extends ir(Ot(IS),pn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ua(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ua(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new LS(i,s),c=new pa(l,new MS(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new fn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof pa){let o=this.shadow.camera,i=new ua(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ua(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as DS,CameraHelper as da,MathUtils as BS,Vector3 as rf,Quaternion as ES}from"three";var Jm=new rf,ef=new rf,tf=new ES,hn=class extends ir(Ot(DS),ri){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=BS.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new da(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new hn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof da&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof da&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),ef.setFromMatrixPosition(this.matrixWorld),tf.setFromRotationMatrix(this.matrixWorld),Jm.copy(this.up).applyQuaternion(tf).negate().multiplyScalar(this.distance),this.target.position.copy(ef).add(Jm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{Vector2 as uo,Vector3 as ur,Vector4 as Tn}from"three";import{MathUtils as GS}from"three";var Ye=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=GS.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Ye&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};import{MathUtils as RS}from"three";var ae=class extends Ye{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=RS.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,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return l.name=l.name||super.build(e,r,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(p+" = "+a+";"),e.format(p,c,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,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,r,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,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}};var Se=class extends Ae{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ue?e:new Ue(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return p?this.generateReadonly(e,r,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,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var Y=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var ge=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,l){return e.format(this.value.toString(),i,r)}};import{UniformsLib as FS,UniformsUtils as VS}from"three";var so=class extends Ye{constructor(){super("basic");this.nodeType="Basic";this.color=new Se(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new ge(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(VS.merge([FS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
2
|
-
|
|
3
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
4
|
-
#include <defaultnormal_vertex>
|
|
5
|
-
#endif
|
|
6
|
-
|
|
7
|
-
vec3 displaced_position = position;
|
|
8
|
-
vec3 displaced_normal = normal;
|
|
9
|
-
|
|
10
|
-
#if defined( USE_LAYER_DISPLACE )
|
|
11
|
-
vec3 transformed;
|
|
12
|
-
vec3 transformedNormal;
|
|
13
|
-
#endif
|
|
14
|
-
`,"#include <normal_vertex>",`
|
|
15
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
16
|
-
#include <begin_vertex>
|
|
17
|
-
#endif /* !USE_LAYER_DISPLACE */
|
|
18
|
-
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
19
|
-
`)}else{this.color===void 0&&(this.color=new Se(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
20
|
-
`));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>"),r=l.join(`
|
|
21
|
-
`)}return r}};import{UniformsLib as pf,UniformsUtils as ow}from"three";var zS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ql=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ql.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let l,c,p="",a=zS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],p=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=p}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},ye=Ql;ye.PI="PI",ye.PI2="PI2",ye.RECIPROCAL_PI="RECIPROCAL_PI",ye.RECIPROCAL_PI2="RECIPROCAL_PI2",ye.LOG2="LOG2",ye.EPSILON="EPSILON";var US=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
22
|
-
)*?)}`,"gim"),kS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),gn=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=US.exec(e);if(r){let o=r[2],i;for(;i=kS.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Zl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Zl;var jS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,of=/[a-z_0-9]+/gi,X=class extends ae{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let l,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let a=[];for(;l=of.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],m=d[0],f=this.isMethod?!this.getInputByName(m):!0,h=m;if(this.keywords[m]||this.useKeywords&&f&&He.containsKeyword(m)){let g=this.keywords[m];if(!g){let x=He.getKeywordData(m);x.cache&&(g=e.keywords[m]),g=g||He.getKeyword(m,e),x.cache&&(e.keywords[m]=g)}h=g.build(e)}m!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+m.length+c),c+=h.length-m.length),this.getIncludeByName(h)===void 0&&He.contains(h)&&e.include(He.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=jS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(of);if(l){let c=0;for(;c<l.length;){let p=l[c++],a;p==="in"||p==="out"||p==="inout"?a=l[c++]:(a=p,p="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var ve=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};var ni=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,r)+"( ",p=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let u=l.inputs[a],d=this.inputs[a]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,i,r)}};var ii=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{CubeReflectionMapping as XS,CubeRefractionMapping as YS,CubeUVReflectionMapping as KS,LinearEncoding as af,sRGBEncoding as QS}from"three";import{Vector2 as nf}from"three";var Ke=class extends Ae{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof nf?e:new nf(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as sf}from"three";var Ze=class extends Ae{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof sf?e:new sf(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var Lt=class extends Ae{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ue?e:new Ue(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var yn=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};He.addKeyword("uv",function(){return new yn});He.addKeyword("uv2",function(){return new yn(1)});import{LinearEncoding as HS,sRGBEncoding as WS}from"three";var ao=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??ao.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case HS:return["Linear"];case WS:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=ao.Nodes[this.method],l=e.include(s);if(l===ao.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,r)}else return e.format(l+"( "+o+" )",i,r)}fromEncoding(e){let r=ao.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=ao.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},at=ao;at.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
1
|
+
var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDescriptor;var lh=Object.getOwnPropertyNames;var ch=Object.getPrototypeOf,uh=Object.prototype.hasOwnProperty;var bc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),ph=(n,t)=>{for(var e in t)Ta(n,e,{get:t[e],enumerable:!0})},dh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of lh(t))!uh.call(n,o)&&o!==e&&Ta(n,o,{get:()=>t[o],enumerable:!(r=ah(t,o))||r.enumerable});return n};var Sc=(n,t,e)=>(e=n!=null?sh(ch(n)):{},dh(t||!n||!n.__esModule?Ta(e,"default",{value:n,enumerable:!0}):e,n));var wm=bc(Sa=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||t;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 u=this||t;if(a=parseFloat(a),u.ctx||p(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||t;u.ctx||p(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||t,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||t,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,p()),a},codecs:function(a){return(this||t)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||t;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var d=u.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,x=f.match(/Version\/(.*?) /),v=y&&x&&parseInt(x[1],10)<15;return a._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||t;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 u=function(d){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 x=a._howls[m]._soundById(h[y]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._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",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<a._howls.length;A++)a._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var u=this||t;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var d=0;d<a._howls[u]._sounds.length;d++)if(!a._howls[u]._sounds[d]._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"||!t.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 u=0;u<a._howls.length;u++)a._howls[u]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var t=new n,e=function(a){var u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return t.ctx||p(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._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},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var a=this,u=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var f,m;if(a._format&&a._format[d])f=a._format[d];else{if(m=a._src[d],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&&t.codecs(f)){u=a._src[d];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,u){var d=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__default",!d._playLock)){for(var m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?a=null:f=null}}var y=f?d._soundById(f):d._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),d._state!=="loaded"){y._sprite=a,y._ended=!1;var x=y._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(f&&!y._paused)return u||d._loadQueue("play"),y._id;d._webAudio&&t._autoResume();var v=Math.max(0,y._seek>0?y._seek:d._sprite[a][0]/1e3),A=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-v),S=A*1e3/Math.abs(y._rate),b=d._sprite[a][0]/1e3,D=(d._sprite[a][0]+d._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var w=function(){y._paused=!1,y._seek=v,y._start=b,y._stop=D,y._loop=!!(y._loop||d._sprite[a][2])};if(v>=D){d._ended(y);return}var g=y._node;if(d._webAudio){var P=function(){d._playLock=!1,w(),d._refreshBuffer(y);var C=y._muted||d._muted?0:y._volume;g.gain.setValueAtTime(C,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof g.bufferSource.start>"u"?y._loop?g.bufferSource.noteGrainOn(0,v,86400):g.bufferSource.noteGrainOn(0,v,A):y._loop?g.bufferSource.start(0,v,86400):g.bufferSource.start(0,v,A),S!==1/0&&(d._endTimers[y._id]=setTimeout(d._ended.bind(d,y),S)),u||setTimeout(function(){d._emit("play",y._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?P():(d._playLock=!0,d.once("resume",P),d._clearTimer(y._id))}else{var T=function(){g.currentTime=v,g.muted=y._muted||d._muted||t._muted||g.muted,g.volume=y._volume*t.volume(),g.playbackRate=y._rate;try{var C=g.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(d._playLock=!0,w(),C.then(function(){d._playLock=!1,g._unlocked=!0,u?d._loadQueue():d._emit("play",y._id)}).catch(function(){d._playLock=!1,d._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})):u||(d._playLock=!1,w(),d._emit("play",y._id)),g.playbackRate=y._rate,g.paused){d._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?d._endTimers[y._id]=setTimeout(d._ended.bind(d,y),S):(d._endTimers[y._id]=function(){d._ended(y),g.removeEventListener("ended",d._endTimers[y._id],!1)},g.addEventListener("ended",d._endTimers[y._id],!1))}catch(k){d._emit("playerror",y._id,k)}};g.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(g.src=d._src,g.load());var L=window&&window.ejecta||!g.readyState&&t._navigator.isCocoonJS;if(g.readyState>=3||L)T();else{d._playLock=!0,d._state="loading";var N=function(){d._state="loaded",T(),g.removeEventListener(t._canPlayEvent,N,!1)};g.addEventListener(t._canPlayEvent,N,!1),d._clearTimer(y._id)}}return y._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var d=u._getSoundIds(a),f=0;f<d.length;f++){u._clearTimer(d[f]);var m=u._soundById(d[f]);if(m&&!m._paused&&(m._seek=u.seek(d[f]),m._rateSeek=0,m._paused=!0,u._stopFade(d[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._id:null)}return u},stop:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var f=d._getSoundIds(a),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,u)}}),d;if(typeof u>"u")if(typeof a=="boolean")d._muted=a;else return d._muted;for(var f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,u=arguments,d,f;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof d<"u"&&d>=0&&d<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,u)}}),a;typeof f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)y=a._soundById(f[x]),y&&(y._volume=d,u[2]||a._stopFade(f[x]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(d,t.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=d*t.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,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,d,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var x=m._soundById(h[y]);if(x){if(f||m._stopFade(h[y]),m._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=a,x._node.gain.setValueAtTime(a,v),x._node.gain.linearRampToValueAtTime(u,A)}m._startFadeInterval(x,a,u,d,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,u,d,f,m,h){var y=this,x=u,v=d-u,A=Math.abs(v/.01),S=Math.max(4,A>0?f/A:f),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var D=(Date.now()-b)/f;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),y._webAudio?a._volume=x:y.volume(x,a._id,!0),h&&(y._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(d,a._id),y._emit("fade",a._id))},S)},_stopFade:function(a){var u=this,d=u._soundById(a);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,a),d._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,d,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=d,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(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,u=arguments,d,f;if(u.length===0)f=a._sounds[0]._id;else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof d=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,u)}}),a;typeof f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)if(y=a._soundById(f[x]),y){a.playing(f[x])&&(y._rateSeek=a.seek(f[x]),y._playStart=a._webAudio?t.ctx.currentTime:y._playStart),y._rate=d,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):y._node&&(y._node.playbackRate=d);var v=a.seek(f[x]),A=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,S=A*1e3/Math.abs(y._rate);(a._endTimers[f[x]]||!y._paused)&&(a._clearTimer(f[x]),a._endTimers[f[x]]=setTimeout(a._ended.bind(a,y),S)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,f;if(u.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):a._sounds.length&&(f=a._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var y=a._soundById(f);if(y)if(typeof d=="number"&&d>=0){var x=a.playing(f);x&&a.pause(f,!0),y._seek=d,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=d);var v=function(){x&&a.play(f,!0),a._emit("seek",f)};if(x&&!a._webAudio){var A=function(){a._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(a._webAudio){var S=a.playing(f)?t.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+S*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var u=this;if(typeof a=="number"){var d=u._soundById(a);return d?!d._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(a){var u=this,d=u._duration,f=u._soundById(a);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,d=0;d<u.length;d++)u[d]._paused||a.stop(u[d]._id),a._webAudio||(a._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,a._clearTimer(u[d]._id);var f=t._howls.indexOf(a);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(a,u,d){var f=this,m=f["_on"+a],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var y=d===m[h].id;if(u===m[h].fn&&y||!u&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var x=Object.keys(f);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(f[x[h]])&&(f[x[h]]=[])}return f},once:function(a,u,d){var f=this;return f.on(a,u,d,1),f},_emit:function(a,u,d){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(y){y.call(this,u,d)}.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 u=this;if(u._queue.length>0){var d=u._queue[0];d.event===a&&(u._queue.shift(),u._loadQueue()),a||d.action()}return u},_ended:function(a){var u=this,d=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var f=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&f&&u.stop(a._id,!0).play(a._id),u._webAudio&&f){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),m)}return u._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var d=u._soundById(a);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,d=0;d<u._sounds.length;d++)if(a===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new r(a)},_drain:function(){var a=this,u=a._pool,d=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&d++;for(f=a._sounds.length-1;f>=0;f--){if(d<=u)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._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,t.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),d))try{a.bufferSource.buffer=t._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),a._node.gain.setValueAtTime(d,t.ctx.currentTime),a._node.paused=!0,a._node.connect(t.masterGain)):t.noAudio||(a._node=t._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(t._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._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,u=a._parent;u._duration=Math.ceil(a._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!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[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(f).catch(d):t.ctx.decodeAudioData(a,f,d)},c=function(a,u){u&&!a._duration&&(a._duration=u.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())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(a&&d&&d<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Sa<"u"&&(Sa.Howler=t,Sa.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,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,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")l._orientation=[t,e,r,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(r,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(t,e,r,o,i,s);else return c;return l},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),s=0;s<i.length;s++){var l=r._soundById(i[s]);if(l)if(typeof t=="number")l._stereo=t,l._pos=[t,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(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(t,0,0):l._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",l._id);else return l._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];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 t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];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 t=="number")c._orientation=[t,e,r],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(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),l=0;l<s.length;l++)if(i=t._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Im=bc((wa,Cm)=>{(function(n,t){typeof wa=="object"&&typeof Cm<"u"?t(wa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(wa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,l,c,p,a,u,d,f,m,h,y,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],D=[],w=e==="f"?A:v,g=h=d=0;g<A;g++)b[g]=new Array(w).fill(0);for(g=0;g<v;g++)D[g]=new Array(v).fill(0);var P,T=new Array(v).fill(0);for(g=0;g<A;g++)for(s=0;s<v;s++)b[g][s]=t[g][s];for(g=0;g<v;g++){for(S[g]=d,m=0,c=g+1,s=g;s<A;s++)m+=Math.pow(b[s][g],2);if(m<i)d=0;else for(f=(u=b[g][g])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[g][g]=u-d,s=c;s<v;s++){for(m=0,l=g;l<A;l++)m+=b[l][g]*b[l][s];for(u=m/f,l=g;l<A;l++)b[l][s]=b[l][s]+u*b[l][g]}for(T[g]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[g][s],2);if(m<i)d=0;else{for(f=(u=b[g][g+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[g][g+1]=u-d,s=c;s<v;s++)S[s]=b[g][s]/f;for(s=c;s<A;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[g][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(y=Math.abs(T[g])+Math.abs(S[g]))&&(h=y)}if(r)for(g=v-1;0<=g;g--){if(d!==0){for(f=b[g][g+1]*d,s=c;s<v;s++)D[s][g]=b[g][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[g][l]*D[l][s];for(l=c;l<v;l++)D[l][s]=D[l][s]+m*D[l][g]}}for(s=c;s<v;s++)D[g][s]=0,D[s][g]=0;D[g][g]=1,d=S[g],c=g}if(e){if(e==="f")for(g=v;g<A;g++){for(s=v;s<A;s++)b[g][s]=0;b[g][g]=1}for(g=v-1;0<=g;g--){for(c=g+1,d=T[g],s=c;s<w;s++)b[g][s]=0;if(d!==0){for(f=b[g][g]*d,s=c;s<w;s++){for(m=0,l=c;l<A;l++)m+=b[l][g]*b[l][s];for(u=m/f,l=g;l<A;l++)b[l][s]=b[l][s]+u*b[l][g]}for(s=g;s<A;s++)b[s][g]=b[s][g]/d}else for(s=g;s<A;s++)b[s][g]=0;b[g][g]=b[g][g]+1}}for(o*=h,l=v-1;0<=l;l--)for(var L=0;L<50;L++){for(P=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){P=!0;break}if(Math.abs(T[c-1])<=o)break}if(!P){for(a=0,p=c-(m=1),g=c;g<l+1&&(u=m*S[g],S[g]=a*S[g],!(Math.abs(u)<=o));g++)if(d=T[g],T[g]=Math.sqrt(u*u+d*d),a=d/(f=T[g]),m=-u/f,e)for(s=0;s<A;s++)y=b[s][p],x=b[s][g],b[s][p]=y*a+x*m,b[s][g]=-y*m+x*a}if(x=T[l],c===l){if(x<0&&(T[l]=-x,r))for(s=0;s<v;s++)D[s][l]=-D[s][l];break}for(h=T[c],u=(((y=T[l-1])-x)*(y+x)+((d=S[l-1])-(f=S[l]))*(d+f))/(2*f*y),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(y/(u<0?u-d:u+d)-f))/h,g=c+(m=a=1);g<l+1;g++){if(d=S[g],y=T[g],f=m*d,d*=a,x=Math.sqrt(u*u+f*f),u=h*(a=u/(S[g-1]=x))+d*(m=f/x),d=-h*m+d*a,f=y*m,y*=a,r)for(s=0;s<v;s++)h=D[s][g-1],x=D[s][g],D[s][g-1]=h*a+x*m,D[s][g]=-h*m+x*a;if(x=Math.sqrt(u*u+f*f),u=(a=u/(T[g-1]=x))*d+(m=f/x)*y,h=-m*d+a*y,e)for(s=0;s<A;s++)y=b[s][g-1],x=b[s][g],b[s][g-1]=y*a+x*m,b[s][g]=-y*m+x*a}S[c]=0,S[l]=u,T[l]=h}for(g=0;g<v;g++)T[g]<o&&(T[g]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as p_,Loader as d_}from"three";function Oi(n,t){return Object.setPrototypeOf(n,t),n}function wc(n){return Array.isArray(n)?n:[n]}var fh=typeof global=="object"&&global&&global.Object===Object&&global,Mi=fh;var mh=typeof self=="object"&&self&&self.Object===Object&&self,hh=Mi||mh||Function("return this")(),Re=hh;var gh=Re.Symbol,nt=gh;var _c=Object.prototype,yh=_c.hasOwnProperty,xh=_c.toString,Nn=nt?nt.toStringTag:void 0;function vh(n){var t=yh.call(n,Nn),e=n[Nn];try{n[Nn]=void 0;var r=!0}catch{}var o=xh.call(n);return r&&(t?n[Nn]=e:delete n[Nn]),o}var Tc=vh;var bh=Object.prototype,Sh=bh.toString;function wh(n){return Sh.call(n)}var Ac=wh;var _h="[object Null]",Th="[object Undefined]",Nc=nt?nt.toStringTag:void 0;function Ah(n){return n==null?n===void 0?Th:_h:Nc&&Nc in Object(n)?Tc(n):Ac(n)}var xt=Ah;function Nh(n){return n!=null&&typeof n=="object"}var et=Nh;var Ch="[object Symbol]";function Ih(n){return typeof n=="symbol"||et(n)&&xt(n)==Ch}var xo=Ih;function Lh(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Di=Lh;var Ph=Array.isArray,Oe=Ph;var Oh=1/0,Cc=nt?nt.prototype:void 0,Ic=Cc?Cc.toString:void 0;function Lc(n){if(typeof n=="string")return n;if(Oe(n))return Di(n,Lc)+"";if(xo(n))return Ic?Ic.call(n):"";var t=n+"";return t=="0"&&1/n==-Oh?"-0":t}var Pc=Lc;function Mh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Mh;function Dh(n){return n}var Bi=Dh;var Bh="[object AsyncFunction]",Eh="[object Function]",Gh="[object GeneratorFunction]",Rh="[object Proxy]";function Vh(n){if(!ze(n))return!1;var t=xt(n);return t==Eh||t==Gh||t==Bh||t==Rh}var vo=Vh;var Fh=Re["__core-js_shared__"],Ei=Fh;var Oc=function(){var n=/[^.]+$/.exec(Ei&&Ei.keys&&Ei.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function zh(n){return!!Oc&&Oc in n}var Mc=zh;var Uh=Function.prototype,jh=Uh.toString;function kh(n){if(n!=null){try{return jh.call(n)}catch{}try{return n+""}catch{}}return""}var hr=kh;var Hh=/[\\^$.*+?()[\]{}|]/g,Wh=/^\[object .+?Constructor\]$/,qh=Function.prototype,$h=Object.prototype,Xh=qh.toString,Yh=$h.hasOwnProperty,Kh=RegExp("^"+Xh.call(Yh).replace(Hh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qh(n){if(!ze(n)||Mc(n))return!1;var t=vo(n)?Kh:Wh;return t.test(hr(n))}var Dc=Qh;function Zh(n,t){return n?.[t]}var Bc=Zh;function Jh(n,t){var e=Bc(n,t);return Dc(e)?e:void 0}var ut=Jh;var eg=ut(Re,"WeakMap"),Gi=eg;var Ec=Object.create,tg=function(){function n(){}return function(t){if(!ze(t))return{};if(Ec)return Ec(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Gc=tg;function rg(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Rc=rg;function og(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Ri=og;var ng=800,ig=16,sg=Date.now;function ag(n){var t=0,e=0;return function(){var r=sg(),o=ig-(r-e);if(e=r,o>0){if(++t>=ng)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Vc=ag;function lg(n){return function(){return n}}var Fc=lg;var cg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),bo=cg;var ug=bo?function(n,t){return bo(n,"toString",{configurable:!0,enumerable:!1,value:Fc(t),writable:!0})}:Bi,zc=ug;var pg=Vc(zc),Vi=pg;function dg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Uc=dg;var fg=9007199254740991,mg=/^(?:0|[1-9]\d*)$/;function hg(n,t){var e=typeof n;return t=t??fg,!!t&&(e=="number"||e!="symbol"&&mg.test(n))&&n>-1&&n%1==0&&n<t}var Cr=hg;function gg(n,t,e){t=="__proto__"&&bo?bo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=gg;function yg(n,t){return n===t||n!==n&&t!==t}var Ir=yg;var xg=Object.prototype,vg=xg.hasOwnProperty;function bg(n,t,e){var r=n[t];(!(vg.call(n,t)&&Ir(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=bg;function Sg(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var l=t[i],c=r?r(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?So(e,l,c):wo(e,l,c)}return e}var _t=Sg;var jc=Math.max;function wg(n,t,e){return t=jc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=jc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=r[o];return l[t]=e(s),Rc(n,this,l)}}var Fi=wg;function _g(n,t){return Vi(Fi(n,t,Bi),n+"")}var kc=_g;var Tg=9007199254740991;function Ag(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Tg}var _o=Ag;function Ng(n){return n!=null&&_o(n.length)&&!vo(n)}var Lr=Ng;function Cg(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Lr(e)&&Cr(t,e.length):r=="string"&&t in e)?Ir(e[t],n):!1}var Hc=Cg;function Ig(n){return kc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Hc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var l=e[r];l&&n(t,l,r,i)}return t})}var Wc=Ig;var Lg=Object.prototype;function Pg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Lg;return n===e}var To=Pg;function Og(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var qc=Og;var Mg="[object Arguments]";function Dg(n){return et(n)&&xt(n)==Mg}var Aa=Dg;var $c=Object.prototype,Bg=$c.hasOwnProperty,Eg=$c.propertyIsEnumerable,Gg=Aa(function(){return arguments}())?Aa:function(n){return et(n)&&Bg.call(n,"callee")&&!Eg.call(n,"callee")},gr=Gg;function Rg(){return!1}var Xc=Rg;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yc=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,Vg=Yc&&Yc.exports===Qc,Kc=Vg?Re.Buffer:void 0,Fg=Kc?Kc.isBuffer:void 0,zg=Fg||Xc,Ao=zg;var Ug="[object Arguments]",jg="[object Array]",kg="[object Boolean]",Hg="[object Date]",Wg="[object Error]",qg="[object Function]",$g="[object Map]",Xg="[object Number]",Yg="[object Object]",Kg="[object RegExp]",Qg="[object Set]",Zg="[object String]",Jg="[object WeakMap]",ey="[object ArrayBuffer]",ty="[object DataView]",ry="[object Float32Array]",oy="[object Float64Array]",ny="[object Int8Array]",iy="[object Int16Array]",sy="[object Int32Array]",ay="[object Uint8Array]",ly="[object Uint8ClampedArray]",cy="[object Uint16Array]",uy="[object Uint32Array]",Ce={};Ce[ry]=Ce[oy]=Ce[ny]=Ce[iy]=Ce[sy]=Ce[ay]=Ce[ly]=Ce[cy]=Ce[uy]=!0;Ce[Ug]=Ce[jg]=Ce[ey]=Ce[kg]=Ce[ty]=Ce[Hg]=Ce[Wg]=Ce[qg]=Ce[$g]=Ce[Xg]=Ce[Yg]=Ce[Kg]=Ce[Qg]=Ce[Zg]=Ce[Jg]=!1;function py(n){return et(n)&&_o(n.length)&&!!Ce[xt(n)]}var Zc=py;function dy(n){return function(t){return n(t)}}var No=dy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cn=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,fy=Cn&&Cn.exports===Jc,Na=fy&&Mi.process,my=function(){try{var n=Cn&&Cn.require&&Cn.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),yr=my;var eu=yr&&yr.isTypedArray,hy=eu?No(eu):Zc,zi=hy;var gy=Object.prototype,yy=gy.hasOwnProperty;function xy(n,t){var e=Oe(n),r=!e&&gr(n),o=!e&&!r&&Ao(n),i=!e&&!r&&!o&&zi(n),s=e||r||o||i,l=s?qc(n.length,String):[],c=l.length;for(var p in n)(t||yy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Cr(p,c)))&&l.push(p);return l}var Ui=xy;function vy(n,t){return function(e){return n(t(e))}}var ji=vy;var by=ji(Object.keys,Object),tu=by;var Sy=Object.prototype,wy=Sy.hasOwnProperty;function _y(n){if(!To(n))return tu(n);var t=[];for(var e in Object(n))wy.call(n,e)&&e!="constructor"&&t.push(e);return t}var ru=_y;function Ty(n){return Lr(n)?Ui(n):ru(n)}var Co=Ty;function Ay(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var ou=Ay;var Ny=Object.prototype,Cy=Ny.hasOwnProperty;function Iy(n){if(!ze(n))return ou(n);var t=To(n),e=[];for(var r in n)r=="constructor"&&(t||!Cy.call(n,r))||e.push(r);return e}var nu=Iy;function Ly(n){return Lr(n)?Ui(n,!0):nu(n)}var Ht=Ly;var Py=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Oy=/^\w*$/;function My(n,t){if(Oe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||xo(n)?!0:Oy.test(n)||!Py.test(n)||t!=null&&n in Object(t)}var iu=My;var Dy=ut(Object,"create"),xr=Dy;function By(){this.__data__=xr?xr(null):{},this.size=0}var su=By;function Ey(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var au=Ey;var Gy="__lodash_hash_undefined__",Ry=Object.prototype,Vy=Ry.hasOwnProperty;function Fy(n){var t=this.__data__;if(xr){var e=t[n];return e===Gy?void 0:e}return Vy.call(t,n)?t[n]:void 0}var lu=Fy;var zy=Object.prototype,Uy=zy.hasOwnProperty;function jy(n){var t=this.__data__;return xr?t[n]!==void 0:Uy.call(t,n)}var cu=jy;var ky="__lodash_hash_undefined__";function Hy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xr&&t===void 0?ky:t,this}var uu=Hy;function Io(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Io.prototype.clear=su;Io.prototype.delete=au;Io.prototype.get=lu;Io.prototype.has=cu;Io.prototype.set=uu;var Ca=Io;function Wy(){this.__data__=[],this.size=0}var pu=Wy;function qy(n,t){for(var e=n.length;e--;)if(Ir(n[e][0],t))return e;return-1}var Pr=qy;var $y=Array.prototype,Xy=$y.splice;function Yy(n){var t=this.__data__,e=Pr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Xy.call(t,e,1),--this.size,!0}var du=Yy;function Ky(n){var t=this.__data__,e=Pr(t,n);return e<0?void 0:t[e][1]}var fu=Ky;function Qy(n){return Pr(this.__data__,n)>-1}var mu=Qy;function Zy(n,t){var e=this.__data__,r=Pr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var hu=Zy;function Lo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Lo.prototype.clear=pu;Lo.prototype.delete=du;Lo.prototype.get=fu;Lo.prototype.has=mu;Lo.prototype.set=hu;var Or=Lo;var Jy=ut(Re,"Map"),Mr=Jy;function ex(){this.size=0,this.__data__={hash:new Ca,map:new(Mr||Or),string:new Ca}}var gu=ex;function tx(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var yu=tx;function rx(n,t){var e=n.__data__;return yu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dr=rx;function ox(n){var t=Dr(this,n).delete(n);return this.size-=t?1:0,t}var xu=ox;function nx(n){return Dr(this,n).get(n)}var vu=nx;function ix(n){return Dr(this,n).has(n)}var bu=ix;function sx(n,t){var e=Dr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Su=sx;function Po(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Po.prototype.clear=gu;Po.prototype.delete=xu;Po.prototype.get=vu;Po.prototype.has=bu;Po.prototype.set=Su;var In=Po;var ax="Expected a function";function Ia(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(ax);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(Ia.Cache||In),e}Ia.Cache=In;var wu=Ia;var lx=500;function cx(n){var t=wu(n,function(r){return e.size===lx&&e.clear(),r}),e=t.cache;return t}var _u=cx;var ux=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,px=/\\(\\)?/g,dx=_u(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(ux,function(e,r,o,i){t.push(o?i.replace(px,"$1"):r||e)}),t}),Tu=dx;function fx(n){return n==null?"":Pc(n)}var Au=fx;function mx(n,t){return Oe(n)?n:iu(n,t)?[n]:Tu(Au(n))}var Tt=mx;var hx=1/0;function gx(n){if(typeof n=="string"||xo(n))return n;var t=n+"";return t=="0"&&1/n==-hx?"-0":t}var Br=gx;function yx(n,t){t=Tt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Br(t[e++])];return e&&e==r?n:void 0}var ki=yx;function xx(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Oo=xx;var Nu=nt?nt.isConcatSpreadable:void 0;function vx(n){return Oe(n)||gr(n)||!!(Nu&&n&&n[Nu])}var Cu=vx;function Iu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Cu),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?Iu(l,t-1,e,r,o):Oo(o,l):r||(o[o.length]=l)}return o}var Lu=Iu;function bx(n){var t=n==null?0:n.length;return t?Lu(n,1):[]}var Pu=bx;function Sx(n){return Vi(Fi(n,void 0,Pu),n+"")}var Hi=Sx;var wx=ji(Object.getPrototypeOf,Object),Mo=wx;var _x="[object Object]",Tx=Function.prototype,Ax=Object.prototype,Ou=Tx.toString,Nx=Ax.hasOwnProperty,Cx=Ou.call(Object);function Ix(n){if(!et(n)||xt(n)!=_x)return!1;var t=Mo(n);if(t===null)return!0;var e=Nx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ou.call(e)==Cx}var Wi=Ix;function Lx(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Mu=Lx;function Px(){this.__data__=new Or,this.size=0}var Du=Px;function Ox(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bu=Ox;function Mx(n){return this.__data__.get(n)}var Eu=Mx;function Dx(n){return this.__data__.has(n)}var Gu=Dx;var Bx=200;function Ex(n,t){var e=this.__data__;if(e instanceof Or){var r=e.__data__;if(!Mr||r.length<Bx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new In(r)}return e.set(n,t),this.size=e.size,this}var Ru=Ex;function Do(n){var t=this.__data__=new Or(n);this.size=t.size}Do.prototype.clear=Du;Do.prototype.delete=Bu;Do.prototype.get=Eu;Do.prototype.has=Gu;Do.prototype.set=Ru;var qi=Do;function Gx(n,t){return n&&_t(t,Co(t),n)}var Vu=Gx;function Rx(n,t){return n&&_t(t,Ht(t),n)}var Fu=Rx;var ku=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zu=ku&&typeof module=="object"&&module&&!module.nodeType&&module,Vx=zu&&zu.exports===ku,Uu=Vx?Re.Buffer:void 0,ju=Uu?Uu.allocUnsafe:void 0;function Fx(n,t){if(t)return n.slice();var e=n.length,r=ju?ju(e):new n.constructor(e);return n.copy(r),r}var $i=Fx;function zx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Hu=zx;function Ux(){return[]}var Xi=Ux;var jx=Object.prototype,kx=jx.propertyIsEnumerable,Wu=Object.getOwnPropertySymbols,Hx=Wu?function(n){return n==null?[]:(n=Object(n),Hu(Wu(n),function(t){return kx.call(n,t)}))}:Xi,Bo=Hx;function Wx(n,t){return _t(n,Bo(n),t)}var qu=Wx;var qx=Object.getOwnPropertySymbols,$x=qx?function(n){for(var t=[];n;)Oo(t,Bo(n)),n=Mo(n);return t}:Xi,Yi=$x;function Xx(n,t){return _t(n,Yi(n),t)}var $u=Xx;function Yx(n,t,e){var r=t(n);return Oe(n)?r:Oo(r,e(n))}var Ki=Yx;function Kx(n){return Ki(n,Co,Bo)}var Xu=Kx;function Qx(n){return Ki(n,Ht,Yi)}var Qi=Qx;var Zx=ut(Re,"DataView"),Zi=Zx;var Jx=ut(Re,"Promise"),Ji=Jx;var e0=ut(Re,"Set"),es=e0;var Yu="[object Map]",t0="[object Object]",Ku="[object Promise]",Qu="[object Set]",Zu="[object WeakMap]",Ju="[object DataView]",r0=hr(Zi),o0=hr(Mr),n0=hr(Ji),i0=hr(es),s0=hr(Gi),Qr=xt;(Zi&&Qr(new Zi(new ArrayBuffer(1)))!=Ju||Mr&&Qr(new Mr)!=Yu||Ji&&Qr(Ji.resolve())!=Ku||es&&Qr(new es)!=Qu||Gi&&Qr(new Gi)!=Zu)&&(Qr=function(n){var t=xt(n),e=t==t0?n.constructor:void 0,r=e?hr(e):"";if(r)switch(r){case r0:return Ju;case o0:return Yu;case n0:return Ku;case i0:return Qu;case s0:return Zu}return t});var Eo=Qr;var a0=Object.prototype,l0=a0.hasOwnProperty;function c0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&l0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ep=c0;var u0=Re.Uint8Array,La=u0;function p0(n){var t=new n.constructor(n.byteLength);return new La(t).set(new La(n)),t}var Go=p0;function d0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var tp=d0;var f0=/\w*$/;function m0(n){var t=new n.constructor(n.source,f0.exec(n));return t.lastIndex=n.lastIndex,t}var rp=m0;var op=nt?nt.prototype:void 0,np=op?op.valueOf:void 0;function h0(n){return np?Object(np.call(n)):{}}var ip=h0;function g0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ts=g0;var y0="[object Boolean]",x0="[object Date]",v0="[object Map]",b0="[object Number]",S0="[object RegExp]",w0="[object Set]",_0="[object String]",T0="[object Symbol]",A0="[object ArrayBuffer]",N0="[object DataView]",C0="[object Float32Array]",I0="[object Float64Array]",L0="[object Int8Array]",P0="[object Int16Array]",O0="[object Int32Array]",M0="[object Uint8Array]",D0="[object Uint8ClampedArray]",B0="[object Uint16Array]",E0="[object Uint32Array]";function G0(n,t,e){var r=n.constructor;switch(t){case A0:return Go(n);case y0:case x0:return new r(+n);case N0:return tp(n,e);case C0:case I0:case L0:case P0:case O0:case M0:case D0:case B0:case E0:return ts(n,e);case v0:return new r;case b0:case _0:return new r(n);case S0:return rp(n);case w0:return new r;case T0:return ip(n)}}var sp=G0;function R0(n){return typeof n.constructor=="function"&&!To(n)?Gc(Mo(n)):{}}var rs=R0;var V0="[object Map]";function F0(n){return et(n)&&Eo(n)==V0}var ap=F0;var lp=yr&&yr.isMap,z0=lp?No(lp):ap,cp=z0;var U0="[object Set]";function j0(n){return et(n)&&Eo(n)==U0}var up=j0;var pp=yr&&yr.isSet,k0=pp?No(pp):up,dp=k0;var H0=1,W0=2,q0=4,fp="[object Arguments]",$0="[object Array]",X0="[object Boolean]",Y0="[object Date]",K0="[object Error]",mp="[object Function]",Q0="[object GeneratorFunction]",Z0="[object Map]",J0="[object Number]",hp="[object Object]",ev="[object RegExp]",tv="[object Set]",rv="[object String]",ov="[object Symbol]",nv="[object WeakMap]",iv="[object ArrayBuffer]",sv="[object DataView]",av="[object Float32Array]",lv="[object Float64Array]",cv="[object Int8Array]",uv="[object Int16Array]",pv="[object Int32Array]",dv="[object Uint8Array]",fv="[object Uint8ClampedArray]",mv="[object Uint16Array]",hv="[object Uint32Array]",Ne={};Ne[fp]=Ne[$0]=Ne[iv]=Ne[sv]=Ne[X0]=Ne[Y0]=Ne[av]=Ne[lv]=Ne[cv]=Ne[uv]=Ne[pv]=Ne[Z0]=Ne[J0]=Ne[hp]=Ne[ev]=Ne[tv]=Ne[rv]=Ne[ov]=Ne[dv]=Ne[fv]=Ne[mv]=Ne[hv]=!0;Ne[K0]=Ne[mp]=Ne[nv]=!1;function os(n,t,e,r,o,i){var s,l=t&H0,c=t&W0,p=t&q0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var a=Oe(n);if(a){if(s=ep(n),!l)return Ri(n,s)}else{var u=Eo(n),d=u==mp||u==Q0;if(Ao(n))return $i(n,l);if(u==hp||u==fp||d&&!o){if(s=c||d?{}:rs(n),!l)return c?$u(n,Fu(s,n)):qu(n,Vu(s,n))}else{if(!Ne[u])return o?n:{};s=sp(n,u,l)}}i||(i=new qi);var f=i.get(n);if(f)return f;i.set(n,s),dp(n)?n.forEach(function(y){s.add(os(y,t,e,y,n,i))}):cp(n)&&n.forEach(function(y,x){s.set(x,os(y,t,e,x,n,i))});var m=p?c?Qi:Xu:c?Ht:Co,h=a?void 0:m(n);return Uc(h||n,function(y,x){h&&(x=y,y=n[x]),wo(s,x,os(y,t,e,x,n,i))}),s}var ns=os;var gv=1,yv=4;function xv(n){return ns(n,gv|yv)}var Ln=xv;function vv(n,t){return n!=null&&t in Object(n)}var gp=vv;function bv(n,t,e){t=Tt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Br(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&_o(o)&&Cr(s,o)&&(Oe(n)||gr(n)))}var yp=bv;function Sv(n,t){return n!=null&&yp(n,t,gp)}var xp=Sv;function wv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),l=s.length;l--;){var c=s[n?l:++o];if(e(i[c],c,i)===!1)break}return t}}var vp=wv;var _v=vp(),bp=_v;function Tv(n,t,e){(e!==void 0&&!Ir(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var Pn=Tv;function Av(n){return et(n)&&Lr(n)}var Sp=Av;function Nv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var On=Nv;function Cv(n){return _t(n,Ht(n))}var wp=Cv;function Iv(n,t,e,r,o,i,s){var l=On(n,e),c=On(t,e),p=s.get(c);if(p){Pn(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=Oe(c),f=!d&&Ao(c),m=!d&&!f&&zi(c);a=c,d||f||m?Oe(l)?a=l:Sp(l)?a=Ri(l):f?(u=!1,a=$i(c,!0)):m?(u=!1,a=ts(c,!0)):a=[]:Wi(c)||gr(c)?(a=l,gr(l)?a=wp(l):(!ze(l)||vo(l))&&(a=rs(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),Pn(n,e,a)}var _p=Iv;function Tp(n,t,e,r,o){n!==t&&bp(t,function(i,s){if(o||(o=new qi),ze(i))_p(n,t,s,e,Tp,r,o);else{var l=r?r(On(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),Pn(n,s,l)}},Ht)}var Ap=Tp;function Lv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Np=Lv;function Pv(n,t){return t.length<2?n:ki(n,Mu(t,0,-1))}var Cp=Pv;var Ov=Wc(function(n,t,e){Ap(n,t,e)}),Zr=Ov;function Mv(n,t){return t=Tt(t,n),n=Cp(n,t),n==null||delete n[Br(Np(t))]}var Ip=Mv;function Dv(n){return Wi(n)?void 0:n}var Lp=Dv;var Bv=1,Ev=2,Gv=4,Rv=Hi(function(n,t){var e={};if(n==null)return e;var r=!1;t=Di(t,function(i){return i=Tt(i,n),r||(r=i.length>1),i}),_t(n,Qi(n),e),r&&(e=ns(e,Bv|Ev|Gv,Lp));for(var o=t.length;o--;)Ip(e,t[o]);return e}),Ro=Rv;function Vv(n,t,e,r){if(!ze(n))return n;t=Tt(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=Br(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];p=r?r(a,c,l):void 0,p===void 0&&(p=ze(a)?a:Cr(t[o+1])?[]:{})}wo(l,c,p),l=l[c]}return n}var Pp=Vv;function Fv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=ki(n,s);e(l,s)&&Pp(i,Tt(s,n),l)}return i}var Op=Fv;function zv(n,t){return Op(n,t,function(e,r){return xp(n,r)})}var Mp=zv;var Uv=Hi(function(n,t){return n==null?{}:Mp(n,t)}),Pa=Uv;var Vo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Vo||(Vo={}));var Jr;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(Jr||(Jr={}));var Dp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(Dp||(Dp={}));var Fo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,l){return[i[0]+(s[0]-i[0])*l,i[1]+(s[1]-i[1])*l,i[2]+(s[2]-i[2])*l]}o.lerp=r})(Fo||(Fo={}));var Bp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(Bp||(Bp={}));var Er;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let l=s.slice(0);for(var c=0,p=s.length;c<p;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=r})(Er||(Er={}));var pt;(c=>{c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,a){return p.r===a.r&&p.g===a.g&&p.b===a.b}c.equals=s;function l(p,a,u){return{r:p.r+(a.r-p.r)*u,g:p.g+(a.g-p.g)*u,b:p.b+(a.b-p.b)*u}}c.lerp=l})(pt||(pt={}));var vt;(l=>{l.white={...pt.white,a:1},l.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function r(c,p){return{...pt.fromHex(c),a:p}}l.fromHexAndA=r;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,p){return pt.equals(c,p)&&c.a===p.a}l.equals=i;function s(c,p,a){return{r:c.r+(p.r-c.r)*a,g:c.g+(p.g-c.g)*a,b:c.b+(p.b-c.b)*a,a:c.a+(p.a-c.a)*a}}l.lerp=s})(vt||(vt={}));var is;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(is||(is={}));var Ep;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ep||(Ep={}));var Gp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Gp||(Gp={}));var ss;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(ss||(ss={}));var Ve=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Ve.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,l={...e,[i]:s};return Object.setPrototypeOf(l,Ve.prototype),{data:l,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ve.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Mn(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Mn(r)}return Object.freeze(n)}function Rp(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var as=class extends Error{};function Wt(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function ls(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 Vp(){return typeof process<"u"}function Fp(n,t){for(let e of n)t(e.id,e.data),Fp(e.children,t)}function zp(n,t){t(n.id,n.data);for(let e of n.children)zp(e,t)}var At=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,At.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mn(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&zp(o,r)}}traverse(e){Fp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),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:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(a=>a.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:l}}Object.setPrototypeOf(i,At.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:l}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return p=[...p,a],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(a),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(p=>p.id===r);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:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new as("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:l,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Rp(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Wt(0,o,o);{let s=i[0].fi;return Wt(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==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 Wt(c,c+o,o)}else return Wt(s.fi,l.fi,o)}}};var cs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(cs||(cs={}));var Le=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Le.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Le.prototype);let r=e;return Vp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,l={fi:r,id:o,data:i};return s=[...s,l],s.sort((p,a)=>p.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((a,u)=>a.fi-u.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 r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Wt(0,r,r);{let i=o[0].fi;return Wt(i-r,i,r)}}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 Wt(l,l+r,r)}else return Wt(i.fi,s.fi,r)}}};var Up=Symbol(),ps=Symbol(),zo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof us);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ps];r&&r(),delete this._children[t]}}}},Ma=class extends zo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,cs.runOp(this._current,t))}},Da=class extends zo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Ve.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},jp={get(n,t){if(t===ps)return()=>{n._parent=null};if(t===Up)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=ds(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},jv={...jp,set(n,t,e){let r={type:0,props:{[t]:qt(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},kv={...jp,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Uo=class extends zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ps]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ds(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},jo=class extends zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ps]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ds(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Oa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&fs.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var us=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Oa(this.ts,e,t),Oa(this.actual,r,t),Oa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ds(n,t,e){return e instanceof At?new Uo(n,t,e):e instanceof Le?new jo(n,t,e):e instanceof Ve?new Proxy(new Da(n,t,e),kv):e!==null&&typeof e=="object"?ls(e)?e:new Proxy(new Ma(n,t,e),jv):e}function Ba(n){let t=new us(n);return[ds(t,"",n),t]}function Ea(n,t){let[e,r]=Ba(n);return t(e),r.result()}function qt(n){return n instanceof Uo||n instanceof jo?n._current:n!==null&&typeof n=="object"?n[Up]:n}var fs;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let l=e(s,o);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...i};return Object.keys(l).forEach(p=>{delete c[p]}),c}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof At||o instanceof Uo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Le||o instanceof jo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(fs||(fs={}));var ms=class{},Dn=class extends ms{constructor(e){super();this.id=e}},Bn=class extends ms{constructor(e){super();this.data=e}};var Ra;try{Ra=new TextDecoder}catch{}var te,Rr,_=0;var Kp=[],Va=Kp,Fa=0,dt={},xe,Gr,Nt=0,$t=0,bt,vr,it=[],_e,kp={useRecords:!1,mapsAsObjects:!0},En=class{},Ua=new En;Ua.name="MessagePack 0xC1";var ko=!1,Xt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return td(()=>(gs(),this?this.unpack(t,e):Xt.prototype.unpack.call(kp,t,e)));Rr=e>-1?e:t.length,_=0,Fa=0,$t=0,Gr=null,Va=Kp,bt=null,te=t;try{_e=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Xt){if(dt=this,this.structures)return xe=this.structures,hs();(!xe||xe.length>0)&&(xe=[])}else dt=kp,(!xe||xe.length>0)&&(xe=[]);return hs()}unpackMultiple(t,e){let r,o=0;try{ko=!0;let i=t.length,s=this?this.unpack(t,i):vs.unpack(t,i);if(e){for(e(s);_<i;)if(o=_,e(hs())===!1)return}else{for(r=[s];_<i;)o=_,r.push(hs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{ko=!1,gs()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function hs(){try{if(!dt.trusted&&!ko){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=Me();if(_==Rr)xe.restoreStructures&&Hp(),xe=null,te=null,vr&&(vr=null);else if(_>Rr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ko)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Hp(),gs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Hp(){for(let n in xe.restoreStructures)xe[n]=xe.restoreStructures[n];xe.restoreStructures=null}function Me(){let n=te[_++];if(n<160)if(n<128){if(n<64)return n;{let t=xe[n&63]||dt.getStructures&&Qp()[n&63];return t?(t.read||(t.read=ja(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=Me();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Me(),Me());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}else if(n<192){let t=n-160;if($t>=_)return Gr.slice(_-Nt,(_+=t)-Nt);if($t==0&&Rr<140){let e=t<16?ka(t):Zp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=Me(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):Ua;case 194:return!1;case 195:return!0;case 196:return Ga(te[_++]);case 197:return t=_e.getUint16(_),_+=2,Ga(t);case 198:return t=_e.getUint32(_),_+=4,Ga(t);case 199:return eo(te[_++]);case 200:return t=_e.getUint16(_),_+=2,eo(t);case 201:return t=_e.getUint32(_),_+=4,eo(t);case 202:if(t=_e.getFloat32(_),dt.useFloat32>2){let e=xs[(te[_]&127)<<1|te[_+1]>>7];return _+=4,(e*t+(t>0?.5:-.5)>>0)/e}return _+=4,t;case 203:return t=_e.getFloat64(_),_+=8,t;case 204:return te[_++];case 205:return t=_e.getUint16(_),_+=2,t;case 206:return t=_e.getUint32(_),_+=4,t;case 207:return dt.int64AsNumber?(t=_e.getUint32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigUint64(_),_+=8,t;case 208:return _e.getInt8(_++);case 209:return t=_e.getInt16(_),_+=2,t;case 210:return t=_e.getInt32(_),_+=4,t;case 211:return dt.int64AsNumber?(t=_e.getInt32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigInt64(_),_+=8,t;case 212:if(t=te[_++],t==114)return Yp(te[_++]&63);{let e=it[t];if(e)return e.read?(_++,e.read(Me())):e.noBuffer?(_++,e()):e(te.subarray(_,++_));throw new Error("Unknown extension "+t)}case 213:return t=te[_],t==114?(_++,Yp(te[_++]&63,te[_++])):eo(2);case 214:return eo(4);case 215:return eo(8);case 216:return eo(16);case 217:return t=te[_++],$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):Wv(t);case 218:return t=_e.getUint16(_),_+=2,$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):qv(t);case 219:return t=_e.getUint32(_),_+=4,$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):$v(t);case 220:return t=_e.getUint16(_),_+=2,qp(t);case 221:return t=_e.getUint32(_),_+=4,qp(t);case 222:return t=_e.getUint16(_),_+=2,$p(t);case 223:return t=_e.getUint32(_),_+=4,$p(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var Hv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ja(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Hv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Me);return n.highByte===0&&(n.read=Wp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Me()}return r}return e.count=0,n.highByte===0?Wp(t,e):e}var Wp=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ja(o,n)),o.read()};function Qp(){let n=td(()=>(te=null,dt.getStructures()));return xe=dt._mergeStructures(n,xe)}var za=ys,Wv=ys,qv=ys,$v=ys;function ys(n){let t;if(n<16&&(t=ka(n)))return t;if(n>64&&Ra)return Ra.decode(te.subarray(_,_+=n));let e=_+n,r=[];for(t="";_<e;){let o=te[_++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[_++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[_++]&63,s=te[_++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[_++]&63,s=te[_++]&63,l=te[_++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function qp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}function $p(n){if(dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=Me();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Me(),Me());return t}}var qe=String.fromCharCode;function Zp(n){let t=_,e=new Array(n);for(let r=0;r<n;r++){let o=te[_++];if((o&128)>0){_=t;return}e[r]=o}return qe.apply(String,e)}function ka(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[_++];if((t&128)>1){_-=1;return}return qe(t)}}else{let t=te[_++],e=te[_++];if((t&128)>0||(e&128)>0){_-=2;return}if(n<3)return qe(t,e);let r=te[_++];if((r&128)>0){_-=3;return}return qe(t,e,r)}else{let t=te[_++],e=te[_++],r=te[_++],o=te[_++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){_-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=te[_++];if((i&128)>0){_-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=te[_++],s=te[_++];if((i&128)>0||(s&128)>0){_-=6;return}if(n<7)return qe(t,e,r,o,i,s);let l=te[_++];if((l&128)>0){_-=7;return}return qe(t,e,r,o,i,s,l)}else{let i=te[_++],s=te[_++],l=te[_++],c=te[_++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){_-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,l,c);{let p=te[_++];if((p&128)>0){_-=9;return}return qe(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=te[_++],a=te[_++];if((p&128)>0||(a&128)>0){_-=10;return}if(n<11)return qe(t,e,r,o,i,s,l,c,p,a);let u=te[_++];if((u&128)>0){_-=11;return}return qe(t,e,r,o,i,s,l,c,p,a,u)}else{let p=te[_++],a=te[_++],u=te[_++],d=te[_++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){_-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,l,c,p,a,u,d);{let f=te[_++];if((f&128)>0){_-=13;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f)}}else{let f=te[_++],m=te[_++];if((f&128)>0||(m&128)>0){_-=14;return}if(n<15)return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m);let h=te[_++];if((h&128)>0){_-=15;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m,h)}}}}}function Ga(n){return dt.copyBuffers?Uint8Array.prototype.slice.call(te,_,_+=n):te.subarray(_,_+=n)}function eo(n){let t=te[_++];if(it[t])return it[t](te.subarray(_,_+=n));throw new Error("Unknown extension type "+t)}var Xp=new Array(4096);function Jp(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,$t>=_)return Gr.slice(_-Nt,(_+=n)-Nt);if(!($t==0&&Rr<180))return za(n)}else return _--,Me();let t=(n<<5^(n>1?_e.getUint16(_):n>0?te[_]:0))&4095,e=Xp[t],r=_,o=_+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=_e.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return _=r,e.string;o-=3,r=_}for(e=[],Xp[t]=e,e.bytes=n;r<o;)i=_e.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let l=n<16?ka(n):Zp(n);return l!=null?e.string=l:e.string=za(n)}var Yp=(n,t)=>{var e=Me();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=xe[n];return o&&o.isShared&&((xe.restoreStructures||(xe.restoreStructures=[]))[n]=o),xe[n]=e,e.read=ja(e,r),e.read()},ed=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=Me();return(ed[n[0]]||Error)(n[1])};it[105]=n=>{let t=_e.getUint32(_-4);vr||(vr=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};vr.set(t,o);let i=Me();return o.used?Object.assign(r,i):(o.target=i,i)};it[112]=n=>{let t=_e.getUint32(_-4),e=vr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(Me());var Ha=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Ha[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ed[e](Uint8Array.prototype.slice.call(n,1).buffer)};it[120]=()=>{let n=Me();return new RegExp(n[0],n[1])};it[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=_;_+=t-4,bt=[Me(),Me()],bt.position0=0,bt.position1=0;let r=_;_=e;try{return Me()}finally{_=r}};it[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 td(n){let t=Rr,e=_,r=Fa,o=Nt,i=$t,s=Gr,l=Va,c=vr,p=bt,a=new Uint8Array(te.slice(0,Rr)),u=xe,d=xe.slice(0,xe.length),f=dt,m=ko,h=n();return Rr=t,_=e,Fa=r,Nt=o,$t=i,Gr=s,Va=l,vr=c,bt=p,te=a,ko=m,xe=u,xe.splice(0,xe.length,...d),dt=f,_e=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function gs(){te=null,vr=null,xe=null}function rd(n){n.unpack?it[n.type]=n.unpack:it[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 vs=new Xt({useRecords:!1}),Xv=vs.unpack,Yv=vs.unpackMultiple,Kv=vs.unpack,bs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Qv=new Float32Array(1),yM=new Uint8Array(Qv.buffer,0,4);var Ss;try{Ss=new TextEncoder}catch{}var ws,qa,_s=typeof Buffer<"u",Wa=_s?Buffer.allocUnsafeSlow:Uint8Array,sd=_s?Buffer:Uint8Array,od=_s?4294967296:2144337920,R,Be,I=0,Yt,Kt=null,Zv=/[\u0080-\uFFFF]/,Gn=Symbol("record-id"),to=class extends Xt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=sd.prototype.utf8Write?function(g,P,T){return R.utf8Write(g,P,T)}:Ss&&Ss.encodeInto?function(g,P){return Ss.encodeInto(g,R.subarray(P)).written}:!1,a=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,x=f+m+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,S=0;this.pack=this.encode=function(g,P){if(R||(R=new Wa(8192),Be=new DataView(R.buffer,0,8192),I=0),Yt=R.length-10,Yt-I<2048?(R=new Wa(R.length),Be=new DataView(R.buffer,0,R.length),Yt=R.length-10,I=0):I=I+7&2147483640,r=I,l=a.structuredClone?new Map:null,a.bundleStrings?(Kt=["",""],R[I++]=214,R[I++]=98,Kt.position=I-r,I+=4):Kt=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let T=o.sharedLength||0;if(T>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 L=0;L<T;L++){let N=o[L];if(!N)continue;let C,k=o.transitions;for(let W=0,oe=N.length;W<oe;W++){let ce=N[W];C=k[ce],C||(C=k[ce]=Object.create(null)),k=C}k[Gn]=L+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(g),Kt){Be.setUint32(Kt.position+r,I-Kt.position-r);let T=Kt;Kt=null,b(T[0]),b(T[1])}if(a.offset=I,l&&l.idsToInsert){I+=l.idsToInsert.length*6,I>Yt&&w(I),a.offset=I;let T=eb(R.subarray(r,I),l.idsToInsert);return l=null,T}return P&ld?(R.start=r,R.end=I,R):R.subarray(r,I)}finally{if(o){if(S<10&&S++,A>1e4)o.transitions=null,S=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,L=v.length;T<L;T++)v[T][Gn]=0;v=[]}if(i&&a.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let L=R.subarray(r,I);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(g)):(c=T,L)}}P&ab&&(I=r)}};let b=g=>{I>Yt&&(R=w(I));var P=typeof g,T;if(P==="string"){let L=g.length;if(Kt&&L>=8&&L<4096){let k=Zv.test(g);Kt[k?0:1]+=g,R[I++]=193,b(k?-L:L);return}let N;L<32?N=1:L<256?N=2:L<65536?N=3:N=5;let C=L*3;if(I+C>Yt&&(R=w(I+C)),L<64||!p){let k,W,oe,ce=I+N;for(k=0;k<L;k++)W=g.charCodeAt(k),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=g.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),k++,R[ce++]=W>>18|240,R[ce++]=W>>12&63|128,R[ce++]=W>>6&63|128,R[ce++]=W&63|128):(R[ce++]=W>>12|224,R[ce++]=W>>6&63|128,R[ce++]=W&63|128);T=ce-I-N}else T=p(g,I+N,C);T<32?R[I++]=160|T:T<256?(N<2&&R.copyWithin(I+2,I+1,I+1+T),R[I++]=217,R[I++]=T):T<65536?(N<3&&R.copyWithin(I+3,I+2,I+2+T),R[I++]=218,R[I++]=T>>8,R[I++]=T&255):(N<5&&R.copyWithin(I+5,I+3,I+3+T),R[I++]=219,Be.setUint32(I,T),I+=4),I+=T}else if(P==="number")if(g>>>0===g)g<64?R[I++]=g:g<256?(R[I++]=204,R[I++]=g):g<65536?(R[I++]=205,R[I++]=g>>8,R[I++]=g&255):(R[I++]=206,Be.setUint32(I,g),I+=4);else if(g>>0===g)g>=-32?R[I++]=256+g:g>=-128?(R[I++]=208,R[I++]=g+256):g>=-32768?(R[I++]=209,Be.setInt16(I,g),I+=2):(R[I++]=210,Be.setInt32(I,g),I+=4);else{let L;if((L=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){R[I++]=202,Be.setFloat32(I,g);let N;if(L<4||(N=g*xs[(R[I]&127)<<1|R[I+1]>>7])>>0===N){I+=4;return}else I--}R[I++]=203,Be.setFloat64(I,g),I+=8}else if(P==="object")if(!g)R[I++]=192;else{if(l){let N=l.get(g);if(N){if(!N.id){let C=l.idsToInsert||(l.idsToInsert=[]);N.id=C.push(N)}R[I++]=214,R[I++]=112,Be.setUint32(I,N.id),I+=4;return}else l.set(g,{offset:I-r})}let L=g.constructor;if(L===Object)D(g,!0);else if(L===Array){T=g.length,T<16?R[I++]=144|T:T<65536?(R[I++]=220,R[I++]=T>>8,R[I++]=T&255):(R[I++]=221,Be.setUint32(I,T),I+=4);for(let N=0;N<T;N++)b(g[N])}else if(L===Map){T=g.size,T<16?R[I++]=128|T:T<65536?(R[I++]=222,R[I++]=T>>8,R[I++]=T&255):(R[I++]=223,Be.setUint32(I,T),I+=4);for(let[N,C]of g)b(N),b(C)}else{for(let N=0,C=ws.length;N<C;N++){let k=qa[N];if(g instanceof k){let W=ws[N];if(W.write){W.type&&(R[I++]=212,R[I++]=W.type,R[I++]=0),b(W.write.call(this,g));return}let oe=R,ce=Be,ie=I;R=null;let K;try{K=W.pack.call(this,g,U=>(R=oe,oe=null,I+=U,I>Yt&&w(I),{target:R,targetView:Be,position:I-U}),b)}finally{oe&&(R=oe,Be=ce,I=ie,Yt=R.length-10)}K&&(K.length+I>Yt&&w(K.length+I),I=Jv(K,R,I,W.type));return}}D(g,!g.hasOwnProperty)}}else if(P==="boolean")R[I++]=g?195:194;else if(P==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))R[I++]=211,Be.setBigInt64(I,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)R[I++]=207,Be.setBigUint64(I,g);else if(this.largeBigIntToFloat)R[I++]=203,Be.setFloat64(I,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");I+=8}else if(P==="undefined")this.encodeUndefinedAsNil?R[I++]=192:(R[I++]=212,R[I++]=0,R[I++]=0);else if(P==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+P)},D=this.useRecords===!1?this.variableMapSize?g=>{let P=Object.keys(g),T=P.length;T<16?R[I++]=128|T:T<65536?(R[I++]=222,R[I++]=T>>8,R[I++]=T&255):(R[I++]=223,Be.setUint32(I,T),I+=4);let L;for(let N=0;N<T;N++)b(L=P[N]),b(g[L])}:(g,P)=>{R[I++]=222;let T=I-r;I+=2;let L=0;for(let N in g)(P||g.hasOwnProperty(N))&&(b(N),b(g[N]),L++);R[T+++r]=L>>8,R[T+r]=L&255}:g=>{let P=Object.keys(g),T,L=s.transitions||(s.transitions=Object.create(null)),N=0;for(let k=0,W=P.length;k<W;k++){let oe=P[k];T=L[oe],T||(T=L[oe]=Object.create(null),N++),L=T}let C=L[Gn];if(C)C>=96&&h?(R[I++]=((C-=96)&31)+96,R[I++]=C>>5):R[I++]=C;else{C=s.nextId,C||(C=64),C<y&&this.shouldShareStructure&&!this.shouldShareStructure(P)?(C=s.nextOwnId,C<x||(C=y),s.nextOwnId=C+1):(C>=x&&(C=y),s.nextId=C+1);let k=P.highByte=C>=96&&h?C-96>>5:-1;L[Gn]=C,s[C-64]=P,C<y?(P.isShared=!0,s.sharedLength=C-63,i=!0,k>=0?(R[I++]=(C&31)+96,R[I++]=k):R[I++]=C):(k>=0?(R[I++]=213,R[I++]=114,R[I++]=(C&31)+96,R[I++]=k):(R[I++]=212,R[I++]=114,R[I++]=C),N&&(A+=S*N),v.length>=m&&(v.shift()[Gn]=0),v.push(L),b(P))}for(let k=0,W=P.length;k<W;k++)b(g[P[k]])},w=g=>{let P;if(g>16777216){if(g-r>od)throw new Error("Packed buffer would be larger than maximum buffer size");P=Math.min(od,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else P=(Math.max(g-r<<2,R.length-1)>>12)+1<<12;let T=new Wa(P);return Be=new DataView(T.buffer,0,P),R.copy?R.copy(T,0,r,g):T.set(R.slice(r,g)),I-=r,r=0,Yt=T.length-10,R=T}}useBuffer(t){R=t,Be=new DataView(R.buffer,R.byteOffset,R.byteLength),I=0}};qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,En];ws=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?nd(n,16,t):id(_s?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==sd&&this.structuredClone?nd(n,Ha.indexOf(e.name),t):id(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function nd(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function id(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function Jv(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function eb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let l=i+r;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 ro(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)");qa.unshift(n.Class),ws.unshift(n)}rd(n)}var ad=new to({useRecords:!1}),tb=ad.pack,rb=ad.pack;var{NEVER:ob,ALWAYS:nb,DECIMAL_ROUND:ib,DECIMAL_FIT:sb}=bs,ld=512,ab=1024;var cd=new to({structuredClone:!0});ro({Class:Ve.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ve.prototype),n}});ro({Class:Le.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});ro({Class:At.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,At.prototype),n}});ro({Class:Dn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Dn(n)}});ro({Class:Bn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Bn(n)}});function lb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function $a(n){if(ls(n))return n;if(Array.isArray(n))return n.map($a);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=$a(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Ts;(r=>{function n(o){return cd.pack(o)}r.serialize=n;function t(o){return cd.unpack(o)}r.deserialize=t;function e(o){return lb(n($a(o))).toString()}r.checksum=e})(Ts||(Ts={}));var As;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(As||(As={}));var Ns;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:vt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ns||(Ns={}));var Xa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Xa||(Xa={}));var Ya;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Ya||(Ya={}));var Cs;(t=>t.defaultData={...Ya.defaultData,...Xa.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Ka=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Ka||{}),Qa=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Qa||{}),Za=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Za||{}),Is;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:vt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Is||(Is={}));var ud=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],pd=["wrapping","image"],Vr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:pt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...pt.fromHex(6710886),a:1},colorB:{...pt.fromHex(6710886),a:1},colorC:{...pt.fromHex(16777215),a:1},colorD:{...pt.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:vt.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:vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:vt.fromHexAndA(0,1),contourColor:vt.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}}}})(Vr||(Vr={}));var br;(l=>{function n(c){return!c.layers.some(a=>{if(a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")return!0})&&!e(c)}l.isMergable=n;function t(c){let p="";return c.layers.forEach(a=>{Object.entries(a.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):p+=`${d}`})}),p}l.getHash=t;function e(c){let p=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(p+=(1-p)*a.data.alpha);return p<1}l.isTransparent=e;function r(){return{layers:new Le}}l.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}l.defaultData=o;function i(c,p="layer1",a="layer2"){let u=new Le;return u.push({fi:0,data:Vr.defaultData("light",c),id:p}),u.push({fi:1,data:Vr.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="basic",a="layer1",u="layer2"){let d=Vr.defaultData("texture");Object.assign(d.texture,{image:c});let f=new Le;return f.push({fi:0,data:d,id:a}),f.push({fi:1,data:Vr.defaultData("light",p),id:u}),{layers:f}}l.defaultTwoLayerTextureData=s})(br||(br={}));var Ho;(t=>{function n(){return{points:new Le,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Ho||(Ho={}));var Ls;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ls||(Ls={}));var Rn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Ho.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Rn||(Rn={}));var Vn;(o=>{o.identity={...is.identity,hiddenMatrix:Er.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Fo.isEqual(i.position,s.position)?null:s.position,rotation:Fo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Fo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Er.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Vn||(Vn={}));var Sr;(t=>t.defaultData={states:new Le,events:new Le,visible:!0,raycastLock:!1,...Vn.identity})(Sr||(Sr={}));var dd;(t=>t.defaultData={type:"Empty",...Sr.defaultData})(dd||(dd={}));var Ps;(t=>t.defaultData={type:"Mesh",...Sr.defaultData,...Cs.defaultData})(Ps||(Ps={}));var fd;(t=>t.defaultData={type:"TextFrame",...Sr.defaultData,...Is.defaultData})(fd||(fd={}));var Os;(t=>t.defaultData={...Sr.defaultData,...Vn.identity,...Jr.defaultData})(Os||(Os={}));var md;(t=>{function n(e){return{...Sr.defaultData,...Ns.defaultData(e)}}t.defaultData=n})(md||(md={}));var hd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Er.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Le,events:new Le,...Jr.defaultData},r.defaultMeshObject={name:"Rectangle",...Sr.defaultData,...Ps.defaultData,geometry:Rn.defaultData("RectangleGeometry"),material:br.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Sr.defaultData,...Ps.defaultData,geometry:Rn.defaultData("BooleanGeometry"),material:br.defaultTwoLayerData("phong","layer1","layer2")}))(hd||(hd={}));var gd;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Ea(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&Zr(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ea(i.materials,s=>{for(let l=0;l<i.materials.length;l++){let c=o.materials[l];if(typeof c!="string")for(let[p,a]of Object.entries(c.layers)){let u=s[l]?.layers?.data(p);u&&Zr(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Vn.merge(i,o)),Vo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(As.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=pt.clone(s.color))}return i}e.patch=t})(gd||(gd={}));var Ms;(t=>t.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,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Ms||(Ms={}));var Ds;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Oi(r,Ve.prototype)}e.defaultColors=n;function t(){return{materials:new Ve,images:new Ve,colors:new Ve,audios:new Ve,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(Ds||(Ds={}));function el(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...Pa(qt(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...qt(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function cb(n){Object.values(n.shared.materials).forEach(t=>el(t))}function ub(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&el(r)}):"material"in e&&typeof e.material!="string"&&el(e.material)})}function pb(n){Object.assign(n.scene.publish,{orbitControls:{...Ms.defaultData,...qt(n.scene.publish.orbitControls)}})}function db(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((ud.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(pd.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function fb(n){n.scene.publish.withBackground=!0}function mb(n){n.scene.publish.settings.web={compress:!0,preset:1}}function hb(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function gb(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function yb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function Ja(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...qt(t),colors:e,steps:r};Object.assign(t,o)}})}function xb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function yd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ja(r)}):"material"in e&&typeof e.material!="string"&&Ja(e.material)}),Object.values(n.shared.materials).forEach(t=>Ja(t))}function vb(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,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 bb(n){n.shared.audios=Oi({},Ve.prototype)}function Sb(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function wb(n){Object.entries(qt(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(qt(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}var xd=15;function vd(n){let t=n.schema??0;t!==xd&&(console.warn("updating from ",t,"to ",xd),t<1&&(ub(n),cb(n),n.schema=1),t<2&&(pb(n),n.schema=2),t<3&&(db(n),n.schema=3),t<4&&(fb(n),n.schema=4),t<5&&(mb(n),n.schema=5),t<6&&(hb(n),n.schema=6),t<7&&(gb(n),n.schema=7),t<8&&(yb(n),n.schema=8),t<9&&(yd(n),n.schema=9),t<10&&(xb(n),n.schema=10),t<11&&(vb(n),n.schema=11),t<12&&(yd(n),n.schema=12),t<13&&(bb(n),n.schema=13),t<14&&(Sb(n),n.schema=14),t<15&&(wb(n),n.schema=15))}var Bs;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Bs||(Bs={}));import{Color as _b}from"three";var Ue=class extends _b{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};import{ConeBufferGeometry as Nb}from"three";import{BufferGeometry as Tb,CylinderBufferGeometry as Ab,Float32BufferAttribute as tl,Vector2 as Dt,Vector3 as Es}from"three";var Sd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:p,radiusBottom:a,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new zn(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,f):m=new Ab(p,a,r,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Fr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function bd(n){return new Dt(n.y,-n.x)}var zn=class extends Tb{constructor(t,e,r,o,i,s,l,c,p,a,u,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,a=0);let m=[],h=[],y=[],x=[],v=0,A=r/2,S=new Es,b=new Es;f&&t==0&&(t=p),f&&e==0&&(e=a);let D=new Dt(t,A),w=new Dt(e,-A),g=null,P=null,T=null,L=null,N=D.clone().sub(w),C=0,k=0,W=0;d>0&&(C=Math.min(t,e)*(1-d),k=t-C,W=e-C);let oe=D.clone();oe.x-=C;let ce=Math.PI-N.angle(),ie=N.angle(),K=Math.tan(ie/2),U=Math.tan(ce/2),V=K+U,E=d?V:U,B=d?V:K;if(p=Math.min(p,(t-k)/E,N.length()/V),a=Math.min(a,(e-W)/B,N.length()/V),p>0){let z=p/K;g=D.clone().sub(new Dt(z,p)),d&&(T=g.clone(),T.x-=C-V*p),D.sub(N.clone().setLength(z))}if(a>0){let z=a/U;P=w.clone().sub(new Dt(z,-a)),w.add(N.clone().setLength(z)),d&&(L=P.clone(),L.x-=C-V*a,oe.sub(N.clone().setLength(z)))}N=D.clone().sub(w);let O=N.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+l,ee=new Dt(Math.sin(J),Math.cos(J));L&&P?(Q(M,q,ee,ce,a,L,-1,!0),Q(M,q,ee,ie,a,P,-1,!1)):P?(j(M,ee,P.x,0,-1),Q(M,q,ee,ie,a,P,-1,!1)):s||j(M,ee,e,W,-1);let H=bd(N).normalize();if(Fr(H,ee,S),!O)for(let Z=0;Z<=i;Z++){let $=Z/i,re=N.clone().multiplyScalar($).add(w);Fr(re,ee,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&g?(Q(M,q,ee,ce,p,g,1,!1),Q(M,q,ee,ie,p,T,1,!0)):g?(Q(M,q,ee,ce,p,g,1,!1),j(M,ee,g.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Z=bd(N).multiplyScalar(-1).normalize();Fr(Z,ee,S);for(let $=0;$<=i;$++){let re=$/i,le=N.clone().multiplyScalar(-re).add(oe);Fr(le,ee,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];m.push(q,J,H),(Z!=0||$!=0)&&m.push(J,ee,H)}c<Math.PI*2&&(F(-1,G[0],l),F(1,G[G.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new tl(h,3)),this.setAttribute("normal",new tl(y,3)),this.setAttribute("uv",new tl(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Z<0?le:1-le;$&&(ne-=1),ne*=J;let fe=new Dt(Math.sin(ne),Math.cos(ne)*Z),Pe=fe.clone().multiplyScalar(ee).add(H);Fr(Pe,q,b),h.push(b.x,b.y,b.z),Fr(fe,q,S),y.push(S.x,S.y,S.z),x.push(M,.5+b.y/r),z.push(v++)}}function j(z,M,q,J,ee){let H=new Es,Z=new Dt,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),Fr(Z,M,H),h.push(H.x,H.y,H.z),y.push(0,ee,0),x.push(.5,.5),z.push(v++)}function F(z,M,q){let J=new Dt(Math.sin(q),Math.cos(q)),ee=new Dt(-Math.cos(q),Math.sin(q)),H=new Es,Z=z<0?(le,ne,fe)=>m.push(le,ne,fe):(le,ne,fe)=>m.push(le,fe,ne),$=new Dt((t+e+k+W)/4,0);Fr($,J,H),h.push(H.x,H.y,H.z),y.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let le of M){let ne=h.slice(le*3,le*3+3);h.push(...ne),y.push(ee.x,0,ee.y);let fe=x.slice(le*2,le*2+2);x.push(...fe),v++}for(let le=re+1;le<v-1;le++)Z(re,le,le+1);Z(re,v-1,re+1)}}};var wd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,d;return p>0||a>0||c<360?d=new zn(0,t/2,r,o,i,s,l,c*Math.PI/180,p,a,u,0,!0):d=new Nb(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Cb,BufferGeometry as Ib,Float32BufferAttribute as rl,Vector3 as Un}from"three";var _d=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,p;return l==0?p=new Cb(t,e,r,o,i,s):p=new nl(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},ol=Math.PI/2,nl=class extends Ib{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,t/2,e/2,r/2);let a=[],u=[],d=[],f=[],m=0,h=0;y("z","y","x",-1,-1,r,e,t,s,i,0),y("z","y","x",1,-1,r,e,-t,s,i,1),y("x","z","y",1,1,t,r,e,o,s,2),y("x","z","y",1,-1,t,r,-e,o,s,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),l>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,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 rl(u,3)),this.setAttribute("normal",new rl(d,3)),this.setAttribute("uv",new rl(f,2));function y(A,S,b,D,w,g,P,T,L,N,C){let k=(g-2*l)/L,W=(P-2*l)/N,oe=g/2-l,ce=P/2-l,ie=T/2,K=L+1,U=N+1,V=0,E=0,B=new Un;for(let O=0;O<U;O++){let G=O*W-ce;for(let Q=0;Q<K;Q++){let j=Q*k-oe;B[A]=j*D,B[S]=G*w,B[b]=ie,u.push(B.x,B.y,B.z),B[A]=0,B[S]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),f.push(Q/L),f.push(1-O/N),V+=1}}for(let O=0;O<N;O++)for(let G=0;G<L;G++){let Q=m+G+K*O,j=m+G+K*(O+1),F=m+(G+1)+K*(O+1),z=m+(G+1)+K*O;a.push(Q,j,z),a.push(j,F,z),E+=6}p.addGroup(h,E,C),h+=E,m+=V}function x(A,S,b,D,w,g,P,T,L,N,C){let k=(P-2*l)/N,W=P/2-l,oe=T/2-l,ce=L/2,ie=N+1,K=0,U=0,V=new Un,E=new Un;for(let B=0;B<c+1;B++){let O=B/c*ol,G=Math.sin(O)*l,Q=(1-Math.cos(O))*l,j=Math.sin(O),F=Math.cos(O);V[S]=(oe+G)*w,V[b]=(ce-Q)*g,E[A]=0,E[S]=j*Math.sign(V[S]),E[b]=F*Math.sign(V[b]);for(let z=0;z<ie;z++){let M=z*k-W;V[A]=M*D,u.push(V.x,V.y,V.z),d.push(E.x,E.y,E.z),f.push(z/N),f.push(0),K+=1}}for(let B=0;B<c;B++)for(let O=0;O<N;O++){let G=m+O+ie*B,Q=m+O+ie*(B+1),j=m+(O+1)+ie*(B+1),F=m+(O+1)+ie*B;a.push(G,Q,F),a.push(Q,j,F),U+=6}p.addGroup(h,U,C),h+=U,m+=K}function v(A,S,b){let D=new Un,w=new Un(t/2,e/2,r/2);w.subScalar(l);let g=[],P=A*S*b>0?(L,N,C)=>a.push(L,N,C):(L,N,C)=>a.push(L,C,N);for(let L=0;L<=c;L++){let N=[],C=ol*(1-L/c),k=Math.cos(C),W=Math.sin(C),oe=0;for(let ce=0;ce<=L;ce++){let ie=Math.cos(oe),K=Math.sin(oe);D.x=k*ie,D.y=W,D.z=k*K;let U=w.clone().addScaledVector(D,l);u.push(A*U.x,S*U.y,b*U.z),d.push(A*D.x,S*D.y,b*D.z),f.push(0,0),N.push(m++),oe+=ol/L}g.push(N)}let T=g.length-1;for(let L=0;L<T;L++){let N=g[L],C=g[L+1],k=N.length-1;P(N[0],C[1],C[0]);for(let W=1;W<=k;W++)P(N[W-1],N[W],C[W]),P(N[W],C[W+1],C[W])}}}};import{BufferGeometry as Lb,Float32BufferAttribute as il,Triangle as Pb,Vector3 as wr,Vector2 as sl}from"three";var zr=class extends Lb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new il(l,3)),this.setAttribute("normal",new il(p,3)),this.setAttribute("uv",new il(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}[r],m=new wr,h=m.clone(),y=new Pb,x=i*o,v=o-x,A=s+1,S=new wr,b=(K,U)=>S.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),w=D(t.length/3,(K,U)=>new wr().fromArray(t,U*3).setLength(o)),g=[],P=1e6;for(let K=0;K<w.length;K++){let U=w[K],V=[],E,B,O,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],O=U.distanceToSquared(w[E]),G=Math.min(G,O),V.push([E,B,O])}G+=1e-6;let j=[],F=0,z=V.length;for(let M=0;M<z;M++){[E,B,O]=V[F];let q=g[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*P),F=V.findIndex(J=>J[0]==B)}g.push(j)}let T=[];{let K=0,U=0,V,E,B=f==3;for(let O=0;O<=s;O++){V=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let G=0;G<s-O;G++)[K,U]=[V+G+O+2,E+G+O+3],T.push(V,E,...B?[U,V]:[K,E],U,K),[V,E]=[K,U];T.push(V,E,V+s+2)}}let L=m.clone(),N=m.clone(),C=m.clone(),k=m.clone(),W=m.clone(),oe=[],ce=D(w.length,()=>D(f,()=>m.clone()));for(let K=0;K<w.length;K++){m.copy(w[K]).normalize(),L.copy(m).multiplyScalar(v);let U=g[K];for(let j=0;j<U.length;j++){let F=U[j],z=U[(j+1)%f];y.setFromPointsAndIndices(w,K,F%P,z%P),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(L,ce[K][j])}let V=[],E=[],B=[],O=new wr;s==0&&[...ce[K]].reduce((j,F)=>j.add(F),O).multiplyScalar(1/f);for(let j=0;j<f;j++){let F=[],z=(j-1+f)%f,M=ce[K][z],q=ce[K][j];m.copy(M).sub(L),h.copy(q).sub(L);let J=L.angleTo(m),ee=m.angleTo(h),H=Math.cos(J)*x;s==0?N.copy(O):N.copy(L).setLength(v+H),E.push(H);let Z=[N,M,q];for(let $=0;$<2;$++){let re=Z[$],le=Z[$+1];k.subVectors(re,L),W.subVectors(le,L),C.crossVectors(k,W).normalize();for(let ne=0;ne<A;ne++){let fe=[J,ee][$]*ne/A;m.copy(k).applyAxisAngle(C,fe).add(L),V.push(m.clone()),$&&(b(m,L),F.push([ne==0?re:m.clone(),S.clone()]))}$&&(b(le,L),F.push([le,S.clone()]))}B.push(F)}oe.push(B);let G=2*A,Q=2;for(let j=0;j<f;j++){let F=G*j,z=G*((j+1)%f),M=[V[F]];for(let J=1;J<A;J++){k=V[F+J],W=V[z+J],M.push(k);for(let ee=1,H=J-Q+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(L).setLength(E[j]).add(L),M.push(m.clone());M.push(W)}for(let J=0;J<A;J++)M.push(V[J+A+F]);M.push(V[z+A]);let q=T.map(J=>M[J]);l.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,L),[S.x,S.y,S.z])).flat())}}let ie=[];for(let K=0;K<g.length;K++)for(let U=0;U<f;U++){let V=g[K][U];if(V<P){let E=g[V].findIndex(G=>G%P==K),B=oe[K][U],O=oe[V][E];for(let G=0;G<A;G++){let Q=B[G],j=O[A-G],F=B[G+1],z=O[A-(G+1)];[Q,j,F,F,j,z].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}ie.push(B[0][0],O[A][0],B[A][0],O[0][0])}}for(;ie.length;){let K,U,V,E;[K,U]=ie.splice(0,2);let B=[K];for(;K!=U;)B.push(U),V=ie.indexOf(U),E=V%2,U=ie.splice(V-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +O],B[G+1-+O],B[0]].forEach(Q=>{l.push(Q.x,Q.y,Q.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new wr;for(let w=0;w<l.length;w+=3){d.x=l[w+0],d.y=l[w+1],d.z=l[w+2];let g=b(d)/2/Math.PI+.5,P=D(d)/Math.PI+.5;c.push(g,1-P)}let f=new wr,m=new wr,h=new wr,y=new wr,x=new sl,v=new sl,A=new sl,S=(w,g,P,T)=>{T<0&&w.x===1&&(c[g]=w.x-1),P.x===0&&P.z===0&&(c[g]=T/2/Math.PI+.5)};for(let w=0,g=0;w<l.length;w+=9,g+=6){f.set(l[w+0],l[w+1],l[w+2]),m.set(l[w+3],l[w+4],l[w+5]),h.set(l[w+6],l[w+7],l[w+8]),x.set(c[g+0],c[g+1]),v.set(c[g+2],c[g+3]),A.set(c[g+4],c[g+5]),y.copy(f).add(m).add(h).divideScalar(3);let P=b(y);S(x,g+0,f,P),S(v,g+2,m,P),S(A,g+4,h,P)}for(let w=0;w<c.length;w+=6){let g=c[w+0],P=c[w+2],T=c[w+4],L=Math.max(g,P,T),N=Math.min(g,P,T);L>.9&&N<.1&&(g<.2&&(c[w+0]+=1),P<.2&&(c[w+2]+=1),T<.2&&(c[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function D(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new zr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Ob}from"three";var Td=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new jn(t*.5,i,s):new Ob(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},jn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],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,t,e,r),this.type=c}static fromJSON(t){return new jn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as jb,Plane as kb,Shape as Fd,Vector2 as _r,Vector3 as Hb,MathUtils as fl,LineCurve as ml,QuadraticBezierCurve as zd,CubicBezierCurve as Fs}from"three";import{CubicBezierCurve as Gs,EllipseCurve as Mb,LineCurve as Rs,LineCurve3 as Db,MathUtils as Bb,QuadraticBezierCurve as ll,SplineCurve as Eb,Vector2 as tt,Vector3 as Cd}from"three";var kn=1e-12,Wo=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Bb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Wo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},qo=class extends Wo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new qo(this.parent).copy(this)}},Bt=class extends Wo{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new qo(this),new qo(this))}static create(e,r){let o=new Bt(e,new tt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Bt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new tt,r=new tt){let[o,i]=this.computeTangents();return o&&i&&(Ad(o,e),Ad(i,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ad(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var cl=n=>n,$o=new tt,Vs=new tt,Gb=new tt,Rb=new tt,Vb=new tt,Fb=new tt,Id=new Cd,Ld=new Cd;function Pd(n){let t=new tt;t.addVectors(n.v0,$o.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(n.v2,Vs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Gs(n.v0,t,e,n.v2)}function Hn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function zb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Ub(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function ul(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function Od(n,t,e){return Nd(n,t)&&Nd(t,e)&&al(n.position,t.position,e.position)}function al(n,t,e){return $o.copy(t).sub(n).cross(Vs.copy(e).sub(n))===0}function Md(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,l=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(l+c,s+p),o.set(l-c,s-p),[r,o]}function Dd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Bd(n,t,e,r,o,i){let s=t.x-n.x,l=t.y-n.y,c=e.x-n.x,p=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+p)*(l+p)),u;return ul(t,n,e)>Math.PI&&(a*=-1),Hn(p,l)?u=(l+p)*(r/a-.5)*8/3/(s-c):u=(s+c)*(r/a-.5)*8/3/(p-l),o.set(t.x-u*l,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function pl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Nd(n,t){return al(n.position,n.controls[1].position,t.position)&&al(n.position,t.controls[0].position,t.position)}function Ed(n,t,e,r,o=.5){let i=$o.subVectors(t,n).multiplyScalar(o).add(n),s=Vs.subVectors(e,t).multiplyScalar(o).add(t),l=Gb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=Rb.subVectors(s,i).multiplyScalar(o).add(i),a=Vb.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=Fb.subVectors(a,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,a.x,a.y,u.x,u.y,r.x,r.y]}function Gd(n,t,e=12,r=!0){let o=Ld.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=cl(t[c]),a=$o,u=Ur(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Gs||p instanceof ll||p instanceof Rs){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&Ub(i,o))continue;i===void 0&&(i=Id),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Rd(n,t,e,r=12,o=!0){let i=Ld.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=cl(t[c]),u=$o,d=Ur(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof Gs||a instanceof ll||a instanceof Rs){if(a.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Id:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.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 dl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=Ur(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=Ur(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Ur(n[0].roundedCurveCorner,t)*.5),r}function Ur(n,t=12){return n&&n instanceof Mb?t*2:n&&(n instanceof Rs||n instanceof Db)?1:n&&n instanceof Eb?t*n.points.length:t}function Vd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=cl(t[s]),c=Ur(l,e),p=$o;for(let a=0;a<=c;a++)if(l instanceof Gs||l instanceof ll||l instanceof Rs){if(l.getPoint(a/c,p),o!==void 0&&zb(o,p,kn))continue;o===void 0&&(o=Vs),o.copy(p),n.push(p.x,p.y),i++}}return Hn(n[0],n[n.length-2],kn)&&Hn(n[1],n[n.length-1],kn)&&(n.pop(),n.pop()),r&&i>1&&!(Hn(n[i-1],n[1],kn)&&Hn(n[i-2],n[0],kn))&&(n.push(n[0],n[1]),i++),n}var hl=new _r,Wb=new _r,qb=new _r,$b=new _r,Xb=new _r,Yb=new _r,Se=class extends Fd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new jb;this.plane=new kb(new Hb(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=fl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Bt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],p=c.points.length-1,a=c.getPointIndexById(e);if(a<0)i+=p;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)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return r+l;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=hl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let 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,r);this._update(!1)}createPoint(e,r=0,o=fl.generateUUID()){let i;e instanceof _r?i=e:i=new _r(e,r);let s=new Bt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Gd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=dl(this.points,e,!1),this.roundedCurveDivisions=dl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Rd(e,this.curves,r,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Vd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Ur(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(pl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(hl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=l[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){pl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let l=this.points[o-1];this._applyCurveForPoint(s,l)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],a=l.roundness,u=c&&p&&Od(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,f=l.curveAfter;if(d===void 0||f===void 0)continue;let m=l.roundedCurveBefore,h=l.roundedCurveAfter,y=d.getLength(),x=f.getLength(),v=Math.min(a,y*.499),A=Math.min(a,x*.499),S=Math.min(v,A),b=1-S/y,D=S/x,w=d.getPointAt(b,hl),g=f.getPointAt(D,Wb);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,g);let P;if(this.useCubicForRoundedCorners){let T=ul(w,l.position,g)/2,L=Math.tan(T)*w.distanceTo(l.position),[N,C]=Md(w,g,L,qb,$b),k=Dd(N,C,l.position),[W,oe]=Bd(k,w,g,L,Xb,Yb);P=new Fs(w.clone(),W.clone(),oe.clone(),g.clone())}else P=new zd(w.clone(),l.position.clone(),g.clone());l.roundedCurveCorner=P,this.roundedCurves.splice(i+o,0,P),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof ml)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let l=e,c=r,p=l.getUtoTmapping(o,0),a=Ed(l.v0,l.v1,l.v2,l.v3,p);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 r}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],p=e.points[i+3],a=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Bt(fl.generateUUID(),new _r(s,l));f.controls[0].position.set(c,p),f.controls[1].position.set(a,u),f.roundness=d,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 r=(i,s)=>{s instanceof Fs&&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 zd&&(i[l]=Pd(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,f;u instanceof Fs?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof ml&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],a=!1;return p instanceof Fs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof ml&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Fd&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}};var yl=Math.PI*2;function gl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Kb(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Ud(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function Qb(n,t,e,r,o,i,s,l,c,p){let a=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*d;m<0&&(m=0),m/=a*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*l,y=m*-i/o*s,x=h+(n+e)/2,v=y+(t+r)/2,A=(s-h)/o,S=(l-y)/i,b=(-s-h)/o,D=(-l-y)/i,w=Ud(1,0,A,S),g=Ud(A,S,b,D);return!p&&g>0&&(g-=yl),p&&g<0&&(g+=yl),{centerx:x,centery:v,ang1:w,ang2:g}}function jd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,a=(t-r)/2;if(p===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=Qb(n,t,e,r,o,i,p,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:y}=d,x=Math.abs(m)/(yl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);m/=v;for(let A=0;A<v;A++)c.push(Kb(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=gl(A[0],o,i,h,y),{x:D,y:w}=gl(A[1],o,i,h,y),{x:g,y:P}=gl(A[2],o,i,h,y);return{x1:S,y1:b,x2:D,y2:w,x:g,y:P}})}import{BufferAttribute as Us,BufferGeometry as rS}from"three";var Ie;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ie||(Ie={}));var je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(je||(je={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var se=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,l,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),l=n.edgeEval(r,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,e.s)):(s=n.edgeSign(t,r,e),l=-n.edgeSign(t,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),l=n.transEval(r,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,e.t)):(s=n.transSign(t,r,e),l=-n.transSign(t,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,o.t)):i.t=(r.t+e.t)/2},n}(),Wn=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}(),zs=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Xo=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}(),kd=function(){function n(){var t=new Xo,e=new Wn,r=new zs(0),o=new zs(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new zs(0),r=new zs(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Xo,e=new Xo,r=new Wn,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Xo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Wn;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Wn;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Xo;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new Wn;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,l;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,l=t.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,l,c,p;for(i=t,i=t;(o=i.next)!==t;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),p=r,p=r;(c=p.next)!==r;p=c)ue(c.Sym.next===p.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===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Hd=function(){function n(){this.handle=null}return n}(),Wd=function(){function n(){this.key=null,this.node=0}return n}(),Zb=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Hd,this.handles[r]=new Wd;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Hd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Wd}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ue(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),xl=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}(),qd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Jb=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new qd,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new qd;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),eS=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var l=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new xl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,l=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}l.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(l,o)),n.finishRegion(t,s),l=i.eUp,s=i}return l},n.addRightEdges=function(t,e,r,o,i,s){var l,c,p,a,u=!0;p=r;do ue(se.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),p=l.eUp.Sym,p.Org===a.Org;)p.Onext!==a&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(a.Oprev,p)),l.windingNumber=c.windingNumber-p.winding,l.inside=n.isWindingInside(t,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,a),n.deleteRegion(t,c),t.mesh.delete(a)),u=!1,c=l,a=p;c.dirty=!0,ue(c.windingNumber-p.winding===l.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),l=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+l*r.coords[0],t.coords[1]+=s*e.coords[1]+l*r.coords[1],t.coords[2]+=s*e.coords[2]+l*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(ue(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,l=i.Org,c=o.Dst,p=i.Dst,a,u,d=new Xo,f,m;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,l)>=0),ue(s!==t.event&&l!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),u=Math.max(l.t,p.t),a>u))return!1;if(se.vertLeq(s,l)){if(se.edgeSign(p,s,l)>0)return!1}else if(se.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,l,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(l.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(l.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=se.vertLeq(s,l)?s:l,se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),se.vertEq(d,s)||se.vertEq(d,l)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.edgeSign(p,t.event,d)<=0?p===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(se.edgeSign(c,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),se.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,l,p),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,p=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(l.Org,t.event)&&(t.mesh.splice(i.Oprev,l),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,l,c;if(o=e.eUp,se.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}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(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,l,c,p=new xl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,l=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(l.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=t.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(t,i,null);l.Onext===s?n.connectRightVertex(t,o,l):n.addRightEdges(t,o,l.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new xl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new Jb(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,l=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,l)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new Zb(i,se.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!se.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),tS=function(){function n(){this.mesh=new kd,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ie.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,l,c=[0,0,0],p=[0,0,0],a=[0,0,0],u=[0,0,0],d=[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],p[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,m[x]=e),i>c[x]&&(c[x]=i,f[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(l=0,r=m[v],o=f[v],a[0]=r.coords[0]-o.coords[0],a[1]=r.coords[1]-o.coords[1],a[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],d[0]=a[1]*u[2]-a[2]*u[1],d[1]=a[2]*u[0]-a[0]*u[2],d[2]=a[0]*u[1]-a[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>l&&(l=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);l<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=t.next;l!==t;l=l.next)l.s=this.dot_(l.coords,r),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(se.edgeGoesRight(r.Lprev)||se.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,l=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>r)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===je.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===je.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,p=0,a=0;i=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){s=0,o=r=l.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new kd),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Ie.ODD),e===void 0&&(e=je.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),eS.computeInterior(this,s);var l=this.mesh;return e===je.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===je.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function oo(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?je.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,p=n.normal,a=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new tS;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,a,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:y?x.mesh:void 0}}}var w3=Ie.ODD,_3=Ie.NONZERO,T3=Ie.POSITIVE,A3=Ie.NEGATIVE,N3=Ie.ABS_GEQ_TWO,C3=je.POLYGONS,I3=je.CONNECTED_POLYGONS,L3=je.BOUNDARY_CONTOURS;var Yo=class extends rS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,p=!0,a,u;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,x=i[y+0],v=i[y+1];if(a!==void 0&&x!==a&&(c=!1),u!==void 0&&v!==u&&(p=!1),a=x,u=v,!c&&!p)break}!c&&!p&&(l=oo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Us(new Float32Array(d*3),3),this._normalAttribute=new Us(new Float32Array(d*3),3),this._uvAttribute=new Us(new Float32Array(d*2),2),this._indexAttribute=new Us(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],g=l.vertices[D+1];w<m&&(m=w),w>h&&(h=w),g<y&&(y=g),g>x&&(x=g)}let v=h-m,A=x-y;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],g=l.vertices[D+1],P=(w-m)/v,T=(g-y)/A;this._positionAttribute.setXYZ(S,w,g,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,P,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=l.elements[D+0],g=l.elements[D+1],P=l.elements[D+2];this._indexAttribute.setX(D+0,w),this._indexAttribute.setX(D+1,g),this._indexAttribute.setX(D+2,P)}}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 Yo(this._shape,this._curveSegments);return e.userData=Ln(this.userData),e}};import{BufferAttribute as ks,BufferGeometry as oS}from"three";var js=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*js.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*js.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=p,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},qn=js;qn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var vl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Ko=class extends oS{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let l=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(w=>{let g=w.extractShapePointsToFlatArray([],i),P=[];for(let T=g.length-1;T>=1;T-=2){let L=g[T-1],N=g[T-0];P.push(L,N)}return P}),p=oo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),a=oo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(a){p.elementCount+=a.elementCount;for(let w=0;w<a.elements.length;w++){let g=a.elements[w],P=w%2===0?p.vertexCount:0;p.elements.push(g+P)}for(let w=0;w<a.vertexIndices.length;w++){let g=a.vertexIndices[w],P=p.vertexCount;p.vertexIndices.push(g+P)}for(let w=0;w<a.vertices.length;w++){let g=a.vertices[w];p.vertices.push(g)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,g=p.vertexCount;w<g;w++){let P=w*2,T=p.vertices[P+0],L=p.vertices[P+1];T<d&&(d=T),T>f&&(f=T),L<m&&(m=L),L>h&&(h=L)}this._minX=d,this._minY=m,this._width=f-d,this._height=h-m;let y=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new qn(y);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let g=w>=u,P=w*2,T=p.elements[P+0],L=p.elements[P+1],N=T+L,C={start:T,count:L,normals:[],continuous:[],concave:[]},k=T,W=N-1,oe=T+1,ce=this._shape.roundedCurves.length;do{let V=k-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],O=p.vertices[k*2+0],G=p.vertices[k*2+1],Q=p.vertices[oe*2+0],j=p.vertices[oe*2+1],F=O-E,z=G-B,M=Math.sqrt(F*F+z*z);F/=M,z/=M;let q=O-Q,J=G-j,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,C.normals[V*2+0]=-J,C.normals[V*2+1]=q,C.concave[V]=F*J-z*q>0;let H=p.vertexIndices[k];if(Array.isArray(H))C.continuous[V]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)C.continuous[V]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Z].getTangent($),fe=this._shape.roundedCurves[re].getTangent(le);C.continuous[V]=ne.dot(fe)>.95}}g&&(C.normals[V*2+0]*=-1,C.normals[V*2+1]*=-1),[W,k,oe]=[k,oe,oe+1],oe>=N&&(oe-=L)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,N*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((V,E)=>[E,E]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,N*2)});for(let V=1;V<=this._bevelSegments;V++){let E=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,O=[],G=[],Q=[],j=[],F=0;for(let M=0;M<L;M++){let q=M*2,J=(M-1+L)%L*2,ee=p.vertices[C.start*2+q+0],H=p.vertices[C.start*2+q+1],Z=-C.normals[J+0]*B,$=-C.normals[J+1]*B,re=-C.normals[q+0]*B,le=-C.normals[q+1]*B;if(C.concave[M]||!C.concave[M]&&g){let ne=Math.atan2($,Z),fe=Math.atan2(le,re);fe>ne&&(fe-=Math.PI*2);let Pe=fe-ne;if(C.continuous[M]||g){let me=ne+Pe/2,Ge=Math.cos(me)*B,be=Math.sin(me)*B;O[2*F+0]=ee+Ge*(g?-1:1),O[2*F+1]=H+be*(g?-1:1),j[F]=M,F++}else{let me=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Ge=0;Ge<=me;Ge++){let be=ne+Pe*(Ge/me),lt=Math.cos(be)*B,wt=Math.sin(be)*B;O[2*F+0]=ee+lt,O[2*F+1]=H+wt,j[F]=M,F++}}}else O[2*F+0]=ee+Z,O[2*F+1]=H+$,j[F]=M,G[M]=F,F++,O[2*F+0]=ee,O[2*F+1]=H,j[F]=M,F++,O[2*F+0]=ee+re,O[2*F+1]=H+le,j[F]=M,Q[M]=F,F++}let z=oo({windingRule:Ie.POSITIVE,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:M=>{let J=M.Org.idx,ee=j[J],H=j[(J+1)%j.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=L);for(let H=q;H<ee;H++){let Z=H%L,$=(H+1)%L;if(!C.continuous[Z]||!C.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}ie.push({bevelI:V,angle:E,size:B,boundary:z,reverseMap:j,insetPoints:O})}let K=(V,E,B)=>{let O=0,G=V.boundary.vertexIndices.length;for(;O<G&&B(V.boundary.vertexIndices[E]);)E=(E+1)%G,O++;return O},U=x.length;for(let V=1;V<ie.length;V++){let E=ie[V-1],B=ie[V],O=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!O||!G)break;let Q=C.concave.length,j=0,F=vl(j,L);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=vl(j,L);let z=E.boundary.vertexIndices.findIndex(F),M=B.boundary.vertexIndices.findIndex(F);do z=(z+1)%O;while(F(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(F(B.boundary.vertexIndices[M]));j=(j+1)%L;let q=j,J=this.buildBevelVert(C,E,(z-1+O)%O),ee=this.buildBevelVert(C,B,(M-1+G)%G),H=J,Z=ee,$,re,le=!1;do{F=vl(j,L);let ne=K(E,z,F),fe=K(B,M,F),Pe=le;if(le=!1,ne&&!fe){for(let me=0;me<ne;me++)$=this.buildBevelVert(C,E,(z+me)%O,me/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;le=!0}else if(!ne&&fe)for(let me=0;me<fe;me++)re=this.buildBevelVert(C,B,(M+me)%G,me/(fe-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ne&&fe)if($=this.buildBevelVert(C,E,z,0),re=this.buildBevelVert(C,B,M,0),Pe?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ne===fe)for(let me=1;me<ne;me++)$=this.buildBevelVert(C,E,(z+me)%O,me/(ne-1)),re=this.buildBevelVert(C,B,(M+me)%G,me/(fe-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ne>fe){let me=ne/fe,Ge=0;for(let be=1;be<ne;be++)$=this.buildBevelVert(C,E,(z+be)%O,be/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,be>(Ge+1)*me&&(Ge++,re=this.buildBevelVert(C,B,(M+Ge)%G,Ge/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let me=fe/ne,Ge=0;for(let be=1;be<fe;be++)re=this.buildBevelVert(C,B,(M+be)%G,be/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,be>(Ge+1)*me&&(Ge++,$=this.buildBevelVert(C,E,(z+Ge)%O,Ge/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ne)%O,M=(M+fe)%G,j=(j+1)%Q}while(j!==q)}{let V=ie[0];for(let E=0,B=V.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(C,V,E),G=this.buildBevelVert(C,V,(E+1)%B);x.push(G.topP,O.topN,O.bottomN),x.push(G.topP,O.bottomN,G.bottomP)}}if(g){let V=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],O=x[E-1],G=x[E-0];V.push(G,O,B)}x.splice(U,x.length-U,...V)}if(g){let V=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ie[ie.length-1].boundary.vertices[E-1],O=ie[ie.length-1].boundary.vertices[E-0];V.push(B,O)}v.push(V)}if(!g){let V=ie[ie.length-1],E=oo({windingRule:ie.length>1?Ie.POSITIVE:Ie.ODD,elementType:je.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let O=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(O.top,G.top,Q.top),x.push(Q.bottom,G.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new ks(Uint32Array.from(x),1),S=new ks(this._buffer.positions,3),b=new ks(this._buffer.normals,3),D=new ks(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),a=p*3,u=p*2,d={top:p+0,bottom:p+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[u+0]=l,this._buffer.uvs[u+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[u+2]=l,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],p,a,u,d;l!==c?(a=l,p=c,d=!1,u=e.continuous[a]&&e.continuous[p]):(p=l,a=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,y=p*2,x=a*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,w=e.normals[y+0],g=e.normals[y+1],P=e.normals[x+0],T=e.normals[x+1];if(d){let W=P-w,oe=T-g;w=w+W*(1-i),g=g+oe*(1-i);let ce=Math.sqrt(w*w+g*g);w/=ce,g/=ce}let L=this._buffer.get(u?2:4),N=L*3,C=L*2,k={i:o,fi:p,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[N+0]=v,this._buffer.positions[N+1]=A,this._buffer.positions[N+2]=this._depth-S,this._buffer.normals[N+0]=w*f,this._buffer.normals[N+1]=g*f,this._buffer.normals[N+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=D,this._buffer.positions[N+3]=v,this._buffer.positions[N+4]=A,this._buffer.positions[N+5]=S,this._buffer.normals[N+3]=w*f,this._buffer.normals[N+4]=g*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b,u||(L+=2,N+=6,C+=4,k.topP=L+0,k.bottomP=L+1,this._buffer.positions[N+0]=v,this._buffer.positions[N+1]=A,this._buffer.positions[N+2]=this._depth-S,this._buffer.normals[N+0]=P*f,this._buffer.normals[N+1]=T*f,this._buffer.normals[N+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=D,this._buffer.positions[N+3]=v,this._buffer.positions[N+4]=A,this._buffer.positions[N+5]=S,this._buffer.normals[N+3]=P*f,this._buffer.normals[N+4]=T*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b),this.vertexCache[s]=k,k}clone(){let e=new Ko(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ln(this.userData),e}};var st=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Se(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new Se(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Yo(n.shape,o):s=new Ko(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Xd,Vector2 as Yd}from"three";var Kd=Math.PI*2,Qd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof 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:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p=n.shape,a=t*.5,u=e*.5,d=nS(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function nS(n,t,e,r,o,i){if(r>=Kd)return o>30||o%4===0?(sS(n,t,e,i),Math.round(o/4)):$d(n,r,o,t,e,i);let s={x:0,y:e},l=r+Math.PI*.5,c={x:Math.cos(l)*t,y:Math.sin(l)*e},p=jd({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?iS(n,s.x,s.y,p,o,t,e,i):$d(n,r,o,t,e,i)}function iS(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(Qo(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],f=Qo(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return l>0?Zd(n,i,s,l):n.addPoint(Qo(0,0)),c}function $d(n,t,e,r,o,i){let s=-t/e;for(let l=0;l<=e;l++){let c=s*l,p=Math.sin(c)*r,a=Math.cos(c)*o;n.addPoint(Qo(p,a))}return t<Kd?i>0?Zd(n,r,o,i):n.addPoint(Qo(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Jd(n,r,o,i)),1}function sS(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(Hs(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(Hs(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Hs(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(Hs(o,i-e,o+l,i-e,o-l,i-e)),r>0&&Jd(n,t,e,r)}function Qo(n,t){return new Bt(Xd.generateUUID(),new Yd(n,t))}function Hs(n,t,e,r,o,i){let s=Qo(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Zd(n,t,e,r){ef(n,t,e,r).forEach(i=>n.addPoint(i))}function Jd(n,t,e,r){let o=ef(n,t,e,r),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function ef(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Yd(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=Xd.generateUUID(),p}).reverse();return l.forEach(c=>{c.position.multiply(s);let p=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(p)}),l}import{BufferGeometry as aS,Float32BufferAttribute as bl,Vector3 as tf}from"three";var rf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:p,cornerRadius:a,cornerSegments:u}=n.parameters,d=new $n(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},$n=class extends aS{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,p=1,a=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new tf,h=new tf,y=m(),x=m(),v=m(),A,S,b,D,w,g,P,T,L=m(),N=m(),C=m(),k=m(),W=m(),oe=m(),ce=m(),ie=m(),K=r-2*c+.001,U=K/s,V=Math.ceil(l*s),E=V+1,B=K/V,O=-K/2,G=a+1,Q=2*Math.PI/a,j=Math.PI/2/d,F=.01,z=Math.min((1-u/100)*c,c-F),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(De=>Array($*De).fill(0)),fe=[],Pe=i-c;function me(De,yt){let kt=Math.PI/2;g=yt*B,T=2*Math.PI*(g%U)/U+kt,g+=O,P=Math.sin(T)*Pe,w=Math.cos(T)*Pe,t?De.set(w,P,g):De.set(w,g,P)}me(h,-1e-10),me(y,0),L.copy(h),me(h,1);let Ge=h.distanceTo(y),be=M+z,lt=Ge*V+2*be,wt=z,go=lt-be;for(let De=0;De<=V;De++){me(x,De),ie.subVectors(x,L).normalize(),L.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let yt=De===0,kt=De===V,Jm=yt?3*Math.PI/2:j,eh=yt?wt:go,th=yt?G:Z,rh=yt?0:$-G,oh=ie.clone().multiplyScalar(yt?-M:M).add(x),nh=ie.clone().multiplyScalar(yt?-1:1).normalize();for(let mr=0;mr<G;mr++){let vc=mr*Q;if(N.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(vc)),y.copy(ce).multiplyScalar(c*Math.sin(vc))),C.copy(N).normalize(),yt||kt){f||(q=rh+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=oh.getComponent(ct),le[q*3+ct]=nh.getComponent(ct)}),ne[q*2]=+kt,ne[q*2+1]=mr/a),y.copy(C).multiplyScalar(z),v.addVectors(x,y);for(let ct=0;ct<d;ct++){let _a=ct*j+Jm;k.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(_a)),y.copy(C).multiplyScalar(M*Math.cos(_a))),W.copy(k).normalize(),y.addVectors(v,k),k.normalize(),q=th+ct*G+mr,[0,1,2].forEach(Pi=>{re[q*3+Pi]=y.getComponent(Pi),le[q*3+Pi]=W.getComponent(Pi)});let ih=+yt+Math.sin(_a);ne[q*2]=(eh+M*ih)/lt,ne[q*2+1]=mr/a}}y.addVectors(x,N),q=H+De*G+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=y.getComponent(ct),le[q*3+ct]=C.getComponent(ct)}),ne[q*2]=(be+De*Ge)/lt,ne[q*2+1]=mr/a}}let gt=E+2*d+J,yo=1,[Ii,Li]=f?[yo,yo+E-1]:[0,gt-1];for(let De=Ii;De<=Li-1;De++){let yt=f&&De===Li-1;for(let kt=0;kt<G-1;kt++)A=De*G+kt,S=A+1,b=(yt?kt:A)+G,D=(yt?kt+1:S)+G,De===0?fe.push(S,D,b):De===gt-2?fe.push(A,S,b):fe.push(A,S,b,S,D,b)}this.setIndex(fe),this.setAttribute("position",new bl(re,3)),this.setAttribute("normal",new bl(le,3)),this.setAttribute("uv",new bl(ne,2))}};import{IcosahedronBufferGeometry as lS}from"three";var of=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Xn(t*.5,i,s):new lS(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Xn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],l="IcosahedronGeometry";super(i,s,l,t,e,r),this.type=l}static fromJSON(t){return new Xn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as cS,Shape as uS}from"three";var nf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new uS;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new cS(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as pf,BufferGeometryLoader as bS,Vector3 as SS,BoxBufferGeometry as df}from"three";import{BufferGeometry as gS,Vector2 as _l,Vector3 as uf}from"three";import{Box3 as pS,BufferAttribute as Yn,BufferGeometry as sf,Color as lf,EventDispatcher as dS,Float32BufferAttribute as Zo,Matrix3 as af,Matrix4 as cf,MathUtils as fS,Object3D as mS,Sphere as hS,Vector2 as Ct,Vector3 as rt}from"three";var Qt=new cf,Sl=new mS,Ws=new rt,jr=class extends dS{constructor(){super(),this.uuid=fS.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new af().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,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(t){return Qt.makeRotationX(t),this.applyMatrix4(Qt),this}rotateY(t){return Qt.makeRotationY(t),this.applyMatrix4(Qt),this}rotateZ(t){return Qt.makeRotationZ(t),this.applyMatrix4(Qt),this}translate(t,e,r){return Qt.makeTranslation(t,e,r),this.applyMatrix4(Qt),this}scale(t,e,r){return Qt.makeScale(t,e,r),this.applyMatrix4(Qt),this}lookAt(t){return Sl.lookAt(t),Sl.updateMatrix(),this.applyMatrix4(Sl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new rt().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new lf().fromBufferAttribute(l,d));function a(d,f,m,h){let y=l===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],x=s===void 0?[]:[new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,f),new rt().fromBufferAttribute(s,m)],v=new Jo(d,f,m,x,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ct().fromBufferAttribute(c,d),new Ct().fromBufferAttribute(c,f),new Ct().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new Ct().fromBufferAttribute(p,d),new Ct().fromBufferAttribute(p,f),new Ct().fromBufferAttribute(p,m)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let f=u[d],m=f.start,h=f.count;for(let y=m,x=m+h;y<x;y+=3)r!==void 0?a(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ws).negate(),this.translate(Ws.x,Ws.y,Ws.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new cf;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,l),e.subVectors(s,l),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],p=this.vertices[l.b],a=this.vertices[l.c];r.subVectors(a,p),o.subVectors(c,p),r.cross(o),e[l.a].add(r),e[l.b].add(r),e[l.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new jr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let p=new rt,a={a:new rt,b:new rt,c:new rt};i.push(p),s.push(a)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(l.normal),p.a.copy(l.vertexNormals[0]),p.b.copy(l.vertexNormals[1]),p.c.copy(l.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new pS),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new hS),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,l=t.vertices,c=this.faces,p=t.faces,a=this.colors,u=t.colors;e!==void 0&&(o=new af().getNormalMatrix(e));for(let d=0,f=l.length;d<f;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)a.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,y,x=m.vertexNormals,v=m.vertexColors,A=new Jo(m.a+i,m.b+i,m.c+i);A.normal.copy(m.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let S=0,b=x.length;S<b;S++)h=x[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)y=v[S],A.vertexColors.push(y.clone());A.materialIndex=m.materialIndex+r,c.push(A)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,y=m.length;h<y;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;c++){let a=this.vertices[c],u=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let u=[a.a,a.b,a.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(p,1)}let l=this.vertices.length-r.length;return this.vertices=r,l}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),l&&l.push(i[p])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}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 r=[],o=[],i={},s=[],l={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,x=!1,v=this.faceVertexUvs[0][m]!==void 0,A=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,w=0;if(w=a(w,0,0),w=a(w,1,y),w=a(w,2,x),w=a(w,3,v),w=a(w,4,A),w=a(w,5,S),w=a(w,6,b),w=a(w,7,D),r.push(w),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let g=this.faceVertexUvs[0][m];r.push(f(g[0]),f(g[1]),f(g[2]))}if(A&&r.push(u(h.normal)),S){let g=h.vertexNormals;r.push(u(g[0]),u(g[1]),u(g[2]))}if(b&&r.push(d(h.color)),D){let g=h.vertexColors;r.push(d(g[0]),d(g[1]),d(g[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function u(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 d(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 p[h]!==void 0||(p[h]=c.length/2,c.push(m.x,m.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new jr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,y=m.length;h<y;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,y=i[d].vertices.length;h<y;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,y=i[d].normals.length;h<y;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[d].vertexNormals.length;h<y;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[d].faceNormals.length;h<y;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let l=t.skinWeights;for(let d=0,f=l.length;d<f;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,f=p.length;d<f;d++)this.lineDistances.push(p[d]);let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new wl().fromGeometry(this),e=new sf,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Yn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Yn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Yn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Yn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Yn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let p=s[l],a=new Zo(p.data.length*3,3);a.name=p.name,i.push(a.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Zo(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new Zo(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new sf,r=t.geometry;if(t.isPoints||t.isLine){let o=new Zo(r.vertices.length*3,3),i=new Zo(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new Zo(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};jr.prototype.isGeometry=!0;var wl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=t.morphTargets,c=l.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:l[x].name,data:[]};this.morphTargets.position=p}let a=t.morphNormals,u=a.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:a[x].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,y=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new Ct,new Ct,new Ct))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new Ct,new Ct,new Ct))}for(let b=0;b<c;b++){let D=l[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=a[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.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(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Jo=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new lf,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var yS=["a","b","c"];function xS(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Tl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Al(n,t,e,r,o,i){let s=Math.min(n,t),l=Math.max(n,t),c=s+"_"+l,p;if(r.has(c))p=r.get(c);else{let a=e[s],u=e[l];p={a,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function vS(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Al(s.a,s.b,n,r,s,e),Al(s.b,s.c,n,r,s,e),Al(s.c,s.a,n,r,s,e)}function qs(n,t,e,r,o){n.push(new Jo(t,e,r,void 0,void 0,o))}function en(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function $s(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Xs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof gS?t=new jr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new uf,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],f=new Map;vS(c,p,d,f);let m=[],h,y,x,v,A,S,b;for(let F of Array.from(f.keys())){for(y=f.get(F),x=new uf,A=3/8,S=1/8,b=y.faces.length,b!=2&&(A=.5,S=0,b!=1),x.addVectors(y.a,y.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=y.faces[s],l=0;l<3&&(h=c[xS(v,yS[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),y.newEdge=m.length,m.push(x)}let D,w,g,P,T,L,N,C=[];for(o=0,i=c.length;o<i;o++){for(L=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),w=1-r*Number(D),g=D,r<=2&&(r==2?(w=3/4,g=1/8):r==1||r==0),N=L.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)P=T[s],h=P.a!==L?P.a:P.b,e.add(h);e.multiplyScalar(Number(g)),N.add(e),C.push(N)}let k=C.concat(m),W=C.length,oe,ce,ie,K=[],U=[],V,E,B,O,G=new _l,Q=new _l,j=new _l;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Tl(v.a,v.b,f).newEdge)+W,ce=Number(Tl(v.b,v.c,f).newEdge)+W,ie=Number(Tl(v.c,v.a,f).newEdge)+W,qs(K,oe,ce,ie,v.materialIndex),qs(K,v.a,oe,ie,v.materialIndex),qs(K,v.b,ce,oe,v.materialIndex),qs(K,v.c,ie,ce,v.materialIndex),u&&(V=a[o],E=V[0],B=V[1],O=V[2],G.set(en(E.x,B.x),en(E.y,B.y)),Q.set(en(B.x,O.x),en(B.y,O.y)),j.set(en(E.x,O.x),en(E.y,O.y)),$s(U,G,Q,j),$s(U,E,G,j),$s(U,B,Q,G),$s(U,O,j,Q));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new SS,ff=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new pf().copy(new df(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new pf().copy(new df(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Xs(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new bS(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var mf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof 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:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5,u=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let y=f*h,x=u+Math.sin(y)*p,v=d+Math.cos(y)*a;c.addPoint(c.createPoint(x,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=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as wS,Float32BufferAttribute as Nl,Vector2 as Zt,Vector3 as $e}from"three";var hf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=new Il(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function Kn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Cl(n,t,e,r,o,i){let s=t.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),r===o){let p=s.add(l).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(l,r/Math.sin(p))}}function _S(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Il=class extends wS{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,l=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),l=Math.floor(l);let c=[],p=[],a=[],u=[],d=0,f=e/2,m=Math.PI/r,h=t*Math.cos(Math.PI/r),y=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new $e(0,-f,0),S=new $e(0,f,0),b=new Zt(t,-f),D=new Zt(h,-f),w=new Zt(0,S.y).sub(D),g=new Zt(0,S.y).sub(b),P=new Zt(w.y,-w.x).normalize(),T=new Zt(g.y,-g.x).normalize(),N=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,N);let C;{let U=new $e(P.x,P.y,0),V=new $e(Math.cos(y)*U.x,U.y,Math.sin(y)*U.x);C=U.angleTo(V)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-C)/2),oe=new $e;if(!i){p.push(A.x,A.y,A.z),a.push(0,-1,0),u.push(0,0);let U=d++,V=[],E=b.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let G=O/r*Math.PI*2+m,Q=new Zt(Math.sin(G),Math.cos(G));Kn(E,Q,oe),p.push(oe.x,oe.y,oe.z),a.push(0,-1,0),u.push(0,0),V.push(d++)}for(let O=0;O<V.length;O++)c.push(V[O],U,V[(O+1)%V.length])}let ce=[];{let U=new $e,V=new $e,E=new $e,B=new $e,O=new $e,G=new $e;for(let Q=0;Q<r;Q++){let j=Q/r*Math.PI*2+m,F=(Q+.5)/r*Math.PI*2+m,z=(Q+1)/r*Math.PI*2+m,M=new Zt(Math.sin(j),Math.cos(j)),q=new Zt(Math.sin(F),Math.cos(F)),J=new Zt(Math.sin(z),Math.cos(z));Kn(b,M,V),Kn(b,J,E),Kn(P,q,U),Cl(S,V,E,W,W,B),p.push(B.x,B.y,B.z),Cl(V,S,E,W,k,O),p.push(O.x,O.y,O.z),Cl(E,V,S,k,W,G),p.push(G.x,G.y,G.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let le=V.clone().add(E).multiplyScalar(.5),ne=S.clone().sub(le).normalize(),Pe=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),me=G.clone().sub(O);ie(le,me,Pe,w.angle())}let $,re;{let le=new $e;Kn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=_S(ne,E,S);let fe=G.clone().sub(B);[$,re]=ie(ne,fe,le,C,B.y)}{let le=$,ne=le.clone().setY(0).normalize(),fe=new $e(0,-1,0),Pe=ne.clone().cross(fe);K(le,ne,fe,Pe)}ce.concat(re);{let le=w.angle(),ne=Math.PI-le,fe=S.clone();fe.y-=s/Math.sin(le-Math.PI/2);let Pe=new $e,me=[];for(let be=0;be<l;be++){let lt=[],wt=Math.PI/2-ne*be/l,go=Math.cos(wt),gt=Math.sin(wt),yo=F;for(let Ii=0;Ii<=be;Ii++){let Li=Math.cos(yo),De=Math.sin(yo);U.x=go*De,U.y=gt,U.z=go*Li,Pe.copy(fe).addScaledVector(U,s),p.push(Pe.x,Pe.y,Pe.z),a.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),yo+=Math.PI*2/be/r}me.push(lt)}re.reverse(),me.push(re);let Ge=me.length-1;for(let be=0;be<Ge;be++){let lt=me[be],wt=me[be+1],go=lt.length-1;c.push(wt[1],lt[0],wt[0]);for(let gt=1;gt<=go;gt++)c.push(lt[gt],lt[gt-1],wt[gt]),c.push(wt[gt+1],lt[gt],wt[gt])}}}}}this.setIndex(c),this.setAttribute("position",new Nl(p,3)),this.setAttribute("normal",new Nl(a,3)),this.setAttribute("uv",new Nl(u,2));function ie(U,V,E,B,O){let G=-B/2,Q=(Math.PI-B)/2,j=V.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let F=new $e,z=new $e,M=1,q=d,J=[];for(let ee=0;ee<=l;ee++){let H=G+ee/l*B;z.set(0,0,0),z.addScaledVector(j,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(F.copy(U),F.addScaledVector(V,$),F.addScaledVector(z,s),O!=null){let re=Math.max(0,F.y-O);F.addScaledVector(V,-re/V.y)}p.push(F.x,F.y,F.z),a.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<l;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,le=Z+1;c.push(Z,$,le),c.push($,re,le)}return[U.clone().addScaledVector(V,.5),J]}function K(U,V,E,B){let O=Math.PI/2,G=g.angle()-O,Q=[],j=new $e,F=new $e;for(let M=0;M<=l;M++){let q=[],J=M/l;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),le=Math.atan(Math.tan(G)*$),ne=(O+le)*J,fe=Math.cos(ne),Pe=Math.sin(ne);j.set(0,0,0),j.addScaledVector(V,Pe*$),j.addScaledVector(E,fe),j.addScaledVector(B,Pe*re),F.copy(U).addScaledVector(j,s),p.push(F.x,F.y,F.z),a.push(j.x,j.y,j.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var gf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof 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:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},a={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(S,b,D){return b>e&&D>r?Math.min(S*e/b,S*r/D):b>e?S*e/b:D>r?S*r/D:S}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=u.x,y=u.y,x=a.y;t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(m,x)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=st.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as TS}from"three";var yf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:p}=n.parameters,a=new TS(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as AS}from"three";var xf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new AS(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as NS,Float32BufferAttribute as Ll,Vector3 as CS}from"three";var vf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new Pl(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Pl=class extends NS{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],p=[],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 u=[],d=Math.PI/2,f=(F=0,z=0,M=0)=>new CS(F,z,M),m=f(),h=f(),[y,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-y,+v),f(A,-y,-v),f(A,+y,-v)],g=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),P=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));w.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-v,L=b.z-a;o<=d?(w.z=Math.min(T,L),w.z==L&&(w.y-=(T-L)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-a),m.subVectors(b,D),h.subVectors(w,D);let N=Math.min(m.length(),h.length())*i/100,C=N*Math.tan(o/2),k=N/Math.cos(o/2),W=m.clone().normalize().add(h.normalize()).setLength(k).add(D);m.set(0,g(o,!0),P(o,!0)),u.push([w,m.clone()]);let oe=(Math.PI-o)/s;for(let F=0;F<=s;F++){let z=d+o+F*oe;m.set(0,Math.sin(z)*C,Math.cos(z)*C),m.add(W),h.set(0,g(z),P(z)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let ce=Math.sin(oe/2)*C*2,ie=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[ie-1][0].distanceTo(u[ie][0]),V=K+ce*s+U;u[0].push(1);for(let F=0;F<=s;F++)u[F+1].push(1-(K+F*ce)/V);u[ie].push(0);let[E,B,O]=u[0],G,Q,j;for(let F=1;F<u.length;F++)[G,Q,j]=u[F],l.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Q,j];this.setAttribute("position",new Ll(l,3)),this.setAttribute("normal",new Ll(c,3)),this.setAttribute("uv",new Ll(p,2))}};var bf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof 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:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,a=n.shape,u=t*.5,d=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,D=f+Math.sin(b)*u,w=m+Math.cos(b)*d;a.addPoint(a.createPoint(D,w))}}else for(let S=0;S<o;S++){let b=f+Math.cos(y)*u,D=m+Math.sin(y)*d;a.addPoint(a.createPoint(b,D)),y+=h,b=f+Math.cos(y)*x,D=m+Math.sin(y)*v,S<=o,a.addPoint(a.createPoint(b,D)),y+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let A=st.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as IS}from"three";var Ys=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new IS(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Sf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=LS(t,e,r,t*.5,s,i,0,0,o,l,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function LS(n,t,e,r,o,i,s,l,c,p,a){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new $n(!0,n,t,e,r,o,i,s,l,c,p,a)}import{TorusKnotBufferGeometry as PS}from"three";var wf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,l=t*.5;l!==e&&(l-=e);let c=new PS(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var _f=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof 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:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-p,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))),c.isClosed=!0;for(let d=0,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=st.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferGeometry as Jf,BufferAttribute as em,Uint32BufferAttribute as oc,Float32BufferAttribute as nc,Matrix4 as jw,Vector3 as la}from"three";var OS,Ks=new Promise(n=>{OS=n});import{BufferGeometryLoader as zw}from"three";import{EventDispatcher as Rw,Matrix3 as Vw,Vector3 as rc}from"three";import{Mesh as Ew,Matrix4 as Gw}from"three";import{Matrix4 as Of}from"three";import{Object3D as BS,Matrix4 as ES}from"three";import{HemisphereLight as Tf}from"three";function Fe(n,t){return t.color(n)}var Ol=n=>"isEntity"in n,Jt=n=>"isAbstractMesh"in n,er=n=>n!==null&&n.objectType==="BooleanObject",Af=n=>n.objectType==="CombinedCamera";var Qs=n=>"objectHelper"in n;function MS(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Er.identity)),e&&(n.updateMatrix(),er(n.parent)&&Jt(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function DS(n,t){MS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Nf(n,t,e){DS(n,t),t.color!==void 0&&(n.color=Fe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Tf)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Tf)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Cf(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Zs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Ol(e))}isDescendantOf(e){e instanceof BS&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new ES().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Ol(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Lf,Line3 as GS,Matrix4 as Ml,Vector3 as It}from"three";var tn=new Lf,tr=new It,rr=new It,rn=new Ml,Pf=[new It(-1,1,1),new It(-1,-1,1),new It(1,-1,1),new It(1,1,1),new It(-1,1,-1),new It(-1,-1,-1),new It(1,-1,-1),new It(1,1,-1)],RS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],VS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function FS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,p=-1/0;for(let a=e;a<r;a++){let u=t.getX(a),d=t.getY(a),f=t.getZ(a);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>l&&(l=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var If=(n,t,e)=>{if(Jt(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?tr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(FS(tn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),tn.getCenter(tr)),n.forceComputeSize?tn.getSize(rr).multiplyScalar(.5):rr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Qs(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");tn.setFromArray(r.array),tn.getCenter(tr),tn.getSize(rr).multiplyScalar(.5)}else tr.setScalar(0),rr.setScalar(0);rn.copy(t).multiply(n.matrixWorld),rr.x===0&&rr.y===0&&rr.z===0?e.push(new It(tr.x,tr.y,tr.z).applyMatrix4(rn)):Pf.forEach(r=>{e.push(r.clone().multiply(rr).add(tr).applyMatrix4(rn))})},Qn=class extends Lf{constructor(){super(...arguments);this.matrix=new Ml;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ml().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&If(s,r,i)}):If(e,r,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(rn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(rr).multiplyScalar(.5),this.getCenter(tr),rn.copy(this.matrix).setPosition(tr),this.vertices=Pf.map(e=>e.clone().multiply(rr).applyMatrix4(rn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=RS.map(([e,r])=>new GS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new It))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=VS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var or=n=>"isEntity"in n,Mf=n=>"isAbstractMesh"in n,Lt=n=>class extends Zs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Of;this._singleBBox=new Qn;this._recursiveBBox=new Qn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{or(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)or(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)or(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)or(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Of,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)or(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ro(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Ro(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as US,Vector3 as Zn,Euler as Df,MathUtils as kr}from"three";import{Object3D as zS}from"three";var Dl=class extends zS{},Js=class extends Dl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var no=class extends US{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Zn),i=.1;this.parameters=ss.defaultData(o.toArray(),i),Zr(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new Js(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*kr.DEG2RAD,i=r.end*kr.DEG2RAD,s=o-i,l=new Df(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD),c;switch(r.axis){case"z":c=new Zn(0,0,1);break;case"y":c=new Zn(0,1,0);break;default:case"x":c=new Zn(1,0,0);break}for(let[p,a]of this.children.entries()){a.scale.x=r.scale[0],a.scale.y=r.scale[1],a.scale.z=r.scale[2],a.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":a.rotation.set(0,u,0);break;case"y":a.rotation.set(0,0,u);break;case"z":a.rotation.set(u,0,0);break}a.translateOnAxis(c,r.radius),a.position.x+=r.position[0],a.position.y+=r.position[1],a.position.z+=r.position[2],r.alignment===!0?(a.rotation.x+=l.x,a.rotation.y+=l.y,a.rotation.z+=l.z):a.rotation.copy(l)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Df(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Zn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let a=this.children[r++];a.scale.setScalar(1),a.rotation.set(0,0,0),a.position.x=o.size[0]*l-s.x,a.position.y=o.size[1]*c-s.y,a.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let l=0;l<o.count[2];l++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*l}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),Zr(this.parameters,e),this.update(),this}};import{NormalBlending as Pw,ShaderMaterial as Ow}from"three";import{CubeReflectionMapping as ZS,CubeRefractionMapping as JS,CubeUVReflectionMapping as ew,LinearEncoding as Rf,sRGBEncoding as tw}from"three";var Jn=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as jS}from"three";var Xe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=jS.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Xe&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Bl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Bl;import{Vector2 as Bf}from"three";import{MathUtils as kS}from"three";var ae=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=kS.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,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return l.name=l.name||super.build(e,r,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(p+" = "+a+";"),e.format(p,c,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,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,r,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,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}};var Ye=class extends Ae{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Bf?e:new Bf(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Ef}from"three";var Ze=class extends Ae{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ef?e:new Ef(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var Pt=class extends Ae{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ue?e:new Ue(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var HS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Gf=/[a-z_0-9]+/gi,X=class extends ae{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let l,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let a=[];for(;l=Gf.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&He.containsKeyword(f)){let y=this.keywords[f];if(!y){let x=He.getKeywordData(f);x.cache&&(y=e.keywords[f]),y=y||He.getKeyword(f,e),x.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&He.contains(h)&&e.include(He.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=HS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Gf);if(l){let c=0;for(;c<l.length;){let p=l[c++],a;p==="in"||p==="out"||p==="inout"?a=l[c++]:(a=p,p="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var WS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,El=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||El.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let l,c,p="",a=WS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],p=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=p}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},ye=El;ye.PI="PI",ye.PI2="PI2",ye.RECIPROCAL_PI="RECIPROCAL_PI",ye.RECIPROCAL_PI2="RECIPROCAL_PI2",ye.LOG2="LOG2",ye.EPSILON="EPSILON";var qS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
+
)*?)}`,"gim"),$S=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),on=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=qS.exec(e);if(r){let o=r[2],i;for(;i=$S.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var nn=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};He.addKeyword("uv",function(){return new nn});He.addKeyword("uv2",function(){return new nn(1)});import{LinearEncoding as XS,sRGBEncoding as YS}from"three";var io=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??io.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case XS:return["Linear"];case YS:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=io.Nodes[this.method],l=e.include(s);if(l===io.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,r)}else return e.format(l+"( "+o+" )",i,r)}fromEncoding(e){let r=io.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=io.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},at=io;at.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
23
3
|
`)),sRGBToLinear:new X(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
24
4
|
`)),LinearTosRGB:new X(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
25
|
-
`))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";import{Texture as
|
|
5
|
+
`))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";var ve=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as KS}from"three";var ft=class extends Ae{constructor(e=new KS,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new nn,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let p={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new at(new ve("",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,r)}};var Y=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var ei=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,r)+"( ",p=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let u=l.inputs[a],d=this.inputs[a]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,i,r)}};var Gl=class extends ae{constructor(e,r,o=Gl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,r)}},mt=Gl;mt.ADD="+",mt.SUB="-",mt.MUL="*",mt.DIV="/";var Te=class extends ae{constructor(e,r=Te.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Te.MIX:case Te.CLAMP:case Te.REFRACT:case Te.SMOOTHSTEP:case Te.FACEFORWARD:return 3;case Te.MIN:case Te.MAX:case Te.MOD:case Te.STEP:case Te.REFLECT:case Te.DISTANCE:case Te.DOT:case Te.CROSS:case Te.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Te.LENGTH:case Te.DISTANCE:case Te.DOT:return"f";case Te.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,l=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,p=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Te.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,r);case Te.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,r);case Te.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Te.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Te.MIN:case Te.MAX:case Te.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Te.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Te.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,p===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 d=[];d.push(o),i&&d.push(i),s&&d.push(s);let f=this.getNumInputs(e);if(d.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",u,r)}},de=Te;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var sn=class extends ae{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let s=new ei(sn.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new at(new ve("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new at(new ve("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new at(new ve("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new at(new ve("","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 ve(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new ve(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new ve(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new ve(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new ve("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ei(sn.Nodes.roughnessToMip,[i]),l=new de(s,sn.Nodes.m0,sn.Nodes.cubeUV_maxMipLevel,de.CLAMP),c=new de(l,de.FLOOR),p=new de(l,de.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new mt(c,new Y(1).setReadonly(!0),mt.ADD)),d=new de(a,u,p,de.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},an=sn;an.Nodes=function(){let e=new on(`struct TextureCubeUVData {
|
|
26
6
|
vec4 tl;
|
|
27
7
|
vec4 tr;
|
|
28
8
|
vec4 br;
|
|
@@ -87,7 +67,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
87
67
|
uv.x -= texelSize;
|
|
88
68
|
vec4 bl = texture2D(envMap, uv);
|
|
89
69
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
90
|
-
}`,[e,l,c,r,o,i,s]);p.useKeywords=!1;let a=new ye("float r0 1.0",!0),u=new ye("float v0 0.339",!0),d=new ye("float m0 -2.0",!0),
|
|
70
|
+
}`,[e,l,c,r,o,i,s]);p.useKeywords=!1;let a=new ye("float r0 1.0",!0),u=new ye("float v0 0.339",!0),d=new ye("float m0 -2.0",!0),f=new ye("float r1 0.8",!0),m=new ye("float v1 0.276",!0),h=new ye("float m1 -1.0",!0),y=new ye("float r4 0.4",!0),x=new ye("float v4 0.046",!0),v=new ye("float m4 2.0",!0),A=new ye("float r5 0.305",!0),S=new ye("float v5 0.016",!0),b=new ye("float m5 3.0",!0),D=new ye("float r6 0.21",!0),w=new ye("float v6 0.0038",!0),g=new ye("float m6 4.0",!0),P=[a,u,d,f,m,h,y,x,v,A,S,b,D,w,g],T=new X(`float roughnessToMip(float roughness) {
|
|
91
71
|
float mip = 0.0;
|
|
92
72
|
if (roughness >= r1) {
|
|
93
73
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -101,7 +81,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
101
81
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
102
82
|
}
|
|
103
83
|
return mip;
|
|
104
|
-
}`,
|
|
84
|
+
}`,P);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var so=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??so.VIEW}getShared(){return this.scope===so.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let l;switch(this.scope){case so.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case so.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case so.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),r)}},Ke=so;Ke.LOCAL="local",Ke.WORLD="world",Ke.VIEW="view",Ke.NORMAL="normal";He.addKeyword("viewNormal",function(){return new Ke(Ke.VIEW)});He.addKeyword("localNormal",function(){return new Ke(Ke.NORMAL)});He.addKeyword("worldNormal",function(){return new Ke(Ke.WORLD)});var nr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??nr.LOCAL}getType(){switch(this.scope){case nr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case nr.LOCAL:case nr.WORLD:return!1}return!0}generate(e,r,o,i,s){let l;switch(this.scope){case nr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case nr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case nr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case nr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),r)}},ht=nr;ht.LOCAL="local",ht.WORLD="world",ht.VIEW="view",ht.PROJECTION="projection";He.addKeyword("position",function(){return new ht});He.addKeyword("worldPosition",function(){return new ht(ht.WORLD)});He.addKeyword("viewPosition",function(){return new ht(ht.VIEW)});var Et=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Et.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Et.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Et.VECTOR:{let s=new Ke(Ke.VIEW),l=e.context.roughness,c=s.build(e,"v3"),p=new ht(ht.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;a&&(u=`normalize( mix( ${u}, ${c}, ${a} * ${a} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Et.CUBE:{let s=new Et(Et.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Et.SPHERE:{let s=new Et(Et.VECTOR).build(e,"v3"),l="normalize( ( viewMatrix * vec4( "+s+", 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(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},ir=Et;ir.CUBE="cube",ir.SPHERE="sphere",ir.VECTOR="vector";var ea=class extends ae{constructor(e=new ft,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new an(this.value,r??new ir(ir.VECTOR),o),this.irradianceNode=new an(this.value,new Ke(Ke.WORLD),new Y(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as QS}from"three";var ta=class extends Ae{constructor(e=new QS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new ir,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new at(new ve("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,p),e.removeContext(),e.format(l,p,r)}};var Vf=["x","y","z","w"],rw=["float","vec2","vec3","vec4"],ow={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},nw={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[]"},ra=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
|
|
105
85
|
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
106
86
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
107
87
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -146,7 +126,27 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
146
126
|
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let l=this.getVars(o),c=l[t];if(!c){let p=l.length;c={name:r||"node"+i+p+(s?"_"+s:""),type:e},l.push(c),l[t]=c}return c}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
147
127
|
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],l=s.type,c=s.name,p=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?r+=e+" "+a.substring(0,a.length-2)+" "+c+`[${p}];
|
|
148
128
|
`:r+=e+" "+a+" "+c+`;
|
|
149
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof
|
|
129
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Xe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,p=new Jn({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}else{let l=this.inputs.uniforms,c=l.list.length,p=new Jn({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof ye?o=this.includes.consts:t instanceof on&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let s=i[t.name];if(s||(s=i[t.name]={node:t,deps:[]},i.push(s),s.src=t.build(this,"source")),t instanceof X&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let l=0;do this.include(t.includes[l++],e);while(l<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return rw[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case ZS:case JS:return new ta(r);case ew:return new ea(new ft(r));default:return new ft(r)}else{if(r.isVector2)return new Ye(r);if(r.isVector3)return new Ze(r);if(r.isVector4)return new Pt(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return ow[t]||t}getFormatByType(t){return nw[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Vf[t]}getIndexByElement(t){return Vf.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=Rf,e===Rf&&this.context.gamma&&(e=tw),e}};import{Vector2 as co,Vector3 as lr,Vector4 as dn}from"three";var we=class extends Ae{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ue?e:new Ue(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return p?this.generateReadonly(e,r,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,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var he=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,l){return e.format(this.value.toString(),i,r)}};import{UniformsLib as iw,UniformsUtils as sw}from"three";var ao=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new we(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new he(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(sw.merge([iw.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
130
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
131
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
132
|
+
#include <defaultnormal_vertex>
|
|
133
|
+
#endif
|
|
134
|
+
|
|
135
|
+
vec3 displaced_position = position;
|
|
136
|
+
vec3 displaced_normal = normal;
|
|
137
|
+
|
|
138
|
+
#if defined( USE_LAYER_DISPLACE )
|
|
139
|
+
vec3 transformed;
|
|
140
|
+
vec3 transformedNormal;
|
|
141
|
+
#endif
|
|
142
|
+
`,"#include <normal_vertex>",`
|
|
143
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
144
|
+
#include <begin_vertex>
|
|
145
|
+
#endif /* !USE_LAYER_DISPLACE */
|
|
146
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
147
|
+
`)}else{this.color===void 0&&(this.color=new we(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
148
|
+
`));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>"),r=l.join(`
|
|
149
|
+
`)}return r}};import{UniformsLib as Uf,UniformsUtils as cw}from"three";var Hr=class extends Ae{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};import{Matrix3 as aw}from"three";var ln=class extends Ae{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new aw}generateReadonly(e,r,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Gt=class extends Ae{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector4 as Ff}from"three";var Rt=class extends Ae{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Ff?new Array(e).fill(r):new Array(e).fill(new Ff(0))}};var ti=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(ti||{}),ot=function(){let t=new X(`vec3 random3(vec3 c) {
|
|
150
150
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
151
151
|
vec3 r;
|
|
152
152
|
r.z = fract(512.0*j);
|
|
@@ -323,7 +323,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
323
323
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
324
324
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
325
325
|
return 2.2 * n_xyz;
|
|
326
|
-
}`,[o,i,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:a,perlin:d}}();var
|
|
326
|
+
}`,[o,i,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:a,perlin:d}}();var ri=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d,f){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=p,this.colorC=a,this.colorD=u,this.alpha=d,this.noiseType=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(ti)[this.noiseType.value],c=new X(`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) {
|
|
327
327
|
vec3 st = position / size;
|
|
328
328
|
st /= scale;
|
|
329
329
|
vec3 q = vec3(${l}(st),
|
|
@@ -343,7 +343,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
343
343
|
|
|
344
344
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
345
345
|
return clamp(color, 0.0, 1.0).rgb;
|
|
346
|
-
}`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),p=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(p+"("+a.join(",")+")",this.getType(e),r)}};
|
|
346
|
+
}`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),p=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(p+"("+a.join(",")+")",this.getType(e),r)}};ri.numOctaves=5;import{UniformsLib as zf,UniformsUtils as lw}from"three";var oa=class extends Xe{constructor(){super("phong");this.nodeType="Phong";this.color=new we(5855577),this.specular=new we(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new he(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(lw.merge([zf.fog,zf.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(`
|
|
347
347
|
`));let i=["#include <beginnormal_vertex>",`
|
|
348
348
|
#ifndef USE_LAYER_DISPLACE
|
|
349
349
|
#include <defaultnormal_vertex>
|
|
@@ -362,7 +362,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
362
362
|
#include <begin_vertex>
|
|
363
363
|
#endif
|
|
364
364
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
365
|
-
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize}),this.color===void 0&&(this.color=new
|
|
365
|
+
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize}),this.color===void 0&&(this.color=new we(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=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(`
|
|
366
366
|
`));let u=["#include <normal_fragment_begin>",`
|
|
367
367
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
368
368
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -378,14 +378,14 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
378
378
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
379
379
|
}
|
|
380
380
|
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
381
|
-
`)}return r}};var
|
|
381
|
+
`)}return r}};var Rl=class extends ae{constructor(e,r,o,i,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,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,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Rl.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},oi=Rl;oi.Nodes=function(){return{fresnel:new X(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
382
382
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
383
383
|
|
|
384
384
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
385
385
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
386
386
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
387
387
|
return color;
|
|
388
|
-
}`)}}();var
|
|
388
|
+
}`)}}();var Vl=class extends ae{constructor(e,r,o,i,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,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,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Vl.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ni=Vl;ni.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
389
389
|
vec3 st = position / noiseScale;
|
|
390
390
|
vec3 q = vec3(simplex3d(st),
|
|
391
391
|
simplex3d(st + vec3(1.0)),
|
|
@@ -407,7 +407,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
407
407
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
408
408
|
|
|
409
409
|
return res;
|
|
410
|
-
}`,[e])}}();var
|
|
410
|
+
}`,[e])}}();var Fl=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d,f,m,h,y,x){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=p,this.contourDirection=a,this.positionalLines=u,this.compensation=d,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),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(`
|
|
411
411
|
vID = randomColor.r;
|
|
412
412
|
if (${s}) {
|
|
413
413
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -421,7 +421,7 @@ var ah=Object.create;var Aa=Object.defineProperty;var lh=Object.getOwnPropertyDe
|
|
|
421
421
|
// if this offset is the biggest of all the potential offsets
|
|
422
422
|
gl_Position = ${c}_clipPosition;
|
|
423
423
|
}
|
|
424
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
424
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Fl.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),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ii=Fl;ii.Nodes=function(){let e=new X(`
|
|
425
425
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
426
426
|
{
|
|
427
427
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -561,7 +561,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
561
561
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
562
562
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
563
563
|
return result;
|
|
564
|
-
}`,[e])}}();var
|
|
564
|
+
}`,[e])}}();var zl=class extends ae{constructor(e,r,o,i,s,l,c,p){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,this.aspectRatio=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(zl.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},si=zl;si.Nodes=function(){let e=new X(`
|
|
565
565
|
float gaussian(vec2 i) {
|
|
566
566
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
567
567
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
@@ -649,7 +649,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
649
649
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
650
650
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
651
651
|
return transmission;
|
|
652
|
-
}`,[l])}}();var
|
|
652
|
+
}`,[l])}}();var cn=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=p,this.colors=a,this.steps=u,this.num=d,this.alpha=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new X(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
653
653
|
vec4 color = colors[0];
|
|
654
654
|
#ifdef ${o}_IS_VECTOR
|
|
655
655
|
#ifdef ${o}_LINEAR
|
|
@@ -689,7 +689,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
689
689
|
|
|
690
690
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
691
691
|
return color.rgb;
|
|
692
|
-
}`,[
|
|
692
|
+
}`,[cn.Nodes.vectorLinearWorldSpaceDepth,cn.Nodes.vectorLinearObjectSpaceDepth,cn.Nodes.vectorSphericalObjectSpaceDepth,cn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),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),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ai=cn;ai.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
693
693
|
vec3 n = normalize(direction);
|
|
694
694
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
695
695
|
return ( dist - near ) / ( far - near );
|
|
@@ -703,7 +703,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
703
703
|
}`),i=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
704
704
|
float dist = length(position - origin);
|
|
705
705
|
return ( dist - near ) / ( far - near );
|
|
706
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
706
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var li=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var Ul=(e=>(e.NOISE="noise",e.MAP="map",e))(Ul||{}),jl=class extends ae{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new he(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(Ul)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ln(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Ul)[this.displacementTypeIndex.value]){case"map":{o=e.include(jl.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(ti)[this.noiseFunctionIndex.value],c=new X(`vec3 orthogonal(vec3 v) {
|
|
707
707
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
708
708
|
}`),p=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
709
709
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
@@ -723,7 +723,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
723
723
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
724
724
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
725
725
|
return displaced_position;
|
|
726
|
-
}`,[p,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),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},
|
|
726
|
+
}`,[p,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),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ci=jl;ci.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
|
|
727
727
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
728
728
|
}`),r=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
729
729
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -745,7 +745,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
745
745
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
746
746
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
747
747
|
return displaced_position;
|
|
748
|
-
}`,[e,r])}}();var
|
|
748
|
+
}`,[e,r])}}();var kl=class extends ae{constructor(e,r,o,i,s,l,c,p){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(kl.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ui=kl;ui.Nodes=function(){return{gradient:new X(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
749
749
|
vec4 color = colors[0];
|
|
750
750
|
vec2 m = morph / vUv.xy;
|
|
751
751
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -787,7 +787,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
787
787
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
788
788
|
|
|
789
789
|
return color.xyz;
|
|
790
|
-
}`)}}();var
|
|
790
|
+
}`)}}();var di=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.mat=p,this.alpha=a,this.mode=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(di.Nodes.cylindrical);break;case 2:i=e.include(di.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 X(`
|
|
791
791
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
792
792
|
|
|
793
793
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -806,7 +806,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
806
806
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
807
807
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
808
808
|
return col;
|
|
809
|
-
}`);i=e.include(c);break;default:i=e.include(
|
|
809
|
+
}`);i=e.include(c);break;default:i=e.include(di.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),r)}},pi=di;pi.Nodes=function(){let e=new X(`
|
|
810
810
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
811
811
|
vec3 posN = normalize(position);
|
|
812
812
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -880,14 +880,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
880
880
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
881
881
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
882
882
|
return col;
|
|
883
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var
|
|
883
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var Hl=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include(Hl.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},fi=Hl;fi.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
884
884
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
885
885
|
normal *= step( vec3(0.5), cnormal );
|
|
886
886
|
|
|
887
887
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
888
888
|
|
|
889
889
|
return normal;
|
|
890
|
-
}`)}}();var Je={normalRenderTarget:new
|
|
890
|
+
}`)}}();var Je={normalRenderTarget:new ft,normalRenderTargetDepth:new ft,transmissionRenderTarget:new ft,transmissionSize:new Ye(2048,2048),transmissionRenderTargetDepth:new ft,pixelRatioNode:new Y(1),resolution:new Ye,penumbraSize:new Gt(5,.5)};for(let n of Object.values(Je))n.isRenderGlobal=!0;var mi=class extends Xe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new we(5855577),this.emissive=new we(0),this.emissiveIntensity=new Y(1),this.shadingAlpha=new Y(1),this.shadingBlend=new he(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(cw.merge([Uf.fog,Uf.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(`
|
|
891
891
|
`));let i=["#include <beginnormal_vertex>",`
|
|
892
892
|
#ifndef USE_LAYER_DISPLACE
|
|
893
893
|
#include <defaultnormal_vertex>
|
|
@@ -979,7 +979,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
979
979
|
#pragma unroll_loop_end
|
|
980
980
|
#endif
|
|
981
981
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
982
|
-
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize}),this.color===void 0&&(this.color=new
|
|
982
|
+
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize}),this.color===void 0&&(this.color=new we(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=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(`
|
|
983
983
|
`));let u=["#include <normal_fragment_begin>",`
|
|
984
984
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
985
985
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -993,7 +993,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
993
993
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
994
994
|
}
|
|
995
995
|
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
996
|
-
`)}return r}};import{UniformsLib as
|
|
996
|
+
`)}return r}};import{UniformsLib as Wl,UniformsUtils as uw}from"three";var hi=class extends Xe{constructor(){super("standard");this.nodeType="Standard";this.color=new we(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.shadingAlpha=new Y(1),this.shadingBlend=new he(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(uw.merge([Wl.fog,Wl.lights])),Wl.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(`
|
|
997
997
|
`));let i=["#include <beginnormal_vertex>",`
|
|
998
998
|
#if !defined( USE_LAYER_DISPLACE )
|
|
999
999
|
#include <defaultnormal_vertex>
|
|
@@ -1011,8 +1011,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1011
1011
|
#include <begin_vertex>
|
|
1012
1012
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1013
1013
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1014
|
-
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new
|
|
1015
|
-
`));let
|
|
1014
|
+
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new we(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),p=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
1015
|
+
`));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
1016
1016
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1017
1017
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1018
1018
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -1020,14 +1020,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1020
1020
|
if (dot(normal, faceNormal) < 0.0) {
|
|
1021
1021
|
normal *= -1.0;
|
|
1022
1022
|
}
|
|
1023
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];
|
|
1023
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",l.code," float metalnessFactor = "+l.result+";"),u&&f.push(u.code,"#ifdef ALPHATEST"," if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),f.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?f.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):f.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),f.push("#include <lights_fragment_begin>"),f.push("#include <lights_fragment_end>"),f.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),f.push(`
|
|
1024
1024
|
if (outgoingLight != diffuseColor) {
|
|
1025
1025
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1026
1026
|
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
|
|
1027
1027
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
|
|
1028
1028
|
}
|
|
1029
|
-
`),a&&
|
|
1030
|
-
`)}return r}};import{UniformsLib as
|
|
1029
|
+
`),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
1030
|
+
`)}return r}};import{UniformsLib as jf,UniformsUtils as pw}from"three";var gi=class extends Xe{constructor(){super("toon");this.nodeType="Toon";this.color=new we(5855577),this.specular=new we(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new he(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(pw.merge([jf.fog,jf.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(`
|
|
1031
1031
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1032
1032
|
#ifndef USE_LAYER_DISPLACE
|
|
1033
1033
|
#include <defaultnormal_vertex>
|
|
@@ -1045,7 +1045,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1045
1045
|
#include <begin_vertex>
|
|
1046
1046
|
#endif
|
|
1047
1047
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1048
|
-
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize}),this.color===void 0&&(this.color=new
|
|
1048
|
+
`)}else{e.mergeUniform({penumbraSize:Je.penumbraSize}),this.color===void 0&&(this.color=new we(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=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>",`
|
|
1049
1049
|
varying vec3 vViewPosition;
|
|
1050
1050
|
struct ToonMaterial {
|
|
1051
1051
|
vec3 diffuseColor;
|
|
@@ -1081,7 +1081,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1081
1081
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
1082
1082
|
}
|
|
1083
1083
|
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
1084
|
-
`)}return r}};import{Vector2 as
|
|
1084
|
+
`)}return r}};import{Vector2 as yi,Vector3 as Tr,Vector4 as ql}from"three";function kf(n,t){switch(n.type){case"fresnel":return mw(n,t);case"gradient":return hw(n);case"depth":return gw(n);case"normal":return yw(n);case"noise":return xw(n,t);case"rainbow":return vw(n);case"toon":return bw(n,t);case"outline":return Sw(n,t);case"transmission":return ww(n,t);case"color":return fw(n,t)}}function dw(n){return{type:n.type}}function ar(n){let{alpha:t,mode:e}=n;return{...dw(n),alpha:t,mode:e}}function fw(n,t){return{...ar(n),color:Fe(n.color,t)}}function mw(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...ar(n),color:Fe(s,t),bias:e,scale:r,intensity:o,factor:i}}function hw(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:l}=n;return{...ar(n),gradientType:t,smooth:e,colors:r.map(c=>new ql(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new yi(...s),morph:new yi(...l),angle:i}}function gw(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:p,smooth:a,num:u}=n;return{...ar(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Tr(...s),direction:l?new Tr(...l):new Tr(1,0,0),num:u,colors:c.map(d=>new ql(d[0],d[1],d[2],d[3])),steps:p,smooth:a}}function yw(n){let{cnormal:t}=n;return{...ar(n),cnormal:new Tr(t[0],t[1],t[2])}}function xw(n,t){return{...ar(n),scale:n.scale,move:n.move,fA:new yi(...n.fA),fB:new yi(...n.fB),size:new Tr(...n.size),distortion:new yi(...n.distortion),colorA:Fe(n.colorA,t),colorB:Fe(n.colorB,t),colorC:Fe(n.colorC,t),colorD:Fe(n.colorD,t),noiseType:n.noiseType}}function vw(n){return{...ar(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Tr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Tr(...n.offset)}}function bw(n,t){return{...ar(n),positioning:n.positioning,colors:n.colors.map(e=>new ql(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Tr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Fe(n.shadowColor,t),offset:new Tr(...n.offset)}}function Sw(n,t){return{...ar(n),outlineColor:Fe(n.outlineColor,t),contourColor:Fe(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation}}function ww(n,t){return{...ar(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var Wr=class extends Ue{};import{Vector4 as Tw}from"three";import{Texture as _w}from"three";var $l=new Map,xi={url:"head",time:0,data:null,next:null,prev:null},un={url:"tail",time:1/0,data:null,next:null,prev:null};xi.next=un;un.prev=xi;var Hf=0;function Wf(n){if(typeof n=="string")return n;let t=Date.now(),e=$l.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},$l.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=un.prev,e.next=un,un.prev.next=e,un.prev=e,t-Hf>1e3*10&&(Hf=t+1e3,setTimeout(()=>{let r=Date.now(),o=xi.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),$l.delete(o.data),o=o.next,o.prev=xi,xi.next=o},900)),e.url}var pn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){typeof document>"u"||(this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=Wf(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(t){let e=this[t];if(e)return e;{let r=new _w(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var lo=class extends pn{};var qr=class extends Ae{};var Xl={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["num","smooth","isWorldSpace","gradientType","isVector"]};function Aw(n,t){let e=Xl[n.type];return e!==void 0?e.includes(t):!1}function Yl(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let s=i.image,l=t.image(s),c=r;c instanceof lo||c.image.dispose(),c.image=l}if("wrapping"in i){let s=r;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 qf(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||Kl(i,e,r))continue;e.visible=r.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof qr))switch(o=o||Aw(e,i),l.constructor){case we:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Wr?l.value=new Ue(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Pt:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Wr?l.value=new Ue(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Ye:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case Ze:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case ft:{Yl(s,t,e);break}case Rt:{l.value=s.map(c=>new Tw(...c));break}default:{l.value=s;break}}}return o}var Ql=class extends ae{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Ql.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),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},vi=Ql;vi.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1085
1085
|
vec3 viewDir = normalize( vViewPosition );
|
|
1086
1086
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1087
1087
|
vec3 y = cross( viewDir, x );
|
|
@@ -1093,7 +1093,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1093
1093
|
|
|
1094
1094
|
return matcapColor.rgb;
|
|
1095
1095
|
}
|
|
1096
|
-
`)}}();var
|
|
1096
|
+
`)}}();var bi=class extends qr{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as Nw}from"three";var na=class extends qr{constructor(e){super("v3");this.image=e;this._value=new Nw}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Zl=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=p,this.offset=a,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Zl.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),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Si=Zl;Si.Nodes=function(){let e=new X(`float rand(float n) {
|
|
1097
1097
|
return fract(sin(n) * 43758.5453123);
|
|
1098
1098
|
}`),r=new X(`float hash1(float p) {
|
|
1099
1099
|
p = fract(p * 0.011);
|
|
@@ -1329,5 +1329,5 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1329
1329
|
|
|
1330
1330
|
return color.xyz;
|
|
1331
1331
|
|
|
1332
|
-
}`,[ot.simplex,e,o,s])}}();import{Matrix3 as _w}from"three";function yf(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var xa=class extends bn{constructor(e,r){super(new _w);this.repeat=e;this.offset=r;yf(this.value,e,r)}updateMatrix(){yf(this.value,this.repeat,this.offset)}};var pr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)dc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return dr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new Ai(i,r.texture.wrapping),l=new ya(i),c=new xa(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new ge(r.projection??0),u=new ge(["x","y","z"].indexOf(r.axis)??0),d=new ge(r.side??0),m=new Ke(r.size?new uo(r.size[0],r.size[1]):new uo(100,100)),f=new Y(r.alpha??1),h=new ge(r.mode??0),g=new gi(s,l,p,a,u,d,m,c,f,h),x=new ve(g.calpha,"f");return new We(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,axis:u,side:d,size:m,mat:c,alpha:f,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new Ai(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new ge(r.mode??0),p=new Ti(s,l,c),a=new ve(p.calpha,"f");return new We(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Ze(new ur(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new ge(r.noiseType??0),a=new fi(l,c,i,s,p);return new Ni(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:p},a)}else throw new Error;else return ww(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:gf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?pc(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},We=class extends pr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},Ni=class extends pr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},dr=class extends pr{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,l=new Y(o.alpha),c=new ge(o.mode),p;if(o.category==="lambert"){s=new vi;let a=new Se(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="phong"){s=new ga;let a=new Y(o.shininess??30),u=new Se(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="toon"){s=new _i;let a=new Y(o.shininess??30),u=new Se(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new bi;let a=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:a,metalness:u,reflectivity:d},s.roughness=a,s.metalness=u,s.reflectivity=d}else s=new so,p={};return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new dr(e,r,o,s,p)}};function xf(n){let t=n instanceof pr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Sw(n,t,e,r){switch(n.type){case"color":{let o=new Se(r.color??5855577),i=new Y(r.alpha??1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ge(r.mode??0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Se(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),l=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),a=new ge(r.mode??0),u=new li(o,i,s,l,c,p,a),d=new ve(u.calpha,"f");return new We(t,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:p,mode:a},u,a,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new Ze(r.wavelengths??new ur(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new Ze(r.offset??new ur(0,0,0)),a=new Y(r.alpha??1),u=new ci(o,i,s,l,c,p,a),d=new ve(u.calpha,"f"),m=new ge(r.mode??0);return new We(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,mode:m},u,m,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),l=Je.transmissionSize,c=Je.transmissionRenderTarget,p=Je.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new Ke(u/a,1):new Ke(1,a/u),m=new Y(r.alpha??1),f=new pi(o,i,s,l,c,p,d,m),h=new ve(f.calpha,"f"),g=new ge(r.mode??0);return new We(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:m,mode:g},f,g,h)}case"toon":{let o=new ge(r.positioning??0),i;r.colors?i=new Vt(r.colors.length,r.colors):(i=new Vt(10,new Tn(0,0,0,1)),i.value[1]=new Tn(1,1,1,1));let s;r.steps?s=new Ft(r.steps.length,r.steps):(s=new Ft(10,1),s.value[0]=0);let l=new Ze(r.source??new ur(0,0,0)),c=new qr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new Lt(r.shadowColor),d=new Ze(r.offset??new ur(0,0,0)),m=new Y(r.alpha??1),f=new Ci(o,i,s,l,c,p,a,u,d,m),h=new ve(f.calpha,"f"),g=new ge(r.mode??0);return new We(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:m,mode:g},f,g,h)}case"outline":{let o=new Se(r.outlineColor??16777215),i=new Se(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),l=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),a=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new Ze(r.contourDirections??new ur(0,1,0)),m=new qr(r.positionalLines??!1),f=new qr(r.compensation??!0),h=Je.normalRenderTarget,g=Je.normalRenderTargetDepth,x=Je.pixelRatioNode,v=Je.resolution,A=new Y(r.alpha??1),_=new ui(o,i,s,l,c,p,a,u,d,m,f,v,h,g,x,A),b=new ve(_.calpha,"f"),D=new ge(r.mode??0);return new We(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:m,compensation:f,alpha:A,mode:D},_,D,b)}case"depth":{let o=new ge(r.gradientType??0),i=new qr(r.smooth??!1),s=new Y(r.near??50),l=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),a=new Ze(r.origin??new ur),u=new Ze(r.direction??new ur),d=new ge(r.num??0),m;r.colors?m=new Vt(d.value+1,r.colors):(m=new Vt(d.value+1,new Tn(0,0,0,1)),m.value[1]=new Tn(1,1,1,1));let f;r.steps?f=new Ft(d.value+1,r.steps):(f=new Ft(d.value+1,1),f.value[0]=0);let h=new Y(r.alpha??1),g=new ge(r.mode??0),x=new di(o,i,s,l,c,p,a,u,m,f,d,h),v=new ve(x.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:m,steps:f,num:d,alpha:h,mode:g},x,g,v)}case"noise":{let o=new Y(r.scale??1),i=new Ze(r.size??new ur(100,100,100)),s=new Y(r.move??1),l=new Ke(r.fA??new uo(1.7,9.2)),c=new Ke(r.fB??new uo(8.3,2.8)),p=new Ke(r.distortion??new uo(1,1)),a=new Lt(r.colorA),u=new Lt(r.colorB),d=new Lt(r.colorC),m=new Lt(r.colorD),f=new Y(r.alpha??1),h=new ge(r.mode??0),g=new ge(r.noiseType??0),x=new ai(o,i,s,l,c,p,a,u,d,m,f,g),v=new ve(x.calpha,"f");return new We(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:m,alpha:f,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new Ze(r.cnormal??new ur(1,1,1)),i=new Y(r.alpha??1),s=new ge(r.mode??0),l=new xi(o,i),c=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new We(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new ge(r.gradientType??0),i=new qr(r.smooth??!1),s;r.colors?s=new Vt(r.colors.length,r.colors):(s=new Vt(10,new Tn(0,0,0,1)),s.value[1]=new Tn(1,1,1,1));let l;r.steps?l=new Ft(r.steps.length,r.steps):(l=new Ft(10,1),l.value[0]=0);let c=new Ke(r.offset??new uo(0,0)),p=new Ke(r.morph??new uo(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new ge(r.mode??0),m=new hi(o,i,s,l,c,p,a,u),f=new ve(m.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},m,d,f)}default:{let o=new Se(1,0,0,1),i=new Y(1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ge(0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function ww(n,t,e,r){let o=mf(e,r);return Sw(e,n,t,o)}function dc(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var vf=n=>n.tagName==="VIDEO",An=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;vf(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];xf(s)&&An.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;vf(l)?s=l.videoWidth/l.videoHeight:s=l.width/l.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var va=class extends Xe{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&An.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Cn=class extends Xe{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var ba=class extends Cn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as Tw,Mesh as Aw,MeshBasicMaterial as Cw,ShapeBufferGeometry as Nw,Vector2 as Ow,Vector3 as Pw}from"three";import{FontLoader as Iw}from"three/examples/jsm/loaders/FontLoader.js";var Ge=class extends Aw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:l=16},c=new Cw({color:0,opacity:1,visible:!0,transparent:!0,side:Tw})){let p=Ge.loadChar(e,o,l);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=l,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new Ow,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ge._fontPath}static set FONTS_PATH(e){Ge._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Pw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ge.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ge.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ge.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ge(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ge.fontCache[e]?r(Ge.fontCache[e]):new Iw().load(Ge.FONTS_PATH+e+".json",s=>{Ge.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ge.charCache[e]){if(Ge.charCache[e][o]&&Ge.charCache[e][o].fontFamily===r)return Ge.charCache[e][o]}else Ge.charCache[e]={};let i=Ge.fontCache[r],s=i.generateShapes(e,1);return Ge.charCache[e][o]={geometry:new Nw(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ge.charCache[e][o]}},zt=Ge;zt.charCache={},zt.fontCache={},zt._fontPath="/_assets/_fonts/";import{DoubleSide as _f,MeshBasicMaterial as Sf,Vector3 as Lw,Object3D as Mw}from"three";import{Vector2 as bf}from"three";var _a=new bf,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new bf(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){_a.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(_a),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let l=0;l<this.message.length;l++)this.message[l].char===" "&&(s+=i),_a.set(s,r),this.message[l].updatePosition(this.message[l].localPosition.add(_a),e)}clone(){let t=new po(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var hc=class extends Xe{constructor(e){super(e,new Sf({transparent:!0,opacity:1,visible:!1,side:_f}));this.objectType="TextFrame";this.charContainer=new Mw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Lw(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Ks.create({parameters:{width:r.width,height:r.height}}),s=new hc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await zt.loadFont(o),r.text=e;let i=r.textOrigin,s=new Sf({visible:r.visible,transparent:!0,side:_f}),l=e.split(`
|
|
1333
|
-
`),c=0;this.userData.textFrame.textLines=l.map((p,a)=>{let u=new po(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let m={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let h=new zt(m,f);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,l=this.charContainer.children.length;s<l;++s)if(this.charContainer.children[s]instanceof zt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,l=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=l,p.textOrigin.set(-.5*l,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):l!==i&&(i<l?this.checkCapacity():i>l&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let l=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?l.unshift(i[s].getWord(i[s].message.length-1,-1)):l.unshift(i[s].popChar());if(l.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<l.length;p+=1)for(let a=0;a<l[p].length;a+=1)i[s+1].addChar3D(l[p][a],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let l=e;l<s.length;l+=1)if(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o),!!s[l-1])for(;!s[l-1].endLine;){let c,p=s[l-1].spaceLeft(i);if(s[l].wordSize(0,1)<=p){s[l].containSpace()?c=s[l].getWord(0,1):c=s[l].popChar(0);for(let a=0;a<c.length;a+=1)c[a]&&s[l-1].addChar3D(c[a],o)}else{s[l].isEmpty()?(s[l].endLine&&s[l-1].isEndLine(!0),s.splice(l,1),l-=1):(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let l=e;l<i.length;l++)i[l].updateYLinePos(this.getNewLinePosition(l)),i[l].fullUpdate(o.textOrigin),i[l].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.visible=e}}}async updateFontFamily(e){await zt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)l[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let l=0;l<i.length;l++)i[l].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await zt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++)s[l].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ve(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},mo=hc;mo.VerticalAlign=Za,mo.HorizontalAlign=Qa,mo.TextTransform=Ja;import{NormalBlending as Dw,ShaderMaterial as Bw}from"three";var Ut=class extends Bw{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.transparent=!0,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??vr.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>pr.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof dr),this.lightLayer===void 0&&(this.lightLayer=new dr(0,"",Fr.defaultData("light","basic"),new so,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=pr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(l=>l.uuid===i);if(s){let l=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},l,o)){let p=pr.create(this.layerIdGen++,i,l,o);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof dr);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof We&&(o=new mi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ve("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof dr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof We&&(e=new mi(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Ni);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new ft(r,e[o].position,ft.ADD),r=new ft(r,new Y(.5).setReadonly(!0),ft.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new ha;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Dw,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Ut.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});var fo=class extends Ut{};var Cf=Sc(wf());var Tf=new Map;function Af(n){if(typeof n=="string")return n;let t=Tf.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Tf.set(n,t)),t.url}var Nn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Af(t),format:"wav"},this.sound=new Cf.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Oi=class{constructor(t){this.deletedMaterial=new fo(vr.defaultTwoLayerData("basic"),this);this.deletedImage=new co(Es.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new fo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);this.penumbraSize=t.penumbraSize}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new Ut(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new co(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new wn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new $r(e.r,e.g,e.b,e.a):this.colors[t]=new $r(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ue(0,0,0,0))}else return"a"in t?new Ue(t.r,t.g,t.b,t.a):new Ue(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof Nn)return e;{let r=new Nn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Nn&&e.dispose()}),this.audios={}}},rH=new Oi(qo.emptyData());import{DRACOLoader as Ew}from"three/examples/jsm/loaders/DRACOLoader.js";var Yr;function Gw(){return Yr||(Yr=new Ew,Yr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Yr.decoderPending}async function Rw(n){if(Yr){let t={attributeIDs:Yr.defaultAttributeIDs,attributeTypes:Yr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Yr.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Nf(n,t){let[e,r]=Ea(As.deserialize(new Uint8Array(n)));bd(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 Gw();for(let i of o){let s=await Rw(Er(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:p,itemSize:a})=>{l[c]={array:p,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as o1,Scene as n1,Vector3 as i1,Fog as s1,Box3 as a1}from"three";import{Box3 as Fw,Matrix4 as ho,Sphere as If,Vector3 as Vw}from"three";var Mf=Sc(Pf());var gc;Qs.then(n=>{gc=n});var Df=new ho,zw=new ho,Uw=new ho,kt=new Fw,Kr=new Vw,kw=new ho,jw=new ho,On=class extends Xe{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ho;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ho;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Pt.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new On(i,s,l||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Pt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,Hr(this),Wr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Pt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Pt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Xe.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Mf.SVD)(r),l=Df.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=zw.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),p=Uw.copy(c).transpose();this.shearScale=kw.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=jw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,p),s.every(a=>Math.abs(s[0]-a)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new If);let r=e.attributes.position,o=e.boundingSphere.center;kt.setFromBufferAttribute(r),kt.getCenter(o),e.boundingSphere.radius=o.distanceTo(kt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;kt.min.set(e[0],e[2],e[4]),kt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(kt.min.applyMatrix4(this.shearScaleInv),kt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new If);let o=r.boundingSphere.center;kt.getCenter(o),r.boundingSphere.radius=o.distanceTo(kt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(gc.free_bvh(this.subdivPointer),gc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Lf(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Lf(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Lf(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Df.makeScale(t,e,r).invert().elements,l,c,p;for(var a=0,u=o.length;a<u;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],p=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*p,i[a+1]=s[1]*l+s[5]*c+s[9]*p,i[a+2]=s[2]*l+s[6]*c+s[10]*p}import{BackSide as Hw,BufferGeometry as Ww,DoubleSide as qw,FrontSide as $w}from"three";function Bf(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=$w:t.side===1?n.side=Hw:n.side=qw)}function Xw(n,t){if(Array.isArray(n.material))for(let e of n.material)Bf(e,t);else{let e=n.material;Bf(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Ef(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=On.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Ww:ta(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Is.is2DParametricMesh(o.userData.type)?r=new va(o,i):o?.userData.type==="VectorGeometry"?r=new an(o,i):t.geometry.type==="NonParametricGeometry"?r=new ba(o,i):t.geometry.type==="BooleanGeometry"?(r=new na(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Cn(o,i),r.uuid=n,r.fromState(t,e)}return Xw(r,t),r}function Gf(n,t,e){return t.type==="Mesh"?Ef(n,t,e):t.type==="TextFrame"?mo.createFromState(n,t,e):t.type==="Empty"?io.createFromState(n,t):t.type==="PointLight"?fn.createFromState(n,t,e):t.type==="SpotLight"?hn.createFromState(n,t,e):t.type==="DirectionalLight"?mn.createFromState(n,t,e):Vo.is(t.type)?Tr.createFromState(n,t):(console.error(t),new io)}import{Mesh as Vf,Ray as Kw,Matrix4 as Qw,Raycaster as Zw}from"three";function Rf(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Wr(n),Hr(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Ff(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),e}function zf(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vf&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rf(e,e.material[r])&&(t=!0);else Rf(e,e.material)&&(t=!0)}),t}function Uf(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vf)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Ff(e,e.material[r])&&(t=!0);else Ff(e,e.material)&&(t=!0)}),t}function kf(n){"material"in n&&Jw(n.material),"geometry"in n&&n.geometry.dispose()}function Jw(n){wc(n).forEach(t=>{t instanceof fo||t.dispose()})}var e1=new Zw,t1=new Qw,r1=new Kw;function jf(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=t1.copy(o.matrixWorld).invert(),s=r1.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=e1;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var Hf=new i1,yc=class extends Js(n1){constructor(e,r){super();this.objectType="Scene";this.backupFog=new s1(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.bgColor=new Ue(1,1,1,1);this.entityByUuid={};this.ambientLight=new o1(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,r)}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Uf(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=zf(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ve(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Tr&&this.switchActiveCamera(o)}this.traverse(o=>{Jt(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{kf(e)});for(let e of this.children)rr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Tr.createFromState(yc.PERSONAL_CAMERA_ID,{...Ms.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)rr(s)&&!s.raycastLock&&s.visible&&((Zt(s)||Zs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),jf(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)rr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)rr(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ve(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Cm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ve(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let l=Gf(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),Jt(i)&&Zt(l)&&(l.prevBooleanObjectParent=i),this.createChildrenObjects(o,l,s)),l}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],p=this.find(l),a=c?p.recursiveBBox:p.singleBBox;r.push(...a.vertices)}let o=new a1;return o.setFromPoints(r),o.getCenter(Hf),Hf}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Xe)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Ut&&e(r.material[o]);else r.material instanceof Ut&&e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Pi=yc;Pi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as T5}from"three";import{mergeBufferGeometries as N5}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Wf(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as qf,ShaderLib as l1}from"three";function $f(n){let t=new Set;return n.traverse(e=>{if(Zt(e))if(Me(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);c1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new qf,specularColor:new qf}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(l1.physical.uniforms,o.uniforms),e.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):u1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function c1(n){return n.getLayersOfType("transmission").length>0}function u1(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function Xf(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Yf(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as p1}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Kf(n){let t=[];return n.traverse(e=>{e instanceof no&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Wf(c),c}),s=p1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function Qf(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Zf(n){Object.values(n.shared.materials).forEach(t=>{xc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?xc(e.material):"materials"in e&&e.materials.forEach(r=>{xc(r)})})}function xc(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Jf="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",vc=class extends m1{load(t,e,r,o=console.error){let i=new d1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Jf+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Jf),i.load(t,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)}},r,o)}async parse(t){let e=await Nf(t,Zf),r=new Oi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Pi(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Am(s)&&Object.assign(s,{makeDefault:!0})}return o=Kf(o),o=$f(o),o=Xf(o),o=Yf(o),o=Qf(o),o}};export{vc as default};
|
|
1332
|
+
}`,[ot.simplex,e,o,s])}}();import{Matrix3 as Cw}from"three";function $f(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ia=class extends ln{constructor(e,r){super(new Cw);this.repeat=e;this.offset=r;$f(this.value,e,r)}updateMatrix(){$f(this.value,this.repeat,this.offset)}};var cr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)Kl(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return ur.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new bi(i,r.texture.wrapping),l=new na(i),c=new ia(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new he(r.projection??0),u=new he(["x","y","z"].indexOf(r.axis)??0),d=new he(r.side??0),f=new Ye(r.size?new co(r.size[0],r.size[1]):new co(100,100)),m=new Y(r.alpha??1),h=new he(r.mode??0),y=new pi(s,l,p,a,u,d,f,c,m,h),x=new ve(y.calpha,"f");return new We(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,axis:u,side:d,size:f,mat:c,alpha:m,mode:h},y,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new bi(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new he(r.mode??0),p=new vi(s,l,c),a=new ve(p.calpha,"f");return new We(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Ze(new lr(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new he(r.noiseType??0),a=new ci(l,c,i,s,p);return new wi(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:p},a)}else throw new Error;else return Lw(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:qf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?Yl(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},We=class extends cr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},wi=class extends cr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},ur=class extends cr{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,l=new Y(o.alpha),c=new he(o.mode),p;if(o.category==="lambert"){s=new mi;let a=new we(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="phong"){s=new oa;let a=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="toon"){s=new gi;let a=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new hi;let a=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:a,metalness:u,reflectivity:d},s.roughness=a,s.metalness=u,s.reflectivity=d}else s=new ao,p={};return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new ur(e,r,o,s,p)}};function Xf(n){let t=n instanceof cr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Iw(n,t,e,r){switch(n.type){case"color":{let o=new we(r.color??5855577),i=new Y(r.alpha??1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new he(r.mode??0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new we(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),l=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),a=new he(r.mode??0),u=new oi(o,i,s,l,c,p,a),d=new ve(u.calpha,"f");return new We(t,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:p,mode:a},u,a,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new Ze(r.wavelengths??new lr(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new Ze(r.offset??new lr(0,0,0)),a=new Y(r.alpha??1),u=new ni(o,i,s,l,c,p,a),d=new ve(u.calpha,"f"),f=new he(r.mode??0);return new We(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,mode:f},u,f,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),l=Je.transmissionSize,c=Je.transmissionRenderTarget,p=Je.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new Ye(u/a,1):new Ye(1,a/u),f=new Y(r.alpha??1),m=new si(o,i,s,l,c,p,d,f),h=new ve(m.calpha,"f"),y=new he(r.mode??0);return new We(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:y},m,y,h)}case"toon":{let o=new he(r.positioning??0),i;r.colors?i=new Rt(r.colors.length,r.colors):(i=new Rt(10,new dn(0,0,0,1)),i.value[1]=new dn(1,1,1,1));let s;r.steps?s=new Gt(r.steps.length,r.steps):(s=new Gt(10,1),s.value[0]=0);let l=new Ze(r.source??new lr(0,0,0)),c=new Hr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new Pt(r.shadowColor),d=new Ze(r.offset??new lr(0,0,0)),f=new Y(r.alpha??1),m=new Si(o,i,s,l,c,p,a,u,d,f),h=new ve(m.calpha,"f"),y=new he(r.mode??0);return new We(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:f,mode:y},m,y,h)}case"outline":{let o=new we(r.outlineColor??16777215),i=new we(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),l=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),a=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new Ze(r.contourDirections??new lr(0,1,0)),f=new Hr(r.positionalLines??!1),m=new Hr(r.compensation??!0),h=Je.normalRenderTarget,y=Je.normalRenderTargetDepth,x=Je.pixelRatioNode,v=Je.resolution,A=new Y(r.alpha??1),S=new ii(o,i,s,l,c,p,a,u,d,f,m,v,h,y,x,A),b=new ve(S.calpha,"f"),D=new he(r.mode??0);return new We(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new he(r.gradientType??0),i=new Hr(r.smooth??!1),s=new Y(r.near??50),l=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),a=new Ze(r.origin??new lr),u=new Ze(r.direction??new lr),d=new he(r.num??0),f;r.colors?f=new Rt(d.value+1,r.colors):(f=new Rt(d.value+1,new dn(0,0,0,1)),f.value[1]=new dn(1,1,1,1));let m;r.steps?m=new Gt(d.value+1,r.steps):(m=new Gt(d.value+1,1),m.value[0]=0);let h=new Y(r.alpha??1),y=new he(r.mode??0),x=new ai(o,i,s,l,c,p,a,u,f,m,d,h),v=new ve(x.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:f,steps:m,num:d,alpha:h,mode:y},x,y,v)}case"noise":{let o=new Y(r.scale??1),i=new Ze(r.size??new lr(100,100,100)),s=new Y(r.move??1),l=new Ye(r.fA??new co(1.7,9.2)),c=new Ye(r.fB??new co(8.3,2.8)),p=new Ye(r.distortion??new co(1,1)),a=new Pt(r.colorA),u=new Pt(r.colorB),d=new Pt(r.colorC),f=new Pt(r.colorD),m=new Y(r.alpha??1),h=new he(r.mode??0),y=new he(r.noiseType??0),x=new ri(o,i,s,l,c,p,a,u,d,f,m,y),v=new ve(x.calpha,"f");return new We(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:y},x,h,v)}case"normal":{let o=new Ze(r.cnormal??new lr(1,1,1)),i=new Y(r.alpha??1),s=new he(r.mode??0),l=new fi(o,i),c=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new We(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new he(r.gradientType??0),i=new Hr(r.smooth??!1),s;r.colors?s=new Rt(r.colors.length,r.colors):(s=new Rt(10,new dn(0,0,0,1)),s.value[1]=new dn(1,1,1,1));let l;r.steps?l=new Gt(r.steps.length,r.steps):(l=new Gt(10,1),l.value[0]=0);let c=new Ye(r.offset??new co(0,0)),p=new Ye(r.morph??new co(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new he(r.mode??0),f=new ui(o,i,s,l,c,p,a,u),m=new ve(f.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},f,d,m)}default:{let o=new we(1,0,0,1),i=new Y(1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new he(0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function Lw(n,t,e,r){let o=kf(e,r);return Iw(e,n,t,o)}function Kl(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var St=class extends Ow{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.transparent=!0,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??br.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>cr.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof ur),this.lightLayer===void 0&&(this.lightLayer=new ur(0,"",Vr.defaultData("light","basic"),new ao,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=cr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(l=>l.uuid===i);if(s){let l=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},l,o)){let p=cr.create(this.layerIdGen++,i,l,o);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof ur);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof We&&(o=new li(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ve("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof ur);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof We&&(e=new li(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof wi);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new mt(r,e[o].position,mt.ADD),r=new mt(r,new Y(.5).setReadonly(!0),mt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.category}",`;else{let o=Xl[r.type];o&&o.length?e+=`["${r.type}", "${o.map(i=>r[i]).join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new ra;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Pw,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(St.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{MathUtils as Jl,BufferAttribute as Mw,Vector3 as ec,Float32BufferAttribute as Yf}from"three";function Dw(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=new ec(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new ec})}t.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=t.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Yf(o,3))}function Bw(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new ec;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Yf(e,3))}function $r(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof St)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Bw(n):Dw(n)}}function Xr(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[Jl.seededRandom(r),Jl.seededRandom(r+1e4),Jl.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Mw(e,3))}var Qe=class extends Lt(Ew){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Gw;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=tc[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),l=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=l,this.geometry.computeBoundingSphere(),$r(this),r.getAttribute("randomColor")&&Xr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=_i(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new no(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new no(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Vt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),er(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Jt(e)&&(e.freeBooleanPointer(),er(e)&&e.invalidateUpstreamBooleanData())}};var Fw=new rc(0,0,1),Kf=new rc,Qf=new rc,Zf=new Vw,fn=class extends Qe{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Rw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Zf.getNormalMatrix(this.matrixWorld),Kf.copy(Fw).applyMatrix3(Zf).normalize(),Qf.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Kf,Qf)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),l=new fn(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Qe.prototype.raycast.call(this,e,r)}};function sa(n,t){return Uw(n)}function Uw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Se.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new zw().parse(n));let e;try{e=_i(t)}catch(r){console.error(r)}if(!e){let r=Se.createFromState(Ho.defaultData(),100,100);t.shape=r,e=_i(t)}return e}var pe;Ks.then(n=>{pe=n});var tm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),rm=new Uint32Array([0,1,2,3]),om=new Uint8Array([4]),Ot=class{static build(n,t,e,r,o){let i,s,l,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(pe.free_bvh(e),pe.free_subdivision_surface(e));try{i=Ot.allocate(n,o)}catch(p){console.error(p,n),i=Ot.allocate({positionWASM:tm,indexWASM:rm,verticesPerFaceWASM:om},o)}pe.set_destination_refinement_level(i,0),s=Ot.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ot.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(pe.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Ot.buildLevel(i,!1,c):l=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:sa(n),r,o,i,s;({positions:r,triIndices:s}=lc(e.getAttribute("position"),e.getIndex()));let l;if(n.type==="CylinderGeometry"&&n.cornerRadius===0&&n.hollow===0&&n.openEnded===!1){let c=n.radialSegments*n.heightSegments*3*2,p=c+n.radialSegments*3;l=[c,p]}return{indices:o,verticesPerFace:i}=cc(r,s,e,l),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=tm,r=rm,o=om);let l=e.length,c=r.length,p=o.length,a=e.length+i.length+s.length,u=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=a*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),y=new Float32Array(pe.HEAPF32.buffer,h,a),x=new Uint32Array(pe.HEAPU32.buffer,h+f,u);y.set(e,0),y.set(i,e.length),y.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(S=>S!==1)&&(v=new jw().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return pe._free(h),A}static buildLevel(n,t,e,r,o){let i=o?pe.get_mesh_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e,o.elements):pe.get_mesh_data(n,t?pe.Level.CONTROL:pe.Level.REFINED,e),s=8,l=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=pe.HEAPU32[l[p]>>2],u=pe.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=pe.HEAPU32[l[p]>>2],f=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=pe.HEAPU32[l[p]>>2],h=pe.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let y=pe.HEAPU32[l[p]>>2],x=pe.HEAPU32.subarray(y>>2,(y>>2)+c[p]);if(p++,r===void 0){let v=new Jf;if(v.setIndex(new oc(x,1)),v.setAttribute("position",new nc(u,3)),v.setAttribute("normal",new nc(f,3)),t){v.setAttribute("faceMap",new oc(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new em(A,4))}return pe.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,pe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=pe.get_wireframe_data_for_base_level(n),o=4,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=pe.HEAPU32[i[l]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=pe.HEAPU32[i[l]>>2],u=pe.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new Jf;d.setAttribute("position",new nc(p,3));let f=new Float32Array(p.length);for(let m=0,h=p.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new em(f,3)),d.setIndex(new oc(u,1)),pe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||pe.set_destination_refinement_level(n,t);let o=e?pe.get_topological_data2(n,r?pe.Level.CONTROL:pe.Level.REFINED,e.elements):pe.get_topological_data(n,r?pe.Level.CONTROL:pe.Level.REFINED),i=6,s=pe.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=pe.HEAPU32[s[c]>>2],a=new Float32Array(pe.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=pe.HEAPU32[s[c]>>2],d=new Uint32Array(pe.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let f=pe.HEAPU32[s[c]>>2],m=new Uint8Array(pe.HEAPU32.subarray(f>>2,(f>>2)+l[c]));return pe.free_topological_data(o),{positions:a,indices:d,verticesPerFace:m}}};var nm=["getX","getY","getZ"];function lc(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],l=1e4;for(let p=0;p<r;p++){let a=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[nm[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[nm[d]](a));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var aa=new la,ic=new la,sc=new la,ac=new la;function cc(n,t,e,r){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=0;for(let p=0;p<s.length;p+=2)l+=(s[p]-s[(p===0?s.length:p)-2])*(s[p+1]+s[(p===0?s.length:p)-1]);n.length=0;let c=0;if(l<0)for(let p=0;p<s.length;p+=2)n.push(s[p],s[p+1],0),o.push(c++);else for(let p=s.length-2;p>=0;p-=2)n.push(s[p],s[p+1],0),o.push(c++);return i.push(c),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??t.length;s<l;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){aa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),ic.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),sc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),ac.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),ic.sub(aa).normalize(),sc.sub(aa).normalize(),ac.sub(aa).normalize();let c=ic.cross(sc).dot(ac);Math.abs(c)>.005||r&&r.some((p,a)=>a%2===1?!1:s>=r[a]&&s<r[a+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0;for(let p=0,a=0;p<n.length;p+=3,a++)n[p+2]===0&&(s.push(a),c++),n[p+2]===e.userData.parameters.depth&&l.push(a);if(e.userData.parameters.extrudeBevelSize===0){let p=l[0];l[0]=l[1],l[1]=p}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Vt={};ph(Vt,{calcBoolean:()=>$w,calcBooleanTopological:()=>qw,freeMeshSet:()=>Kw,getMeshSet:()=>Xw,transformMeshSet:()=>Yw});var kw,im=new Promise(n=>{kw=n});import{Float32BufferAttribute as sm,Sphere as Hw}from"three";var ge,mn;im.then(n=>ge=n);function Ww(n,t){let e,{positions:r,triIndices:o}=lc(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:l}=cc(r,o,n);i=l.length,e=[];for(let c=0,p=0;c<i;c++){e.push(l[c]);for(let a=0;a<l[c];a++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let l=0,c=0;c<e.length;)e[c++]=3,i++,e[c++]=o[l++],e[c++]=o[l++],e[c++]=o[l++]}return{positions:r,faceIndices:e,nFaces:i}}function am(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,t):new Float32Array(ge.HEAPF32.buffer,i,t)).set(n,0),i}function lm(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 qw(n,t){mn===void 0&&(mn=ge.init_csg());let e=am(n),r=ge.csg_calc_topological(mn,e,n.length,lm(t));ge._free(e);let o=6,i=ge.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],p=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],u=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return ge.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function $w(n,t,e,r){mn===void 0&&(mn=ge.init_csg());let o=am(n),i=ge.csg_calc(mn,o,n.length,r,lm(t));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=ge.HEAPU32[l[p]>>2],u=ge.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=ge.HEAPU32[l[p]>>2],f=ge.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new sm(u,3)),e.setAttribute("normal",new sm(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Hw),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 Xw(n,t){if(ge===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let h=n.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((y,x)=>y+x,0)+o);for(let y=0,x=0,v=0;y<h.verticesPerFace.length;y++){r[v++]=h.verticesPerFace[y];for(let A=0;A<h.verticesPerFace[y];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=Ww(n,t));let i=e.length,s=r.length,l=e.length,c=r.length,p=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,a=l*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=ge._malloc(p),f=new Float32Array(ge.HEAPF32.buffer,d,l),m=new Uint32Array(ge.HEAPU32.buffer,d+a,c);return f.set(e,0),m.set(r,0),ge.get_csg_mesh(d,i,d+a,s,o)}function Yw(n,t){ge.transform_csg_mesh(n,t.elements)}function Kw(n){ge.free_csg_mesh(n)}var tc={ConeGeometry:wd,CubeGeometry:_d,CylinderGeometry:Sd,DodecahedronGeometry:Td,EllipseGeometry:Qd,HelixGeometry:rf,IcosahedronGeometry:of,LatheGeometry:nf,NonParametricGeometry:ff,PolygonGeometry:mf,PyramidGeometry:hf,RectangleGeometry:gf,SphereGeometry:yf,PlaneGeometry:xf,BackdropGeometry:vf,StarGeometry:bf,TextFrameGeometry:Ys,TorusGeometry:Sf,TorusKnotGeometry:wf,TriangleGeometry:_f,VectorGeometry:st},_i=n=>tc[n.type].create(n);import{BufferGeometry as cm,Matrix4 as Qw}from"three";var um=new Qw;var ca=class extends Qe{constructor(e=new cm,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];er(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Mf(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Vt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Vt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else er(i)&&i.needsTransformForDownstream===!0?(Vt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(um.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Vt.transformMeshSet(i.booleanMeshSetAddress,um),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Vt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new cm,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Vt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,$r(this),Xr(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as f1,OrthographicCamera as m1,PerspectiveCamera as h1,Vector3 as zt,Object3D as fm,Quaternion as g1}from"three";import{BoxBufferGeometry as Zw}from"three";var pr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Zw(30,30,30),t};import{Camera as o1,LineSegments as n1,BufferGeometry as i1,LineBasicMaterial as s1,Color as pc,Vector3 as a1,Float32BufferAttribute as dm}from"three";import{Ray as Jw,Sphere as e1,Matrix4 as t1,Vector3 as Ar}from"three";var ua=new Jw,uc=new e1,pm=new t1,dr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),uc.copy(i.boundingSphere),uc.applyMatrix4(s),e.ray.intersectsSphere(uc)===!1||(pm.copy(s).invert(),ua.copy(e.ray).applyMatrix4(pm),i.boundingBox!==null&&ua.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,u=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let x=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=x,h=v;m<h;m+=3)if(c=u.getX(m),p=u.getX(m+1),a=u.getX(m+2),l=y(n,e,ua,d,c,p,a),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let v=i.attributes.position,A=new Ar,S=new Ar,b=new Ar,D=new Ar,w=2,P=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=P*P,L=Math.max(0,f.start),N=Math.min(v.count,f.start+f.count);for(let C=L,k=N-1;C<k;C+=w){if(A.fromBufferAttribute(v,C),S.fromBufferAttribute(v,C+1),ua.distanceSqToSegment(A,S,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(D);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(x,v,A,S,b,D,w){let g=new Ar,P=new Ar,T=new Ar,L=new Ar,N=new Ar;if(g.fromBufferAttribute(S,b),P.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(g,P,T,!1,L)===null)return null;N.copy(L),N.applyMatrix4(x.matrixWorld);let k=v.ray.origin.distanceTo(N);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:N.clone(),object:x}}};var pa=new a1,Mt=new o1,dc=class extends n1{constructor(e){let r=new i1,o=new s1({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new pc(15711266),p=new pc(15711266),a=new pc(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(f,m,h){d(f,h),d(m,h)}function d(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)}r.setAttribute("position",new dm(i,3)),r.setAttribute("color",new dm(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Mt.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;Ft("n1",r,e,Mt,-i,-s,l),Ft("n2",r,e,Mt,i,-s,l),Ft("n3",r,e,Mt,-i,s,l),Ft("n4",r,e,Mt,i,s,l);let c=l;Ft("f1",r,e,Mt,-i,-s,c),Ft("f2",r,e,Mt,i,-s,c),Ft("f3",r,e,Mt,-i,s,c),Ft("f4",r,e,Mt,i,s,c);let p=c,a=.5;Ft("u1",r,e,Mt,i*.7*a,s*1.1,p),Ft("u2",r,e,Mt,-i*.7*a,s*1.1,p),Ft("u3",r,e,Mt,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ft(n,t,e,r,o,i,s){pa.set(o,i,s).unproject(r);let l=t[n];if(l!==void 0){let c=e.getAttribute("position");for(let p=0,a=l.length;p<a;p++)c.setXYZ(l[p],pa.x,pa.y,pa.z)}}var da=class extends pr(dc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){dr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as l1}from"three";var hn=class extends pr(l1){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,hn.geometryHelper,e,r)}};import{AxesHelper as c1}from"three";var gn=class extends pr(c1){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){dr(this.object,gn.geometryHelper,e,r)}update(){}};import{PointLightHelper as u1}from"three";var yn=class extends pr(u1){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,yn.geometryHelper,e,r)}};import{SpotLightHelper as p1,Vector3 as d1}from"three";var fa=class extends pr(p1){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,fa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=fa._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Ti=fa;Ti._vector=new d1;var fr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Fe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var xn=new zt,fc=new zt,Nr=class extends fr(Lt(f1),da){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Jr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new m1(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new h1(o,e/r,i??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new Nr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(xn),this.targetOffset=xn.distanceTo(e)}getTarget(e=new zt){return this.getWorldDirection(fc),this.getWorldPosition(xn),fc.multiplyScalar(this.targetOffset),e.copy(xn).add(fc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(xn),xn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new g1),r=new zt(0,0,1).applyQuaternion(e),o=new zt().copy(fm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new zt().copy(fm.DefaultUp).projectOnPlane(r),s=new zt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new zt),i=e.getWorldDirection(new zt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new zt),i=this.getWorldDirection(new zt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,l):this.orthoCamera.setViewOffset(e,r,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,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ro(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as y1}from"three";var uo=class extends fr(Lt(y1),gn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new uo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as x1,CameraHelper as ma}from"three";var vn=class extends fr(Lt(x1),hn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new ma(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new vn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Cf(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as v1,Vector3 as ha,Box3 as b1,Box3Helper as ga,Color as S1}from"three";var bn=class extends fr(Lt(v1),yn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new b1(i,s),c=new ga(l,new S1(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new bn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ga&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ga&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof ga){let o=this.shadow.camera,i=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as w1,CameraHelper as ya,MathUtils as _1,Vector3 as ym,Quaternion as T1}from"three";var mm=new ym,hm=new ym,gm=new T1,Sn=class extends fr(Lt(w1),Ti){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=_1.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ya(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Sn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),hm.setFromMatrixPosition(this.matrixWorld),gm.setFromRotationMatrix(this.matrixWorld),mm.copy(this.up).applyQuaternion(gm).negate().multiplyScalar(this.distance),this.target.position.copy(hm).add(mm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var xm=n=>n.tagName==="VIDEO",wn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;xm(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];Xf(s)&&wn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;xm(l)?s=l.videoWidth/l.videoHeight:s=l.width/l.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var xa=class extends Qe{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&wn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var _n=class extends Qe{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var va=class extends _n{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as A1,Mesh as N1,MeshBasicMaterial as C1,ShapeBufferGeometry as I1,Vector2 as L1,Vector3 as P1}from"three";import{FontLoader as O1}from"three/examples/jsm/loaders/FontLoader.js";var Ee=class extends N1{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:l=16},c=new C1({color:0,opacity:1,visible:!0,transparent:!0,side:A1})){let p=Ee.loadChar(e,o,l);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=l,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new L1,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ee._fontPath}static set FONTS_PATH(e){Ee._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new P1(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ee.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ee.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ee.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ee(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ee.fontCache[e]?r(Ee.fontCache[e]):new O1().load(Ee.FONTS_PATH+e+".json",s=>{Ee.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ee.charCache[e]){if(Ee.charCache[e][o]&&Ee.charCache[e][o].fontFamily===r)return Ee.charCache[e][o]}else Ee.charCache[e]={};let i=Ee.fontCache[r],s=i.generateShapes(e,1);return Ee.charCache[e][o]={geometry:new I1(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ee.charCache[e][o]}},Ut=Ee;Ut.charCache={},Ut.fontCache={},Ut._fontPath="/_assets/_fonts/";import{DoubleSide as bm,MeshBasicMaterial as Sm,Vector3 as M1,Object3D as D1}from"three";import{Vector2 as vm}from"three";var ba=new vm,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new vm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){ba.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(ba),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let l=0;l<this.message.length;l++)this.message[l].char===" "&&(s+=i),ba.set(s,r),this.message[l].updatePosition(this.message[l].localPosition.add(ba),e)}clone(){let t=new po(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var mc=class extends Qe{constructor(e){super(e,new Sm({transparent:!0,opacity:1,visible:!1,side:bm}));this.objectType="TextFrame";this.charContainer=new D1,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new M1(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Ys.create({parameters:{width:r.width,height:r.height}}),s=new mc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Ut.loadFont(o),r.text=e;let i=r.textOrigin,s=new Sm({visible:r.visible,transparent:!0,side:bm}),l=e.split(`
|
|
1333
|
+
`),c=0;this.userData.textFrame.textLines=l.map((p,a)=>{let u=new po(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let f={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let h=new Ut(f,m);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,l=this.charContainer.children.length;s<l;++s)if(this.charContainer.children[s]instanceof Ut&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,l=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=l,p.textOrigin.set(-.5*l,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):l!==i&&(i<l?this.checkCapacity():i>l&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let l=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?l.unshift(i[s].getWord(i[s].message.length-1,-1)):l.unshift(i[s].popChar());if(l.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<l.length;p+=1)for(let a=0;a<l[p].length;a+=1)i[s+1].addChar3D(l[p][a],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let l=e;l<s.length;l+=1)if(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o),!!s[l-1])for(;!s[l-1].endLine;){let c,p=s[l-1].spaceLeft(i);if(s[l].wordSize(0,1)<=p){s[l].containSpace()?c=s[l].getWord(0,1):c=s[l].popChar(0);for(let a=0;a<c.length;a+=1)c[a]&&s[l-1].addChar3D(c[a],o)}else{s[l].isEmpty()?(s[l].endLine&&s[l-1].isEndLine(!0),s.splice(l,1),l-=1):(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let l=e;l<i.length;l++)i[l].updateYLinePos(this.getNewLinePosition(l)),i[l].fullUpdate(o.textOrigin),i[l].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.visible=e}}}async updateFontFamily(e){await Ut.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)l[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let l=0;l<i.length;l++)i[l].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Ut.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++)s[l].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Fe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},fo=mc;fo.VerticalAlign=Qa,fo.HorizontalAlign=Ka,fo.TextTransform=Za;var mo=class extends St{};var Am=Sc(wm());var _m=new Map;function Tm(n){if(typeof n=="string")return n;let t=_m.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},_m.set(n,t)),t.url}var Tn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Tm(t),format:"wav"},this.sound=new Am.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ni=class{constructor(t){this.deletedMaterial=new mo(br.defaultTwoLayerData("basic"),this);this.deletedImage=new lo(Bs.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new mo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);this.penumbraSize=t.penumbraSize}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new St(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new lo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new pn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Wr(e.r,e.g,e.b,e.a):this.colors[t]=new Wr(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ue(0,0,0,0))}else return"a"in t?new Ue(t.r,t.g,t.b,t.a):new Ue(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof Tn)return e;{let r=new Tn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Tn&&e.dispose()}),this.audios={}}},eH=new Ni(Ds.emptyData());import{DRACOLoader as B1}from"three/examples/jsm/loaders/DRACOLoader.js";var Yr;function E1(){return Yr||(Yr=new B1,Yr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Yr.decoderPending}async function G1(n){if(Yr){let t={attributeIDs:Yr.defaultAttributeIDs,attributeTypes:Yr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Yr.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Nm(n,t){let[e,r]=Ba(Ts.deserialize(new Uint8Array(n)));vd(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 E1();for(let i of o){let s=await G1(qt(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:p,itemSize:a})=>{l[c]={array:p,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as r_,Scene as o_,Vector3 as n_,Fog as i_,Box3 as s_}from"three";import{Box3 as R1,Matrix4 as ho,Sphere as Lm,Vector3 as V1}from"three";var Om=Sc(Im());var hc;Ks.then(n=>{hc=n});var Mm=new ho,F1=new ho,z1=new ho,jt=new R1,Kr=new V1,U1=new ho,j1=new ho,An=class extends Qe{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ho;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ho;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Ot.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new An(i,s,l||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Ot.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,$r(this),Xr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Qe.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Om.SVD)(r),l=Mm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=F1.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),p=z1.copy(c).transpose();this.shearScale=U1.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=j1.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,p),s.every(a=>Math.abs(s[0]-a)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Lm);let r=e.attributes.position,o=e.boundingSphere.center;jt.setFromBufferAttribute(r),jt.getCenter(o),e.boundingSphere.radius=o.distanceTo(jt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),jt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;jt.min.set(e[0],e[2],e[4]),jt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(jt.min.applyMatrix4(this.shearScaleInv),jt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Lm);let o=r.boundingSphere.center;jt.getCenter(o),r.boundingSphere.radius=o.distanceTo(jt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),jt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Pm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Pm(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Pm(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Mm.makeScale(t,e,r).invert().elements,l,c,p;for(var a=0,u=o.length;a<u;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],p=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*p,i[a+1]=s[1]*l+s[5]*c+s[9]*p,i[a+2]=s[2]*l+s[6]*c+s[10]*p}import{BackSide as k1,BufferGeometry as H1,DoubleSide as W1,FrontSide as q1}from"three";function Dm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=q1:t.side===1?n.side=k1:n.side=W1)}function $1(n,t){if(Array.isArray(n.material))for(let e of n.material)Dm(e,t);else{let e=n.material;Dm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Bm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=An.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new H1:sa(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ls.is2DParametricMesh(o.userData.type)?r=new xa(o,i):o?.userData.type==="VectorGeometry"?r=new fn(o,i):t.geometry.type==="NonParametricGeometry"?r=new va(o,i):t.geometry.type==="BooleanGeometry"?(r=new ca(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new _n(o,i),r.uuid=n,r.fromState(t,e)}return $1(r,t),r}function Em(n,t,e){return t.type==="Mesh"?Bm(n,t,e):t.type==="TextFrame"?fo.createFromState(n,t,e):t.type==="Empty"?uo.createFromState(n,t):t.type==="PointLight"?bn.createFromState(n,t,e):t.type==="SpotLight"?Sn.createFromState(n,t,e):t.type==="DirectionalLight"?vn.createFromState(n,t,e):Vo.is(t.type)?Nr.createFromState(n,t):(console.error(t),new uo)}import{Mesh as Vm,Ray as Y1,Matrix4 as K1,Raycaster as Q1}from"three";function Gm(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Xr(n),$r(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Rm(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),e}function Fm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vm&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gm(e,e.material[r])&&(t=!0);else Gm(e,e.material)&&(t=!0)}),t}function zm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vm)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rm(e,e.material[r])&&(t=!0);else Rm(e,e.material)&&(t=!0)}),t}function Um(n){"material"in n&&Z1(n.material),"geometry"in n&&n.geometry.dispose()}function Z1(n){wc(n).forEach(t=>{t instanceof mo||t.dispose()})}var J1=new Q1,e_=new K1,t_=new Y1;function jm(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=e_.copy(o.matrixWorld).invert(),s=t_.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=J1;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var km=new n_,gc=class extends Zs(o_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new i_(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.bgColor=new Ue(1,1,1,1);this.entityByUuid={};this.ambientLight=new r_(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,r)}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=zm(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Fm(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Fe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Nr&&this.switchActiveCamera(o)}this.traverse(o=>{er(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Um(e)});for(let e of this.children)or(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Nr.createFromState(gc.PERSONAL_CAMERA_ID,{...Os.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)or(s)&&!s.raycastLock&&s.visible&&((Jt(s)||Qs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),jm(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)or(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)or(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Fe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Nf(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Fe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let l=Em(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),er(i)&&Jt(l)&&(l.prevBooleanObjectParent=i),this.createChildrenObjects(o,l,s)),l}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],p=this.find(l),a=c?p.recursiveBBox:p.singleBBox;r.push(...a.vertices)}let o=new s_;return o.setFromPoints(r),o.getCenter(km),km}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Qe)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof St&&e(r.material[o]);else r.material instanceof St&&e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ci=gc;Ci.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as w5}from"three";import{mergeBufferGeometries as A5}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Hm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as Wm,ShaderLib as a_}from"three";function qm(n){let t=new Set;return n.traverse(e=>{if(Jt(e))if(Oe(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);l_(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Wm,specularColor:new Wm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(a_.physical.uniforms,o.uniforms),e.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):c_(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function l_(n){return n.getLayersOfType("transmission").length>0}function c_(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function $m(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Xm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as u_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ym(n){let t=[];return n.traverse(e=>{e instanceof no&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Hm(c),c}),s=u_(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function Km(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Qm(n){Object.values(n.shared.materials).forEach(t=>{yc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?yc(e.material):"materials"in e&&e.materials.forEach(r=>{yc(r)})})}function yc(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Zm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends d_{load(t,e,r,o=console.error){let i=new p_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Zm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Zm),i.load(t,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)}},r,o)}async parse(t){let e=await Nm(t,Qm),r=new Ni(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ci(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Af(s)&&Object.assign(s,{makeDefault:!0})}return o=Ym(o),o=qm(o),o=$m(o),o=Xm(o),o=Km(o),o}};export{xc as default};
|