@splinetool/loader 0.9.105 → 0.9.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,14 @@
1
- var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDescriptor;var fh=Object.getOwnPropertyNames;var mh=Object.getPrototypeOf,hh=Object.prototype.hasOwnProperty;var wc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),gh=(n,t)=>{for(var e in t)Aa(n,e,{get:t[e],enumerable:!0})},yh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fh(t))!hh.call(n,o)&&o!==e&&Aa(n,o,{get:()=>t[o],enumerable:!(r=dh(t,o))||r.enumerable});return n};var _c=(n,t,e)=>(e=n!=null?ph(mh(n)):{},yh(t||!n||!n.__esModule?Aa(e,"default",{value:n,enumerable:!0}):e,n));var Cm=wc(wa=>{(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,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,x=f.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 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(),g=0;g<h.length;g++){var x=a._howls[m]._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 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 g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!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(f&&!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),S=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 w=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,w(),d._refreshBuffer(g);var C=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(C,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),S!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S)),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 C=y.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(d._playLock=!0,w(),C.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,w(),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),S):(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(k){d._emit("playerror",g._id,k)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var L=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||L)T();else{d._playLock=!0,d._state="loading";var N=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,N,!1)};y.addEventListener(t._canPlayEvent,N,!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),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 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 f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)g=a._soundById(f[x]),g&&(g._volume=d,u[2]||a._stopFade(f[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=f?a._soundById(f):a._sounds[0],g?g._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),g=0;g<h.length;g++){var x=m._soundById(h[g]);if(x){if(f||m._stopFade(h[g]),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[g],typeof f>"u")}}return m},_startFadeInterval:function(a,u,d,f,m,h){var g=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),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))},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),g=0;g<h.length;g++)m=a._soundById(h[g]),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[g])&&(a.pause(h[g],!0),a.play(h[g],!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 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 f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)if(g=a._soundById(f[x]),g){a.playing(f[x])&&(g._rateSeek=a.seek(f[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(f[x]),A=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-v,S=A*1e3/Math.abs(g._rate);(a._endTimers[f[x]]||!g._paused)&&(a._clearTimer(f[x]),a._endTimers[f[x]]=setTimeout(a._ended.bind(a,g),S)),a._emit("rate",g._id)}}else return g=a._soundById(f),g?g._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 g=a._soundById(f);if(g)if(typeof d=="number"&&d>=0){var x=a.playing(f);x&&a.pause(f,!0),g._seek=d,g._ended=!1,a._clearTimer(f),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._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-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+S*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 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 g=d===m[h].id;if(u===m[h].fn&&g||!u&&g){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(g){g.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(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.")},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 wa<"u"&&(wa.Howler=t,wa.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 Dm=wc((_a,Mm)=>{(function(n,t){typeof _a=="object"&&typeof Mm<"u"?t(_a):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(_a,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,g,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,y=h=d=0;y<A;y++)b[y]=new Array(w).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(S[y]=d,m=0,c=y+1,s=y;s<A;s++)m+=Math.pow(b[s][y],2);if(m<i)d=0;else for(f=(u=b[y][y])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y]=u-d,s=c;s<v;s++){for(m=0,l=y;l<A;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<A;l++)b[l][s]=b[l][s]+u*b[l][y]}for(T[y]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[y][s],2);if(m<i)d=0;else{for(f=(u=b[y][y+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y+1]=u-d,s=c;s<v;s++)S[s]=b[y][s]/f;for(s=c;s<A;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[y][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(g=Math.abs(T[y])+Math.abs(S[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(f=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[y][l]*D[l][s];for(l=c;l<v;l++)D[l][s]=D[l][s]+m*D[l][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=S[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<w;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<w;s++){for(m=0,l=c;l<A;l++)m+=b[l][y]*b[l][s];for(u=m/f,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 L=0;L<50;L++){for(I=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){I=!0;break}if(Math.abs(T[c-1])<=o)break}if(!I){for(a=0,p=c-(m=1),y=c;y<l+1&&(u=m*S[y],S[y]=a*S[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),a=d/(f=T[y]),m=-u/f,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*a+x*m,b[s][y]=-g*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=(((g=T[l-1])-x)*(g+x)+((d=S[l-1])-(f=S[l]))*(d+f))/(2*f*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(g/(u<0?u-d:u+d)-f))/h,y=c+(m=a=1);y<l+1;y++){if(d=S[y],g=T[y],f=m*d,d*=a,x=Math.sqrt(u*u+f*f),u=h*(a=u/(S[y-1]=x))+d*(m=f/x),d=-h*m+d*a,f=g*m,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*m,D[s][y]=-h*m+x*a;if(x=Math.sqrt(u*u+f*f),u=(a=u/(T[y-1]=x))*d+(m=f/x)*g,h=-m*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*m,b[s][y]=-g*m+x*a}S[c]=0,S[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 h_,Loader as g_}from"three";function Oi(n,t){return Object.setPrototypeOf(n,t),n}function Tc(n){return Array.isArray(n)?n:[n]}var xh=typeof global=="object"&&global&&global.Object===Object&&global,Mi=xh;var vh=typeof self=="object"&&self&&self.Object===Object&&self,bh=Mi||vh||Function("return this")(),Re=bh;var Sh=Re.Symbol,nt=Sh;var Ac=Object.prototype,wh=Ac.hasOwnProperty,_h=Ac.toString,Nn=nt?nt.toStringTag:void 0;function Th(n){var t=wh.call(n,Nn),e=n[Nn];try{n[Nn]=void 0;var r=!0}catch{}var o=_h.call(n);return r&&(t?n[Nn]=e:delete n[Nn]),o}var Nc=Th;var Ah=Object.prototype,Nh=Ah.toString;function Ch(n){return Nh.call(n)}var Cc=Ch;var Ph="[object Null]",Lh="[object Undefined]",Pc=nt?nt.toStringTag:void 0;function Ih(n){return n==null?n===void 0?Lh:Ph:Pc&&Pc in Object(n)?Nc(n):Cc(n)}var xt=Ih;function Oh(n){return n!=null&&typeof n=="object"}var et=Oh;var Mh="[object Symbol]";function Dh(n){return typeof n=="symbol"||et(n)&&xt(n)==Mh}var xo=Dh;function Bh(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=Bh;var Eh=Array.isArray,Oe=Eh;var Gh=1/0,Lc=nt?nt.prototype:void 0,Ic=Lc?Lc.toString:void 0;function Oc(n){if(typeof n=="string")return n;if(Oe(n))return Di(n,Oc)+"";if(xo(n))return Ic?Ic.call(n):"";var t=n+"";return t=="0"&&1/n==-Gh?"-0":t}var Mc=Oc;function Rh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Rh;function Vh(n){return n}var Bi=Vh;var Fh="[object AsyncFunction]",zh="[object Function]",Uh="[object GeneratorFunction]",jh="[object Proxy]";function kh(n){if(!ze(n))return!1;var t=xt(n);return t==zh||t==Uh||t==Fh||t==jh}var vo=kh;var Hh=Re["__core-js_shared__"],Ei=Hh;var Dc=function(){var n=/[^.]+$/.exec(Ei&&Ei.keys&&Ei.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wh(n){return!!Dc&&Dc in n}var Bc=Wh;var qh=Function.prototype,$h=qh.toString;function Xh(n){if(n!=null){try{return $h.call(n)}catch{}try{return n+""}catch{}}return""}var gr=Xh;var Yh=/[\\^$.*+?()[\]{}|]/g,Kh=/^\[object .+?Constructor\]$/,Zh=Function.prototype,Qh=Object.prototype,Jh=Zh.toString,eg=Qh.hasOwnProperty,tg=RegExp("^"+Jh.call(eg).replace(Yh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rg(n){if(!ze(n)||Bc(n))return!1;var t=vo(n)?tg:Kh;return t.test(gr(n))}var Ec=rg;function og(n,t){return n?.[t]}var Gc=og;function ng(n,t){var e=Gc(n,t);return Ec(e)?e:void 0}var ut=ng;var ig=ut(Re,"WeakMap"),Gi=ig;var Rc=Object.create,sg=function(){function n(){}return function(t){if(!ze(t))return{};if(Rc)return Rc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Vc=sg;function ag(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=ag;function lg(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Ri=lg;var cg=800,ug=16,pg=Date.now;function dg(n){var t=0,e=0;return function(){var r=pg(),o=ug-(r-e);if(e=r,o>0){if(++t>=cg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var zc=dg;function fg(n){return function(){return n}}var Uc=fg;var mg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),bo=mg;var hg=bo?function(n,t){return bo(n,"toString",{configurable:!0,enumerable:!1,value:Uc(t),writable:!0})}:Bi,jc=hg;var gg=zc(jc),Vi=gg;function yg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var kc=yg;var xg=9007199254740991,vg=/^(?:0|[1-9]\d*)$/;function bg(n,t){var e=typeof n;return t=t??xg,!!t&&(e=="number"||e!="symbol"&&vg.test(n))&&n>-1&&n%1==0&&n<t}var Cr=bg;function Sg(n,t,e){t=="__proto__"&&bo?bo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=Sg;function wg(n,t){return n===t||n!==n&&t!==t}var Pr=wg;var _g=Object.prototype,Tg=_g.hasOwnProperty;function Ag(n,t,e){var r=n[t];(!(Tg.call(n,t)&&Pr(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=Ag;function Ng(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=Ng;var Hc=Math.max;function Cg(n,t,e){return t=Hc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Hc(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 Fi=Cg;function Pg(n,t){return Vi(Fi(n,t,Bi),n+"")}var Wc=Pg;var Lg=9007199254740991;function Ig(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Lg}var _o=Ig;function Og(n){return n!=null&&_o(n.length)&&!vo(n)}var Lr=Og;function Mg(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)?Pr(e[t],n):!1}var qc=Mg;function Dg(n){return Wc(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&&qc(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 $c=Dg;var Bg=Object.prototype;function Eg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Bg;return n===e}var To=Eg;function Gg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Xc=Gg;var Rg="[object Arguments]";function Vg(n){return et(n)&&xt(n)==Rg}var Na=Vg;var Yc=Object.prototype,Fg=Yc.hasOwnProperty,zg=Yc.propertyIsEnumerable,Ug=Na(function(){return arguments}())?Na:function(n){return et(n)&&Fg.call(n,"callee")&&!zg.call(n,"callee")},yr=Ug;function jg(){return!1}var Kc=jg;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Zc=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,kg=Zc&&Zc.exports===Jc,Qc=kg?Re.Buffer:void 0,Hg=Qc?Qc.isBuffer:void 0,Wg=Hg||Kc,Ao=Wg;var qg="[object Arguments]",$g="[object Array]",Xg="[object Boolean]",Yg="[object Date]",Kg="[object Error]",Zg="[object Function]",Qg="[object Map]",Jg="[object Number]",ey="[object Object]",ty="[object RegExp]",ry="[object Set]",oy="[object String]",ny="[object WeakMap]",iy="[object ArrayBuffer]",sy="[object DataView]",ay="[object Float32Array]",ly="[object Float64Array]",cy="[object Int8Array]",uy="[object Int16Array]",py="[object Int32Array]",dy="[object Uint8Array]",fy="[object Uint8ClampedArray]",my="[object Uint16Array]",hy="[object Uint32Array]",Ce={};Ce[ay]=Ce[ly]=Ce[cy]=Ce[uy]=Ce[py]=Ce[dy]=Ce[fy]=Ce[my]=Ce[hy]=!0;Ce[qg]=Ce[$g]=Ce[iy]=Ce[Xg]=Ce[sy]=Ce[Yg]=Ce[Kg]=Ce[Zg]=Ce[Qg]=Ce[Jg]=Ce[ey]=Ce[ty]=Ce[ry]=Ce[oy]=Ce[ny]=!1;function gy(n){return et(n)&&_o(n.length)&&!!Ce[xt(n)]}var eu=gy;function yy(n){return function(t){return n(t)}}var No=yy;var tu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cn=tu&&typeof module=="object"&&module&&!module.nodeType&&module,xy=Cn&&Cn.exports===tu,Ca=xy&&Mi.process,vy=function(){try{var n=Cn&&Cn.require&&Cn.require("util").types;return n||Ca&&Ca.binding&&Ca.binding("util")}catch{}}(),xr=vy;var ru=xr&&xr.isTypedArray,by=ru?No(ru):eu,zi=by;var Sy=Object.prototype,wy=Sy.hasOwnProperty;function _y(n,t){var e=Oe(n),r=!e&&yr(n),o=!e&&!r&&Ao(n),i=!e&&!r&&!o&&zi(n),s=e||r||o||i,l=s?Xc(n.length,String):[],c=l.length;for(var p in n)(t||wy.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=_y;function Ty(n,t){return function(e){return n(t(e))}}var ji=Ty;var Ay=ji(Object.keys,Object),ou=Ay;var Ny=Object.prototype,Cy=Ny.hasOwnProperty;function Py(n){if(!To(n))return ou(n);var t=[];for(var e in Object(n))Cy.call(n,e)&&e!="constructor"&&t.push(e);return t}var nu=Py;function Ly(n){return Lr(n)?Ui(n):nu(n)}var Co=Ly;function Iy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var iu=Iy;var Oy=Object.prototype,My=Oy.hasOwnProperty;function Dy(n){if(!ze(n))return iu(n);var t=To(n),e=[];for(var r in n)r=="constructor"&&(t||!My.call(n,r))||e.push(r);return e}var su=Dy;function By(n){return Lr(n)?Ui(n,!0):su(n)}var Wt=By;var Ey=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Gy=/^\w*$/;function Ry(n,t){if(Oe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||xo(n)?!0:Gy.test(n)||!Ey.test(n)||t!=null&&n in Object(t)}var au=Ry;var Vy=ut(Object,"create"),vr=Vy;function Fy(){this.__data__=vr?vr(null):{},this.size=0}var lu=Fy;function zy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var cu=zy;var Uy="__lodash_hash_undefined__",jy=Object.prototype,ky=jy.hasOwnProperty;function Hy(n){var t=this.__data__;if(vr){var e=t[n];return e===Uy?void 0:e}return ky.call(t,n)?t[n]:void 0}var uu=Hy;var Wy=Object.prototype,qy=Wy.hasOwnProperty;function $y(n){var t=this.__data__;return vr?t[n]!==void 0:qy.call(t,n)}var pu=$y;var Xy="__lodash_hash_undefined__";function Yy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=vr&&t===void 0?Xy:t,this}var du=Yy;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=lu;Po.prototype.delete=cu;Po.prototype.get=uu;Po.prototype.has=pu;Po.prototype.set=du;var Pa=Po;function Ky(){this.__data__=[],this.size=0}var fu=Ky;function Zy(n,t){for(var e=n.length;e--;)if(Pr(n[e][0],t))return e;return-1}var Ir=Zy;var Qy=Array.prototype,Jy=Qy.splice;function ex(n){var t=this.__data__,e=Ir(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Jy.call(t,e,1),--this.size,!0}var mu=ex;function tx(n){var t=this.__data__,e=Ir(t,n);return e<0?void 0:t[e][1]}var hu=tx;function rx(n){return Ir(this.__data__,n)>-1}var gu=rx;function ox(n,t){var e=this.__data__,r=Ir(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var yu=ox;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=fu;Lo.prototype.delete=mu;Lo.prototype.get=hu;Lo.prototype.has=gu;Lo.prototype.set=yu;var Or=Lo;var nx=ut(Re,"Map"),Mr=nx;function ix(){this.size=0,this.__data__={hash:new Pa,map:new(Mr||Or),string:new Pa}}var xu=ix;function sx(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var vu=sx;function ax(n,t){var e=n.__data__;return vu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dr=ax;function lx(n){var t=Dr(this,n).delete(n);return this.size-=t?1:0,t}var bu=lx;function cx(n){return Dr(this,n).get(n)}var Su=cx;function ux(n){return Dr(this,n).has(n)}var wu=ux;function px(n,t){var e=Dr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var _u=px;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=xu;Io.prototype.delete=bu;Io.prototype.get=Su;Io.prototype.has=wu;Io.prototype.set=_u;var Pn=Io;var dx="Expected a function";function La(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(dx);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(La.Cache||Pn),e}La.Cache=Pn;var Tu=La;var fx=500;function mx(n){var t=Tu(n,function(r){return e.size===fx&&e.clear(),r}),e=t.cache;return t}var Au=mx;var hx=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,gx=/\\(\\)?/g,yx=Au(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(hx,function(e,r,o,i){t.push(o?i.replace(gx,"$1"):r||e)}),t}),Nu=yx;function xx(n){return n==null?"":Mc(n)}var Cu=xx;function vx(n,t){return Oe(n)?n:au(n,t)?[n]:Nu(Cu(n))}var Tt=vx;var bx=1/0;function Sx(n){if(typeof n=="string"||xo(n))return n;var t=n+"";return t=="0"&&1/n==-bx?"-0":t}var Br=Sx;function wx(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=wx;function _x(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Oo=_x;var Pu=nt?nt.isConcatSpreadable:void 0;function Tx(n){return Oe(n)||yr(n)||!!(Pu&&n&&n[Pu])}var Lu=Tx;function Iu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Lu),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 Ou=Iu;function Ax(n){var t=n==null?0:n.length;return t?Ou(n,1):[]}var Mu=Ax;function Nx(n){return Vi(Fi(n,void 0,Mu),n+"")}var Hi=Nx;var Cx=ji(Object.getPrototypeOf,Object),Mo=Cx;var Px="[object Object]",Lx=Function.prototype,Ix=Object.prototype,Du=Lx.toString,Ox=Ix.hasOwnProperty,Mx=Du.call(Object);function Dx(n){if(!et(n)||xt(n)!=Px)return!1;var t=Mo(n);if(t===null)return!0;var e=Ox.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Du.call(e)==Mx}var Wi=Dx;function Bx(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 Bu=Bx;function Ex(){this.__data__=new Or,this.size=0}var Eu=Ex;function Gx(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Gu=Gx;function Rx(n){return this.__data__.get(n)}var Ru=Rx;function Vx(n){return this.__data__.has(n)}var Vu=Vx;var Fx=200;function zx(n,t){var e=this.__data__;if(e instanceof Or){var r=e.__data__;if(!Mr||r.length<Fx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Pn(r)}return e.set(n,t),this.size=e.size,this}var Fu=zx;function Do(n){var t=this.__data__=new Or(n);this.size=t.size}Do.prototype.clear=Eu;Do.prototype.delete=Gu;Do.prototype.get=Ru;Do.prototype.has=Vu;Do.prototype.set=Fu;var qi=Do;function Ux(n,t){return n&&_t(t,Co(t),n)}var zu=Ux;function jx(n,t){return n&&_t(t,Wt(t),n)}var Uu=jx;var Wu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ju=Wu&&typeof module=="object"&&module&&!module.nodeType&&module,kx=ju&&ju.exports===Wu,ku=kx?Re.Buffer:void 0,Hu=ku?ku.allocUnsafe:void 0;function Hx(n,t){if(t)return n.slice();var e=n.length,r=Hu?Hu(e):new n.constructor(e);return n.copy(r),r}var $i=Hx;function Wx(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 qu=Wx;function qx(){return[]}var Xi=qx;var $x=Object.prototype,Xx=$x.propertyIsEnumerable,$u=Object.getOwnPropertySymbols,Yx=$u?function(n){return n==null?[]:(n=Object(n),qu($u(n),function(t){return Xx.call(n,t)}))}:Xi,Bo=Yx;function Kx(n,t){return _t(n,Bo(n),t)}var Xu=Kx;var Zx=Object.getOwnPropertySymbols,Qx=Zx?function(n){for(var t=[];n;)Oo(t,Bo(n)),n=Mo(n);return t}:Xi,Yi=Qx;function Jx(n,t){return _t(n,Yi(n),t)}var Yu=Jx;function e0(n,t,e){var r=t(n);return Oe(n)?r:Oo(r,e(n))}var Ki=e0;function t0(n){return Ki(n,Co,Bo)}var Ku=t0;function r0(n){return Ki(n,Wt,Yi)}var Zi=r0;var o0=ut(Re,"DataView"),Qi=o0;var n0=ut(Re,"Promise"),Ji=n0;var i0=ut(Re,"Set"),es=i0;var Zu="[object Map]",s0="[object Object]",Qu="[object Promise]",Ju="[object Set]",ep="[object WeakMap]",tp="[object DataView]",a0=gr(Qi),l0=gr(Mr),c0=gr(Ji),u0=gr(es),p0=gr(Gi),Zr=xt;(Qi&&Zr(new Qi(new ArrayBuffer(1)))!=tp||Mr&&Zr(new Mr)!=Zu||Ji&&Zr(Ji.resolve())!=Qu||es&&Zr(new es)!=Ju||Gi&&Zr(new Gi)!=ep)&&(Zr=function(n){var t=xt(n),e=t==s0?n.constructor:void 0,r=e?gr(e):"";if(r)switch(r){case a0:return tp;case l0:return Zu;case c0:return Qu;case u0:return Ju;case p0:return ep}return t});var Eo=Zr;var d0=Object.prototype,f0=d0.hasOwnProperty;function m0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&f0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var rp=m0;var h0=Re.Uint8Array,Ia=h0;function g0(n){var t=new n.constructor(n.byteLength);return new Ia(t).set(new Ia(n)),t}var Go=g0;function y0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var op=y0;var x0=/\w*$/;function v0(n){var t=new n.constructor(n.source,x0.exec(n));return t.lastIndex=n.lastIndex,t}var np=v0;var ip=nt?nt.prototype:void 0,sp=ip?ip.valueOf:void 0;function b0(n){return sp?Object(sp.call(n)):{}}var ap=b0;function S0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ts=S0;var w0="[object Boolean]",_0="[object Date]",T0="[object Map]",A0="[object Number]",N0="[object RegExp]",C0="[object Set]",P0="[object String]",L0="[object Symbol]",I0="[object ArrayBuffer]",O0="[object DataView]",M0="[object Float32Array]",D0="[object Float64Array]",B0="[object Int8Array]",E0="[object Int16Array]",G0="[object Int32Array]",R0="[object Uint8Array]",V0="[object Uint8ClampedArray]",F0="[object Uint16Array]",z0="[object Uint32Array]";function U0(n,t,e){var r=n.constructor;switch(t){case I0:return Go(n);case w0:case _0:return new r(+n);case O0:return op(n,e);case M0:case D0:case B0:case E0:case G0:case R0:case V0:case F0:case z0:return ts(n,e);case T0:return new r;case A0:case P0:return new r(n);case N0:return np(n);case C0:return new r;case L0:return ap(n)}}var lp=U0;function j0(n){return typeof n.constructor=="function"&&!To(n)?Vc(Mo(n)):{}}var rs=j0;var k0="[object Map]";function H0(n){return et(n)&&Eo(n)==k0}var cp=H0;var up=xr&&xr.isMap,W0=up?No(up):cp,pp=W0;var q0="[object Set]";function $0(n){return et(n)&&Eo(n)==q0}var dp=$0;var fp=xr&&xr.isSet,X0=fp?No(fp):dp,mp=X0;var Y0=1,K0=2,Z0=4,hp="[object Arguments]",Q0="[object Array]",J0="[object Boolean]",ev="[object Date]",tv="[object Error]",gp="[object Function]",rv="[object GeneratorFunction]",ov="[object Map]",nv="[object Number]",yp="[object Object]",iv="[object RegExp]",sv="[object Set]",av="[object String]",lv="[object Symbol]",cv="[object WeakMap]",uv="[object ArrayBuffer]",pv="[object DataView]",dv="[object Float32Array]",fv="[object Float64Array]",mv="[object Int8Array]",hv="[object Int16Array]",gv="[object Int32Array]",yv="[object Uint8Array]",xv="[object Uint8ClampedArray]",vv="[object Uint16Array]",bv="[object Uint32Array]",Ne={};Ne[hp]=Ne[Q0]=Ne[uv]=Ne[pv]=Ne[J0]=Ne[ev]=Ne[dv]=Ne[fv]=Ne[mv]=Ne[hv]=Ne[gv]=Ne[ov]=Ne[nv]=Ne[yp]=Ne[iv]=Ne[sv]=Ne[av]=Ne[lv]=Ne[yv]=Ne[xv]=Ne[vv]=Ne[bv]=!0;Ne[tv]=Ne[gp]=Ne[cv]=!1;function os(n,t,e,r,o,i){var s,l=t&Y0,c=t&K0,p=t&Z0;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=rp(n),!l)return Ri(n,s)}else{var u=Eo(n),d=u==gp||u==rv;if(Ao(n))return $i(n,l);if(u==yp||u==hp||d&&!o){if(s=c||d?{}:rs(n),!l)return c?Yu(n,Uu(s,n)):Xu(n,zu(s,n))}else{if(!Ne[u])return o?n:{};s=lp(n,u,l)}}i||(i=new qi);var f=i.get(n);if(f)return f;i.set(n,s),mp(n)?n.forEach(function(g){s.add(os(g,t,e,g,n,i))}):pp(n)&&n.forEach(function(g,x){s.set(x,os(g,t,e,x,n,i))});var m=p?c?Zi:Ku:c?Wt:Co,h=a?void 0:m(n);return kc(h||n,function(g,x){h&&(x=g,g=n[x]),wo(s,x,os(g,t,e,x,n,i))}),s}var ns=os;var Sv=1,wv=4;function _v(n){return ns(n,Sv|wv)}var Ln=_v;function Tv(n,t){return n!=null&&t in Object(n)}var xp=Tv;function Av(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)||yr(n)))}var vp=Av;function Nv(n,t){return n!=null&&vp(n,t,xp)}var bp=Nv;function Cv(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 Sp=Cv;var Pv=Sp(),wp=Pv;function Lv(n,t,e){(e!==void 0&&!Pr(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var In=Lv;function Iv(n){return et(n)&&Lr(n)}var _p=Iv;function Ov(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var On=Ov;function Mv(n){return _t(n,Wt(n))}var Tp=Mv;function Dv(n,t,e,r,o,i,s){var l=On(n,e),c=On(t,e),p=s.get(c);if(p){In(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:_p(l)?a=Ri(l):f?(u=!1,a=$i(c,!0)):m?(u=!1,a=ts(c,!0)):a=[]:Wi(c)||yr(c)?(a=l,yr(l)?a=Tp(l):(!ze(l)||vo(l))&&(a=rs(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),In(n,e,a)}var Ap=Dv;function Np(n,t,e,r,o){n!==t&&wp(t,function(i,s){if(o||(o=new qi),ze(i))Ap(n,t,s,e,Np,r,o);else{var l=r?r(On(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),In(n,s,l)}},Wt)}var Cp=Np;function Bv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Pp=Bv;function Ev(n,t){return t.length<2?n:ki(n,Bu(t,0,-1))}var Lp=Ev;var Gv=$c(function(n,t,e){Cp(n,t,e)}),Qr=Gv;function Rv(n,t){return t=Tt(t,n),n=Lp(n,t),n==null||delete n[Br(Pp(t))]}var Ip=Rv;function Vv(n){return Wi(n)?void 0:n}var Op=Vv;var Fv=1,zv=2,Uv=4,jv=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,Zi(n),e),r&&(e=ns(e,Fv|zv|Uv,Op));for(var o=t.length;o--;)Ip(e,t[o]);return e}),Ro=jv;function kv(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 Mp=kv;function Hv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=ki(n,s);e(l,s)&&Mp(i,Tt(s,n),l)}return i}var Dp=Hv;function Wv(n,t){return Dp(n,t,function(e,r){return bp(n,r)})}var Bp=Wv;var qv=Hi(function(n,t){return n==null?{}:Bp(n,t)}),Oa=qv;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 Ep;(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})(Ep||(Ep={}));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 Gp;(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})(Gp||(Gp={}));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 Rp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Rp||(Rp={}));var Vp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Vp||(Vp={}));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 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 as=class extends Error{};function qt(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 zp(){return typeof process<"u"}function Up(n,t){for(let e of n)t(e.id,e.data),Up(e.children,t)}function jp(n,t){t(n.id,n.data);for(let e of n.children)jp(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&&jp(o,r)}}traverse(e){Up(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)=>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 qt(0,o,o);{let s=i[0].fi;return qt(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 qt(c,c+o,o)}else return qt(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 zp()||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 qt(0,r,r);{let i=o[0].fi;return qt(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 qt(l,l+r,r)}else return qt(i.fi,s.fi,r)}}};var kp=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]}}}},Da=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))}},Ba=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))}},Hp={get(n,t){if(t===ps)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=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]}}},$v={...Hp,set(n,t,e){let r={type:0,props:{[t]:$t(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}},Xv={...Hp,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 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 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){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 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 Ba(n,t,e),Xv):e!==null&&typeof e=="object"?ls(e)?e:new Proxy(new Da(n,t,e),$v):e}function Ea(n){let t=new us(n);return[ds(t,"",n),t]}function Ga(n,t){let[e,r]=Ea(n);return t(e),r.result()}function $t(n){return n instanceof Uo||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 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 Va;try{Va=new TextDecoder}catch{}var te,Rr,_=0;var Qp=[],Fa=Qp,za=0,dt={},xe,Gr,Nt=0,Xt=0,bt,br,it=[],_e,Wp={useRecords:!1,mapsAsObjects:!0},En=class{},ja=new En;ja.name="MessagePack 0xC1";var ko=!1,Yt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return od(()=>(gs(),this?this.unpack(t,e):Yt.prototype.unpack.call(Wp,t,e)));Rr=e>-1?e:t.length,_=0,za=0,Xt=0,Gr=null,Fa=Qp,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 Yt){if(dt=this,this.structures)return xe=this.structures,hs();(!xe||xe.length>0)&&(xe=[])}else dt=Wp,(!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&&qp(),xe=null,te=null,br&&(br=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&&qp(),gs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function qp(){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&&Jp()[n&63];return t?(t.read||(t.read=ka(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[td()]=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(Xt>=_)return Gr.slice(_-Nt,(_+=t)-Nt);if(Xt==0&&Rr<140){let e=t<16?Ha(t):ed(t);if(e!=null)return e}return Ua(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)):ja;case 194:return!1;case 195:return!0;case 196:return Ra(te[_++]);case 197:return t=_e.getUint16(_),_+=2,Ra(t);case 198:return t=_e.getUint32(_),_+=4,Ra(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 Zp(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?(_++,Zp(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[_++],Xt>=_?Gr.slice(_-Nt,(_+=t)-Nt):Kv(t);case 218:return t=_e.getUint16(_),_+=2,Xt>=_?Gr.slice(_-Nt,(_+=t)-Nt):Zv(t);case 219:return t=_e.getUint32(_),_+=4,Xt>=_?Gr.slice(_-Nt,(_+=t)-Nt):Qv(t);case 220:return t=_e.getUint16(_),_+=2,Xp(t);case 221:return t=_e.getUint32(_),_+=4,Xp(t);case 222:return t=_e.getUint16(_),_+=2,Yp(t);case 223:return t=_e.getUint32(_),_+=4,Yp(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 Yv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ka(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Yv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Me);return n.highByte===0&&(n.read=$p(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?$p(t,e):e}var $p=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Jp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ka(o,n)),o.read()};function Jp(){let n=od(()=>(te=null,dt.getStructures()));return xe=dt._mergeStructures(n,xe)}var Ua=ys,Kv=ys,Zv=ys,Qv=ys;function ys(n){let t;if(n<16&&(t=Ha(n)))return t;if(n>64&&Va)return Va.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 Xp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}function Yp(n){if(dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[td()]=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 ed(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 Ha(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 Ra(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 Kp=new Array(4096);function td(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,Xt>=_)return Gr.slice(_-Nt,(_+=n)-Nt);if(!(Xt==0&&Rr<180))return Ua(n)}else return _--,Me();let t=(n<<5^(n>1?_e.getUint16(_):n>0?te[_]:0))&4095,e=Kp[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=[],Kp[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?Ha(n):ed(n);return l!=null?e.string=l:e.string=Ua(n)}var Zp=(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=ka(e,r),e.read()},rd=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=Me();return(rd[n[0]]||Error)(n[1])};it[105]=n=>{let t=_e.getUint32(_-4);br||(br=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};br.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=br.get(t);return e.used=!0,e.target};it[115]=()=>new Set(Me());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 rd[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 od(n){let t=Rr,e=_,r=za,o=Nt,i=Xt,s=Gr,l=Fa,c=br,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,za=r,Nt=o,Xt=i,Gr=s,Fa=l,br=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,br=null,xe=null}function nd(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 Yt({useRecords:!1}),Jv=vs.unpack,eb=vs.unpackMultiple,tb=vs.unpack,bs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rb=new Float32Array(1),SM=new Uint8Array(rb.buffer,0,4);var Ss;try{Ss=new TextEncoder}catch{}var ws,$a,_s=typeof Buffer<"u",qa=_s?Buffer.allocUnsafeSlow:Uint8Array,ld=_s?Buffer:Uint8Array,id=_s?4294967296:2144337920,R,Be,P=0,Kt,Zt=null,ob=/[\u0080-\uFFFF]/,Gn=Symbol("record-id"),to=class extends Yt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=ld.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,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,g=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(y,I){if(R||(R=new qa(8192),Be=new DataView(R.buffer,0,8192),P=0),Kt=R.length-10,Kt-P<2048?(R=new qa(R.length),Be=new DataView(R.buffer,0,R.length),Kt=R.length-10,P=0):P=P+7&2147483640,r=P,l=a.structuredClone?new Map:null,a.bundleStrings?(Zt=["",""],R[P++]=214,R[P++]=98,Zt.position=P-r,P+=4):Zt=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(y),Zt){Be.setUint32(Zt.position+r,P-Zt.position-r);let T=Zt;Zt=null,b(T[0]),b(T[1])}if(a.offset=P,l&&l.idsToInsert){P+=l.idsToInsert.length*6,P>Kt&&w(P),a.offset=P;let T=ib(R.subarray(r,P),l.idsToInsert);return l=null,T}return I&ud?(R.start=r,R.end=P,R):R.subarray(r,P)}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,P);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=T,L)}}I&db&&(P=r)}};let b=y=>{P>Kt&&(R=w(P));var I=typeof y,T;if(I==="string"){let L=y.length;if(Zt&&L>=8&&L<4096){let k=ob.test(y);Zt[k?0:1]+=y,R[P++]=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(P+C>Kt&&(R=w(P+C)),L<64||!p){let k,W,oe,ce=P+N;for(k=0;k<L;k++)W=y.charCodeAt(k),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=y.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-P-N}else T=p(y,P+N,C);T<32?R[P++]=160|T:T<256?(N<2&&R.copyWithin(P+2,P+1,P+1+T),R[P++]=217,R[P++]=T):T<65536?(N<3&&R.copyWithin(P+3,P+2,P+2+T),R[P++]=218,R[P++]=T>>8,R[P++]=T&255):(N<5&&R.copyWithin(P+5,P+3,P+3+T),R[P++]=219,Be.setUint32(P,T),P+=4),P+=T}else if(I==="number")if(y>>>0===y)y<64?R[P++]=y:y<256?(R[P++]=204,R[P++]=y):y<65536?(R[P++]=205,R[P++]=y>>8,R[P++]=y&255):(R[P++]=206,Be.setUint32(P,y),P+=4);else if(y>>0===y)y>=-32?R[P++]=256+y:y>=-128?(R[P++]=208,R[P++]=y+256):y>=-32768?(R[P++]=209,Be.setInt16(P,y),P+=2):(R[P++]=210,Be.setInt32(P,y),P+=4);else{let L;if((L=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[P++]=202,Be.setFloat32(P,y);let N;if(L<4||(N=y*xs[(R[P]&127)<<1|R[P+1]>>7])>>0===N){P+=4;return}else P--}R[P++]=203,Be.setFloat64(P,y),P+=8}else if(I==="object")if(!y)R[P++]=192;else{if(l){let N=l.get(y);if(N){if(!N.id){let C=l.idsToInsert||(l.idsToInsert=[]);N.id=C.push(N)}R[P++]=214,R[P++]=112,Be.setUint32(P,N.id),P+=4;return}else l.set(y,{offset:P-r})}let L=y.constructor;if(L===Object)D(y,!0);else if(L===Array){T=y.length,T<16?R[P++]=144|T:T<65536?(R[P++]=220,R[P++]=T>>8,R[P++]=T&255):(R[P++]=221,Be.setUint32(P,T),P+=4);for(let N=0;N<T;N++)b(y[N])}else if(L===Map){T=y.size,T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,Be.setUint32(P,T),P+=4);for(let[N,C]of y)b(N),b(C)}else{for(let N=0,C=ws.length;N<C;N++){let k=$a[N];if(y instanceof k){let W=ws[N];if(W.write){W.type&&(R[P++]=212,R[P++]=W.type,R[P++]=0),b(W.write.call(this,y));return}let oe=R,ce=Be,ie=P;R=null;let K;try{K=W.pack.call(this,y,U=>(R=oe,oe=null,P+=U,P>Kt&&w(P),{target:R,targetView:Be,position:P-U}),b)}finally{oe&&(R=oe,Be=ce,P=ie,Kt=R.length-10)}K&&(K.length+P>Kt&&w(K.length+P),P=nb(K,R,P,W.type));return}}D(y,!y.hasOwnProperty)}}else if(I==="boolean")R[P++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[P++]=211,Be.setBigInt64(P,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[P++]=207,Be.setBigUint64(P,y);else if(this.largeBigIntToFloat)R[P++]=203,Be.setFloat64(P,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");P+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[P++]=192:(R[P++]=212,R[P++]=0,R[P++]=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[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,Be.setUint32(P,T),P+=4);let L;for(let N=0;N<T;N++)b(L=I[N]),b(y[L])}:(y,I)=>{R[P++]=222;let T=P-r;P+=2;let L=0;for(let N in y)(I||y.hasOwnProperty(N))&&(b(N),b(y[N]),L++);R[T+++r]=L>>8,R[T+r]=L&255}:y=>{let I=Object.keys(y),T,L=s.transitions||(s.transitions=Object.create(null)),N=0;for(let k=0,W=I.length;k<W;k++){let oe=I[k];T=L[oe],T||(T=L[oe]=Object.create(null),N++),L=T}let C=L[Gn];if(C)C>=96&&h?(R[P++]=((C-=96)&31)+96,R[P++]=C>>5):R[P++]=C;else{C=s.nextId,C||(C=64),C<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(C=s.nextOwnId,C<x||(C=g),s.nextOwnId=C+1):(C>=x&&(C=g),s.nextId=C+1);let k=I.highByte=C>=96&&h?C-96>>5:-1;L[Gn]=C,s[C-64]=I,C<g?(I.isShared=!0,s.sharedLength=C-63,i=!0,k>=0?(R[P++]=(C&31)+96,R[P++]=k):R[P++]=C):(k>=0?(R[P++]=213,R[P++]=114,R[P++]=(C&31)+96,R[P++]=k):(R[P++]=212,R[P++]=114,R[P++]=C),N&&(A+=S*N),v.length>=m&&(v.shift()[Gn]=0),v.push(L),b(I))}for(let k=0,W=I.length;k<W;k++)b(y[I[k]])},w=y=>{let I;if(y>16777216){if(y-r>id)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(id,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 Be=new DataView(T.buffer,0,I),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),P-=r,r=0,Kt=T.length-10,R=T}}useBuffer(t){R=t,Be=new DataView(R.buffer,R.byteOffset,R.byteLength),P=0}};$a=[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?sd(n,16,t):ad(_s?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==ld&&this.structuredClone?sd(n,Wa.indexOf(e.name),t):ad(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function sd(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 ad(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 nb(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 ib(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)}nd(n)}var cd=new to({useRecords:!1}),sb=cd.pack,ab=cd.pack;var{NEVER:lb,ALWAYS:cb,DECIMAL_ROUND:ub,DECIMAL_FIT:pb}=bs,ud=512,db=1024;var pd=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 fb(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(ls(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 Ts;(r=>{function n(o){return pd.pack(o)}r.serialize=n;function t(o){return pd.unpack(o)}r.deserialize=t;function e(o){return fb(n(Xa(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 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 Cs;(t=>t.defaultData={...Ka.defaultData,...Ya.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Za=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Za||{}),Qa=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Qa||{}),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 dd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],fd=["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]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...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 Dt;(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})(Dt||(Dt={}));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 md;(t=>t.defaultData={type:"Empty",...Sr.defaultData})(md||(md={}));var Is;(t=>t.defaultData={type:"Mesh",...Sr.defaultData,...Cs.defaultData})(Is||(Is={}));var hd;(t=>t.defaultData={type:"TextFrame",...Sr.defaultData,...Ps.defaultData})(hd||(hd={}));var Os;(t=>t.defaultData={...Sr.defaultData,...Vn.identity,...Jr.defaultData})(Os||(Os={}));var gd;(t=>{function n(e){return{...Sr.defaultData,...Ns.defaultData(e)}}t.defaultData=n})(gd||(gd={}));var yd;(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,...Is.defaultData,geometry:Rn.defaultData("RectangleGeometry"),material:Dt.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Sr.defaultData,...Is.defaultData,geometry:Rn.defaultData("BooleanGeometry"),material:Dt.defaultTwoLayerData("phong","layer1","layer2")}))(yd||(yd={}));var xd;(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&&Qr(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&&Qr(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})(xd||(xd={}));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,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 vd(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={...Oa($t(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={...$t(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function el(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function tl(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function mb(n){Object.assign(n.scene.publish,{orbitControls:{...Ms.defaultData,...$t(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((dd.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(fd.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,preload:!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 bd(n){n.layers===void 0&&Object.assign(n,Dt.defaultTwoLayerData("lambert"))}function rl(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={...$t(t),colors:e,steps:r};Object.assign(t,o)}})}function Sb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Sd(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)}),Object.values(n.shared.materials).forEach(t=>rl(t))}function wb(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 _b(n){n.shared.audios=Oi({},Ve.prototype)}function Tb(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 Ab(n){Object.entries($t(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries($t(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function Nb(n){n.scene.publish.settings.web.preload=!1}function wd(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}var _d=18;function Td(n){let t=n.schema??0;t!==_d&&(console.warn("updating from ",t,"to ",_d),t<1&&(tl(n,vd),el(n,vd),n.schema=1),t<2&&(mb(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&&(Sd(n),n.schema=9),t<10&&(Sb(n),n.schema=10),t<11&&(wb(n),n.schema=11),t<12&&(Sd(n),n.schema=12),t<13&&(_b(n),n.schema=13),t<14&&(Tb(n),n.schema=14),t<15&&(Ab(n),n.schema=15),t<16&&(Nb(n),n.schema=16),t<17&&(tl(n,wd),el(n,wd),n.schema=17),t<18&&(tl(n,bd),el(n,bd),n.schema=18))}var Bs;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Bs||(Bs={}));import{Color as Cb}from"three";var Ue=class extends Cb{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 Ib}from"three";import{BufferGeometry as Pb,CylinderBufferGeometry as Lb,Float32BufferAttribute as ol,Vector2 as Bt,Vector3 as Es}from"three";var Nd=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 Lb(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 Ad(n){return new Bt(n.y,-n.x)}var zn=class extends Pb{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=[],g=[],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 Bt(t,A),w=new Bt(e,-A),y=null,I=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;y=D.clone().sub(new Bt(z,p)),d&&(T=y.clone(),T.x-=C-V*p),D.sub(N.clone().setLength(z))}if(a>0){let z=a/U;I=w.clone().sub(new Bt(z,-a)),w.add(N.clone().setLength(z)),d&&(L=I.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 Bt(Math.sin(J),Math.cos(J));L&&I?(Z(M,q,ee,ce,a,L,-1,!0),Z(M,q,ee,ie,a,I,-1,!1)):I?(j(M,ee,I.x,0,-1),Z(M,q,ee,ie,a,I,-1,!1)):s||j(M,ee,e,W,-1);let H=Ad(N).normalize();if(Fr(H,ee,S),!O)for(let Q=0;Q<=i;Q++){let $=Q/i,re=N.clone().multiplyScalar($).add(w);Fr(re,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Z(M,q,ee,ce,p,y,1,!1),Z(M,q,ee,ie,p,T,1,!0)):y?(Z(M,q,ee,ce,p,y,1,!1),j(M,ee,y.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Q=Ad(N).multiplyScalar(-1).normalize();Fr(Q,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),g.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],Q=h[ee*3+0],$=h[ee*3+2];m.push(q,J,H),(Q!=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 ol(h,3)),this.setAttribute("normal",new ol(g,3)),this.setAttribute("uv",new ol(x,2));function Z(z,M,q,J,ee,H,Q,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Q<0?le:1-le;$&&(ne-=1),ne*=J;let fe=new Bt(Math.sin(ne),Math.cos(ne)*Q),Ie=fe.clone().multiplyScalar(ee).add(H);Fr(Ie,q,b),h.push(b.x,b.y,b.z),Fr(fe,q,S),g.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,Q=new Bt,$=[q,J];ee<0&&$.reverse();for(let re of $)Q.set(re,A*ee),Fr(Q,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function F(z,M,q){let J=new Bt(Math.sin(q),Math.cos(q)),ee=new Bt(-Math.cos(q),Math.sin(q)),H=new Es,Q=z<0?(le,ne,fe)=>m.push(le,ne,fe):(le,ne,fe)=>m.push(le,fe,ne),$=new Bt((t+e+k+W)/4,0);Fr($,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 fe=x.slice(le*2,le*2+2);x.push(...fe),v++}for(let le=re+1;le<v-1;le++)Q(re,le,le+1);Q(re,v-1,re+1)}}};var Cd=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 Ib(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 Mb,Float32BufferAttribute as nl,Vector3 as Un}from"three";var Pd=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 Mb{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;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(f,2));function g(A,S,b,D,w,y,I,T,L,N,C){let k=(y-2*l)/L,W=(I-2*l)/N,oe=y/2-l,ce=I/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 Z=0;Z<K;Z++){let j=Z*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(Z/L),f.push(1-O/N),V+=1}}for(let O=0;O<N;O++)for(let G=0;G<L;G++){let Z=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(Z,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,y,I,T,L,N,C){let k=(I-2*l)/N,W=I/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*il,G=Math.sin(O)*l,Z=(1-Math.cos(O))*l,j=Math.sin(O),F=Math.cos(O);V[S]=(oe+G)*w,V[b]=(ce-Z)*y,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,Z=m+O+ie*(B+1),j=m+(O+1)+ie*(B+1),F=m+(O+1)+ie*B;a.push(G,Z,F),a.push(Z,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 y=[],I=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=il*(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+=il/L}y.push(N)}let T=y.length-1;for(let L=0;L<T;L++){let N=y[L],C=y[L+1],k=N.length-1;I(N[0],C[1],C[0]);for(let W=1;W<=k;W++)I(N[W-1],N[W],C[W]),I(N[W],C[W+1],C[W])}}}};import{BufferGeometry as Db,Float32BufferAttribute as al,Triangle as Bb,Vector3 as wr,Vector2 as ll}from"three";var zr=class extends Db{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 f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new wr,h=m.clone(),g=new Bb,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)),y=[],I=1e6;for(let K=0;K<w.length;K++){let U=w[K],V=[],E,B,O,G=1e10,Z=-1;for(;(Z=e.indexOf(K,Z+1))!=-1;){let M=Z-Z%3;E=e[M+(Z+1)%3],B=e[M+(Z+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=y[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*I),F=V.findIndex(J=>J[0]==B)}y.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=y[K];for(let j=0;j<U.length;j++){let F=U[j],z=U[(j+1)%f];g.setFromPointsAndIndices(w,K,F%I,z%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(L,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 Q=[N,M,q];for(let $=0;$<2;$++){let re=Q[$],le=Q[$+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,Z=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-Z+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<y.length;K++)for(let U=0;U<f;U++){let V=y[K][U];if(V<I){let E=y[V].findIndex(G=>G%I==K),B=oe[K][U],O=oe[V][E];for(let G=0;G<A;G++){let Z=B[G],j=O[A-G],F=B[G+1],z=O[A-(G+1)];[Z,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(Z=>{l.push(Z.x,Z.y,Z.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 y=b(d)/2/Math.PI+.5,I=D(d)/Math.PI+.5;c.push(y,1-I)}let f=new wr,m=new wr,h=new wr,g=new wr,x=new ll,v=new ll,A=new ll,S=(w,y,I,T)=>{T<0&&w.x===1&&(c[y]=w.x-1),I.x===0&&I.z===0&&(c[y]=T/2/Math.PI+.5)};for(let w=0,y=0;w<l.length;w+=9,y+=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[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(f).add(m).add(h).divideScalar(3);let I=b(g);S(x,y+0,f,I),S(v,y+2,m,I),S(A,y+4,h,I)}for(let w=0;w<c.length;w+=6){let y=c[w+0],I=c[w+2],T=c[w+4],L=Math.max(y,I,T),N=Math.min(y,I,T);L>.9&&N<.1&&(y<.2&&(c[w+0]+=1),I<.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 Eb}from"three";var Ld=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 Eb(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 qb,Plane as $b,Shape as Hd,Vector2 as _r,Vector3 as Xb,MathUtils as hl,LineCurve as gl,QuadraticBezierCurve as Wd,CubicBezierCurve as Fs}from"three";import{CubicBezierCurve as Gs,EllipseCurve as Gb,LineCurve as Rs,LineCurve3 as Rb,MathUtils as Vb,QuadraticBezierCurve as ul,SplineCurve as Fb,Vector2 as tt,Vector3 as Md}from"three";var kn=1e-12,Wo=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Vb.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)}},Et=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 Et(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 Et(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&&(Id(o,e),Id(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 Id(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var pl=n=>n,$o=new tt,Vs=new tt,zb=new tt,Ub=new tt,jb=new tt,kb=new tt,Dd=new Md,Bd=new Md;function Ed(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 Hb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Wb(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 Gd(n,t,e){return Od(n,t)&&Od(t,e)&&cl(n.position,t.position,e.position)}function cl(n,t,e){return $o.copy(t).sub(n).cross(Vs.copy(e).sub(n))===0}function Rd(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 Vd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Fd(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),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 fl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Od(n,t){return cl(n.position,n.controls[1].position,t.position)&&cl(n.position,t.controls[0].position,t.position)}function zd(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=zb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=Ub.subVectors(s,i).multiplyScalar(o).add(i),a=jb.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=kb.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 Ud(n,t,e=12,r=!0){let o=Bd.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=pl(t[c]),a=$o,u=Ur(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Gs||p instanceof ul||p instanceof Rs){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&Wb(i,o))continue;i===void 0&&(i=Dd),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 jd(n,t,e,r=12,o=!0){let i=Bd.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=$o,d=Ur(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof Gs||a instanceof ul||a instanceof Rs){if(a.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Dd:(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 ml(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 Gb?t*2:n&&(n instanceof Rs||n instanceof Rb)?1:n&&n instanceof Fb?t*n.points.length:t}function kd(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=$o;for(let a=0;a<=c;a++)if(l instanceof Gs||l instanceof ul||l instanceof Rs){if(l.getPoint(a/c,p),o!==void 0&&Hb(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 yl=new _r,Yb=new _r,Kb=new _r,Zb=new _r,Qb=new _r,Jb=new _r,Se=class extends Hd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new qb;this.plane=new $b(new Xb(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 Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Et.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=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 _r?i=e:i=new _r(e,r);let s=new Et(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 Ud(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ml(this.points,e,!1),this.roundedCurveDivisions=ml(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return jd(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),kd(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(fl(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){fl(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&&Gd(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,g=d.getLength(),x=f.getLength(),v=Math.min(a,g*.499),A=Math.min(a,x*.499),S=Math.min(v,A),b=1-S/g,D=S/x,w=d.getPointAt(b,yl),y=f.getPointAt(D,Yb);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,y);let I;if(this.useCubicForRoundedCorners){let T=dl(w,l.position,y)/2,L=Math.tan(T)*w.distanceTo(l.position),[N,C]=Rd(w,y,L,Kb,Zb),k=Vd(N,C,l.position),[W,oe]=Fd(k,w,y,L,Qb,Jb);I=new Fs(w.clone(),W.clone(),oe.clone(),y.clone())}else I=new Wd(w.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=zd(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 Et(hl.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 Wd&&(i[l]=Ed(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 gl&&(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 gl&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Hd&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;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 eS(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 qd(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 tS(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,g=m*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,S=(l-g)/i,b=(-s-h)/o,D=(-l-g)/i,w=qd(1,0,A,S),y=qd(A,S,b,D);return!p&&y>0&&(y-=vl),p&&y<0&&(y+=vl),{centerx:x,centery:v,ang1:w,ang2:y}}function $d({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=tS(n,t,e,r,o,i,p,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,x=Math.abs(m)/(vl/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(eS(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=xl(A[0],o,i,h,g),{x:D,y:w}=xl(A[1],o,i,h,g),{x:y,y:I}=xl(A[2],o,i,h,g);return{x1:S,y1:b,x2:D,y2:w,x:y,y:I}})}import{BufferAttribute as Us,BufferGeometry as sS}from"three";var Pe;(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"})(Pe||(Pe={}));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}(),Xd=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}(),Yd=function(){function n(){this.handle=null}return n}(),Kd=function(){function n(){this.key=null,this.node=0}return n}(),rS=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Yd,this.handles[r]=new Kd;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 Yd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Kd}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}(),Zd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),oS=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Zd,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 Zd;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}(),nS=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 Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.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 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 oS(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 rS(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}(),iS=function(){function n(){this.mesh=new Xd,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=Pe.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 g=0;g<3;++g)i=e.coords[g],p[g]=i,m[g]=e,c[g]=i,f[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,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 Xd),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=Pe.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_(),nS.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?Pe.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,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new iS;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:g?x.mesh:void 0}}}var A3=Pe.ODD,N3=Pe.NONZERO,C3=Pe.POSITIVE,P3=Pe.NEGATIVE,L3=Pe.ABS_GEQ_TWO,I3=je.POLYGONS,O3=je.CONNECTED_POLYGONS,M3=je.BOUNDARY_CONTOURS;var Yo=class extends sS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.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:Pe.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 g=m*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,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,g=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],y=l.vertices[D+1];w<m&&(m=w),w>h&&(h=w),y<g&&(g=y),y>x&&(x=y)}let v=h-m,A=x-g;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],y=l.vertices[D+1],I=(w-m)/v,T=(y-g)/A;this._positionAttribute.setXYZ(S,w,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,I,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=l.elements[D+0],y=l.elements[D+1],I=l.elements[D+2];this._indexAttribute.setX(D+0,w),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 Yo(this._shape,this._curveSegments);return e.userData=Ln(this.userData),e}};import{BufferAttribute as ks,BufferGeometry as aS}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 Sl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Ko=class extends aS{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 y=w.extractShapePointsToFlatArray([],i),I=[];for(let T=y.length-1;T>=1;T-=2){let L=y[T-1],N=y[T-0];I.push(L,N)}return I}),p=oo({windingRule:Pe.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),a=oo({windingRule:Pe.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 y=a.elements[w],I=w%2===0?p.vertexCount:0;p.elements.push(y+I)}for(let w=0;w<a.vertexIndices.length;w++){let y=a.vertexIndices[w],I=p.vertexCount;p.vertexIndices.push(y+I)}for(let w=0;w<a.vertices.length;w++){let y=a.vertices[w];p.vertices.push(y)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,y=p.vertexCount;w<y;w++){let I=w*2,T=p.vertices[I+0],L=p.vertices[I+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 g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new qn(g);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let y=w>=u,I=w*2,T=p.elements[I+0],L=p.elements[I+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],Z=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-Z,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[Q,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)C.continuous[V]=!0;else{let re=$===1?Q+1:Q-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Q].getTangent($),fe=this._shape.roundedCurves[re].getTangent(le);C.continuous[V]=ne.dot(fe)>.95}}y&&(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=[],Z=[],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],Q=-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]&&y){let ne=Math.atan2($,Q),fe=Math.atan2(le,re);fe>ne&&(fe-=Math.PI*2);let Ie=fe-ne;if(C.continuous[M]||y){let me=ne+Ie/2,Ge=Math.cos(me)*B,be=Math.sin(me)*B;O[2*F+0]=ee+Ge*(y?-1:1),O[2*F+1]=H+be*(y?-1:1),j[F]=M,F++}else{let me=Math.max(1,Math.floor(i/4*Math.abs(Ie)/Math.PI));for(let Ge=0;Ge<=me;Ge++){let be=ne+Ie*(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+Q,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,Z[M]=F,F++}let z=oo({windingRule:Pe.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 Q=H%L,$=(H+1)%L;if(!C.continuous[Q]||!C.continuous[$]){z.vertexIndices[M]=[q,Q],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 Z=C.concave.length,j=0,F=Sl(j,L);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=Sl(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,Q=ee,$,re,le=!1;do{F=Sl(j,L);let ne=K(E,z,F),fe=K(B,M,F),Ie=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,Q.topN),x.push($.bottomP,H.bottomN,Q.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(Q.topN,H.topP,re.topP),x.push(H.bottomP,Q.bottomN,re.bottomP),Q=re;else if(ne&&fe)if($=this.buildBevelVert(C,E,z,0),re=this.buildBevelVert(C,B,M,0),Ie?(x.push(H.topN,re.topP,Q.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Q.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Q.topN,H.topN,$.topP),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Q.bottomN),x.push($.bottomP,Q.bottomN,re.bottomP)),H=$,Q=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,Q.topN),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Q.bottomN),x.push($.bottomP,Q.bottomN,re.bottomP),H=$,Q=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,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$,be>(Ge+1)*me&&(Ge++,re=this.buildBevelVert(C,B,(M+Ge)%G,Ge/(fe-1)),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,Q.bottomN,re.bottomP),Q=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(Q.topN,$.topP,re.topP),x.push($.bottomP,Q.bottomN,re.bottomP),Q=re,be>(Ge+1)*me&&(Ge++,$=this.buildBevelVert(C,E,(z+Ge)%O,Ge/(ne-1)),x.push(H.topN,$.topP,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$)}z=(z+ne)%O,M=(M+fe)%G,j=(j+1)%Z}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(y){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(y){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(!y){let V=ie[ie.length-1],E=oo({windingRule:ie.length>1?Pe.POSITIVE:Pe.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]),Z=this.buildSurfaceVert(E,E.elements[B+2]);x.push(O.top,G.top,Z.top),x.push(Z.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,g=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[g+0],y=e.normals[g+1],I=e.normals[x+0],T=e.normals[x+1];if(d){let W=I-w,oe=T-y;w=w+W*(1-i),y=y+oe*(1-i);let ce=Math.sqrt(w*w+y*y);w/=ce,y/=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]=y*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]=y*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]=I*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]=I*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 Jd,Vector2 as ef}from"three";var tf=Math.PI*2,rf=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=lS(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 lS(n,t,e,r,o,i){if(r>=tf)return o>30||o%4===0?(uS(n,t,e,i),Math.round(o/4)):Qd(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=$d({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?cS(n,s.x,s.y,p,o,t,e,i):Qd(n,r,o,t,e,i)}function cS(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(Zo(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],f=Zo(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?of(n,i,s,l):n.addPoint(Zo(0,0)),c}function Qd(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(Zo(p,a))}return t<tf?i>0?of(n,r,o,i):n.addPoint(Zo(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&nf(n,r,o,i)),1}function uS(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&&nf(n,t,e,r)}function Zo(n,t){return new Et(Jd.generateUUID(),new ef(n,t))}function Hs(n,t,e,r,o,i){let s=Zo(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function of(n,t,e,r){sf(n,t,e,r).forEach(i=>n.addPoint(i))}function nf(n,t,e,r){let o=sf(n,t,e,r),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function sf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new ef(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=Jd.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 pS,Float32BufferAttribute as wl,Vector3 as af}from"three";var lf=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 pS{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 af,h=new af,g=m(),x=m(),v=m(),A,S,b,D,w,y,I,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,Z=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,Q=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(De=>Array($*De).fill(0)),fe=[],Ie=i-c;function me(De,yt){let Ht=Math.PI/2;y=yt*B,T=2*Math.PI*(y%U)/U+Ht,y+=O,I=Math.sin(T)*Ie,w=Math.cos(T)*Ie,t?De.set(w,I,y):De.set(w,y,I)}me(h,-1e-10),me(g,0),L.copy(h),me(h,1);let Ge=h.distanceTo(g),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,Ht=De===V,nh=yt?3*Math.PI/2:j,ih=yt?wt:go,sh=yt?G:Q,ah=yt?0:$-G,lh=ie.clone().multiplyScalar(yt?-M:M).add(x),ch=ie.clone().multiplyScalar(yt?-1:1).normalize();for(let hr=0;hr<G;hr++){let Sc=hr*Z;if(N.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(Sc)),g.copy(ce).multiplyScalar(c*Math.sin(Sc))),C.copy(N).normalize(),yt||Ht){f||(q=ah+hr,[0,1,2].forEach(ct=>{re[q*3+ct]=lh.getComponent(ct),le[q*3+ct]=ch.getComponent(ct)}),ne[q*2]=+Ht,ne[q*2+1]=hr/a),g.copy(C).multiplyScalar(z),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let Ta=ct*j+nh;k.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(Ta)),g.copy(C).multiplyScalar(M*Math.cos(Ta))),W.copy(k).normalize(),g.addVectors(v,k),k.normalize(),q=sh+ct*G+hr,[0,1,2].forEach(Ii=>{re[q*3+Ii]=g.getComponent(Ii),le[q*3+Ii]=W.getComponent(Ii)});let uh=+yt+Math.sin(Ta);ne[q*2]=(ih+M*uh)/lt,ne[q*2+1]=hr/a}}g.addVectors(x,N),q=H+De*G+hr,[0,1,2].forEach(ct=>{re[q*3+ct]=g.getComponent(ct),le[q*3+ct]=C.getComponent(ct)}),ne[q*2]=(be+De*Ge)/lt,ne[q*2+1]=hr/a}}let gt=E+2*d+J,yo=1,[Pi,Li]=f?[yo,yo+E-1]:[0,gt-1];for(let De=Pi;De<=Li-1;De++){let yt=f&&De===Li-1;for(let Ht=0;Ht<G-1;Ht++)A=De*G+Ht,S=A+1,b=(yt?Ht:A)+G,D=(yt?Ht+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 wl(re,3)),this.setAttribute("normal",new wl(le,3)),this.setAttribute("uv",new wl(ne,2))}};import{IcosahedronBufferGeometry as dS}from"three";var cf=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 dS(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 fS,Shape as mS}from"three";var uf=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 mS;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 fS(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as gf,BufferGeometryLoader as TS,Vector3 as AS,BoxBufferGeometry as yf}from"three";import{BufferGeometry as bS,Vector2 as Al,Vector3 as hf}from"three";import{Box3 as hS,BufferAttribute as Yn,BufferGeometry as pf,Color as ff,EventDispatcher as gS,Float32BufferAttribute as Qo,Matrix3 as df,Matrix4 as mf,MathUtils as yS,Object3D as xS,Sphere as vS,Vector2 as Ct,Vector3 as rt}from"three";var Qt=new mf,_l=new xS,Ws=new rt,jr=class extends gS{constructor(){super(),this.uuid=yS.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 df().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 _l.lookAt(t),_l.updateMatrix(),this.applyMatrix4(_l.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 ff().fromBufferAttribute(l,d));function a(d,f,m,h){let g=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,g,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 g=m,x=m+h;g<x;g+=3)r!==void 0?a(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):a(g,g+1,g+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 mf;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 hS),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new vS),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 df().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,g,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++)g=v[S],A.vertexColors.push(g.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,g=m.length;h<g;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],g=!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,g),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 y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(A&&r.push(u(h.normal)),S){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(m,h,g){return g?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,g=m.length;h<g;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,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;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,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(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;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 Tl().fromGeometry(this),e=new pf,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 Qo(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 Qo(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new Qo(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new pf,r=t.geometry;if(t.isPoints||t.isLine){let o=new Qo(r.vertices.length*3,3),i=new Qo(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new Qo(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};jr.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 f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=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]),g&&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 ff,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 SS=["a","b","c"];function wS(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Nl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Cl(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 _S(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],Cl(s.a,s.b,n,r,s,e),Cl(s.b,s.c,n,r,s,e),Cl(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 bS?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 hf,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;_S(c,p,d,f);let m=[],h,g,x,v,A,S,b;for(let F of Array.from(f.keys())){for(g=f.get(F),x=new hf,A=3/8,S=1/8,b=g.faces.length,b!=2&&(A=.5,S=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[wS(v,SS[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),g.newEdge=m.length,m.push(x)}let D,w,y,I,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),y=D,r<=2&&(r==2?(w=3/4,y=1/8):r==1||r==0),N=L.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)I=T[s],h=I.a!==L?I.a:I.b,e.add(h);e.multiplyScalar(Number(y)),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 Al,Z=new Al,j=new Al;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Nl(v.a,v.b,f).newEdge)+W,ce=Number(Nl(v.b,v.c,f).newEdge)+W,ie=Number(Nl(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)),Z.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,Z,j),$s(U,E,G,j),$s(U,B,Z,G),$s(U,O,j,Z));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new AS,xf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new gf().copy(new yf(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 gf().copy(new yf(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 TS(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 vf=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 g=f*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 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 NS,Float32BufferAttribute as Pl,Vector2 as Jt,Vector3 as $e}from"three";var bf=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 Ll(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 CS(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 NS{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),g=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 Jt(t,-f),D=new Jt(h,-f),w=new Jt(0,S.y).sub(D),y=new Jt(0,S.y).sub(b),I=new Jt(w.y,-w.x).normalize(),T=new Jt(y.y,-y.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(I.x,I.y,0),V=new $e(Math.cos(g)*U.x,U.y,Math.sin(g)*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,Z=new Jt(Math.sin(G),Math.cos(G));Kn(E,Z,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 Z=0;Z<r;Z++){let j=Z/r*Math.PI*2+m,F=(Z+.5)/r*Math.PI*2+m,z=(Z+1)/r*Math.PI*2+m,M=new Jt(Math.sin(j),Math.cos(j)),q=new Jt(Math.sin(F),Math.cos(F)),J=new Jt(Math.sin(z),Math.cos(z));Kn(b,M,V),Kn(b,J,E),Kn(I,q,U),Ll(S,V,E,W,W,B),p.push(B.x,B.y,B.z),Ll(V,S,E,W,k,O),p.push(O.x,O.y,O.z),Ll(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++,Q=d++;if(c.push(ee,H,Q),s>0){{let le=V.clone().add(E).multiplyScalar(.5),ne=S.clone().sub(le).normalize(),Ie=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),me=G.clone().sub(O);ie(le,me,Ie,w.angle())}let $,re;{let le=new $e;Kn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=CS(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),Ie=ne.clone().cross(fe);K(le,ne,fe,Ie)}ce.concat(re);{let le=w.angle(),ne=Math.PI-le,fe=S.clone();fe.y-=s/Math.sin(le-Math.PI/2);let Ie=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 Pi=0;Pi<=be;Pi++){let Li=Math.cos(yo),De=Math.sin(yo);U.x=go*De,U.y=gt,U.z=go*Li,Ie.copy(fe).addScaledVector(U,s),p.push(Ie.x,Ie.y,Ie.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 Pl(p,3)),this.setAttribute("normal",new Pl(a,3)),this.setAttribute("uv",new Pl(u,2));function ie(U,V,E,B,O){let G=-B/2,Z=(Math.PI-B)/2,j=V.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Z));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 Q=0;Q<=M;Q++){let $=Q/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),Q===0&&J.push(d),d++}}for(let ee=0;ee<l;ee++)for(let H=0;H<M;H++){let Q=q+H+(M+1)*ee,$=Q+(M+1),re=$+1,le=Q+1;c.push(Q,$,le),c.push($,re,le)}return[U.clone().addScaledVector(V,.5),J]}function K(U,V,E,B){let O=Math.PI/2,G=y.angle()-O,Z=[],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 Q=((M?ee/M:0)-.5)*v,$=Math.cos(Q),re=Math.sin(Q),le=Math.atan(Math.tan(G)*$),ne=(O+le)*J,fe=Math.cos(ne),Ie=Math.sin(ne);j.set(0,0,0),j.addScaledVector(V,Ie*$),j.addScaledVector(E,fe),j.addScaledVector(B,Ie*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++)}Z.push(q)}let z=Z.length-1;for(let M=0;M<z;M++){let q=Z[M],J=Z[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 Sf=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,g=u.y,x=a.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),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 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,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 PS(.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 LS}from"three";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,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 LS(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as IS,Float32BufferAttribute as Ol,Vector3 as OS}from"three";var Tf=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 IS{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 OS(F,z,M),m=f(),h=f(),[g,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-g,+v),f(A,-g,-v),f(A,+g,-v)],y=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),I=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));w.y=Math.sin(o)*e-g;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,y(o,!0),I(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,y(z),I(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,Z,j;for(let F=1;F<u.length;F++)[G,Z,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,Z.y,Z.z,0,B.y,B.z,0,B.y,B.z,0,Z.y,Z.z,0,Z.y,Z.z),p.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Z,j];this.setAttribute("position",new Ol(l,3)),this.setAttribute("normal",new Ol(c,3)),this.setAttribute("uv",new Ol(p,2))}};var Af=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,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 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(g)*u,D=m+Math.sin(g)*d;a.addPoint(a.createPoint(b,D)),g+=h,b=f+Math.cos(g)*x,D=m+Math.sin(g)*v,S<=o,a.addPoint(a.createPoint(b,D)),g+=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 MS}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 MS(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Nf=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=DS(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 DS(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 BS}from"three";var Cf=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 BS(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Pf=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 nm,BufferAttribute as im,Uint32BufferAttribute as ic,Float32BufferAttribute as sc,Matrix4 as qw,Vector3 as ca}from"three";var ES,Ks=new Promise(n=>{ES=n});import{BufferGeometryLoader as Hw}from"three";import{EventDispatcher as Uw,Matrix3 as jw,Vector3 as nc}from"three";import{Mesh as Fw,Matrix4 as zw}from"three";import{Matrix4 as Gf}from"three";import{Object3D as VS,Matrix4 as FS}from"three";import{HemisphereLight as Lf}from"three";function Fe(n,t){return t.color(n)}var Dl=n=>"isEntity"in n,er=n=>"isAbstractMesh"in n,tr=n=>n!==null&&n.objectType==="BooleanObject",If=n=>n.objectType==="CombinedCamera";var Zs=n=>"objectHelper"in n;function GS(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(),tr(n.parent)&&er(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 RS(n,t){GS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Of(n,t,e){RS(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 Lf)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Lf)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Mf(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 Qs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Dl(e))}isDescendantOf(e){e instanceof VS&&(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 FS().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 Bf,Line3 as zS,Matrix4 as Bl,Vector3 as Pt}from"three";var tn=new Bf,rr=new Pt,or=new Pt,rn=new Bl,Ef=[new Pt(-1,1,1),new Pt(-1,-1,1),new Pt(1,-1,1),new Pt(1,1,1),new Pt(-1,1,-1),new Pt(-1,-1,-1),new Pt(1,-1,-1),new Pt(1,1,-1)],US=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],jS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function kS(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 Df=(n,t,e)=>{if(er(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?rr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(kS(tn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),tn.getCenter(rr)),n.forceComputeSize?tn.getSize(or).multiplyScalar(.5):or.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Zs(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");tn.setFromArray(r.array),tn.getCenter(rr),tn.getSize(or).multiplyScalar(.5)}else rr.setScalar(0),or.setScalar(0);rn.copy(t).multiply(n.matrixWorld),or.x===0&&or.y===0&&or.z===0?e.push(new Pt(rr.x,rr.y,rr.z).applyMatrix4(rn)):Ef.forEach(r=>{e.push(r.clone().multiply(or).add(rr).applyMatrix4(rn))})},Zn=class extends Bf{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&&Df(s,r,i)}):Df(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(or).multiplyScalar(.5),this.getCenter(rr),rn.copy(this.matrix).setPosition(rr),this.vertices=Ef.map(e=>e.clone().multiply(or).applyMatrix4(rn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=US.map(([e,r])=>new zS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Pt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=jS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var nr=n=>"isEntity"in n,Rf=n=>"isAbstractMesh"in n,Lt=n=>class extends Qs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Gf;this._singleBBox=new Zn;this._recursiveBBox=new Zn;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=>{nr(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)nr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)nr(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)nr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Gf,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)nr(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 WS,Vector3 as Qn,Euler as Vf,MathUtils as kr}from"three";import{Object3D as HS}from"three";var El=class extends HS{},Js=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 WS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Qn),i=.1;this.parameters=ss.defaultData(o.toArray(),i),Qr(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 Vf(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD),c;switch(r.axis){case"z":c=new Qn(0,0,1);break;case"y":c=new Qn(0,1,0);break;default:case"x":c=new Qn(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 Vf(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 Qn(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),Qr(this.parameters,e),this.update(),this}};import{NormalBlending as Bw,ShaderMaterial as Ew}from"three";import{CubeReflectionMapping as rw,CubeRefractionMapping as ow,CubeUVReflectionMapping as nw,LinearEncoding as jf,sRGBEncoding as iw}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 qS}from"three";var Xe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=qS.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 Gl=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 Gl;import{Vector2 as Ff}from"three";import{MathUtils as $S}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=$S.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 Ff?e:new Ff(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 zf}from"three";var Qe=class extends Ae{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof zf?e:new zf(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 It=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 XS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Uf=/[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=Uf.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 g=this.keywords[f];if(!g){let x=He.getKeywordData(f);x.cache&&(g=e.keywords[f]),g=g||He.getKeyword(f,e),x.cache&&(e.keywords[f]=g)}h=g.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=XS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Uf);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 YS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Rl=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Rl.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=YS.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=Rl;ye.PI="PI",ye.PI2="PI2",ye.RECIPROCAL_PI="RECIPROCAL_PI",ye.RECIPROCAL_PI2="RECIPROCAL_PI2",ye.LOG2="LOG2",ye.EPSILON="EPSILON";var KS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
- )*?)}`,"gim"),ZS=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=KS.exec(e);if(r){let o=r[2],i;for(;i=ZS.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 QS,sRGBEncoding as JS}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 QS:return["Linear"];case JS: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(`
1
+ var gh=Object.create;var Ca=Object.defineProperty;var yh=Object.getOwnPropertyDescriptor;var xh=Object.getOwnPropertyNames;var vh=Object.getPrototypeOf,bh=Object.prototype.hasOwnProperty;var Ac=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Sh=(n,t)=>{for(var e in t)Ca(n,e,{get:t[e],enumerable:!0})},wh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xh(t))!bh.call(n,o)&&o!==e&&Ca(n,o,{get:()=>t[o],enumerable:!(r=yh(t,o))||r.enumerable});return n};var Nc=(n,t,e)=>(e=n!=null?gh(vh(n)):{},wh(t||!n||!n.__esModule?Ca(e,"default",{value:n,enumerable:!0}):e,n));var Mm=Ac(Ta=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||t;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var u=this||t;if(l=parseFloat(l),u.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var 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*l)}return u}return u._volume},mute:function(l){var u=this||t;u.ctx||p(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var 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=l?!0:h._muted)}return u},stop:function(){for(var l=this||t,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||t,u=l._howls.length-1;u>=0;u--)l._howls[u].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,p()),l},codecs:function(l){return(this||t)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||t;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var u=new Audio;u.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,x=f.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return l._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||t;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var u=function(d){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),g=0;g<h.length;g++){var x=l._howls[m]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}l._autoResume();var v=l.ctx.createBufferSource();v.buffer=l._scratchBuffer,v.connect(l.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),v.onended=function(){v.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<l._howls.length;A++)l._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),l}},_obtainHtml5Audio:function(){var l=this||t;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var u=this||t;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var d=0;d<l._howls[u]._sounds.length;d++)if(!l._howls[u]._sounds[d]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!t.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var u=0;u<l._howls.length;u++)l._howls[u]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var t=new n,e=function(l){var u=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(l)};e.prototype={init:function(l){var u=this;return t.ctx||p(),u._autoplay=l.autoplay||!1,u._format=typeof l.format!="string"?l.format:[l.format],u._html5=l.html5||!1,u._muted=l.mute||!1,u._loop=l.loop||!1,u._pool=l.pool||5,u._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,u._rate=l.rate||1,u._sprite=l.sprite||{},u._src=typeof l.src!="string"?l.src:[l.src],u._volume=l.volume!==void 0?l.volume:1,u._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=l.onend?[{fn:l.onend}]:[],u._onfade=l.onfade?[{fn:l.onfade}]:[],u._onload=l.onload?[{fn:l.onload}]:[],u._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],u._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],u._onpause=l.onpause?[{fn:l.onpause}]:[],u._onplay=l.onplay?[{fn:l.onplay}]:[],u._onstop=l.onstop?[{fn:l.onstop}]:[],u._onmute=l.onmute?[{fn:l.onmute}]:[],u._onvolume=l.onvolume?[{fn:l.onvolume}]:[],u._onrate=l.onrate?[{fn:l.onrate}]:[],u._onseek=l.onseek?[{fn:l.onseek}]:[],u._onunlock=l.onunlock?[{fn:l.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var l=this,u=null;if(t.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var d=0;d<l._src.length;d++){var f,m;if(l._format&&l._format[d])f=l._format[d];else{if(m=l._src[d],typeof m!="string"){l._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=l._src[d];break}}if(!u){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=u,l._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new r(l),l._webAudio&&i(l),l},play:function(l,u){var d=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&d._state==="loaded"&&!d._sprite[l])return null;if(typeof l>"u"&&(l="__default",!d._playLock)){for(var 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?l=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!l&&(l=g._sprite||"__default"),d._state!=="loaded"){g._sprite=l,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(f&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[l][0]/1e3),A=Math.max(0,(d._sprite[l][0]+d._sprite[l][1])/1e3-v),S=A*1e3/Math.abs(g._rate),b=d._sprite[l][0]/1e3,D=(d._sprite[l][0]+d._sprite[l][1])/1e3;g._sprite=l,g._ended=!1;var w=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[l][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var L=function(){d._playLock=!1,w(),d._refreshBuffer(g);var C=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(C,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),S!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?L():(d._playLock=!0,d.once("resume",L),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 C=y.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(d._playLock=!0,w(),C.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,w(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S):(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(k){d._emit("playerror",g._id,k)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var I=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||I)T();else{d._playLock=!0,d._state="loading";var N=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,N,!1)};y.addEventListener(t._canPlayEvent,N,!1),d._clearTimer(g._id)}}return g._id},pause:function(l){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(l)}}),u;for(var d=u._getSoundIds(l),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(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(l)}}),d;for(var f=d._getSoundIds(l),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(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(l,u)}}),d;if(typeof u>"u")if(typeof l=="boolean")d._muted=l;else return d._muted;for(var f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=l,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:l),d._emit("mute",h._id))}return d},volume:function(){var l=this,u=arguments,d,f;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=l._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 g;if(typeof d<"u"&&d>=0&&d<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,u)}}),l;typeof f>"u"&&(l._volume=d),f=l._getSoundIds(f);for(var x=0;x<f.length;x++)g=l._soundById(f[x]),g&&(g._volume=d,u[2]||l._stopFade(f[x]),l._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),l._emit("volume",g._id))}else return g=f?l._soundById(f):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,u,d,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(l,f);for(var h=m._getSoundIds(f),g=0;g<h.length;g++){var x=m._soundById(h[g]);if(x){if(f||m._stopFade(h[g]),m._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=l,x._node.gain.setValueAtTime(l,v),x._node.gain.linearRampToValueAtTime(u,A)}m._startFadeInterval(x,l,u,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(l,u,d,f,m,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),S=Math.max(4,A>0?f/A:f),b=Date.now();l._fadeTo=d,l._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),g._webAudio?l._volume=x:g.volume(x,l._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,g.volume(d,l._id),g._emit("fade",l._id))},S)},_stopFade:function(l){var u=this,d=u._soundById(l);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,l),d._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,d,f,m;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return m=l._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=l._getSoundIds(f),g=0;g<h.length;g++)m=l._soundById(h[g]),m&&(m._loop=d,l._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,l.playing(h[g])&&(l.pause(h[g],!0),l.play(h[g],!0)))));return l},rate:function(){var l=this,u=arguments,d,f;if(u.length===0)f=l._sounds[0]._id;else if(u.length===1){var m=l._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 g;if(typeof d=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,u)}}),l;typeof f>"u"&&(l._rate=d),f=l._getSoundIds(f);for(var x=0;x<f.length;x++)if(g=l._soundById(f[x]),g){l.playing(f[x])&&(g._rateSeek=l.seek(f[x]),g._playStart=l._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,l._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=l.seek(f[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,S=A*1e3/Math.abs(g._rate);(l._endTimers[f[x]]||!g._paused)&&(l._clearTimer(f[x]),l._endTimers[f[x]]=setTimeout(l._ended.bind(l,g),S)),l._emit("rate",g._id)}}else return g=l._soundById(f),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,f;if(u.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(u.length===1){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):l._sounds.length&&(f=l._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"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var g=l._soundById(f);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(f);x&&l.pause(f,!0),g._seek=d,g._ended=!1,l._clearTimer(f),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(f,!0),l._emit("seek",f)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var S=l.playing(f)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+S*Math.abs(g._rate))}else return g._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var d=u._soundById(l);return d?!d._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(l){var u=this,d=u._duration,f=u._soundById(l);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,d=0;d<u.length;d++)u[d]._paused||l.stop(u[d]._id),l._webAudio||(l._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,l._clearTimer(u[d]._id);var f=t._howls.indexOf(l);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,f){var m=this,h=m["_on"+l];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(l,u,d){var f=this,m=f["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var g=d===m[h].id;if(u===m[h].fn&&g||!u&&g){m.splice(h,1);break}}else if(l)f["_on"+l]=[];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(l,u,d){var f=this;return f.on(l,u,d,1),f},_emit:function(l,u,d){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||l==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===l&&(u._queue.shift(),u._loadQueue()),l||d.action()}return u},_ended:function(l){var u=this,d=l._sprite;if(!u._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(u._ended.bind(u,l),100),u;var f=!!(l._loop||u._sprite[d][2]);if(u._emit("end",l._id),!u._webAudio&&f&&u.stop(l._id,!0).play(l._id),u._webAudio&&f){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=t.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),m)}return u._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,u._clearTimer(l._id),u._cleanBuffer(l._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(l._id,!0),u},_clearTimer:function(l){var u=this;if(u._endTimers[l]){if(typeof u._endTimers[l]!="function")clearTimeout(u._endTimers[l]);else{var d=u._soundById(l);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,d=0;d<u._sounds.length;d++)if(l===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var l=this;l._drain();for(var u=0;u<l._sounds.length;u++)if(l._sounds[u]._ended)return l._sounds[u].reset();return new r(l)},_drain:function(){var l=this,u=l._pool,d=0,f=0;if(!(l._sounds.length<u)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&d++;for(f=l._sounds.length-1;f>=0;f--){if(d<=u)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=t.ctx.createBufferSource(),l._node.bufferSource.buffer=o[u._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,t.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),d))try{l.bufferSource.buffer=t._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(l){this._parent=l,this.init()};r.prototype={init:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,d=t._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),l._node.gain.setValueAtTime(d,t.ctx.currentTime),l._node.paused=!0,l._node.connect(t.masterGain)):t.noAudio||(l._node=t._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(t._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=u._src,l._node.preload=u._preload===!0?"auto":u._preload,l._node.volume=d*t.volume(),l._node.load()),l},reset:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,u=l._parent;u._duration=Math.ceil(l._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),l._node.removeEventListener(t._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,u=l._parent;u._duration===1/0&&(u._duration=Math.ceil(l._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var u=l._src;if(o[u]){l._duration=o[u].duration,c(l);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);a(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,u,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(g){h.setRequestHeader(g,l._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[u],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},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(l).then(f).catch(d):t.ctx.decodeAudioData(l,f,d)},c=function(l,u){u&&!l._duration&&(l._duration=u.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(l&&d&&d<9){var 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 Ta<"u"&&(Ta.Howler=t,Ta.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 a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")a._orientation=[t,e,r,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(t,e,r,o,i,s);else return c;return a},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),s=0;s<i.length;s++){var a=r._soundById(i[s]);if(a)if(typeof t=="number")a._stereo=t,a._pos=[t,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(t,0,0):a._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",a._id);else return a._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var 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),a=0;a<s.length;a++){var c=i._soundById(s[a]);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),a=0;a<s.length;a++){var c=i._soundById(s[a]);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),a=0;a<s.length;a++)if(i=t._soundById(s[a]),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 Vm=Ac((Aa,Rm)=>{(function(n,t){typeof Aa=="object"&&typeof Rm<"u"?t(Aa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Aa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,c,p,l,u,d,f,m,h,g,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,y=h=d=0;y<A;y++)b[y]=new Array(w).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var L,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(S[y]=d,m=0,c=y+1,s=y;s<A;s++)m+=Math.pow(b[s][y],2);if(m<i)d=0;else for(f=(u=b[y][y])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y]=u-d,s=c;s<v;s++){for(m=0,a=y;a<A;a++)m+=b[a][y]*b[a][s];for(u=m/f,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[y][s],2);if(m<i)d=0;else{for(f=(u=b[y][y+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y+1]=u-d,s=c;s<v;s++)S[s]=b[y][s]/f;for(s=c;s<A;s++){for(m=0,a=c;a<v;a++)m+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+m*S[a]}}h<(g=Math.abs(T[y])+Math.abs(S[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(f=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/f;for(s=c;s<v;s++){for(m=0,a=c;a<v;a++)m+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+m*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=S[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<w;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<w;s++){for(m=0,a=c;a<A;a++)m+=b[a][y]*b[a][s];for(u=m/f,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(L=!1,c=a;0<=c;c--){if(Math.abs(S[c])<=o){L=!0;break}if(Math.abs(T[c-1])<=o)break}if(!L){for(l=0,p=c-(m=1),y=c;y<a+1&&(u=m*S[y],S[y]=l*S[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(f=T[y]),m=-u/f,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*m,b[s][y]=-g*m+x*l}if(x=T[a],c===a){if(x<0&&(T[a]=-x,r))for(s=0;s<v;s++)D[s][a]=-D[s][a];break}for(h=T[c],u=(((g=T[a-1])-x)*(g+x)+((d=S[a-1])-(f=S[a]))*(d+f))/(2*f*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(g/(u<0?u-d:u+d)-f))/h,y=c+(m=l=1);y<a+1;y++){if(d=S[y],g=T[y],f=m*d,d*=l,x=Math.sqrt(u*u+f*f),u=h*(l=u/(S[y-1]=x))+d*(m=f/x),d=-h*m+d*l,f=g*m,g*=l,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*l+x*m,D[s][y]=-h*m+x*l;if(x=Math.sqrt(u*u+f*f),u=(l=u/(T[y-1]=x))*d+(m=f/x)*g,h=-m*d+l*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*l+x*m,b[s][y]=-g*m+x*l}S[c]=0,S[a]=u,T[a]=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 S_,Loader as w_}from"three";function Gi(n,t){return Object.setPrototypeOf(n,t),n}function Cc(n){return Array.isArray(n)?n:[n]}var _h=typeof global=="object"&&global&&global.Object===Object&&global,Ri=_h;var Th=typeof self=="object"&&self&&self.Object===Object&&self,Ah=Ri||Th||Function("return this")(),Re=Ah;var Nh=Re.Symbol,nt=Nh;var Pc=Object.prototype,Ch=Pc.hasOwnProperty,Ph=Pc.toString,In=nt?nt.toStringTag:void 0;function Ih(n){var t=Ch.call(n,In),e=n[In];try{n[In]=void 0;var r=!0}catch{}var o=Ph.call(n);return r&&(t?n[In]=e:delete n[In]),o}var Ic=Ih;var Lh=Object.prototype,Oh=Lh.toString;function Mh(n){return Oh.call(n)}var Lc=Mh;var Dh="[object Null]",Bh="[object Undefined]",Oc=nt?nt.toStringTag:void 0;function Eh(n){return n==null?n===void 0?Bh:Dh:Oc&&Oc in Object(n)?Ic(n):Lc(n)}var vt=Eh;function Gh(n){return n!=null&&typeof n=="object"}var et=Gh;var Rh="[object Symbol]";function Vh(n){return typeof n=="symbol"||et(n)&&vt(n)==Rh}var wo=Vh;function Fh(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 Vi=Fh;var zh=Array.isArray,Oe=zh;var Uh=1/0,Mc=nt?nt.prototype:void 0,Dc=Mc?Mc.toString:void 0;function Bc(n){if(typeof n=="string")return n;if(Oe(n))return Vi(n,Bc)+"";if(wo(n))return Dc?Dc.call(n):"";var t=n+"";return t=="0"&&1/n==-Uh?"-0":t}var Ec=Bc;function jh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=jh;function kh(n){return n}var Fi=kh;var Hh="[object AsyncFunction]",Wh="[object Function]",qh="[object GeneratorFunction]",$h="[object Proxy]";function Xh(n){if(!ze(n))return!1;var t=vt(n);return t==Wh||t==qh||t==Hh||t==$h}var _o=Xh;var Yh=Re["__core-js_shared__"],zi=Yh;var Gc=function(){var n=/[^.]+$/.exec(zi&&zi.keys&&zi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Kh(n){return!!Gc&&Gc in n}var Rc=Kh;var Zh=Function.prototype,Qh=Zh.toString;function Jh(n){if(n!=null){try{return Qh.call(n)}catch{}try{return n+""}catch{}}return""}var gr=Jh;var eg=/[\\^$.*+?()[\]{}|]/g,tg=/^\[object .+?Constructor\]$/,rg=Function.prototype,og=Object.prototype,ng=rg.toString,ig=og.hasOwnProperty,sg=RegExp("^"+ng.call(ig).replace(eg,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ag(n){if(!ze(n)||Rc(n))return!1;var t=_o(n)?sg:tg;return t.test(gr(n))}var Vc=ag;function lg(n,t){return n?.[t]}var Fc=lg;function cg(n,t){var e=Fc(n,t);return Vc(e)?e:void 0}var ut=cg;var ug=ut(Re,"WeakMap"),Ui=ug;var zc=Object.create,pg=function(){function n(){}return function(t){if(!ze(t))return{};if(zc)return zc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Uc=pg;function dg(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 jc=dg;function fg(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var ji=fg;var mg=800,hg=16,gg=Date.now;function yg(n){var t=0,e=0;return function(){var r=gg(),o=hg-(r-e);if(e=r,o>0){if(++t>=mg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var kc=yg;function xg(n){return function(){return n}}var Hc=xg;var vg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),To=vg;var bg=To?function(n,t){return To(n,"toString",{configurable:!0,enumerable:!1,value:Hc(t),writable:!0})}:Fi,Wc=bg;var Sg=kc(Wc),ki=Sg;function wg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var qc=wg;var _g=9007199254740991,Tg=/^(?:0|[1-9]\d*)$/;function Ag(n,t){var e=typeof n;return t=t??_g,!!t&&(e=="number"||e!="symbol"&&Tg.test(n))&&n>-1&&n%1==0&&n<t}var Pr=Ag;function Ng(n,t,e){t=="__proto__"&&To?To(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Ao=Ng;function Cg(n,t){return n===t||n!==n&&t!==t}var Ir=Cg;var Pg=Object.prototype,Ig=Pg.hasOwnProperty;function Lg(n,t,e){var r=n[t];(!(Ig.call(n,t)&&Ir(r,e))||e===void 0&&!(t in n))&&Ao(n,t,e)}var No=Lg;function Og(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],c=r?r(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?Ao(e,a,c):No(e,a,c)}return e}var Tt=Og;var $c=Math.max;function Mg(n,t,e){return t=$c(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=$c(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),jc(n,this,a)}}var Hi=Mg;function Dg(n,t){return ki(Hi(n,t,Fi),n+"")}var Xc=Dg;var Bg=9007199254740991;function Eg(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Bg}var Co=Eg;function Gg(n){return n!=null&&Co(n.length)&&!_o(n)}var Lr=Gg;function Rg(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Lr(e)&&Pr(t,e.length):r=="string"&&t in e)?Ir(e[t],n):!1}var Yc=Rg;function Vg(n){return Xc(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&&Yc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Kc=Vg;var Fg=Object.prototype;function zg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Fg;return n===e}var Po=zg;function Ug(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Zc=Ug;var jg="[object Arguments]";function kg(n){return et(n)&&vt(n)==jg}var Pa=kg;var Qc=Object.prototype,Hg=Qc.hasOwnProperty,Wg=Qc.propertyIsEnumerable,qg=Pa(function(){return arguments}())?Pa:function(n){return et(n)&&Hg.call(n,"callee")&&!Wg.call(n,"callee")},yr=qg;function $g(){return!1}var Jc=$g;var ru=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eu=ru&&typeof module=="object"&&module&&!module.nodeType&&module,Xg=eu&&eu.exports===ru,tu=Xg?Re.Buffer:void 0,Yg=tu?tu.isBuffer:void 0,Kg=Yg||Jc,Io=Kg;var Zg="[object Arguments]",Qg="[object Array]",Jg="[object Boolean]",ey="[object Date]",ty="[object Error]",ry="[object Function]",oy="[object Map]",ny="[object Number]",iy="[object Object]",sy="[object RegExp]",ay="[object Set]",ly="[object String]",cy="[object WeakMap]",uy="[object ArrayBuffer]",py="[object DataView]",dy="[object Float32Array]",fy="[object Float64Array]",my="[object Int8Array]",hy="[object Int16Array]",gy="[object Int32Array]",yy="[object Uint8Array]",xy="[object Uint8ClampedArray]",vy="[object Uint16Array]",by="[object Uint32Array]",Ce={};Ce[dy]=Ce[fy]=Ce[my]=Ce[hy]=Ce[gy]=Ce[yy]=Ce[xy]=Ce[vy]=Ce[by]=!0;Ce[Zg]=Ce[Qg]=Ce[uy]=Ce[Jg]=Ce[py]=Ce[ey]=Ce[ty]=Ce[ry]=Ce[oy]=Ce[ny]=Ce[iy]=Ce[sy]=Ce[ay]=Ce[ly]=Ce[cy]=!1;function Sy(n){return et(n)&&Co(n.length)&&!!Ce[vt(n)]}var ou=Sy;function wy(n){return function(t){return n(t)}}var Lo=wy;var nu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ln=nu&&typeof module=="object"&&module&&!module.nodeType&&module,_y=Ln&&Ln.exports===nu,Ia=_y&&Ri.process,Ty=function(){try{var n=Ln&&Ln.require&&Ln.require("util").types;return n||Ia&&Ia.binding&&Ia.binding("util")}catch{}}(),xr=Ty;var iu=xr&&xr.isTypedArray,Ay=iu?Lo(iu):ou,Wi=Ay;var Ny=Object.prototype,Cy=Ny.hasOwnProperty;function Py(n,t){var e=Oe(n),r=!e&&yr(n),o=!e&&!r&&Io(n),i=!e&&!r&&!o&&Wi(n),s=e||r||o||i,a=s?Zc(n.length,String):[],c=a.length;for(var p in n)(t||Cy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Pr(p,c)))&&a.push(p);return a}var qi=Py;function Iy(n,t){return function(e){return n(t(e))}}var $i=Iy;var Ly=$i(Object.keys,Object),su=Ly;var Oy=Object.prototype,My=Oy.hasOwnProperty;function Dy(n){if(!Po(n))return su(n);var t=[];for(var e in Object(n))My.call(n,e)&&e!="constructor"&&t.push(e);return t}var au=Dy;function By(n){return Lr(n)?qi(n):au(n)}var Oo=By;function Ey(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var lu=Ey;var Gy=Object.prototype,Ry=Gy.hasOwnProperty;function Vy(n){if(!ze(n))return lu(n);var t=Po(n),e=[];for(var r in n)r=="constructor"&&(t||!Ry.call(n,r))||e.push(r);return e}var cu=Vy;function Fy(n){return Lr(n)?qi(n,!0):cu(n)}var Wt=Fy;var zy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Uy=/^\w*$/;function jy(n,t){if(Oe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||wo(n)?!0:Uy.test(n)||!zy.test(n)||t!=null&&n in Object(t)}var uu=jy;var ky=ut(Object,"create"),vr=ky;function Hy(){this.__data__=vr?vr(null):{},this.size=0}var pu=Hy;function Wy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var du=Wy;var qy="__lodash_hash_undefined__",$y=Object.prototype,Xy=$y.hasOwnProperty;function Yy(n){var t=this.__data__;if(vr){var e=t[n];return e===qy?void 0:e}return Xy.call(t,n)?t[n]:void 0}var fu=Yy;var Ky=Object.prototype,Zy=Ky.hasOwnProperty;function Qy(n){var t=this.__data__;return vr?t[n]!==void 0:Zy.call(t,n)}var mu=Qy;var Jy="__lodash_hash_undefined__";function ex(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=vr&&t===void 0?Jy:t,this}var hu=ex;function Mo(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])}}Mo.prototype.clear=pu;Mo.prototype.delete=du;Mo.prototype.get=fu;Mo.prototype.has=mu;Mo.prototype.set=hu;var La=Mo;function tx(){this.__data__=[],this.size=0}var gu=tx;function rx(n,t){for(var e=n.length;e--;)if(Ir(n[e][0],t))return e;return-1}var Or=rx;var ox=Array.prototype,nx=ox.splice;function ix(n){var t=this.__data__,e=Or(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():nx.call(t,e,1),--this.size,!0}var yu=ix;function sx(n){var t=this.__data__,e=Or(t,n);return e<0?void 0:t[e][1]}var xu=sx;function ax(n){return Or(this.__data__,n)>-1}var vu=ax;function lx(n,t){var e=this.__data__,r=Or(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var bu=lx;function Do(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])}}Do.prototype.clear=gu;Do.prototype.delete=yu;Do.prototype.get=xu;Do.prototype.has=vu;Do.prototype.set=bu;var Mr=Do;var cx=ut(Re,"Map"),Dr=cx;function ux(){this.size=0,this.__data__={hash:new La,map:new(Dr||Mr),string:new La}}var Su=ux;function px(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var wu=px;function dx(n,t){var e=n.__data__;return wu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Br=dx;function fx(n){var t=Br(this,n).delete(n);return this.size-=t?1:0,t}var _u=fx;function mx(n){return Br(this,n).get(n)}var Tu=mx;function hx(n){return Br(this,n).has(n)}var Au=hx;function gx(n,t){var e=Br(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Nu=gx;function Bo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Bo.prototype.clear=Su;Bo.prototype.delete=_u;Bo.prototype.get=Tu;Bo.prototype.has=Au;Bo.prototype.set=Nu;var On=Bo;var yx="Expected a function";function Oa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(yx);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(Oa.Cache||On),e}Oa.Cache=On;var Cu=Oa;var xx=500;function vx(n){var t=Cu(n,function(r){return e.size===xx&&e.clear(),r}),e=t.cache;return t}var Pu=vx;var bx=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Sx=/\\(\\)?/g,wx=Pu(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(bx,function(e,r,o,i){t.push(o?i.replace(Sx,"$1"):r||e)}),t}),Iu=wx;function _x(n){return n==null?"":Ec(n)}var Lu=_x;function Tx(n,t){return Oe(n)?n:uu(n,t)?[n]:Iu(Lu(n))}var At=Tx;var Ax=1/0;function Nx(n){if(typeof n=="string"||wo(n))return n;var t=n+"";return t=="0"&&1/n==-Ax?"-0":t}var Er=Nx;function Cx(n,t){t=At(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Er(t[e++])];return e&&e==r?n:void 0}var Xi=Cx;function Px(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Eo=Px;var Ou=nt?nt.isConcatSpreadable:void 0;function Ix(n){return Oe(n)||yr(n)||!!(Ou&&n&&n[Ou])}var Mu=Ix;function Du(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Mu),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Du(a,t-1,e,r,o):Eo(o,a):r||(o[o.length]=a)}return o}var Bu=Du;function Lx(n){var t=n==null?0:n.length;return t?Bu(n,1):[]}var Eu=Lx;function Ox(n){return ki(Hi(n,void 0,Eu),n+"")}var Yi=Ox;var Mx=$i(Object.getPrototypeOf,Object),Go=Mx;var Dx="[object Object]",Bx=Function.prototype,Ex=Object.prototype,Gu=Bx.toString,Gx=Ex.hasOwnProperty,Rx=Gu.call(Object);function Vx(n){if(!et(n)||vt(n)!=Dx)return!1;var t=Go(n);if(t===null)return!0;var e=Gx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Gu.call(e)==Rx}var Ki=Vx;function Fx(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 Ru=Fx;function zx(){this.__data__=new Mr,this.size=0}var Vu=zx;function Ux(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Fu=Ux;function jx(n){return this.__data__.get(n)}var zu=jx;function kx(n){return this.__data__.has(n)}var Uu=kx;var Hx=200;function Wx(n,t){var e=this.__data__;if(e instanceof Mr){var r=e.__data__;if(!Dr||r.length<Hx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new On(r)}return e.set(n,t),this.size=e.size,this}var ju=Wx;function Ro(n){var t=this.__data__=new Mr(n);this.size=t.size}Ro.prototype.clear=Vu;Ro.prototype.delete=Fu;Ro.prototype.get=zu;Ro.prototype.has=Uu;Ro.prototype.set=ju;var Zi=Ro;function qx(n,t){return n&&Tt(t,Oo(t),n)}var ku=qx;function $x(n,t){return n&&Tt(t,Wt(t),n)}var Hu=$x;var Xu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wu=Xu&&typeof module=="object"&&module&&!module.nodeType&&module,Xx=Wu&&Wu.exports===Xu,qu=Xx?Re.Buffer:void 0,$u=qu?qu.allocUnsafe:void 0;function Yx(n,t){if(t)return n.slice();var e=n.length,r=$u?$u(e):new n.constructor(e);return n.copy(r),r}var Qi=Yx;function Kx(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 Yu=Kx;function Zx(){return[]}var Ji=Zx;var Qx=Object.prototype,Jx=Qx.propertyIsEnumerable,Ku=Object.getOwnPropertySymbols,e0=Ku?function(n){return n==null?[]:(n=Object(n),Yu(Ku(n),function(t){return Jx.call(n,t)}))}:Ji,Vo=e0;function t0(n,t){return Tt(n,Vo(n),t)}var Zu=t0;var r0=Object.getOwnPropertySymbols,o0=r0?function(n){for(var t=[];n;)Eo(t,Vo(n)),n=Go(n);return t}:Ji,es=o0;function n0(n,t){return Tt(n,es(n),t)}var Qu=n0;function i0(n,t,e){var r=t(n);return Oe(n)?r:Eo(r,e(n))}var ts=i0;function s0(n){return ts(n,Oo,Vo)}var Ju=s0;function a0(n){return ts(n,Wt,es)}var rs=a0;var l0=ut(Re,"DataView"),os=l0;var c0=ut(Re,"Promise"),ns=c0;var u0=ut(Re,"Set"),is=u0;var ep="[object Map]",p0="[object Object]",tp="[object Promise]",rp="[object Set]",op="[object WeakMap]",np="[object DataView]",d0=gr(os),f0=gr(Dr),m0=gr(ns),h0=gr(is),g0=gr(Ui),Jr=vt;(os&&Jr(new os(new ArrayBuffer(1)))!=np||Dr&&Jr(new Dr)!=ep||ns&&Jr(ns.resolve())!=tp||is&&Jr(new is)!=rp||Ui&&Jr(new Ui)!=op)&&(Jr=function(n){var t=vt(n),e=t==p0?n.constructor:void 0,r=e?gr(e):"";if(r)switch(r){case d0:return np;case f0:return ep;case m0:return tp;case h0:return rp;case g0:return op}return t});var Fo=Jr;var y0=Object.prototype,x0=y0.hasOwnProperty;function v0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&x0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ip=v0;var b0=Re.Uint8Array,Ma=b0;function S0(n){var t=new n.constructor(n.byteLength);return new Ma(t).set(new Ma(n)),t}var zo=S0;function w0(n,t){var e=t?zo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var sp=w0;var _0=/\w*$/;function T0(n){var t=new n.constructor(n.source,_0.exec(n));return t.lastIndex=n.lastIndex,t}var ap=T0;var lp=nt?nt.prototype:void 0,cp=lp?lp.valueOf:void 0;function A0(n){return cp?Object(cp.call(n)):{}}var up=A0;function N0(n,t){var e=t?zo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ss=N0;var C0="[object Boolean]",P0="[object Date]",I0="[object Map]",L0="[object Number]",O0="[object RegExp]",M0="[object Set]",D0="[object String]",B0="[object Symbol]",E0="[object ArrayBuffer]",G0="[object DataView]",R0="[object Float32Array]",V0="[object Float64Array]",F0="[object Int8Array]",z0="[object Int16Array]",U0="[object Int32Array]",j0="[object Uint8Array]",k0="[object Uint8ClampedArray]",H0="[object Uint16Array]",W0="[object Uint32Array]";function q0(n,t,e){var r=n.constructor;switch(t){case E0:return zo(n);case C0:case P0:return new r(+n);case G0:return sp(n,e);case R0:case V0:case F0:case z0:case U0:case j0:case k0:case H0:case W0:return ss(n,e);case I0:return new r;case L0:case D0:return new r(n);case O0:return ap(n);case M0:return new r;case B0:return up(n)}}var pp=q0;function $0(n){return typeof n.constructor=="function"&&!Po(n)?Uc(Go(n)):{}}var as=$0;var X0="[object Map]";function Y0(n){return et(n)&&Fo(n)==X0}var dp=Y0;var fp=xr&&xr.isMap,K0=fp?Lo(fp):dp,mp=K0;var Z0="[object Set]";function Q0(n){return et(n)&&Fo(n)==Z0}var hp=Q0;var gp=xr&&xr.isSet,J0=gp?Lo(gp):hp,yp=J0;var ev=1,tv=2,rv=4,xp="[object Arguments]",ov="[object Array]",nv="[object Boolean]",iv="[object Date]",sv="[object Error]",vp="[object Function]",av="[object GeneratorFunction]",lv="[object Map]",cv="[object Number]",bp="[object Object]",uv="[object RegExp]",pv="[object Set]",dv="[object String]",fv="[object Symbol]",mv="[object WeakMap]",hv="[object ArrayBuffer]",gv="[object DataView]",yv="[object Float32Array]",xv="[object Float64Array]",vv="[object Int8Array]",bv="[object Int16Array]",Sv="[object Int32Array]",wv="[object Uint8Array]",_v="[object Uint8ClampedArray]",Tv="[object Uint16Array]",Av="[object Uint32Array]",Ne={};Ne[xp]=Ne[ov]=Ne[hv]=Ne[gv]=Ne[nv]=Ne[iv]=Ne[yv]=Ne[xv]=Ne[vv]=Ne[bv]=Ne[Sv]=Ne[lv]=Ne[cv]=Ne[bp]=Ne[uv]=Ne[pv]=Ne[dv]=Ne[fv]=Ne[wv]=Ne[_v]=Ne[Tv]=Ne[Av]=!0;Ne[sv]=Ne[vp]=Ne[mv]=!1;function ls(n,t,e,r,o,i){var s,a=t&ev,c=t&tv,p=t&rv;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var l=Oe(n);if(l){if(s=ip(n),!a)return ji(n,s)}else{var u=Fo(n),d=u==vp||u==av;if(Io(n))return Qi(n,a);if(u==bp||u==xp||d&&!o){if(s=c||d?{}:as(n),!a)return c?Qu(n,Hu(s,n)):Zu(n,ku(s,n))}else{if(!Ne[u])return o?n:{};s=pp(n,u,a)}}i||(i=new Zi);var f=i.get(n);if(f)return f;i.set(n,s),yp(n)?n.forEach(function(g){s.add(ls(g,t,e,g,n,i))}):mp(n)&&n.forEach(function(g,x){s.set(x,ls(g,t,e,x,n,i))});var m=p?c?rs:Ju:c?Wt:Oo,h=l?void 0:m(n);return qc(h||n,function(g,x){h&&(x=g,g=n[x]),No(s,x,ls(g,t,e,x,n,i))}),s}var cs=ls;var Nv=1,Cv=4;function Pv(n){return cs(n,Nv|Cv)}var Mn=Pv;function Iv(n,t){return n!=null&&t in Object(n)}var Sp=Iv;function Lv(n,t,e){t=At(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Er(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&&Co(o)&&Pr(s,o)&&(Oe(n)||yr(n)))}var wp=Lv;function Ov(n,t){return n!=null&&wp(n,t,Sp)}var _p=Ov;function Mv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var c=s[n?a:++o];if(e(i[c],c,i)===!1)break}return t}}var Tp=Mv;var Dv=Tp(),Ap=Dv;function Bv(n,t,e){(e!==void 0&&!Ir(n[t],e)||e===void 0&&!(t in n))&&Ao(n,t,e)}var Dn=Bv;function Ev(n){return et(n)&&Lr(n)}var Np=Ev;function Gv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Bn=Gv;function Rv(n){return Tt(n,Wt(n))}var Cp=Rv;function Vv(n,t,e,r,o,i,s){var a=Bn(n,e),c=Bn(t,e),p=s.get(c);if(p){Dn(n,e,p);return}var l=i?i(a,c,e+"",n,t,s):void 0,u=l===void 0;if(u){var d=Oe(c),f=!d&&Io(c),m=!d&&!f&&Wi(c);l=c,d||f||m?Oe(a)?l=a:Np(a)?l=ji(a):f?(u=!1,l=Qi(c,!0)):m?(u=!1,l=ss(c,!0)):l=[]:Ki(c)||yr(c)?(l=a,yr(a)?l=Cp(a):(!ze(a)||_o(a))&&(l=as(c))):u=!1}u&&(s.set(c,l),o(l,c,r,i,s),s.delete(c)),Dn(n,e,l)}var Pp=Vv;function Ip(n,t,e,r,o){n!==t&&Ap(t,function(i,s){if(o||(o=new Zi),ze(i))Pp(n,t,s,e,Ip,r,o);else{var a=r?r(Bn(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Dn(n,s,a)}},Wt)}var Lp=Ip;function Fv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Op=Fv;function zv(n,t){return t.length<2?n:Xi(n,Ru(t,0,-1))}var Mp=zv;var Uv=Kc(function(n,t,e){Lp(n,t,e)}),eo=Uv;function jv(n,t){return t=At(t,n),n=Mp(n,t),n==null||delete n[Er(Op(t))]}var Dp=jv;function kv(n){return Ki(n)?void 0:n}var Bp=kv;var Hv=1,Wv=2,qv=4,$v=Yi(function(n,t){var e={};if(n==null)return e;var r=!1;t=Vi(t,function(i){return i=At(i,n),r||(r=i.length>1),i}),Tt(n,rs(n),e),r&&(e=cs(e,Hv|Wv|qv,Bp));for(var o=t.length;o--;)Dp(e,t[o]);return e}),Uo=$v;function Xv(n,t,e,r){if(!ze(n))return n;t=At(t,n);for(var o=-1,i=t.length,s=i-1,a=n;a!=null&&++o<i;){var c=Er(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];p=r?r(l,c,a):void 0,p===void 0&&(p=ze(l)?l:Pr(t[o+1])?[]:{})}No(a,c,p),a=a[c]}return n}var Ep=Xv;function Yv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],a=Xi(n,s);e(a,s)&&Ep(i,At(s,n),a)}return i}var Gp=Yv;function Kv(n,t){return Gp(n,t,function(e,r){return _p(n,r)})}var Rp=Kv;var Zv=Yi(function(n,t){return n==null?{}:Rp(n,t)}),Da=Zv;var jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(jo||(jo={}));var to;(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})(to||(to={}));var Vp;(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})(Vp||(Vp={}));var ko;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(ko||(ko={}));var Fp;(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})(Fp||(Fp={}));var Gr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=r})(Gr||(Gr={}));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,l){return p.r===l.r&&p.g===l.g&&p.b===l.b}c.equals=s;function a(p,l,u){return{r:p.r+(l.r-p.r)*u,g:p.g+(l.g-p.g)*u,b:p.b+(l.b-p.b)*u}}c.lerp=a})(pt||(pt={}));var bt;(a=>{a.white={...pt.white,a:1},a.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function r(c,p){return{...pt.fromHex(c),a:p}}a.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}}a.toRgb255a1=o;function i(c,p){return pt.equals(c,p)&&c.a===p.a}a.equals=i;function s(c,p,l){return{r:c.r+(p.r-c.r)*l,g:c.g+(p.g-c.g)*l,b:c.b+(p.b-c.b)*l,a:c.a+(p.a-c.a)*l}}a.lerp=s})(bt||(bt={}));var us;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(us||(us={}));var zp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(zp||(zp={}));var Up;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Up||(Up={}));var ps;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(ps||(ps={}));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,a={...e,[i]:s};return Object.setPrototypeOf(a,Ve.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ve.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 jp(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 ds=class extends Error{};function qt(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 ro(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 kp(){return typeof process<"u"}function Hp(n,t){for(let e of n)t(e.id,e.data),Hp(e.children,t)}function Wp(n,t){t(n.id,n.data);for(let e of n.children)Wp(e,t)}var dt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,dt.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&&Wp(o,r)}}traverse(e){Hp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(l=>l.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:a}}Object.setPrototypeOf(i,dt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return p=[...p,l],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(l),{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 a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new ds("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:a,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>jp(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 qt(0,o,o);{let s=i[0].fi;return qt(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return qt(c,c+o,o)}else return qt(s.fi,a.fi,o)}}};var fs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(fs||(fs={}));var Pe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Pe.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 a=i[s];return i=[...i],i[s]={...a,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Pe.prototype);let r=e;return kp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((p,l)=>p.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,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(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((l,u)=>l.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return qt(0,r,r);{let i=o[0].fi;return qt(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return qt(a,a+r,r)}else return qt(i.fi,s.fi,r)}}};var br=class{unusedFun(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;)e.push(r),r=r===void 0?void 0:r[t.path[o]],o+=1;r={...r};for(let[c,p]of Object.entries(t.props)){let l=r[c];i[c]=l,p===void 0?delete r[c]:r[c]=p}for(;o>0;)Object.keys(r).length===0?(r={...e[o-1]},delete r[t.path[o-1]]):r={...e[o-1],[t.path[o-1]]:r},o-=1;let s=Object.setPrototypeOf(r,br.prototype),a={...t,props:i};return{data:s,actual:t,reverse:a}}},qp;(e=>{function n(r,o){return Gn(r,o)??r}e.apply=n;function t(r,o){if(o.type===0){let i=oo.zoom(r,o.path);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||ro(i))return;if(i&&typeof i=="object"){let s={...o.props};for(let a of Object.keys(i))delete s[a];return{...o,props:s}}else return}else if(o.type===1||o.type===4||o.type===7){let i=oo.zoom(r,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||ro(i))return;if(i&&typeof i=="object"){let s={...o.data,...i};return{...o,data:s}}else return}else return o}e.filterOp=t})(qp||(qp={}));function $p(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Gn(o.data,t[i]);e=e||s!==void 0,s===void 0&&(s=o.data);let a=$p(o.children,t);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}});if(e)return r}function Qv(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Gn(o.data,t[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Gn(n,t){if(t!==void 0)if(n instanceof dt){let e=$p(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof Pe)return Qv(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let s=Gn(o,t[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let s=Gn(i,t[o]);r=r||s!==void 0,s===void 0&&(s=i),e[o]=s}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}else return t??n}}var Xp=Symbol(),Rn=Symbol(),no=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof ms);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Rn];r&&r(),delete this._children[t]}}}},Ea=class extends no{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,fs.runOp(this._current,t),t.path)}},Ga=class extends no{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))}},Yp={get(n,t){if(t===Rn)return()=>{n._parent=null};if(t===Xp)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=hs(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={...Yp,set(n,t,e){let r={type:0,props:{[t]:$t(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}},eb={...Yp,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}},Ho=class extends no{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Rn]=()=>{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=hs(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)}},Ra=class extends no{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r,this[Rn]=()=>{this._parent=null}}feedOp(t){let{path:e,...r}=t;this.reportOp(r,this._current.runOp(t),e)}},Wo=class extends no{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Rn]=()=>{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=hs(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 Ba(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&oo.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var ms=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){Ba(this.ts,e,t),Ba(this.actual,r,t),Ba(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function hs(n,t,e){return e instanceof dt?new Ho(n,t,e):e instanceof Pe?new Wo(n,t,e):e instanceof br?new Ra(n,t,e):e instanceof Ve?new Proxy(new Ga(n,t,e),eb):e!==null&&typeof e=="object"?ro(e)?e:new Proxy(new Ea(n,t,e),Jv):e}function Va(n){let t=new ms(n);return[hs(t,"",n),t]}function Fa(n,t){let[e,r]=Va(n);return t(e),r.result()}function $t(n){return n instanceof Ho||n instanceof Wo?n._current:n!==null&&typeof n=="object"?n[Xp]:n}var oo;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function t(i,s,a){let c=r(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let p={...s};return Object.keys(c).forEach(l=>{delete p[l]}),p}else return s}o.removeOverridden=t;function e(i,s){if((i instanceof dt||i instanceof Ho)&&typeof s=="string")return i.data(s);if((i instanceof Pe||i instanceof Wo)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object")return i[s]}o.zoomOnce=e;function r(i,s,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=r})(oo||(oo={}));var gs=class{},Vn=class extends gs{constructor(e){super();this.id=e}},Fn=class extends gs{constructor(e){super();this.data=e}};var Ua;try{Ua=new TextDecoder}catch{}var te,Vr,_=0;var od=[],ja=od,ka=0,ft={},xe,Rr,Nt=0,Xt=0,St,Sr,it=[],_e,Kp={useRecords:!1,mapsAsObjects:!0},zn=class{},Wa=new zn;Wa.name="MessagePack 0xC1";var qo=!1,Yt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return ld(()=>(xs(),this?this.unpack(t,e):Yt.prototype.unpack.call(Kp,t,e)));Vr=e>-1?e:t.length,_=0,ka=0,Xt=0,Rr=null,ja=od,St=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 Yt){if(ft=this,this.structures)return xe=this.structures,ys();(!xe||xe.length>0)&&(xe=[])}else ft=Kp,(!xe||xe.length>0)&&(xe=[]);return ys()}unpackMultiple(t,e){let r,o=0;try{qo=!0;let i=t.length,s=this?this.unpack(t,i):Ss.unpack(t,i);if(e){for(e(s);_<i;)if(o=_,e(ys())===!1)return}else{for(r=[s];_<i;)o=_,r.push(ys());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{qo=!1,xs()}}_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 ys(){try{if(!ft.trusted&&!qo){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=Me();if(_==Vr)xe.restoreStructures&&Zp(),xe=null,te=null,Sr&&(Sr=null);else if(_>Vr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!qo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Zp(),xs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Zp(){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]||ft.getStructures&&nd()[n&63];return t?(t.read||(t.read=qa(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,ft.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[sd()]=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(Xt>=_)return Rr.slice(_-Nt,(_+=t)-Nt);if(Xt==0&&Vr<140){let e=t<16?$a(t):id(t);if(e!=null)return e}return Ha(t)}else{let t;switch(n){case 192:return null;case 193:return St?(t=Me(),t>0?St[1].slice(St.position1,St.position1+=t):St[0].slice(St.position0,St.position0-=t)):Wa;case 194:return!1;case 195:return!0;case 196:return za(te[_++]);case 197:return t=_e.getUint16(_),_+=2,za(t);case 198:return t=_e.getUint32(_),_+=4,za(t);case 199:return io(te[_++]);case 200:return t=_e.getUint16(_),_+=2,io(t);case 201:return t=_e.getUint32(_),_+=4,io(t);case 202:if(t=_e.getFloat32(_),ft.useFloat32>2){let e=bs[(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 ft.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 ft.int64AsNumber?(t=_e.getInt32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigInt64(_),_+=8,t;case 212:if(t=te[_++],t==114)return rd(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?(_++,rd(te[_++]&63,te[_++])):io(2);case 214:return io(4);case 215:return io(8);case 216:return io(16);case 217:return t=te[_++],Xt>=_?Rr.slice(_-Nt,(_+=t)-Nt):rb(t);case 218:return t=_e.getUint16(_),_+=2,Xt>=_?Rr.slice(_-Nt,(_+=t)-Nt):ob(t);case 219:return t=_e.getUint32(_),_+=4,Xt>=_?Rr.slice(_-Nt,(_+=t)-Nt):nb(t);case 220:return t=_e.getUint16(_),_+=2,Jp(t);case 221:return t=_e.getUint32(_),_+=4,Jp(t);case 222:return t=_e.getUint16(_),_+=2,ed(t);case 223:return t=_e.getUint32(_),_+=4,ed(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 tb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function qa(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>tb.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Me);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]=Me()}return r}return e.count=0,n.highByte===0?Qp(t,e):e}var Qp=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||nd()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=qa(o,n)),o.read()};function nd(){let n=ld(()=>(te=null,ft.getStructures()));return xe=ft._mergeStructures(n,xe)}var Ha=vs,rb=vs,ob=vs,nb=vs;function vs(n){let t;if(n<16&&(t=$a(n)))return t;if(n>64&&Ua)return Ua.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,a=te[_++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function Jp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}function ed(n){if(ft.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[sd()]=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 id(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 $a(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 a=te[_++];if((a&128)>0){_-=7;return}return qe(t,e,r,o,i,s,a)}else{let i=te[_++],s=te[_++],a=te[_++],c=te[_++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){_-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,a,c);{let p=te[_++];if((p&128)>0){_-=9;return}return qe(t,e,r,o,i,s,a,c,p)}}else if(n<12){let p=te[_++],l=te[_++];if((p&128)>0||(l&128)>0){_-=10;return}if(n<11)return qe(t,e,r,o,i,s,a,c,p,l);let u=te[_++];if((u&128)>0){_-=11;return}return qe(t,e,r,o,i,s,a,c,p,l,u)}else{let p=te[_++],l=te[_++],u=te[_++],d=te[_++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){_-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,a,c,p,l,u,d);{let f=te[_++];if((f&128)>0){_-=13;return}return qe(t,e,r,o,i,s,a,c,p,l,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,a,c,p,l,u,d,f,m);let h=te[_++];if((h&128)>0){_-=15;return}return qe(t,e,r,o,i,s,a,c,p,l,u,d,f,m,h)}}}}}function za(n){return ft.copyBuffers?Uint8Array.prototype.slice.call(te,_,_+=n):te.subarray(_,_+=n)}function io(n){let t=te[_++];if(it[t])return it[t](te.subarray(_,_+=n));throw new Error("Unknown extension type "+t)}var td=new Array(4096);function sd(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,Xt>=_)return Rr.slice(_-Nt,(_+=n)-Nt);if(!(Xt==0&&Vr<180))return Ha(n)}else return _--,Me();let t=(n<<5^(n>1?_e.getUint16(_):n>0?te[_]:0))&4095,e=td[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=[],td[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 a=n<16?$a(n):id(n);return a!=null?e.string=a:e.string=Ha(n)}var rd=(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=qa(e,r),e.read()},ad=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=Me();return(ad[n[0]]||Error)(n[1])};it[105]=n=>{let t=_e.getUint32(_-4);Sr||(Sr=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Sr.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=Sr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(Me());var Xa=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Xa[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ad[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,St=[Me(),Me()],St.position0=0,St.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 ld(n){let t=Vr,e=_,r=ka,o=Nt,i=Xt,s=Rr,a=ja,c=Sr,p=St,l=new Uint8Array(te.slice(0,Vr)),u=xe,d=xe.slice(0,xe.length),f=ft,m=qo,h=n();return Vr=t,_=e,ka=r,Nt=o,Xt=i,Rr=s,ja=a,Sr=c,St=p,te=l,qo=m,xe=u,xe.splice(0,xe.length,...d),ft=f,_e=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function xs(){te=null,Sr=null,xe=null}function cd(n){n.unpack?it[n.type]=n.unpack:it[n.type]=n}var bs=new Array(147);for(let n=0;n<256;n++)bs[n]=+("1e"+Math.floor(45.15-n*.30103));var Ss=new Yt({useRecords:!1}),ib=Ss.unpack,sb=Ss.unpackMultiple,ab=Ss.unpack,ws={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lb=new Float32Array(1),RM=new Uint8Array(lb.buffer,0,4);var _s;try{_s=new TextEncoder}catch{}var Ts,Ka,As=typeof Buffer<"u",Ya=As?Buffer.allocUnsafeSlow:Uint8Array,fd=As?Buffer:Uint8Array,ud=As?4294967296:2144337920,R,Be,P=0,Kt,Zt=null,cb=/[\u0080-\uFFFF]/,Un=Symbol("record-id"),so=class extends Yt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,c=0,p=fd.prototype.utf8Write?function(y,L,T){return R.utf8Write(y,L,T)}:_s&&_s.encodeInto?function(y,L){return _s.encodeInto(y,R.subarray(L)).written}:!1,l=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,g=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(y,L){if(R||(R=new Ya(8192),Be=new DataView(R.buffer,0,8192),P=0),Kt=R.length-10,Kt-P<2048?(R=new Ya(R.length),Be=new DataView(R.buffer,0,R.length),Kt=R.length-10,P=0):P=P+7&2147483640,r=P,a=l.structuredClone?new Map:null,l.bundleStrings?(Zt=["",""],R[P++]=214,R[P++]=98,Zt.position=P-r,P+=4):Zt=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.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 I=0;I<T;I++){let N=o[I];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[Un]=I+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),Zt){Be.setUint32(Zt.position+r,P-Zt.position-r);let T=Zt;Zt=null,b(T[0]),b(T[1])}if(l.offset=P,a&&a.idsToInsert){P+=a.idsToInsert.length*6,P>Kt&&w(P),l.offset=P;let T=pb(R.subarray(r,P),a.idsToInsert);return a=null,T}return L&hd?(R.start=r,R.end=P,R):R.subarray(r,P)}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,I=v.length;T<I;T++)v[T][Un]=0;v=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let I=R.subarray(r,P);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,I)}}L&xb&&(P=r)}};let b=y=>{P>Kt&&(R=w(P));var L=typeof y,T;if(L==="string"){let I=y.length;if(Zt&&I>=8&&I<4096){let k=cb.test(y);Zt[k?0:1]+=y,R[P++]=193,b(k?-I:I);return}let N;I<32?N=1:I<256?N=2:I<65536?N=3:N=5;let C=I*3;if(P+C>Kt&&(R=w(P+C)),I<64||!p){let k,W,oe,ce=P+N;for(k=0;k<I;k++)W=y.charCodeAt(k),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=y.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-P-N}else T=p(y,P+N,C);T<32?R[P++]=160|T:T<256?(N<2&&R.copyWithin(P+2,P+1,P+1+T),R[P++]=217,R[P++]=T):T<65536?(N<3&&R.copyWithin(P+3,P+2,P+2+T),R[P++]=218,R[P++]=T>>8,R[P++]=T&255):(N<5&&R.copyWithin(P+5,P+3,P+3+T),R[P++]=219,Be.setUint32(P,T),P+=4),P+=T}else if(L==="number")if(y>>>0===y)y<64?R[P++]=y:y<256?(R[P++]=204,R[P++]=y):y<65536?(R[P++]=205,R[P++]=y>>8,R[P++]=y&255):(R[P++]=206,Be.setUint32(P,y),P+=4);else if(y>>0===y)y>=-32?R[P++]=256+y:y>=-128?(R[P++]=208,R[P++]=y+256):y>=-32768?(R[P++]=209,Be.setInt16(P,y),P+=2):(R[P++]=210,Be.setInt32(P,y),P+=4);else{let I;if((I=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[P++]=202,Be.setFloat32(P,y);let N;if(I<4||(N=y*bs[(R[P]&127)<<1|R[P+1]>>7])>>0===N){P+=4;return}else P--}R[P++]=203,Be.setFloat64(P,y),P+=8}else if(L==="object")if(!y)R[P++]=192;else{if(a){let N=a.get(y);if(N){if(!N.id){let C=a.idsToInsert||(a.idsToInsert=[]);N.id=C.push(N)}R[P++]=214,R[P++]=112,Be.setUint32(P,N.id),P+=4;return}else a.set(y,{offset:P-r})}let I=y.constructor;if(I===Object)D(y,!0);else if(I===Array){T=y.length,T<16?R[P++]=144|T:T<65536?(R[P++]=220,R[P++]=T>>8,R[P++]=T&255):(R[P++]=221,Be.setUint32(P,T),P+=4);for(let N=0;N<T;N++)b(y[N])}else if(I===Map){T=y.size,T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,Be.setUint32(P,T),P+=4);for(let[N,C]of y)b(N),b(C)}else{for(let N=0,C=Ts.length;N<C;N++){let k=Ka[N];if(y instanceof k){let W=Ts[N];if(W.write){W.type&&(R[P++]=212,R[P++]=W.type,R[P++]=0),b(W.write.call(this,y));return}let oe=R,ce=Be,ie=P;R=null;let K;try{K=W.pack.call(this,y,U=>(R=oe,oe=null,P+=U,P>Kt&&w(P),{target:R,targetView:Be,position:P-U}),b)}finally{oe&&(R=oe,Be=ce,P=ie,Kt=R.length-10)}K&&(K.length+P>Kt&&w(K.length+P),P=ub(K,R,P,W.type));return}}D(y,!y.hasOwnProperty)}}else if(L==="boolean")R[P++]=y?195:194;else if(L==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[P++]=211,Be.setBigInt64(P,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[P++]=207,Be.setBigUint64(P,y);else if(this.largeBigIntToFloat)R[P++]=203,Be.setFloat64(P,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");P+=8}else if(L==="undefined")this.encodeUndefinedAsNil?R[P++]=192:(R[P++]=212,R[P++]=0,R[P++]=0);else if(L==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+L)},D=this.useRecords===!1?this.variableMapSize?y=>{let L=Object.keys(y),T=L.length;T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,Be.setUint32(P,T),P+=4);let I;for(let N=0;N<T;N++)b(I=L[N]),b(y[I])}:(y,L)=>{R[P++]=222;let T=P-r;P+=2;let I=0;for(let N in y)(L||y.hasOwnProperty(N))&&(b(N),b(y[N]),I++);R[T+++r]=I>>8,R[T+r]=I&255}:y=>{let L=Object.keys(y),T,I=s.transitions||(s.transitions=Object.create(null)),N=0;for(let k=0,W=L.length;k<W;k++){let oe=L[k];T=I[oe],T||(T=I[oe]=Object.create(null),N++),I=T}let C=I[Un];if(C)C>=96&&h?(R[P++]=((C-=96)&31)+96,R[P++]=C>>5):R[P++]=C;else{C=s.nextId,C||(C=64),C<g&&this.shouldShareStructure&&!this.shouldShareStructure(L)?(C=s.nextOwnId,C<x||(C=g),s.nextOwnId=C+1):(C>=x&&(C=g),s.nextId=C+1);let k=L.highByte=C>=96&&h?C-96>>5:-1;I[Un]=C,s[C-64]=L,C<g?(L.isShared=!0,s.sharedLength=C-63,i=!0,k>=0?(R[P++]=(C&31)+96,R[P++]=k):R[P++]=C):(k>=0?(R[P++]=213,R[P++]=114,R[P++]=(C&31)+96,R[P++]=k):(R[P++]=212,R[P++]=114,R[P++]=C),N&&(A+=S*N),v.length>=m&&(v.shift()[Un]=0),v.push(I),b(L))}for(let k=0,W=L.length;k<W;k++)b(y[L[k]])},w=y=>{let L;if(y>16777216){if(y-r>ud)throw new Error("Packed buffer would be larger than maximum buffer size");L=Math.min(ud,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else L=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new Ya(L);return Be=new DataView(T.buffer,0,L),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),P-=r,r=0,Kt=T.length-10,R=T}}useBuffer(t){R=t,Be=new DataView(R.buffer,R.byteOffset,R.byteLength),P=0}};Ka=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,zn];Ts=[{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?pd(n,16,t):dd(As?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==fd&&this.structuredClone?pd(n,Xa.indexOf(e.name),t):dd(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function pd(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function dd(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 ub(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 pb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function Fr(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Ka.unshift(n.Class),Ts.unshift(n)}cd(n)}var md=new so({useRecords:!1}),db=md.pack,fb=md.pack;var{NEVER:mb,ALWAYS:hb,DECIMAL_ROUND:gb,DECIMAL_FIT:yb}=ws,hd=512,xb=1024;var gd=new so({structuredClone:!0});Fr({Class:Ve.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ve.prototype),n}});Fr({Class:Pe.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Pe.prototype),n}});Fr({Class:dt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,dt.prototype),n}});Fr({Class:Vn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Vn(n)}});Fr({Class:Fn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Fn(n)}});Fr({Class:br.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,br.prototype),n}});function vb(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 Za(n){if(ro(n))return n;if(Array.isArray(n))return n.map(Za);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Za(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Ns;(r=>{function n(o){return gd.pack(o)}r.serialize=n;function t(o){return gd.unpack(o)}r.deserialize=t;function e(o){return vb(n(Za(o))).toString()}r.checksum=e})(Ns||(Ns={}));var Cs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Cs||(Cs={}));var Ps;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:bt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:bt.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:bt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ps||(Ps={}));var Qa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Qa||(Qa={}));var Ja;(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})(Ja||(Ja={}));var Is;(t=>t.defaultData={...Ja.defaultData,...Qa.defaultData,cloner:null,booleanExclude:null})(Is||(Is={}));var el=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(el||{}),tl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(tl||{}),rl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(rl||{}),Ls;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:bt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Ls||(Ls={}));var yd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],xd=["wrapping","image"],zr;(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]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...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:bt.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:bt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:bt.fromHexAndA(0,1),contourColor:bt.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}}}})(zr||(zr={}));var Dt;(a=>{function n(c){return!c.layers.some(l=>{if(l.data.type==="texture"&&l.data.projection!==0||l.data.type==="depth"&&!l.data.isWorldSpace||l.data.type==="noise"||l.data.type==="displace")return!0})&&!e(c)}a.isMergable=n;function t(c){let p="";return c.layers.forEach(l=>{Object.entries(l.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):p+=`${d}`})}),p}a.getHash=t;function e(c){let p=0;for(let l of c.layers)"alpha"in l.data&&l.data.type!=="light"&&l.data.type!=="fresnel"&&(p+=(1-p)*l.data.alpha);return p<1}a.isTransparent=e;function r(){return{layers:new Pe}}a.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}a.defaultData=o;function i(c,p="layer1",l="layer2"){let u=new Pe;return u.push({fi:0,data:zr.defaultData("light",c),id:p}),u.push({fi:1,data:zr.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=i;function s(c,p="basic",l="layer1",u="layer2"){let d=zr.defaultData("texture");Object.assign(d.texture,{image:c});let f=new Pe;return f.push({fi:0,data:d,id:l}),f.push({fi:1,data:zr.defaultData("light",p),id:u}),{layers:f}}a.defaultTwoLayerTextureData=s})(Dt||(Dt={}));var $o;(t=>{function n(){return{points:new Pe,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})($o||($o={}));var Os;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Os||(Os={}));var jn;(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:$o.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})(jn||(jn={}));var kn;(o=>{o.identity={...us.identity,hiddenMatrix:Gr.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:ko.isEqual(i.position,s.position)?null:s.position,rotation:ko.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:ko.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Gr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(kn||(kn={}));var wr;(t=>t.defaultData={states:new Pe,events:new Pe,visible:!0,raycastLock:!1,...kn.identity})(wr||(wr={}));var vd;(t=>t.defaultData={type:"Empty",...wr.defaultData})(vd||(vd={}));var Ms;(t=>t.defaultData={type:"Mesh",...wr.defaultData,...Is.defaultData})(Ms||(Ms={}));var bd;(t=>t.defaultData={type:"TextFrame",...wr.defaultData,...Ls.defaultData})(bd||(bd={}));var Ds;(t=>t.defaultData={...wr.defaultData,...kn.identity,...to.defaultData})(Ds||(Ds={}));var Sd;(t=>{function n(e){return{...wr.defaultData,...Ps.defaultData(e)}}t.defaultData=n})(Sd||(Sd={}));var wd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Gr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Pe,events:new Pe,...to.defaultData},r.defaultMeshObject={name:"Rectangle",...wr.defaultData,...Ms.defaultData,geometry:jn.defaultData("RectangleGeometry"),material:Dt.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...wr.defaultData,...Ms.defaultData,geometry:jn.defaultData("BooleanGeometry"),material:Dt.defaultTwoLayerData("phong","layer1","layer2")}))(wd||(wd={}));var _d;(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=Fa(i.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&eo(p,c)}}).data),i.materials&&o.materials&&(i.materials=Fa(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let c=o.materials[a];if(typeof c!="string")for(let[p,l]of Object.entries(c.layers)){let u=s[a]?.layers?.data(p);u&&eo(u,l)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,kn.merge(i,o)),jo.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})(_d||(_d={}));var Bs;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Bs||(Bs={}));var Es;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Gi(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})(Es||(Es={}));function Td(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...Da($t(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={...$t(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function ol(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function nl(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function bb(n){Object.assign(n.scene.publish,{orbitControls:{...Bs.defaultData,...$t(n.scene.publish.orbitControls)}})}function Sb(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((yd.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,a]of Object.entries(i))(xd.includes(s)||typeof a=="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 wb(n){n.scene.publish.withBackground=!0}function _b(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function Tb(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 Ab(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 Nb(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 Ad(n){n.layers===void 0&&Object.assign(n,Dt.defaultTwoLayerData("lambert"))}function il(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={...$t(t),colors:e,steps:r};Object.assign(t,o)}})}function Cb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Nd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&il(r)}):"material"in e&&typeof e.material!="string"&&il(e.material)}),Object.values(n.shared.materials).forEach(t=>il(t))}function Pb(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 Ib(n){n.shared.audios=Gi({},Ve.prototype)}function Lb(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 Ob(n){Object.entries($t(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries($t(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function Mb(n){n.scene.publish.settings.web.preload=!1}function Cd(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}var Pd=18;function Id(n){let t=n.schema??0;t!==Pd&&(console.warn("updating from ",t,"to ",Pd),t<1&&(nl(n,Td),ol(n,Td),n.schema=1),t<2&&(bb(n),n.schema=2),t<3&&(Sb(n),n.schema=3),t<4&&(wb(n),n.schema=4),t<5&&(_b(n),n.schema=5),t<6&&(Tb(n),n.schema=6),t<7&&(Ab(n),n.schema=7),t<8&&(Nb(n),n.schema=8),t<9&&(Nd(n),n.schema=9),t<10&&(Cb(n),n.schema=10),t<11&&(Pb(n),n.schema=11),t<12&&(Nd(n),n.schema=12),t<13&&(Ib(n),n.schema=13),t<14&&(Lb(n),n.schema=14),t<15&&(Ob(n),n.schema=15),t<16&&(Mb(n),n.schema=16),t<17&&(nl(n,Cd),ol(n,Cd),n.schema=17),t<18&&(nl(n,Ad),ol(n,Ad),n.schema=18))}var Gs;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Gs||(Gs={}));import{Color as Db}from"three";var Ue=class extends Db{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 Gb}from"three";import{BufferGeometry as Bb,CylinderBufferGeometry as Eb,Float32BufferAttribute as sl,Vector2 as Bt,Vector3 as Rs}from"three";var Od=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,radiusTop:p,radiusBottom:l,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new Wn(p,l,r,o,i,s,a,c*Math.PI/180,u,u,d,f):m=new Eb(p,l,r,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Ur(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Ld(n){return new Bt(n.y,-n.x)}var Wn=class extends Bb{constructor(t,e,r,o,i,s,a,c,p,l,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,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,l=0);let m=[],h=[],g=[],x=[],v=0,A=r/2,S=new Rs,b=new Rs;f&&t==0&&(t=p),f&&e==0&&(e=l);let D=new Bt(t,A),w=new Bt(e,-A),y=null,L=null,T=null,I=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),l=Math.min(l,(e-W)/B,N.length()/V),p>0){let z=p/K;y=D.clone().sub(new Bt(z,p)),d&&(T=y.clone(),T.x-=C-V*p),D.sub(N.clone().setLength(z))}if(l>0){let z=l/U;L=w.clone().sub(new Bt(z,-l)),w.add(N.clone().setLength(z)),d&&(I=L.clone(),I.x-=C-V*l,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+a,ee=new Bt(Math.sin(J),Math.cos(J));I&&L?(Z(M,q,ee,ce,l,I,-1,!0),Z(M,q,ee,ie,l,L,-1,!1)):L?(j(M,ee,L.x,0,-1),Z(M,q,ee,ie,l,L,-1,!1)):s||j(M,ee,e,W,-1);let H=Ld(N).normalize();if(Ur(H,ee,S),!O)for(let Q=0;Q<=i;Q++){let $=Q/i,re=N.clone().multiplyScalar($).add(w);Ur(re,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Z(M,q,ee,ce,p,y,1,!1),Z(M,q,ee,ie,p,T,1,!0)):y?(Z(M,q,ee,ce,p,y,1,!1),j(M,ee,y.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Q=Ld(N).multiplyScalar(-1).normalize();Ur(Q,ee,S);for(let $=0;$<=i;$++){let re=$/i,le=N.clone().multiplyScalar(-re).add(oe);Ur(le,ee,b),h.push(b.x,b.y,b.z),g.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],Q=h[ee*3+0],$=h[ee*3+2];m.push(q,J,H),(Q!=0||$!=0)&&m.push(J,ee,H)}c<Math.PI*2&&(F(-1,G[0],a),F(1,G[G.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new sl(h,3)),this.setAttribute("normal",new sl(g,3)),this.setAttribute("uv",new sl(x,2));function Z(z,M,q,J,ee,H,Q,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Q<0?le:1-le;$&&(ne-=1),ne*=J;let fe=new Bt(Math.sin(ne),Math.cos(ne)*Q),Le=fe.clone().multiplyScalar(ee).add(H);Ur(Le,q,b),h.push(b.x,b.y,b.z),Ur(fe,q,S),g.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 Rs,Q=new Bt,$=[q,J];ee<0&&$.reverse();for(let re of $)Q.set(re,A*ee),Ur(Q,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function F(z,M,q){let J=new Bt(Math.sin(q),Math.cos(q)),ee=new Bt(-Math.cos(q),Math.sin(q)),H=new Rs,Q=z<0?(le,ne,fe)=>m.push(le,ne,fe):(le,ne,fe)=>m.push(le,fe,ne),$=new Bt((t+e+k+W)/4,0);Ur($,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 fe=x.slice(le*2,le*2+2);x.push(...fe),v++}for(let le=re+1;le<v-1;le++)Q(re,le,le+1);Q(re,v-1,re+1)}}};var Md=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:l,cornerSegments:u}=n.parameters,d;return p>0||l>0||c<360?d=new Wn(0,t/2,r,o,i,s,a,c*Math.PI/180,p,l,u,0,!0):d=new Gb(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Rb,BufferGeometry as Vb,Float32BufferAttribute as al,Vector3 as qn}from"three";var Dd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:c}=n.parameters,p;return a==0?p=new Rb(t,e,r,o,i,s):p=new cl(t,e,r,o,i,s,a,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},ll=Math.PI/2,cl=class extends Vb{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=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),a=Math.min(a,t/2,e/2,r/2);let l=[],u=[],d=[],f=[],m=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),a>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,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(l),this.setAttribute("position",new al(u,3)),this.setAttribute("normal",new al(d,3)),this.setAttribute("uv",new al(f,2));function g(A,S,b,D,w,y,L,T,I,N,C){let k=(y-2*a)/I,W=(L-2*a)/N,oe=y/2-a,ce=L/2-a,ie=T/2,K=I+1,U=N+1,V=0,E=0,B=new qn;for(let O=0;O<U;O++){let G=O*W-ce;for(let Z=0;Z<K;Z++){let j=Z*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(Z/I),f.push(1-O/N),V+=1}}for(let O=0;O<N;O++)for(let G=0;G<I;G++){let Z=m+G+K*O,j=m+G+K*(O+1),F=m+(G+1)+K*(O+1),z=m+(G+1)+K*O;l.push(Z,j,z),l.push(j,F,z),E+=6}p.addGroup(h,E,C),h+=E,m+=V}function x(A,S,b,D,w,y,L,T,I,N,C){let k=(L-2*a)/N,W=L/2-a,oe=T/2-a,ce=I/2,ie=N+1,K=0,U=0,V=new qn,E=new qn;for(let B=0;B<c+1;B++){let O=B/c*ll,G=Math.sin(O)*a,Z=(1-Math.cos(O))*a,j=Math.sin(O),F=Math.cos(O);V[S]=(oe+G)*w,V[b]=(ce-Z)*y,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,Z=m+O+ie*(B+1),j=m+(O+1)+ie*(B+1),F=m+(O+1)+ie*B;l.push(G,Z,F),l.push(Z,j,F),U+=6}p.addGroup(h,U,C),h+=U,m+=K}function v(A,S,b){let D=new qn,w=new qn(t/2,e/2,r/2);w.subScalar(a);let y=[],L=A*S*b>0?(I,N,C)=>l.push(I,N,C):(I,N,C)=>l.push(I,C,N);for(let I=0;I<=c;I++){let N=[],C=ll*(1-I/c),k=Math.cos(C),W=Math.sin(C),oe=0;for(let ce=0;ce<=I;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,a);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+=ll/I}y.push(N)}let T=y.length-1;for(let I=0;I<T;I++){let N=y[I],C=y[I+1],k=N.length-1;L(N[0],C[1],C[0]);for(let W=1;W<=k;W++)L(N[W-1],N[W],C[W]),L(N[W],C[W+1],C[W])}}}};import{BufferGeometry as Fb,Float32BufferAttribute as ul,Triangle as zb,Vector3 as _r,Vector2 as pl}from"three";var jr=class extends Fb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new ul(a,3)),this.setAttribute("normal",new ul(p,3)),this.setAttribute("uv",new ul(c,2));return;function l(){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 _r,h=m.clone(),g=new zb,x=i*o,v=o-x,A=s+1,S=new _r,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 _r().fromArray(t,U*3).setLength(o)),y=[],L=1e6;for(let K=0;K<w.length;K++){let U=w[K],V=[],E,B,O,G=1e10,Z=-1;for(;(Z=e.indexOf(K,Z+1))!=-1;){let M=Z-Z%3;E=e[M+(Z+1)%3],B=e[M+(Z+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=y[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*L),F=V.findIndex(J=>J[0]==B)}y.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 I=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(),I.copy(m).multiplyScalar(v);let U=y[K];for(let j=0;j<U.length;j++){let F=U[j],z=U[(j+1)%f];g.setFromPointsAndIndices(w,K,F%L,z%L),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(I,ce[K][j])}let V=[],E=[],B=[],O=new _r;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(I),h.copy(q).sub(I);let J=I.angleTo(m),ee=m.angleTo(h),H=Math.cos(J)*x;s==0?N.copy(O):N.copy(I).setLength(v+H),E.push(H);let Q=[N,M,q];for(let $=0;$<2;$++){let re=Q[$],le=Q[$+1];k.subVectors(re,I),W.subVectors(le,I),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(I),V.push(m.clone()),$&&(b(m,I),F.push([ne==0?re:m.clone(),S.clone()]))}$&&(b(le,I),F.push([le,S.clone()]))}B.push(F)}oe.push(B);let G=2*A,Z=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-Z+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(I).setLength(E[j]).add(I),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]);a.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,I),[S.x,S.y,S.z])).flat())}}let ie=[];for(let K=0;K<y.length;K++)for(let U=0;U<f;U++){let V=y[K][U];if(V<L){let E=y[V].findIndex(G=>G%L==K),B=oe[K][U],O=oe[V][E];for(let G=0;G<A;G++){let Z=B[G],j=O[A-G],F=B[G+1],z=O[A-(G+1)];[Z,j,F,F,j,z].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}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(Z=>{a.push(Z.x,Z.y,Z.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new _r;for(let w=0;w<a.length;w+=3){d.x=a[w+0],d.y=a[w+1],d.z=a[w+2];let y=b(d)/2/Math.PI+.5,L=D(d)/Math.PI+.5;c.push(y,1-L)}let f=new _r,m=new _r,h=new _r,g=new _r,x=new pl,v=new pl,A=new pl,S=(w,y,L,T)=>{T<0&&w.x===1&&(c[y]=w.x-1),L.x===0&&L.z===0&&(c[y]=T/2/Math.PI+.5)};for(let w=0,y=0;w<a.length;w+=9,y+=6){f.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),h.set(a[w+6],a[w+7],a[w+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(f).add(m).add(h).divideScalar(3);let L=b(g);S(x,y+0,f,L),S(v,y+2,m,L),S(A,y+4,h,L)}for(let w=0;w<c.length;w+=6){let y=c[w+0],L=c[w+2],T=c[w+4],I=Math.max(y,L,T),N=Math.min(y,L,T);I>.9&&N<.1&&(y<.2&&(c[w+0]+=1),L<.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 jr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Ub}from"three";var Bd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new $n(t*.5,i,s):new Ub(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},$n=class extends jr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],c="DodecahedronGeometry";super(s,a,c,t,e,r),this.type=c}static fromJSON(t){return new $n(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Qb,Plane as Jb,Shape as Yd,Vector2 as Tr,Vector3 as eS,MathUtils as xl,LineCurve as vl,QuadraticBezierCurve as Kd,CubicBezierCurve as Us}from"three";import{CubicBezierCurve as Vs,EllipseCurve as jb,LineCurve as Fs,LineCurve3 as kb,MathUtils as Hb,QuadraticBezierCurve as fl,SplineCurve as Wb,Vector2 as tt,Vector3 as Rd}from"three";var Xn=1e-12,Xo=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Hb.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)}},Et=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 Et(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 Et(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&&(Ed(o,e),Ed(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 Ed(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var ml=n=>n,Ko=new tt,zs=new tt,qb=new tt,$b=new tt,Xb=new tt,Yb=new tt,Vd=new Rd,Fd=new Rd;function zd(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,zs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Vs(n.v0,t,e,n.v2)}function Yn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Kb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Zb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function hl(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 Ud(n,t,e){return Gd(n,t)&&Gd(t,e)&&dl(n.position,t.position,e.position)}function dl(n,t,e){return Ko.copy(t).sub(n).cross(zs.copy(e).sub(n))===0}function jd(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,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(a+c,s+p),o.set(a-c,s-p),[r,o]}function kd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Hd(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,c=e.x-n.x,p=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+p)*(a+p)),u;return hl(t,n,e)>Math.PI&&(l*=-1),Yn(p,a)?u=(a+p)*(r/l-.5)*8/3/(s-c):u=(s+c)*(r/l-.5)*8/3/(p-a),o.set(t.x-u*a,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function gl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Gd(n,t){return dl(n.position,n.controls[1].position,t.position)&&dl(n.position,t.controls[0].position,t.position)}function Wd(n,t,e,r,o=.5){let i=Ko.subVectors(t,n).multiplyScalar(o).add(n),s=zs.subVectors(e,t).multiplyScalar(o).add(t),a=qb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=$b.subVectors(s,i).multiplyScalar(o).add(i),l=Xb.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Yb.subVectors(l,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,l.x,l.y,u.x,u.y,r.x,r.y]}function qd(n,t,e=12,r=!0){let o=Fd.set(0,0,0),i,s=0,a=[];for(let c=0;c<t.length;c++){let p=ml(t[c]),l=Ko,u=kr(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof Vs||p instanceof fl||p instanceof Fs){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),i!==void 0&&Zb(i,o))continue;i===void 0&&(i=Vd),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 $d(n,t,e,r=12,o=!0){let i=Fd.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=ml(t[c]),u=Ko,d=kr(l,r);a.push(d);for(let f=0;f<=d;f++)if(l instanceof Vs||l instanceof fl||l instanceof Fs){if(l.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Vd:(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++),a}function yl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=kr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=kr(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=kr(n[0].roundedCurveCorner,t)*.5),r}function kr(n,t=12){return n&&n instanceof jb?t*2:n&&(n instanceof Fs||n instanceof kb)?1:n&&n instanceof Wb?t*n.points.length:t}function Xd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=ml(t[s]),c=kr(a,e),p=Ko;for(let l=0;l<=c;l++)if(a instanceof Vs||a instanceof fl||a instanceof Fs){if(a.getPoint(l/c,p),o!==void 0&&Kb(o,p,Xn))continue;o===void 0&&(o=zs),o.copy(p),n.push(p.x,p.y),i++}}return Yn(n[0],n[n.length-2],Xn)&&Yn(n[1],n[n.length-1],Xn)&&(n.pop(),n.pop()),r&&i>1&&!(Yn(n[i-1],n[1],Xn)&&Yn(n[i-2],n[0],Xn))&&(n.push(n[0],n[1]),i++),n}var bl=new Tr,tS=new Tr,rS=new Tr,oS=new Tr,nS=new Tr,iS=new Tr,Se=class extends Yd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Qb;this.plane=new Jb(new eS(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=xl.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=>Et.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,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],p=c.points.length-1,l=c.getPointIndexById(e);if(l<0)i+=p;else return l+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=bl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=xl.generateUUID()){let i;e instanceof Tr?i=e:i=new Tr(e,r);let s=new Et(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 qd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=yl(this.points,e,!1),this.roundedCurveDivisions=yl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return $d(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Xd(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=kr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(gl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(bl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=a[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){gl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],l=a.roundness,u=c&&p&&Ud(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,f=a.curveAfter;if(d===void 0||f===void 0)continue;let m=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=f.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),S=Math.min(v,A),b=1-S/g,D=S/x,w=d.getPointAt(b,bl),y=f.getPointAt(D,tS);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,y);let L;if(this.useCubicForRoundedCorners){let T=hl(w,a.position,y)/2,I=Math.tan(T)*w.distanceTo(a.position),[N,C]=jd(w,y,I,rS,oS),k=kd(N,C,a.position),[W,oe]=Hd(k,w,y,I,nS,iS);L=new Us(w.clone(),W.clone(),oe.clone(),y.clone())}else L=new Kd(w.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=L,this.roundedCurves.splice(i+o,0,L),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof vl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,c=r,p=a.getUtoTmapping(o,0),l=Wd(a.v0,a.v1,a.v2,a.v3,p);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return r}clone(){let e=new 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],a=e.points[i+1],c=e.points[i+2],p=e.points[i+3],l=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Et(xl.generateUUID(),new Tr(s,a));f.controls[0].position.set(c,p),f.controls[1].position.set(l,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 Us&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof Kd&&(i[a]=zd(i[a]));for(a=0,c=i.length;a<c;a++){let u=i[a],d=a>0?i[a-1]:null,f;u instanceof Us?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof vl&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],l=!1;return p instanceof Us?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof vl&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Yd&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}};var wl=Math.PI*2;function Sl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function sS(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 Zd(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 aS(n,t,e,r,o,i,s,a,c,p){let l=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(a,2),m=l*u-l*f-u*d;m<0&&(m=0),m/=l*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*a,g=m*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,S=(a-g)/i,b=(-s-h)/o,D=(-a-g)/i,w=Zd(1,0,A,S),y=Zd(A,S,b,D);return!p&&y>0&&(y-=wl),p&&y<0&&(y+=wl),{centerx:x,centery:v,ang1:w,ang2:y}}function Qd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,l=(t-r)/2;if(p===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=aS(n,t,e,r,o,i,p,l,s,a),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,x=Math.abs(m)/(wl/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(sS(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=Sl(A[0],o,i,h,g),{x:D,y:w}=Sl(A[1],o,i,h,g),{x:y,y:L}=Sl(A[2],o,i,h,g);return{x1:S,y1:b,x2:D,y2:w,x:y,y:L}})}import{BufferAttribute as ks,BufferGeometry as dS}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,a,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),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(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),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),Kn=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}(),js=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}(),Zo=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}(),Jd=function(){function n(){var t=new Zo,e=new Kn,r=new js(0),o=new js(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 js(0),r=new js(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 Zo,e=new Zo,r=new Kn,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 Zo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Kn;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 Kn;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 Zo;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 Kn;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,a,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&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+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,a,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),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),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===a&&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}(),ef=function(){function n(){this.handle=null}return n}(),tf=function(){function n(){this.key=null,this.node=0}return n}(),lS=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 ef,this.handles[r]=new tf;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 ef;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new tf}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}(),_l=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}(),rf=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),cS=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new rf,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 rf;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}(),uS=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var a=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return a>=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 _l;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,c,p,l,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,l=i;a=n.regionBelow(c),p=a.eUp.Sym,p.Org===l.Org;)p.Onext!==l&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(l.Oprev,p)),a.windingNumber=c.windingNumber-p.winding,a.inside=n.isWindingInside(t,a.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,l),n.deleteRegion(t,c),t.mesh.delete(l)),u=!1,c=a,l=p;c.dirty=!0,ue(c.windingNumber-p.winding===a.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),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(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,a=i.Org,c=o.Dst,p=i.Dst,l,u,d=new Zo,f,m;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,p.t),l>u))return!1;if(se.vertLeq(s,a)){if(se.edgeSign(p,s,a)>0)return!1}else if(se.edgeSign(c,a,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,a,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(a.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(a.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=se.vertLeq(s,a)?s:a,se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),se.vertEq(d,s)||se.vertEq(d,a)?(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,a,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),a=e.eUp,c=s.eUp,p=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),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,a.Org)?o=c.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,a,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=a=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,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,c,p=new _l;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=t.mesh.connect(a.Dnext,e.anEdge);c=l.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,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new _l,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 cS(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,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 lS(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}(),pS=function(){function n(){this.mesh=new Jd,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ie.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,a,c=[0,0,0],p=[0,0,0],l=[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 g=0;g<3;++g)i=e.coords[g],p[g]=i,m[g]=e,c[g]=i,f[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,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(a=0,r=m[v],o=f[v],l[0]=r.coords[0]-o.coords[0],l[1]=r.coords[1]-o.coords[1],l[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],d[0]=l[1]*u[2]-l[2]*u[1],d[1]=l[2]*u[0]-l[0]*u[2],d[2]=l[0]*u[1]-l[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var 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,a=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>r)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===je.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===je.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.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 a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,p=0,l=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Jd),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_(),uS.computeInterior(this,s);var a=this.mesh;return e===je.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===je.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function ao(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?je.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,p=n.normal,l=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,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new pS;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,l,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var j3=Ie.ODD,k3=Ie.NONZERO,H3=Ie.POSITIVE,W3=Ie.NEGATIVE,q3=Ie.ABS_GEQ_TWO,$3=je.POLYGONS,X3=je.CONNECTED_POLYGONS,Y3=je.BOUNDARY_CONTOURS;var Qo=class extends dS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,p=!0,l,u;for(let m=0,h=i.length/2;m<h;m++){let g=m*2,x=i[g+0],v=i[g+1];if(l!==void 0&&x!==l&&(c=!1),u!==void 0&&v!==u&&(p=!1),l=x,u=v,!c&&!p)break}!c&&!p&&(a=ao({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=a?.vertexCount??1,f=a?.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(f*3),1),a){let m=1/0,h=-1/0,g=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=a.vertices[D+0],y=a.vertices[D+1];w<m&&(m=w),w>h&&(h=w),y<g&&(g=y),y>x&&(x=y)}let v=h-m,A=x-g;for(let S=0,b=d;S<b;S++){let D=S*2,w=a.vertices[D+0],y=a.vertices[D+1],L=(w-m)/v,T=(y-g)/A;this._positionAttribute.setXYZ(S,w,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,L,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=a.elements[D+0],y=a.elements[D+1],L=a.elements[D+2];this._indexAttribute.setX(D+0,w),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,L)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new Qo(this._shape,this._curveSegments);return e.userData=Mn(this.userData),e}};import{BufferAttribute as Ws,BufferGeometry as fS}from"three";var Hs=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*Hs.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*Hs.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=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);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=p,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Zn=Hs;Zn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Tl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Jo=class extends fS{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(w=>{let y=w.extractShapePointsToFlatArray([],i),L=[];for(let T=y.length-1;T>=1;T-=2){let I=y[T-1],N=y[T-0];L.push(I,N)}return L}),p=ao({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=ao({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(l){p.elementCount+=l.elementCount;for(let w=0;w<l.elements.length;w++){let y=l.elements[w],L=w%2===0?p.vertexCount:0;p.elements.push(y+L)}for(let w=0;w<l.vertexIndices.length;w++){let y=l.vertexIndices[w],L=p.vertexCount;p.vertexIndices.push(y+L)}for(let w=0;w<l.vertices.length;w++){let y=l.vertices[w];p.vertices.push(y)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,y=p.vertexCount;w<y;w++){let L=w*2,T=p.vertices[L+0],I=p.vertices[L+1];T<d&&(d=T),T>f&&(f=T),I<m&&(m=I),I>h&&(h=I)}this._minX=d,this._minY=m,this._width=f-d,this._height=h-m;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new Zn(g);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let y=w>=u,L=w*2,T=p.elements[L+0],I=p.elements[L+1],N=T+I,C={start:T,count:I,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],Z=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-Z,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[Q,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)C.continuous[V]=!0;else{let re=$===1?Q+1:Q-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Q].getTangent($),fe=this._shape.roundedCurves[re].getTangent(le);C.continuous[V]=ne.dot(fe)>.95}}y&&(C.normals[V*2+0]*=-1,C.normals[V*2+1]*=-1),[W,k,oe]=[k,oe,oe+1],oe>=N&&(oe-=I)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,N*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((V,E)=>[E,E]),elements:[0,I],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=[],Z=[],j=[],F=0;for(let M=0;M<I;M++){let q=M*2,J=(M-1+I)%I*2,ee=p.vertices[C.start*2+q+0],H=p.vertices[C.start*2+q+1],Q=-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]&&y){let ne=Math.atan2($,Q),fe=Math.atan2(le,re);fe>ne&&(fe-=Math.PI*2);let Le=fe-ne;if(C.continuous[M]||y){let me=ne+Le/2,Ge=Math.cos(me)*B,be=Math.sin(me)*B;O[2*F+0]=ee+Ge*(y?-1:1),O[2*F+1]=H+be*(y?-1:1),j[F]=M,F++}else{let me=Math.max(1,Math.floor(i/4*Math.abs(Le)/Math.PI));for(let Ge=0;Ge<=me;Ge++){let be=ne+Le*(Ge/me),lt=Math.cos(be)*B,_t=Math.sin(be)*B;O[2*F+0]=ee+lt,O[2*F+1]=H+_t,j[F]=M,F++}}}else O[2*F+0]=ee+Q,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,Z[M]=F,F++}let z=ao({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+=I);for(let H=q;H<ee;H++){let Q=H%I,$=(H+1)%I;if(!C.continuous[Q]||!C.continuous[$]){z.vertexIndices[M]=[q,Q],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 Z=C.concave.length,j=0,F=Tl(j,I);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=Tl(j,I);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)%I;let q=j,J=this.buildBevelVert(C,E,(z-1+O)%O),ee=this.buildBevelVert(C,B,(M-1+G)%G),H=J,Q=ee,$,re,le=!1;do{F=Tl(j,I);let ne=K(E,z,F),fe=K(B,M,F),Le=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,Q.topN),x.push($.bottomP,H.bottomN,Q.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(Q.topN,H.topP,re.topP),x.push(H.bottomP,Q.bottomN,re.bottomP),Q=re;else if(ne&&fe)if($=this.buildBevelVert(C,E,z,0),re=this.buildBevelVert(C,B,M,0),Le?(x.push(H.topN,re.topP,Q.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Q.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Q.topN,H.topN,$.topP),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Q.bottomN),x.push($.bottomP,Q.bottomN,re.bottomP)),H=$,Q=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,Q.topN),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Q.bottomN),x.push($.bottomP,Q.bottomN,re.bottomP),H=$,Q=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,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$,be>(Ge+1)*me&&(Ge++,re=this.buildBevelVert(C,B,(M+Ge)%G,Ge/(fe-1)),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,Q.bottomN,re.bottomP),Q=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(Q.topN,$.topP,re.topP),x.push($.bottomP,Q.bottomN,re.bottomP),Q=re,be>(Ge+1)*me&&(Ge++,$=this.buildBevelVert(C,E,(z+Ge)%O,Ge/(ne-1)),x.push(H.topN,$.topP,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$)}z=(z+ne)%O,M=(M+fe)%G,j=(j+1)%Z}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(y){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(y){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(!y){let V=ie[ie.length-1],E=ao({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]),Z=this.buildSurfaceVert(E,E.elements[B+2]);x.push(O.top,G.top,Z.top),x.push(Z.bottom,G.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Ws(Uint32Array.from(x),1),S=new Ws(this._buffer.positions,3),b=new Ws(this._buffer.normals,3),D=new Ws(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],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),l=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[u+0]=a,this._buffer.uvs[u+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[u+2]=a,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=r.boundary.vertexIndices[o],p,l,u,d;a!==c?(l=a,p=c,d=!1,u=e.continuous[l]&&e.continuous[p]):(p=a,l=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,g=p*2,x=l*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,w=e.normals[g+0],y=e.normals[g+1],L=e.normals[x+0],T=e.normals[x+1];if(d){let W=L-w,oe=T-y;w=w+W*(1-i),y=y+oe*(1-i);let ce=Math.sqrt(w*w+y*y);w/=ce,y/=ce}let I=this._buffer.get(u?2:4),N=I*3,C=I*2,k={i:o,fi:p,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+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]=y*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]=y*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b,u||(I+=2,N+=6,C+=4,k.topP=I+0,k.bottomP=I+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]=L*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]=L*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 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,a=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:a}),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 Qo(n.shape,o):s=new Jo(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as nf,Vector2 as sf}from"three";var af=Math.PI*2,lf=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:a,extrudeBevelSegments:c}=n.parameters,p=n.shape,l=t*.5,u=e*.5,d=mS(p,l,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function mS(n,t,e,r,o,i){if(r>=af)return o>30||o%4===0?(gS(n,t,e,i),Math.round(o/4)):of(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,c={x:Math.cos(a)*t,y:Math.sin(a)*e},p=Qd({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?hS(n,s.x,s.y,p,o,t,e,i):of(n,r,o,t,e,i)}function hS(n,t,e,r,o,i,s,a){let c=Math.round(o/r.length);n.addPoint(en(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=n.points[p],f=en(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 a>0?cf(n,i,s,a):n.addPoint(en(0,0)),c}function of(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let c=s*a,p=Math.sin(c)*r,l=Math.cos(c)*o;n.addPoint(en(p,l))}return t<af?i>0?cf(n,r,o,i):n.addPoint(en(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&uf(n,r,o,i)),1}function gS(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,c=e*s;n.addPoint(qs(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(qs(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(qs(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(qs(o,i-e,o+a,i-e,o-a,i-e)),r>0&&uf(n,t,e,r)}function en(n,t){return new Et(nf.generateUUID(),new sf(n,t))}function qs(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 cf(n,t,e,r){pf(n,t,e,r).forEach(i=>n.addPoint(i))}function uf(n,t,e,r){let o=pf(n,t,e,r),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function pf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new sf(o/t,i/e),a=n.points.map(c=>{let p=c.clone();return p.uuid=nf.generateUUID(),p}).reverse();return a.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(p)}),a}import{BufferGeometry as yS,Float32BufferAttribute as Al,Vector3 as df}from"three";var ff=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:c,pathSegments:p,cornerRadius:l,cornerSegments:u}=n.parameters,d=new Qn(!1,t,e,r,o,i,s,a,c,p,l,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Qn=class extends yS{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,c=1,p=1,l=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new df,h=new df,g=m(),x=m(),v=m(),A,S,b,D,w,y,L,T,I=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(a*s),E=V+1,B=K/V,O=-K/2,G=l+1,Z=2*Math.PI/l,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,Q=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(De=>Array($*De).fill(0)),fe=[],Le=i-c;function me(De,xt){let Ht=Math.PI/2;y=xt*B,T=2*Math.PI*(y%U)/U+Ht,y+=O,L=Math.sin(T)*Le,w=Math.cos(T)*Le,t?De.set(w,L,y):De.set(w,y,L)}me(h,-1e-10),me(g,0),I.copy(h),me(h,1);let Ge=h.distanceTo(g),be=M+z,lt=Ge*V+2*be,_t=z,bo=lt-be;for(let De=0;De<=V;De++){me(x,De),ie.subVectors(x,I).normalize(),I.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let xt=De===0,Ht=De===V,ch=xt?3*Math.PI/2:j,uh=xt?_t:bo,ph=xt?G:Q,dh=xt?0:$-G,fh=ie.clone().multiplyScalar(xt?-M:M).add(x),mh=ie.clone().multiplyScalar(xt?-1:1).normalize();for(let hr=0;hr<G;hr++){let Tc=hr*Z;if(N.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(Tc)),g.copy(ce).multiplyScalar(c*Math.sin(Tc))),C.copy(N).normalize(),xt||Ht){f||(q=dh+hr,[0,1,2].forEach(ct=>{re[q*3+ct]=fh.getComponent(ct),le[q*3+ct]=mh.getComponent(ct)}),ne[q*2]=+Ht,ne[q*2+1]=hr/l),g.copy(C).multiplyScalar(z),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let Na=ct*j+ch;k.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(Na)),g.copy(C).multiplyScalar(M*Math.cos(Na))),W.copy(k).normalize(),g.addVectors(v,k),k.normalize(),q=ph+ct*G+hr,[0,1,2].forEach(Ei=>{re[q*3+Ei]=g.getComponent(Ei),le[q*3+Ei]=W.getComponent(Ei)});let hh=+xt+Math.sin(Na);ne[q*2]=(uh+M*hh)/lt,ne[q*2+1]=hr/l}}g.addVectors(x,N),q=H+De*G+hr,[0,1,2].forEach(ct=>{re[q*3+ct]=g.getComponent(ct),le[q*3+ct]=C.getComponent(ct)}),ne[q*2]=(be+De*Ge)/lt,ne[q*2+1]=hr/l}}let yt=E+2*d+J,So=1,[Di,Bi]=f?[So,So+E-1]:[0,yt-1];for(let De=Di;De<=Bi-1;De++){let xt=f&&De===Bi-1;for(let Ht=0;Ht<G-1;Ht++)A=De*G+Ht,S=A+1,b=(xt?Ht:A)+G,D=(xt?Ht+1:S)+G,De===0?fe.push(S,D,b):De===yt-2?fe.push(A,S,b):fe.push(A,S,b,S,D,b)}this.setIndex(fe),this.setAttribute("position",new Al(re,3)),this.setAttribute("normal",new Al(le,3)),this.setAttribute("uv",new Al(ne,2))}};import{IcosahedronBufferGeometry as xS}from"three";var mf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Jn(t*.5,i,s):new xS(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Jn=class extends jr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new Jn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as vS,Shape as bS}from"three";var hf=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 bS;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 vS(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Sf,BufferGeometryLoader as LS,Vector3 as OS,BoxBufferGeometry as wf}from"three";import{BufferGeometry as NS,Vector2 as Pl,Vector3 as bf}from"three";import{Box3 as SS,BufferAttribute as ei,BufferGeometry as gf,Color as xf,EventDispatcher as wS,Float32BufferAttribute as tn,Matrix3 as yf,Matrix4 as vf,MathUtils as _S,Object3D as TS,Sphere as AS,Vector2 as Ct,Vector3 as rt}from"three";var Qt=new vf,Nl=new TS,$s=new rt,Hr=class extends wS{constructor(){super(),this.uuid=_S.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 yf().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Qt.makeRotationX(t),this.applyMatrix4(Qt),this}rotateY(t){return Qt.makeRotationY(t),this.applyMatrix4(Qt),this}rotateZ(t){return Qt.makeRotationZ(t),this.applyMatrix4(Qt),this}translate(t,e,r){return Qt.makeTranslation(t,e,r),this.applyMatrix4(Qt),this}scale(t,e,r){return Qt.makeScale(t,e,r),this.applyMatrix4(Qt),this}lookAt(t){return Nl.lookAt(t),Nl.updateMatrix(),this.applyMatrix4(Nl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,a=o.color,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)),a!==void 0&&e.colors.push(new xf().fromBufferAttribute(a,d));function l(d,f,m,h){let g=a===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 rn(d,f,m,x,g,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 g=m,x=m+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):l(g,g+1,g+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)l(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)l(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter($s).negate(),this.translate($s.x,$s.y,$s.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new vf;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],a=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,a),e.subVectors(s,a),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],p=this.vertices[a.b],l=this.vertices[a.c];r.subVectors(l,p),o.subVectors(c,p),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let 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 Hr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let p=new rt,l={a:new rt,b:new rt,c:new rt};i.push(p),s.push(l)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(a.normal),p.a.copy(a.vertexNormals[0]),p.b.copy(a.vertexNormals[1]),p.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new SS),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new AS),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,a=t.vertices,c=this.faces,p=t.faces,l=this.colors,u=t.colors;e!==void 0&&(o=new yf().getNormalMatrix(e));for(let d=0,f=a.length;d<f;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)l.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,g,x=m.vertexNormals,v=m.vertexColors,A=new rn(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++)g=v[S],A.vertexColors.push(g.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,g=m.length;h<g;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 l=this.vertices[c],u=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.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 l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let u=[l.a,l.b,l.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(p,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new 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,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),a&&a.push(i[p])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let 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=[],a={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],g=!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=l(w,0,0),w=l(w,1,g),w=l(w,2,x),w=l(w,3,v),w=l(w,4,A),w=l(w,5,S),w=l(w,6,b),w=l(w,7,D),r.push(w),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(A&&r.push(u(h.normal)),S){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function l(m,h,g){return g?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 a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[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 Hr().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,g=m.length;h<g;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,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;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,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(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[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 l=t.boundingBox;l!==null&&(this.boundingBox=l.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Cl().fromGeometry(this),e=new gf,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new ei(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new ei(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new ei(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new ei(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new ei(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let p=s[a],l=new tn(p.data.length*3,3);l.name=p.name,i.push(l.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 gf,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}};Hr.prototype.isGeometry=!0;var Cl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,c=a.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:a[x].name,data:[]};this.morphTargets.position=p}let l=t.morphNormals,u=l.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:l[x].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=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=a[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=l[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),g&&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}},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 xf,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 CS=["a","b","c"];function PS(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Il(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Ll(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),c=s+"_"+a,p;if(r.has(c))p=r.get(c);else{let l=e[s],u=e[a];p={a:l,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function IS(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],Ll(s.a,s.b,n,r,s,e),Ll(s.b,s.c,n,r,s,e),Ll(s.c,s.a,n,r,s,e)}function Xs(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 Ys(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Ks=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof NS?t=new Hr().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 bf,r,o,i,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],f=new Map;IS(c,p,d,f);let m=[],h,g,x,v,A,S,b;for(let F of Array.from(f.keys())){for(g=f.get(F),x=new bf,A=3/8,S=1/8,b=g.faces.length,b!=2&&(A=.5,S=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],a=0;a<3&&(h=c[PS(v,CS[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),g.newEdge=m.length,m.push(x)}let D,w,y,L,T,I,N,C=[];for(o=0,i=c.length;o<i;o++){for(I=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),y=D,r<=2&&(r==2?(w=3/4,y=1/8):r==1||r==0),N=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)L=T[s],h=L.a!==I?L.a:L.b,e.add(h);e.multiplyScalar(Number(y)),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 Pl,Z=new Pl,j=new Pl;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Il(v.a,v.b,f).newEdge)+W,ce=Number(Il(v.b,v.c,f).newEdge)+W,ie=Number(Il(v.c,v.a,f).newEdge)+W,Xs(K,oe,ce,ie,v.materialIndex),Xs(K,v.a,oe,ie,v.materialIndex),Xs(K,v.b,ce,oe,v.materialIndex),Xs(K,v.c,ie,ce,v.materialIndex),u&&(V=l[o],E=V[0],B=V[1],O=V[2],G.set(on(E.x,B.x),on(E.y,B.y)),Z.set(on(B.x,O.x),on(B.y,O.y)),j.set(on(E.x,O.x),on(E.y,O.y)),Ys(U,G,Z,j),Ys(U,E,G,j),Ys(U,B,Z,G),Ys(U,O,j,Z));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new OS,_f=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Sf().copy(new wf(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 Sf().copy(new wf(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Ks(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new LS(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 Tf=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:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5,u=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let g=f*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*l;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as MS,Float32BufferAttribute as Ol,Vector2 as Jt,Vector3 as $e}from"three";var Af=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=new Dl(t*.5,e,o,i,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function ti(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Ml(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let p=s.add(a).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(a,r/Math.sin(p))}}function DS(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Dl=class extends MS{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let c=[],p=[],l=[],u=[],d=0,f=e/2,m=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,-f,0),S=new $e(0,f,0),b=new Jt(t,-f),D=new Jt(h,-f),w=new Jt(0,S.y).sub(D),y=new Jt(0,S.y).sub(b),L=new Jt(w.y,-w.x).normalize(),T=new Jt(y.y,-y.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(L.x,L.y,0),V=new $e(Math.cos(g)*U.x,U.y,Math.sin(g)*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),l.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,Z=new Jt(Math.sin(G),Math.cos(G));ti(E,Z,oe),p.push(oe.x,oe.y,oe.z),l.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 Z=0;Z<r;Z++){let j=Z/r*Math.PI*2+m,F=(Z+.5)/r*Math.PI*2+m,z=(Z+1)/r*Math.PI*2+m,M=new Jt(Math.sin(j),Math.cos(j)),q=new Jt(Math.sin(F),Math.cos(F)),J=new Jt(Math.sin(z),Math.cos(z));ti(b,M,V),ti(b,J,E),ti(L,q,U),Ml(S,V,E,W,W,B),p.push(B.x,B.y,B.z),Ml(V,S,E,W,k,O),p.push(O.x,O.y,O.z),Ml(E,V,S,k,W,G),p.push(G.x,G.y,G.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Q=d++;if(c.push(ee,H,Q),s>0){{let le=V.clone().add(E).multiplyScalar(.5),ne=S.clone().sub(le).normalize(),Le=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),me=G.clone().sub(O);ie(le,me,Le,w.angle())}let $,re;{let le=new $e;ti(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=DS(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),Le=ne.clone().cross(fe);K(le,ne,fe,Le)}ce.concat(re);{let le=w.angle(),ne=Math.PI-le,fe=S.clone();fe.y-=s/Math.sin(le-Math.PI/2);let Le=new $e,me=[];for(let be=0;be<a;be++){let lt=[],_t=Math.PI/2-ne*be/a,bo=Math.cos(_t),yt=Math.sin(_t),So=F;for(let Di=0;Di<=be;Di++){let Bi=Math.cos(So),De=Math.sin(So);U.x=bo*De,U.y=yt,U.z=bo*Bi,Le.copy(fe).addScaledVector(U,s),p.push(Le.x,Le.y,Le.z),l.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),So+=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],_t=me[be+1],bo=lt.length-1;c.push(_t[1],lt[0],_t[0]);for(let yt=1;yt<=bo;yt++)c.push(lt[yt],lt[yt-1],_t[yt]),c.push(_t[yt+1],lt[yt],_t[yt])}}}}}this.setIndex(c),this.setAttribute("position",new Ol(p,3)),this.setAttribute("normal",new Ol(l,3)),this.setAttribute("uv",new Ol(u,2));function ie(U,V,E,B,O){let G=-B/2,Z=(Math.PI-B)/2,j=V.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Z));let F=new $e,z=new $e,M=1,q=d,J=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;z.set(0,0,0),z.addScaledVector(j,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Q=0;Q<=M;Q++){let $=Q/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),l.push(z.x,z.y,z.z),u.push(0,0),Q===0&&J.push(d),d++}}for(let ee=0;ee<a;ee++)for(let H=0;H<M;H++){let Q=q+H+(M+1)*ee,$=Q+(M+1),re=$+1,le=Q+1;c.push(Q,$,le),c.push($,re,le)}return[U.clone().addScaledVector(V,.5),J]}function K(U,V,E,B){let O=Math.PI/2,G=y.angle()-O,Z=[],j=new $e,F=new $e;for(let M=0;M<=a;M++){let q=[],J=M/a;for(let ee=0;ee<=M;ee++){let Q=((M?ee/M:0)-.5)*v,$=Math.cos(Q),re=Math.sin(Q),le=Math.atan(Math.tan(G)*$),ne=(O+le)*J,fe=Math.cos(ne),Le=Math.sin(ne);j.set(0,0,0),j.addScaledVector(V,Le*$),j.addScaledVector(E,fe),j.addScaledVector(B,Le*re),F.copy(U).addScaledVector(j,s),p.push(F.x,F.y,F.z),l.push(j.x,j.y,j.z),u.push(0,0),q.push(d++)}Z.push(q)}let z=Z.length-1;for(let M=0;M<z;M++){let q=Z[M],J=Z[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 Nf=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:a,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},l={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=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),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:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as BS}from"three";var Cf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:p}=n.parameters,l=new BS(.5*t,o,i,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as ES}from"three";var Pf=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 ES(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as GS,Float32BufferAttribute as Bl,Vector3 as RS}from"three";var If=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,a=new El(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},El=class extends GS{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],p=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let u=[],d=Math.PI/2,f=(F=0,z=0,M=0)=>new RS(F,z,M),m=f(),h=f(),[g,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-g,+v),f(A,-g,-v),f(A,+g,-v)],y=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),L=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));w.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,I=b.z-l;o<=d?(w.z=Math.min(T,I),w.z==I&&(w.y-=(T-I)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),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,y(o,!0),L(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,y(z),L(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,Z,j;for(let F=1;F<u.length;F++)[G,Z,j]=u[F],a.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,G.y,G.z),c.push(0,B.y,B.z,0,Z.y,Z.z,0,B.y,B.z,0,B.y,B.z,0,Z.y,Z.z,0,Z.y,Z.z),p.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Z,j];this.setAttribute("position",new Bl(a,3)),this.setAttribute("normal",new Bl(c,3)),this.setAttribute("uv",new Bl(p,2))}};var Lf=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:a,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,l=n.shape,u=t*.5,d=e*.5,f=0,m=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 S=0;S<o;S++){let b=h*S,D=f+Math.sin(b)*u,w=m+Math.cos(b)*d;l.addPoint(l.createPoint(D,w))}}else for(let S=0;S<o;S++){let b=f+Math.cos(g)*u,D=m+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=f+Math.cos(g)*x,D=m+Math.sin(g)*v,S<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let S=0,b=l.points.length;S<b;S++)l.points[S].roundness=i;l.roundness=i,l.update();let A=st.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as VS}from"three";var Zs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},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 VS(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Of=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=FS(t,e,r,t*.5,s,i,0,0,o,a,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function FS(n,t,e,r,o,i,s,a,c,p,l){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new Qn(!0,n,t,e,r,o,i,s,a,c,p,l)}import{TorusKnotBufferGeometry as zS}from"three";var Mf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let c=new zS(a,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Df=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:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5;a?(c.addPoint(c.createPoint(-p,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))),c.isClosed=!0;for(let d=0,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 cm,BufferAttribute as um,Uint32BufferAttribute as lc,Float32BufferAttribute as cc,Matrix4 as Qw,Vector3 as pa}from"three";var US,Qs=new Promise(n=>{US=n});import{BufferGeometryLoader as Kw}from"three";import{EventDispatcher as $w,Matrix3 as Xw,Vector3 as ac}from"three";import{Mesh as Ww,Matrix4 as qw}from"three";import{Matrix4 as Uf}from"three";import{Object3D as HS,Matrix4 as WS}from"three";import{HemisphereLight as Bf}from"three";function Fe(n,t){return t.color(n)}var Gl=n=>"isEntity"in n,er=n=>"isAbstractMesh"in n,tr=n=>n!==null&&n.objectType==="BooleanObject",Ef=n=>n.objectType==="CombinedCamera";var Js=n=>"objectHelper"in n;function jS(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??Gr.identity)),e&&(n.updateMatrix(),tr(n.parent)&&er(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 kS(n,t){jS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Gf(n,t,e){kS(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 Bf)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Bf)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Rf(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 ea=n=>class extends n{hasEntityChild(){return this.children.some(e=>Gl(e))}isDescendantOf(e){e instanceof HS&&(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 WS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Gl(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 Ff,Line3 as qS,Matrix4 as Rl,Vector3 as Pt}from"three";var nn=new Ff,rr=new Pt,or=new Pt,sn=new Rl,zf=[new Pt(-1,1,1),new Pt(-1,-1,1),new Pt(1,-1,1),new Pt(1,1,1),new Pt(-1,1,-1),new Pt(-1,-1,-1),new Pt(1,-1,-1),new Pt(1,1,-1)],$S=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],XS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function YS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,c=-1/0,p=-1/0;for(let l=e;l<r;l++){let u=t.getX(l),d=t.getY(l),f=t.getZ(l);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>a&&(a=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(a,c,p),n}var Vf=(n,t,e)=>{if(er(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?rr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(YS(nn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),nn.getCenter(rr)),n.forceComputeSize?nn.getSize(or).multiplyScalar(.5):or.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Js(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");nn.setFromArray(r.array),nn.getCenter(rr),nn.getSize(or).multiplyScalar(.5)}else rr.setScalar(0),or.setScalar(0);sn.copy(t).multiply(n.matrixWorld),or.x===0&&or.y===0&&or.z===0?e.push(new Pt(rr.x,rr.y,rr.z).applyMatrix4(sn)):zf.forEach(r=>{e.push(r.clone().multiply(or).add(rr).applyMatrix4(sn))})},ri=class extends Ff{constructor(){super(...arguments);this.matrix=new Rl;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 Rl().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&&Vf(s,r,i)}):Vf(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(or).multiplyScalar(.5),this.getCenter(rr),sn.copy(this.matrix).setPosition(rr),this.vertices=zf.map(e=>e.clone().multiply(or).applyMatrix4(sn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=$S.map(([e,r])=>new qS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Pt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=XS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var nr=n=>"isEntity"in n,jf=n=>"isAbstractMesh"in n,It=n=>class extends ea(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Uf;this._singleBBox=new ri;this._recursiveBBox=new ri;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=>{nr(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)nr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)nr(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)nr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Uf,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)nr(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 Uo(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 Uo(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 ZS,Vector3 as oi,Euler as kf,MathUtils as Wr}from"three";import{Object3D as KS}from"three";var Vl=class extends KS{},ta=class extends Vl{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 lo=class extends ZS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new oi),i=.1;this.parameters=ps.defaultData(o.toArray(),i),eo(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 ta(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*Wr.DEG2RAD,i=r.end*Wr.DEG2RAD,s=o-i,a=new kf(r.rotation[0]*Wr.DEG2RAD,r.rotation[1]*Wr.DEG2RAD,r.rotation[2]*Wr.DEG2RAD),c;switch(r.axis){case"z":c=new oi(0,0,1);break;case"y":c=new oi(0,1,0);break;default:case"x":c=new oi(1,0,0);break}for(let[p,l]of this.children.entries()){l.scale.x=r.scale[0],l.scale.y=r.scale[1],l.scale.z=r.scale[2],l.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":l.rotation.set(0,u,0);break;case"y":l.rotation.set(0,0,u);break;case"z":l.rotation.set(u,0,0);break}l.translateOnAxis(c,r.radius),l.position.x+=r.position[0],l.position.y+=r.position[1],l.position.z+=r.position[2],r.alignment===!0?(l.rotation.x+=a.x,l.rotation.y+=a.y,l.rotation.z+=a.z):l.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new kf(r.rotation[0]*Wr.DEG2RAD,r.rotation[1]*Wr.DEG2RAD,r.rotation[2]*Wr.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 oi(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let l=this.children[r++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*a-s.x,l.position.y=o.size[1]*c-s.y,l.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let 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]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),eo(this.parameters,e),this.update(),this}};import{NormalBlending as zw,ShaderMaterial as Uw}from"three";import{CubeReflectionMapping as lw,CubeRefractionMapping as cw,CubeUVReflectionMapping as uw,LinearEncoding as $f,sRGBEncoding as pw}from"three";var ni=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 QS}from"three";var Xe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=QS.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 Fl=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 Fl;import{Vector2 as Hf}from"three";import{MathUtils as JS}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=JS.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(p+" = "+l+";"),e.format(p,c,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,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,a){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,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,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 Hf?e:new Hf(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Wf}from"three";var Qe=class extends Ae{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Wf?e:new Wf(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};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,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var ew=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,qf=/[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 a,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let l=[];for(;a=qf.exec(this.src);)l.push(a);for(let u=0;u<l.length;u++){let d=l[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&He.containsKeyword(f)){let g=this.keywords[f];if(!g){let x=He.getKeywordData(f);x.cache&&(g=e.keywords[f]),g=g||He.getKeyword(f,e),x.cache&&(e.keywords[f]=g)}h=g.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=ew.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(qf);if(a){let c=0;for(;c<a.length;){let p=a[c++],l;p==="in"||p==="out"||p==="inout"?l=a[c++]:(l=p,p="");let u=a[c++];this.inputs.push({name:u,type:l,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var tw=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,zl=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||zl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,c,p="",l=tw.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],p=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=p}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},ye=zl;ye.PI="PI",ye.PI2="PI2",ye.RECIPROCAL_PI="RECIPROCAL_PI",ye.RECIPROCAL_PI2="RECIPROCAL_PI2",ye.LOG2="LOG2",ye.EPSILON="EPSILON";var rw=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
+ )*?)}`,"gim"),ow=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),an=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=rw.exec(e);if(r){let o=r[2],i;for(;i=ow.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ln=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 ln});He.addKeyword("uv2",function(){return new ln(1)});import{LinearEncoding as nw,sRGBEncoding as iw}from"three";var co=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??co.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case nw:return["Linear"];case iw:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=co.Nodes[this.method],a=e.include(s);if(a===co.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,r)}else return e.format(a+"( "+o+" )",i,r)}fromEncoding(e){let r=co.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=co.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},at=co;at.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
3
  `)),sRGBToLinear:new X(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
4
4
  `)),LinearTosRGB:new X(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
5
- `))},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 ew}from"three";var ft=class extends Ae{constructor(e=new ew,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 Vl=class extends ae{constructor(e,r,o=Vl.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=Vl;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 {
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 sw}from"three";var mt=class extends Ae{constructor(e=new sw,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new ln,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+i+", "+s+" )":c=a+"( "+o+", "+i+" )";let p={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new at(new ve("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,r)}};var Y=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var ii=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 a=this.value,c=a.build(e,r)+"( ",p=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let u=a.inputs[l],d=this.inputs[l]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,i,r)}};var Ul=class extends ae{constructor(e,r,o=Ul.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)}},ht=Ul;ht.ADD="+",ht.SUB="-",ht.MUL="*",ht.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,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,p=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Te.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,r);case Te.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,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,a===1?"f":l),i=this.b.build(e,l);break;case Te.MIN:case Te.MAX:case Te.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case Te.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case Te.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,p===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));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 cn=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 ii(cn.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 a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),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 ii(cn.Nodes.roughnessToMip,[i]),a=new de(s,cn.Nodes.m0,cn.Nodes.cubeUV_maxMipLevel,de.CLAMP),c=new de(a,de.FLOOR),p=new de(a,de.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new ht(c,new Y(1).setReadonly(!0),ht.ADD)),d=new de(l,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)}},un=cn;un.Nodes=function(){let e=new an(`struct TextureCubeUVData {
6
6
  vec4 tl;
7
7
  vec4 tr;
8
8
  vec4 br;
9
9
  vec4 bl;
10
10
  vec2 f;
11
- }`),r=new ye("float cubeUV_maxMipLevel 8.0",!0),o=new ye("float cubeUV_minMipLevel 4.0",!0),i=new ye("float cubeUV_maxTileSize 256.0",!0),s=new ye("float cubeUV_minTileSize 16.0",!0),l=new X(`float getFace(vec3 direction) {
11
+ }`),r=new ye("float cubeUV_maxMipLevel 8.0",!0),o=new ye("float cubeUV_minMipLevel 4.0",!0),i=new ye("float cubeUV_maxTileSize 256.0",!0),s=new ye("float cubeUV_minTileSize 16.0",!0),a=new X(`float getFace(vec3 direction) {
12
12
  vec3 absDirection = abs(direction);
13
13
  float face = -1.0;
14
14
  if (absDirection.x > absDirection.z) {
@@ -23,7 +23,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
23
23
  face = direction.y > 0.0 ? 1.0 : 4.0;
24
24
  }
25
25
  return face;
26
- }`);l.useKeywords=!1;let c=new X(`vec2 getUV(vec3 direction, float face) {
26
+ }`);a.useKeywords=!1;let c=new X(`vec2 getUV(vec3 direction, float face) {
27
27
  vec2 uv;
28
28
  if (face == 0.0) {
29
29
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -67,7 +67,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
67
67
  uv.x -= texelSize;
68
68
  vec4 bl = texture2D(envMap, uv);
69
69
  return TextureCubeUVData( tl, tr, br, bl, f );
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),g=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),y=new ye("float m6 4.0",!0),I=[a,u,d,f,m,h,g,x,v,A,S,b,D,w,y],T=new X(`float roughnessToMip(float roughness) {
70
+ }`,[e,a,c,r,o,i,s]);p.useKeywords=!1;let l=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),g=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),y=new ye("float m6 4.0",!0),L=[l,u,d,f,m,h,g,x,v,A,S,b,D,w,y],T=new X(`float roughnessToMip(float roughness) {
71
71
  float mip = 0.0;
72
72
  if (roughness >= r1) {
73
73
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -81,7 +81,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
81
81
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
82
  }
83
83
  return mip;
84
- }`,I);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 ir=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ir.LOCAL}getType(){switch(this.scope){case ir.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ir.LOCAL:case ir.WORLD:return!1}return!0}generate(e,r,o,i,s){let l;switch(this.scope){case ir.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case ir.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case ir.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ir.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),r)}},ht=ir;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 Gt=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Gt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Gt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Gt.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 Gt.CUBE:{let s=new Gt(Gt.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Gt.SPHERE:{let s=new Gt(Gt.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)}},sr=Gt;sr.CUBE="cube",sr.SPHERE="sphere",sr.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 sr(sr.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 tw}from"three";var ta=class extends Ae{constructor(e=new tw,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new sr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),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 kf=["x","y","z","w"],sw=["float","vec2","vec3","vec4"],aw={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},lw={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+`
84
+ }`,L);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var uo=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??uo.VIEW}getShared(){return this.scope===uo.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case uo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case uo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case uo.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}},Ke=uo;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 ir=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ir.LOCAL}getType(){switch(this.scope){case ir.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ir.LOCAL:case ir.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case ir.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case ir.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case ir.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ir.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}},gt=ir;gt.LOCAL="local",gt.WORLD="world",gt.VIEW="view",gt.PROJECTION="projection";He.addKeyword("position",function(){return new gt});He.addKeyword("worldPosition",function(){return new gt(gt.WORLD)});He.addKeyword("viewPosition",function(){return new gt(gt.VIEW)});var Gt=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Gt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Gt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Gt.VECTOR:{let s=new Ke(Ke.VIEW),a=e.context.roughness,c=s.build(e,"v3"),p=new gt(gt.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;l&&(u=`normalize( mix( ${u}, ${c}, ${l} * ${l} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Gt.CUBE:{let s=new Gt(Gt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Gt.SPHERE:{let s=new Gt(Gt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},sr=Gt;sr.CUBE="cube",sr.SPHERE="sphere",sr.VECTOR="vector";var ra=class extends ae{constructor(e=new mt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new un(this.value,r??new sr(sr.VECTOR),o),this.irradianceNode=new un(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 aw}from"three";var oa=class extends Ae{constructor(e=new aw,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new sr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let 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(a),a=this.colorSpace.build(e,p),e.removeContext(),e.format(a,p,r)}};var Xf=["x","y","z","w"],dw=["float","vec2","vec3","vec4"],fw={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},mw={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[]"},na=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
85
85
  `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
86
86
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
87
87
  #define SPE_BLENDING_NORMAL 0
@@ -123,10 +123,10 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
123
123
  `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
124
124
  `}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
125
125
  `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
126
- `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let 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(`
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}];
128
- `:r+=e+" "+a+" "+c+`;
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 sw[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 rw:case ow:return new ta(r);case nw:return new ea(new ft(r));default:return new ft(r)}else{if(r.isVector2)return new Ye(r);if(r.isVector3)return new Qe(r);if(r.isVector4)return new It(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 aw[t]||t}getFormatByType(t){return lw[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return kf[t]}getIndexByElement(t){return kf.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=jf,e===jf&&this.context.gamma&&(e=iw),e}};import{Vector2 as co,Vector3 as cr,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 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 cw,UniformsUtils as uw}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 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(uw.merge([cw.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
126
+ `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let a=this.getVars(o),c=a[t];if(!c){let p=a.length;c={name:r||"node"+i+p+(s?"_"+s:""),type:e},a.push(c),a[t]=c}return c}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
127
+ `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],a=s.type,c=s.name,p=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?r+=e+" "+l.substring(0,l.length-2)+" "+c+`[${p}];
128
+ `:r+=e+" "+l+" "+c+`;
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 a=this.inputs.arrayUniforms,c=a.list.length,p=new ni({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(p),a[t].push(p),a[t][p.name]=p,this.uniforms[p.name]=p,p}else{let a=this.inputs.uniforms,c=a.list.length,p=new ni({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(p),a[t].push(p),a[t][p.name]=p,this.uniforms[p.name]=p,p}}createVertexUniform(t,e,r,o,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 an&&(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 a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return dw[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 lw:case cw:return new oa(r);case uw:return new ra(new mt(r));default:return new mt(r)}else{if(r.isVector2)return new Ye(r);if(r.isVector3)return new Qe(r);if(r.isVector4)return new Lt(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 fw[t]||t}getFormatByType(t){return mw[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Xf[t]}getIndexByElement(t){return Xf.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=$f,e===$f&&this.context.gamma&&(e=pw),e}};import{Vector2 as mo,Vector3 as cr,Vector4 as hn}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,a){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 l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return p?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var ge=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}};import{UniformsLib as hw,UniformsUtils as gw}from"three";var po=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new we(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(gw.merge([hw.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
130
130
  `));let i=["#include <beginnormal_vertex>",`
131
131
  #if !defined( USE_LAYER_DISPLACE )
132
132
  #include <defaultnormal_vertex>
@@ -145,8 +145,8 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
145
145
  #endif /* !USE_LAYER_DISPLACE */
146
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
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 qf,UniformsUtils as fw}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 pw}from"three";var ln=class extends Ae{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new pw}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 Rt=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 Hf}from"three";var Vt=class extends Ae{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Hf?new Array(e).fill(r):new Array(e).fill(new Hf(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) {
148
+ `));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
149
+ `)}return r}};import{UniformsLib as Zf,UniformsUtils as vw}from"three";var qr=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 yw}from"three";var pn=class extends Ae{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new yw}generateReadonly(e,r,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Rt=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 Yf}from"three";var Vt=class extends Ae{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Yf?new Array(e).fill(r):new Array(e).fill(new Yf(0))}};var si=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(si||{}),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);
@@ -239,7 +239,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
239
239
  m = m * m;
240
240
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
241
241
  dot(p2,x2), dot(p3,x3) ) );
242
- }`,[o,i]),l=new X("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new X("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),p=new X(`float noise(vec3 p){
242
+ }`,[o,i]),a=new X("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new X("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),p=new X(`float noise(vec3 p){
243
243
  vec3 a = floor(p);
244
244
  vec3 d = p - a;
245
245
  d = d * d * (3.0 - 2.0 * d);
@@ -254,7 +254,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
254
254
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
255
255
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
256
256
  return o4.y * d.y + o4.x * (1.0 - d.y);
257
- }`,[c]),a=new X(`float fbm(vec3 x) {
257
+ }`,[c]),l=new X(`float fbm(vec3 x) {
258
258
  float v = 0.0;
259
259
  float a = 0.5;
260
260
  vec3 shift = vec3(100);
@@ -264,7 +264,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
264
264
  a *= 0.5;
265
265
  }
266
266
  return v;
267
- }`,[p]);a.keywords.NUM_OCTAVES=new ye(`int NUM_OCTAVES ${5}`);let u=new X("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new X(`float perlin(vec3 P){
267
+ }`,[p]);l.keywords.NUM_OCTAVES=new ye(`int NUM_OCTAVES ${5}`);let u=new X("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new X(`float perlin(vec3 P){
268
268
  vec3 Pi0 = floor(P);
269
269
  vec3 Pi1 = Pi0 + vec3(1.0);
270
270
  Pi0 = mod(Pi0, 289.0);
@@ -323,16 +323,16 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=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 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) {
326
+ }`,[o,i,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:l,perlin:d}}();var ai=class extends ae{constructor(e,r,o,i,s,a,c,p,l,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=a,this.colorA=c,this.colorB=p,this.colorC=l,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 a=Object.values(si)[this.noiseType.value],c=new X(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
327
327
  vec3 st = position / size;
328
328
  st /= scale;
329
- vec3 q = vec3(${l}(st),
330
- ${l}(st + vec3(1.0)),
331
- ${l}(st + vec3(1.0)));
332
- vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
333
- ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
334
- ${l}(st * q));
335
- float f = ${l}(st + r);
329
+ vec3 q = vec3(${a}(st),
330
+ ${a}(st + vec3(1.0)),
331
+ ${a}(st + vec3(1.0)));
332
+ vec3 r = vec3(${a}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
333
+ ${a}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
334
+ ${a}(st * q));
335
+ float f = ${a}(st + r);
336
336
  vec4 color;
337
337
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
338
338
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
@@ -343,7 +343,7 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=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)}};ri.numOctaves=5;import{UniformsLib as Wf,UniformsUtils as dw}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 ge(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(dw.merge([Wf.fog,Wf.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(`
346
+ }`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),p=e.include(c),l=[];return l.push(this.scale.build(e,"f")),l.push(this.size.build(e,"v3")),l.push(this.move.build(e,"f")),l.push(this.fA.build(e,"v2")),l.push(this.fB.build(e,"v2")),l.push(this.distortion.build(e,"v2")),l.push(this.colorA.build(e,"v4")),l.push(this.colorB.build(e,"v4")),l.push(this.colorC.build(e,"v4")),l.push(this.colorD.build(e,"v4")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(p+"("+l.join(",")+")",this.getType(e),r)}};ai.numOctaves=5;import{UniformsLib as Kf,UniformsUtils as xw}from"three";var ia=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 ge(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(xw.merge([Kf.fog,Kf.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 ph=Object.create;var Aa=Object.defineProperty;var dh=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 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(`
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"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
366
366
  `));let u=["#include <normal_fragment_begin>",`
367
367
  // NOTE: gl_FrontFacing alternative using face normal estimation.
368
368
  vec3 viewdx = dFdx(vViewPosition);
@@ -371,21 +371,21 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
371
371
  if (dot(normal, faceNormal) < 0.0) {
372
372
  normal *= -1.0;
373
373
  }
374
- `," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),u.push(`
374
+ `," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),u.push(`
375
375
  if (outgoingLight != diffuseColor) {
376
376
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
377
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
378
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
377
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
378
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
379
379
  }
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 Fl=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(Fl.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=Fl;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) {
380
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
381
+ `)}return r}};var jl=class extends ae{constructor(e,r,o,i,s,a,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=a,this.mode=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(jl.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)}},li=jl;li.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 zl=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(zl.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=zl;ni.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
388
+ }`)}}();var kl=class extends ae{constructor(e,r,o,i,s,a,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.alpha=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(kl.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)}},ci=kl;ci.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 ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
407
407
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
408
408
 
409
409
  return res;
410
- }`,[e])}}();var Ul=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d,f,m,h,g,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=g,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),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(`
410
+ }`,[e])}}();var Hl=class extends ae{constructor(e,r,o,i,s,a,c,p,l,u,d,f,m,h,g,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=a,this.contourFrequency=c,this.outlineSmoothing=p,this.contourDirection=l,this.positionalLines=u,this.compensation=d,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=g,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
411
411
  vID = randomColor.r;
412
412
  if (${s}) {
413
413
  vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
@@ -415,13 +415,13 @@ var ph=Object.create;var Aa=Object.defineProperty;var dh=Object.getOwnPropertyDe
415
415
  // normals face the camera directly. So we hackily fix this by offsetting the normal
416
416
  // by a tiny amount.
417
417
  vec3 ${c}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
418
- vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${c}_clipPosition.w * 2.0 * ${l};
418
+ vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${c}_clipPosition.w * 2.0 * ${a};
419
419
  ${c}_clipPosition.xy += ${c}_offset;
420
420
  // TODO(MAX): To handle multiple outline layers, we only want to extrude
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(Ul.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=Ul;ii.Nodes=function(){let e=new X(`
424
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Hl.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."),""}},ui=Hl;ui.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 jl=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(jl.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=jl;si.Nodes=function(){let e=new X(`
564
+ }`,[e])}}();var Wl=class extends ae{constructor(e,r,o,i,s,a,c,p){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=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(Wl.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)}},pi=Wl;pi.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 );
@@ -617,7 +617,7 @@ vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 tra
617
617
  float lod = applyIorToRoughness(roughness, ior);
618
618
 
619
619
  return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
620
- }`,[i,r]),l=new X(`
620
+ }`,[i,r]),a=new X(`
621
621
  vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
622
622
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
623
623
  vec3 refractedRayExit = position + transmissionRay;
@@ -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 cn=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d){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.alpha=d,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) {
652
+ }`,[a])}}();var dn=class extends ae{constructor(e,r,o,i,s,a,c,p,l,u,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=p,this.colors=l,this.steps=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new 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
- }`,[cn.Nodes.vectorLinearWorldSpaceDepth,cn.Nodes.vectorLinearObjectSpaceDepth,cn.Nodes.vectorSphericalObjectSpaceDepth,cn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),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) {
692
+ }`,[dn.Nodes.vectorLinearWorldSpaceDepth,dn.Nodes.vectorLinearObjectSpaceDepth,dn.Nodes.vectorSphericalObjectSpaceDepth,dn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},di=dn;di.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,11 +703,11 @@ 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 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 kl=(e=>(e.NOISE="noise",e.MAP="map",e))(kl||{}),Hl=class extends ae{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(kl)[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(kl)[this.displacementTypeIndex.value]){case"map":{o=e.include(Hl.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) {
706
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var fi=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 ql=(e=>(e.NOISE="noise",e.MAP="map",e))(ql||{}),$l=class extends ae{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(ql)[this.displacementTypeIndex.value]==="map"&&(this.mat=new pn(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(ql)[this.displacementTypeIndex.value]){case"map":{o=e.include($l.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(si)[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
- return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
710
- }`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),a=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
709
+ return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
710
+ }`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),l=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
711
711
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
712
712
  vec3 tangent1 = orthogonal(normal);
713
713
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -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)}},ci=Hl;ci.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
726
+ }`,[p,c]);o=e.include(l),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)}},mi=$l;mi.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 Wl=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(Wl.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=Wl;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) {
748
+ }`,[e,r])}}();var Xl=class extends ae{constructor(e,r,o,i,s,a,c,p){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=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(Xl.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)}},hi=Xl;hi.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 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(`
790
+ }`)}}();var yi=class extends ae{constructor(e,r,o,i,s,a,c,p,l,u){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.mat=p,this.alpha=l,this.mode=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(yi.Nodes.cylindrical);break;case 2:i=e.include(yi.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=new 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;
@@ -796,7 +796,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
796
796
 
797
797
  vec3 col = tmp.rgb;
798
798
  float lalpha = alpha * tmp.a;
799
- ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
799
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${a}));`}
800
800
 
801
801
  if ( crop > 0.5 ) {
802
802
  if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
@@ -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(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(`
809
+ }`);i=e.include(c);break;default:i=e.include(yi.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),r)}},gi=yi;gi.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 ql=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(ql.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=ql;fi.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
883
+ }`);return{cylindrical:e,spherical:r,uv:o}}();var Yl=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(Yl.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)}},xi=Yl;xi.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 ft,normalRenderTargetDepth:new ft,transmissionRenderTarget:new ft,transmissionSize:new Ye(2048,2048),transmissionRenderTargetDepth:new ft,pixelRatioNode:new Y(1),resolution:new Ye,penumbraSize:new Rt(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 ge(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(fw.merge([qf.fog,qf.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(`
890
+ }`)}}();var Je={normalRenderTarget:new mt,normalRenderTargetDepth:new mt,transmissionRenderTarget:new mt,transmissionSize:new Ye(2048,2048),transmissionRenderTargetDepth:new mt,pixelRatioNode:new Y(1),resolution:new Ye,penumbraSize:new Rt(5,.5)};for(let n of Object.values(Je))n.isRenderGlobal=!0;var vi=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 ge(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(vw.merge([Zf.fog,Zf.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,21 +979,21 @@ 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 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(`
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"}),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
983
983
  `));let u=["#include <normal_fragment_begin>",`
984
984
  // NOTE: gl_FrontFacing alternative using face normal estimation.
985
985
  vec3 viewdx = dFdx(vViewPosition);
986
986
  vec3 viewdy = dFdy(vViewPosition);
987
987
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
988
988
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
989
- `,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&u.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),u.push(`
989
+ `,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&u.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),u.push(`
990
990
  if (outgoingLight != diffuseColor) {
991
991
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
992
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
993
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
992
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
993
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
994
994
  }
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 $l,UniformsUtils as mw}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 ge(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(mw.merge([$l.fog,$l.lights])),$l.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(`
995
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
996
+ `)}return r}};import{UniformsLib as Kl,UniformsUtils as bw}from"three";var bi=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 ge(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(bw.merge([Kl.fog,Kl.lights])),Kl.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,7 +1011,7 @@ 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 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(`
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"),a=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),p=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
1015
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);
@@ -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 );"];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(`
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+";",a.code," float metalnessFactor = "+a.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&&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 $f,UniformsUtils as hw}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 ge(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(hw.merge([$f.fog,$f.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(`
1029
+ `),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.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 Qf,UniformsUtils as Sw}from"three";var Si=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 ge(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(Sw.merge([Qf.fog,Qf.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 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>",`
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"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
1049
1049
  varying vec3 vViewPosition;
1050
1050
  struct ToonMaterial {
1051
1051
  vec3 diffuseColor;
@@ -1074,14 +1074,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1074
1074
  if (dot(normal, faceNormal) < 0.0) {
1075
1075
  normal *= -1.0;
1076
1076
  }
1077
- `," ToonMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),u.push(`
1077
+ `," ToonMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),u.push(`
1078
1078
  if (outgoingLight != diffuseColor) {
1079
1079
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1080
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
1081
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
1080
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
1081
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
1082
1082
  }
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 yi,Vector3 as Tr,Vector4 as na}from"three";function Xf(n,t){switch(n.type){case"fresnel":return xw(n,t);case"gradient":return vw(n);case"depth":return bw(n);case"normal":return Sw(n);case"noise":return ww(n,t);case"rainbow":return _w(n);case"toon":return Tw(n,t);case"outline":return Aw(n,t);case"transmission":return Nw(n,t);case"color":return yw(n,t)}}function gw(n){return{type:n.type}}function lr(n){let{alpha:t,mode:e}=n;return{...gw(n),alpha:t,mode:e}}function yw(n,t){return{...lr(n),color:Fe(n.color,t)}}function xw(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...lr(n),color:Fe(s,t),bias:e,scale:r,intensity:o,factor:i}}function vw(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:l}=n;return{...lr(n),gradientType:t,smooth:e,colors:r.map(c=>new na(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new yi(...s),morph:new yi(...l),angle:i}}function bw(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:p,smooth:a}=n;return{...lr(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),colors:c.map(u=>u!==void 0?new na(u[0],u[1],u[2],u[3]):new na(0,0,0,0)),steps:p,smooth:a}}function Sw(n){let{cnormal:t}=n;return{...lr(n),cnormal:new Tr(t[0],t[1],t[2])}}function ww(n,t){return{...lr(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 _w(n){return{...lr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Tr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Tr(...n.offset)}}function Tw(n,t){return{...lr(n),positioning:n.positioning,colors:n.colors.map(e=>new na(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 Aw(n,t){return{...lr(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 Nw(n,t){return{...lr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var Wr=class extends Ue{};import{Vector4 as Pw}from"three";import{Texture as Cw}from"three";var Xl=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 Yf=0;function Kf(n){if(typeof n=="string")return n;let t=Date.now(),e=Xl.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},Xl.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-Yf>1e3*10&&(Yf=t+1e3,setTimeout(()=>{let r=Date.now(),o=xi.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),Xl.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=Kf(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 Cw(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 Yl={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Kl={depth:["colors"]};function Lw(n,t,e){let r=Yl[n.type],o=Kl[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let s=i[t]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function Zl(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 Zf(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||Ql(i,e,r))continue;e.visible=r.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof qr))switch(o=o||Lw(e,i,s),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 It: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 Qe:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case ft:{Zl(s,t,e);break}case Vt:{l.value=s.map(c=>new Pw(...c));break}default:{l.value=s;break}}}return o}var Jl=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(Jl.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=Jl;vi.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1083
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
1084
+ `)}return r}};import{Vector2 as wi,Vector3 as Ar,Vector4 as sa}from"three";function Jf(n,t){switch(n.type){case"fresnel":return Tw(n,t);case"gradient":return Aw(n);case"depth":return Nw(n);case"normal":return Cw(n);case"noise":return Pw(n,t);case"rainbow":return Iw(n);case"toon":return Lw(n,t);case"outline":return Ow(n,t);case"transmission":return Mw(n,t);case"color":return _w(n,t)}}function ww(n){return{type:n.type}}function lr(n){let{alpha:t,mode:e}=n;return{...ww(n),alpha:t,mode:e}}function _w(n,t){return{...lr(n),color:Fe(n.color,t)}}function Tw(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...lr(n),color:Fe(s,t),bias:e,scale:r,intensity:o,factor:i}}function Aw(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n;return{...lr(n),gradientType:t,smooth:e,colors:r.map(c=>new sa(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new wi(...s),morph:new wi(...a),angle:i}}function Nw(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:p,smooth:l}=n;return{...lr(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Ar(...s),direction:a?new Ar(...a):new Ar(1,0,0),colors:c.map(u=>u!==void 0?new sa(u[0],u[1],u[2],u[3]):new sa(0,0,0,0)),steps:p.slice(0,c.length),smooth:l}}function Cw(n){let{cnormal:t}=n;return{...lr(n),cnormal:new Ar(t[0],t[1],t[2])}}function Pw(n,t){return{...lr(n),scale:n.scale,move:n.move,fA:new wi(...n.fA),fB:new wi(...n.fB),size:new Ar(...n.size),distortion:new wi(...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 Iw(n){return{...lr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ar(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ar(...n.offset)}}function Lw(n,t){return{...lr(n),positioning:n.positioning,colors:n.colors.map(e=>new sa(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ar(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Fe(n.shadowColor,t),offset:new Ar(...n.offset)}}function Ow(n,t){return{...lr(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 Mw(n,t){return{...lr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var $r=class extends Ue{};import{Vector4 as Bw}from"three";import{Texture as Dw}from"three";var Zl=new Map,_i={url:"head",time:0,data:null,next:null,prev:null},fn={url:"tail",time:1/0,data:null,next:null,prev:null};_i.next=fn;fn.prev=_i;var em=0;function tm(n){if(typeof n=="string")return n;let t=Date.now(),e=Zl.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},Zl.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=fn.prev,e.next=fn,fn.prev.next=e,fn.prev=e,t-em>1e3*10&&(em=t+1e3,setTimeout(()=>{let r=Date.now(),o=_i.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),Zl.delete(o.data),o=o.next,o.prev=_i,_i.next=o},900)),e.url}var mn=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=tm(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 Dw(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 fo=class extends mn{};var Xr=class extends Ae{};var Ql={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Jl={depth:["colors"]};function Ew(n,t,e){let r=Ql[n.type],o=Jl[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let s=i[t]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function ec(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,a=t.image(s),c=r;c instanceof fo||c.image.dispose(),c.image=a}if("wrapping"in i){let s=r;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function rm(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||tc(i,e,r))continue;e.visible=r.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Xr))switch(o=o||Ew(e,i,s),a.constructor){case we:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof $r?a.value=new Ue(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case Lt:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof $r?a.value=new Ue(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case Ye:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case Qe:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case mt:{ec(s,t,e);break}case Vt:{a.value=s.map(c=>new Bw(...c));break}default:{a.value=s;break}}}return o}var rc=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(rc.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)}},Ti=rc;Ti.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 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 Iw}from"three";var ia=class extends qr{constructor(e){super("v3");this.image=e;this._value=new Iw}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var ec=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(ec.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=ec;Si.Nodes=function(){let e=new X(`float rand(float n) {
1096
+ `)}}();var Ai=class extends Xr{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as Gw}from"three";var aa=class extends Xr{constructor(e){super("v3");this.image=e;this._value=new Gw}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var oc=class extends ae{constructor(e,r,o,i,s,a,c,p,l,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=p,this.offset=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(oc.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)}},Ni=oc;Ni.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 Ow}from"three";function Qf(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var sa=class extends ln{constructor(e,r){super(new Ow);this.repeat=e;this.offset=r;Qf(this.value,e,r)}updateMatrix(){Qf(this.value,this.repeat,this.offset)}};var ur=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)Ql(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return pr.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 ia(i),c=new sa(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),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 ge(r.mode??0),g=new pi(s,l,p,a,u,d,f,c,m,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:f,mat:c,alpha:m,mode:h},g,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 ge(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 Qe(new cr(...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 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 Dw(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:Zf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?Zl(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 ur{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 ur{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},pr=class extends ur{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 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 pr(e,r,o,s,p)}};function Jf(n){let t=n instanceof ur?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Mw(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 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 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 ge(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 Qe(r.wavelengths??new cr(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new Qe(r.offset??new cr(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 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: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"),g=new ge(r.mode??0);return new We(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,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 dn(0,0,0,1)),i.value[1]=new dn(1,1,1,1));let s;r.steps?s=new Rt(r.steps.length,r.steps):(s=new Rt(10,1),s.value[0]=0);let l=new Qe(r.source??new cr(0,0,0)),c=new Hr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new It(r.shadowColor),d=new Qe(r.offset??new cr(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"),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:f,mode:g},m,g,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 Qe(r.contourDirections??new cr(0,1,0)),f=new Hr(r.positionalLines??!1),m=new Hr(r.compensation??!0),h=Je.normalRenderTarget,g=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,g,x,A),b=new ve(S.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:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new ge(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 Qe(r.origin??new cr),u=new Qe(r.direction??new cr),d;r.colors?d=new Vt(r.colors.length,r.colors):(d=new Vt(2,new dn(0,0,0,1)),d.value[1]=new dn(1,1,1,1));let f;r.steps?f=new Rt(r.steps.length,r.steps):(f=new Rt(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new ai(o,i,s,l,c,p,a,u,d,f,m),x=new ve(g.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:d,steps:f,alpha:m,mode:h},g,h,x)}case"noise":{let o=new Y(r.scale??1),i=new Qe(r.size??new cr(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 It(r.colorA),u=new It(r.colorB),d=new It(r.colorC),f=new It(r.colorD),m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new ge(r.noiseType??0),x=new ri(o,i,s,l,c,p,a,u,d,f,m,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:f,alpha:m,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new Qe(r.cnormal??new cr(1,1,1)),i=new Y(r.alpha??1),s=new ge(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 ge(r.gradientType??0),i=new Hr(r.smooth??!1),s;r.colors?s=new Vt(r.colors.length,r.colors):(s=new Vt(10,new dn(0,0,0,1)),s.value[1]=new dn(1,1,1,1));let l;r.steps?l=new Rt(r.steps.length,r.steps):(l=new Rt(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 ge(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 ge(0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function Dw(n,t,e,r){let o=Xf(e,r);return Mw(e,n,t,o)}function Ql(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 Ew{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??Dt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>ur.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 pr),this.lightLayer===void 0&&(this.lightLayer=new pr(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=ur.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=ur.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 pr);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 pr);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.toUpperCase()}",`;else{let o=(Yl[r.type]??[]).map(l=>r[l]),i=(Kl[r.type]??[]).map(l=>r[l]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.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>Bw,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 tc,BufferAttribute as Gw,Vector3 as rc,Float32BufferAttribute as em}from"three";function Rw(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 rc(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new rc})}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 em(o,3))}function Vw(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 rc;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 em(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"?Vw(n):Rw(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=[tc.seededRandom(r),tc.seededRandom(r+1e4),tc.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Gw(e,3))}var Ze=class extends Lt(Fw){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new zw;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=oc[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&&(Ft.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),tr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)er(e)&&(e.freeBooleanPointer(),tr(e)&&e.invalidateUpstreamBooleanData())}};var kw=new nc(0,0,1),tm=new nc,rm=new nc,om=new jw,fn=class extends Ze{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Uw;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),om.getNormalMatrix(this.matrixWorld),tm.copy(kw).applyMatrix3(om).normalize(),rm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(tm,rm)}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){Ze.prototype.raycast.call(this,e,r)}};function aa(n,t){return Ww(n)}function Ww(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 Hw().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 sm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),am=new Uint32Array([0,1,2,3]),lm=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:sm,indexWASM:am,verticesPerFaceWASM:lm},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:aa(n),r,o,i,s;({positions:r,triIndices:s}=uc(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}=pc(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=sm,r=am,o=lm);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),g=new Float32Array(pe.HEAPF32.buffer,h,a),x=new Uint32Array(pe.HEAPU32.buffer,h+f,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(S=>S!==1)&&(v=new qw().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 g=pe.HEAPU32[l[p]>>2],x=pe.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new nm;if(v.setIndex(new ic(x,1)),v.setAttribute("position",new sc(u,3)),v.setAttribute("normal",new sc(f,3)),t){v.setAttribute("faceMap",new ic(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new im(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 nm;d.setAttribute("position",new sc(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 im(f,3)),d.setIndex(new ic(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 cm=["getX","getY","getZ"];function uc(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[cm[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[cm[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 la=new ca,ac=new ca,lc=new ca,cc=new ca;function pc(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]){la.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),ac.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),lc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),cc.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),ac.sub(la).normalize(),lc.sub(la).normalize(),cc.sub(la).normalize();let c=ac.cross(lc).dot(cc);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,p=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,u=0;a<n.length;a+=3,u++)n[a+2]===0&&(s.push(u),c++),n[a+2]===p&&l.push(u);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Ft={};gh(Ft,{calcBoolean:()=>Zw,calcBooleanTopological:()=>Kw,freeMeshSet:()=>e1,getMeshSet:()=>Qw,transformMeshSet:()=>Jw});var $w,um=new Promise(n=>{$w=n});import{Float32BufferAttribute as pm,Sphere as Xw}from"three";var he,mn;um.then(n=>he=n);function Yw(n,t,e){let r,{positions:o,triIndices:i}=uc(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:l,verticesPerFace:c}=pc(o,i,n);s=c.length,r=[];for(let p=0,a=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(l[a++])}}else{let l=i.length;r=Array(l+l/3),s=0;for(let c=0,p=0;p<r.length;)r[p++]=3,s++,r[p++]=i[c++],r[p++]=i[c++],r[p++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function dm(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 fm(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 Kw(n,t){mn===void 0&&(mn=he.init_csg());let e=dm(n),r=he.csg_calc_topological(mn,e,n.length,fm(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],f=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function Zw(n,t,e,r){mn===void 0&&(mn=he.init_csg());let o=dm(n),i=he.csg_calc(mn,o,n.length,r,fm(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],f=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new pm(u,3)),e.setAttribute("normal",new pm(f,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Xw),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),m}function Qw(n,t,e){if(he===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((x,v)=>x+v,0)+i);for(let x=0,v=0,A=0;x<g.verticesPerFace.length;x++){o[A++]=g.verticesPerFace[x];for(let S=0;S<g.verticesPerFace[x];S++)o[A++]=g.indices[v++]}}else({positions:r,faceIndices:o,nFaces:i}=Yw(n,t,e));let s=r.length,l=o.length,c=r.length,p=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=he._malloc(a),m=new Float32Array(he.HEAPF32.buffer,f,c),h=new Uint32Array(he.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),he.get_csg_mesh(f,s,f+u,l,i)}function Jw(n,t){he.transform_csg_mesh(n,t.elements)}function e1(n){he.free_csg_mesh(n)}var oc={ConeGeometry:Cd,CubeGeometry:Pd,CylinderGeometry:Nd,DodecahedronGeometry:Ld,EllipseGeometry:rf,HelixGeometry:lf,IcosahedronGeometry:cf,LatheGeometry:uf,NonParametricGeometry:xf,PolygonGeometry:vf,PyramidGeometry:bf,RectangleGeometry:Sf,SphereGeometry:wf,PlaneGeometry:_f,BackdropGeometry:Tf,StarGeometry:Af,TextFrameGeometry:Ys,TorusGeometry:Nf,TorusKnotGeometry:Cf,TriangleGeometry:Pf,VectorGeometry:st},_i=n=>oc[n.type].create(n);import{BufferGeometry as mm,Matrix4 as t1}from"three";var hm=new t1;var ua=class extends Ze{constructor(e=new mm,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,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];tr(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(Rf(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.geometry.index&&s.geometry.index.count/3<15e5&&(s.booleanMeshSetAddress=Ft.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;Ft.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else tr(s)&&s.needsTransformForDownstream===!0?(Ft.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(hm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Ft.transformMeshSet(s.booleanMeshSetAddress,hm),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Ft.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new mm,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Ft.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,$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 y1,OrthographicCamera as x1,PerspectiveCamera as v1,Vector3 as Ut,Object3D as xm,Quaternion as b1}from"three";import{BoxBufferGeometry as r1}from"three";var dr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new r1(30,30,30),t};import{Camera as a1,LineSegments as l1,BufferGeometry as c1,LineBasicMaterial as u1,Color as fc,Vector3 as p1,Float32BufferAttribute as ym}from"three";import{Ray as o1,Sphere as n1,Matrix4 as i1,Vector3 as Ar}from"three";var pa=new o1,dc=new n1,gm=new i1,fr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),dc.copy(i.boundingSphere),dc.applyMatrix4(s),e.ray.intersectsSphere(dc)===!1||(gm.copy(s).invert(),pa.copy(e.ray).applyMatrix4(gm),i.boundingBox!==null&&pa.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=g(n,e,pa,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,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=I*I,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),pa.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 g(x,v,A,S,b,D,w){let y=new Ar,I=new Ar,T=new Ar,L=new Ar,N=new Ar;if(y.fromBufferAttribute(S,b),I.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(y,I,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 da=new p1,Mt=new a1,mc=class extends l1{constructor(e){let r=new c1,o=new u1({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new fc(15711266),p=new fc(15711266),a=new fc(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 ym(i,3)),r.setAttribute("color",new ym(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;zt("n1",r,e,Mt,-i,-s,l),zt("n2",r,e,Mt,i,-s,l),zt("n3",r,e,Mt,-i,s,l),zt("n4",r,e,Mt,i,s,l);let c=l;zt("f1",r,e,Mt,-i,-s,c),zt("f2",r,e,Mt,i,-s,c),zt("f3",r,e,Mt,-i,s,c),zt("f4",r,e,Mt,i,s,c);let p=c,a=.5;zt("u1",r,e,Mt,i*.7*a,s*1.1,p),zt("u2",r,e,Mt,-i*.7*a,s*1.1,p),zt("u3",r,e,Mt,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function zt(n,t,e,r,o,i,s){da.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],da.x,da.y,da.z)}}var fa=class extends dr(mc){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){fr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as d1}from"three";var hn=class extends dr(d1){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,hn.geometryHelper,e,r)}};import{AxesHelper as f1}from"three";var gn=class extends dr(f1){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){fr(this.object,gn.geometryHelper,e,r)}update(){}};import{PointLightHelper as m1}from"three";var yn=class extends dr(m1){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,yn.geometryHelper,e,r)}};import{SpotLightHelper as h1,Vector3 as g1}from"three";var ma=class extends dr(h1){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,ma.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=ma._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=ma;Ti._vector=new g1;var mr=(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 Ut,hc=new Ut,Nr=class extends mr(Lt(y1),fa){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 x1(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new v1(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 Ut){return this.getWorldDirection(hc),this.getWorldPosition(xn),hc.multiplyScalar(this.targetOffset),e.copy(xn).add(hc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(xn),xn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new b1),r=new Ut(0,0,1).applyQuaternion(e),o=new Ut().copy(xm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Ut().copy(xm.DefaultUp).projectOnPlane(r),s=new Ut().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ut),i=e.getWorldDirection(new Ut).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ut),i=this.getWorldDirection(new Ut).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.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.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 S1}from"three";var uo=class extends mr(Lt(S1),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 w1,CameraHelper as ha}from"three";var vn=class extends mr(Lt(w1),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 ha(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 ha&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ha&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ha&&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&&Mf(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 _1,Vector3 as ga,Box3 as T1,Box3Helper as ya,Color as A1}from"three";var bn=class extends mr(Lt(_1),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 ga(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ga(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new T1(i,s),c=new ya(l,new A1(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 ya&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(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 ya){let o=this.shadow.camera,i=new ga(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ga(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 N1,CameraHelper as xa,MathUtils as C1,Vector3 as wm,Quaternion as P1}from"three";var vm=new wm,bm=new wm,Sm=new P1,Sn=class extends mr(Lt(N1),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=C1.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new xa(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 xa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),bm.setFromMatrixPosition(this.matrixWorld),Sm.setFromRotationMatrix(this.matrixWorld),vm.copy(this.up).applyQuaternion(Sm).negate().multiplyScalar(this.distance),this.target.position.copy(bm).add(vm),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 _m=n=>n.tagName==="VIDEO",wn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;_m(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];Jf(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;_m(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 Ze{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 Ze{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var ba=class extends _n{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as L1,Mesh as I1,MeshBasicMaterial as O1,ShapeBufferGeometry as M1,Vector2 as D1,Vector3 as B1}from"three";import{FontLoader as E1}from"three/examples/jsm/loaders/FontLoader.js";var Ee=class extends I1{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:l=16},c=new O1({color:0,opacity:1,visible:!0,transparent:!0,side:L1})){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 D1,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 B1(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 E1().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 M1(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ee.charCache[e][o]}},jt=Ee;jt.charCache={},jt.fontCache={},jt._fontPath="/_assets/_fonts/";import{DoubleSide as Am,MeshBasicMaterial as Nm,Vector3 as G1,Object3D as R1}from"three";import{Vector2 as Tm}from"three";var Sa=new Tm,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new Tm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){Sa.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(Sa),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),Sa.set(s,r),this.message[l].updatePosition(this.message[l].localPosition.add(Sa),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 gc=class extends Ze{constructor(e){super(e,new Nm({transparent:!0,opacity:1,visible:!1,side:Am}));this.objectType="TextFrame";this.charContainer=new R1,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 G1(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 gc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await jt.loadFont(o),r.text=e;let i=r.textOrigin,s=new Nm({visible:r.visible,transparent:!0,side:Am}),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 jt(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 jt&&(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 jt.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 jt.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=gc;fo.VerticalAlign=Qa,fo.HorizontalAlign=Za,fo.TextTransform=Ja;var mo=class extends St{};var Im=_c(Cm());var Pm=new Map;function Lm(n){if(typeof n=="string")return n;let t=Pm.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Pm.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:Lm(t),format:"wav"},this.sound=new Im.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,e={}){this.deletedMaterial=new mo(Dt.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()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);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={}}},nH=new Ni(Ds.emptyData());import{DRACOLoader as V1}from"three/examples/jsm/loaders/DRACOLoader.js";var Yr;function F1(){return Yr||(Yr=new V1,Yr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Yr.decoderPending}async function z1(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 Om(n,t){let[e,r]=Ea(Ts.deserialize(new Uint8Array(n)));Td(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 F1();for(let i of o){let s=await z1($t(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 s_,Scene as a_,Vector3 as l_,Fog as c_,Box3 as u_}from"three";import{Box3 as U1,Matrix4 as ho,Sphere as Bm,Vector3 as j1}from"three";var Gm=_c(Dm());var yc;Ks.then(n=>{yc=n});var Rm=new ho,k1=new ho,H1=new ho,kt=new U1,Kr=new j1,W1=new ho,q1=new ho,An=class extends Ze{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,Ze.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,Gm.SVD)(r),l=Rm.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=k1.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=H1.copy(c).transpose();this.shearScale=W1.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=q1.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 Bm);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 Bm);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&&(yc.free_bvh(this.subdivPointer),yc.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,Em(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Em(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 Em(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Rm.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 $1,BufferGeometry as X1,DoubleSide as Y1,FrontSide as K1}from"three";function Vm(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=K1:t.side===1?n.side=$1:n.side=Y1)}function Z1(n,t){if(Array.isArray(n.material))for(let e of n.material)Vm(e,t);else{let e=n.material;Vm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Fm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=An.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new X1:aa(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 va(o,i):o?.userData.type==="VectorGeometry"?r=new fn(o,i):t.geometry.type==="NonParametricGeometry"?r=new ba(o,i):t.geometry.type==="BooleanGeometry"?(r=new ua(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 Z1(r,t),r}function zm(n,t,e){return t.type==="Mesh"?Fm(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 km,Ray as J1,Matrix4 as e_,Raycaster as t_}from"three";function Um(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 jm(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 Hm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof km&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Um(e,e.material[r])&&(t=!0);else Um(e,e.material)&&(t=!0)}),t}function Wm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof km)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)jm(e,e.material[r])&&(t=!0);else jm(e,e.material)&&(t=!0)}),t}function qm(n){"material"in n&&r_(n.material),"geometry"in n&&n.geometry.dispose()}function r_(n){Tc(n).forEach(t=>{t instanceof mo||t.dispose()})}var o_=new t_,n_=new e_,i_=new J1;function $m(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=n_.copy(o.matrixWorld).invert(),s=i_.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=o_;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 Xm=new l_,xc=class extends Qs(a_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new c_(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 s_(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=Wm(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Hm(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=>{tr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{qm(e)});for(let e of this.children)nr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Nr.createFromState(xc.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)nr(s)&&!s.raycastLock&&s.visible&&((er(s)||Zs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),$m(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)nr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)nr(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){Of(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=zm(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),tr(i)&&er(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 u_;return o.setFromPoints(r),o.getCenter(Xm),Xm}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 Ze)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=xc;Ci.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as N5}from"three";import{mergeBufferGeometries as L5}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ym(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 Km,ShaderLib as p_}from"three";function Zm(n){let t=new Set;return n.traverse(e=>{if(er(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);if(d_(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Km,specularColor:new Km});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign(p_.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else f_(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function d_(n){return n.getLayersOfType("transmission").length>0}function f_(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 Qm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Jm(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 m_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function eh(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&&Ym(c),c}),s=m_(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function th(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function rh(n){Object.values(n.shared.materials).forEach(t=>{vc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?vc(e.material):"materials"in e&&e.materials.forEach(r=>{vc(r)})})}function vc(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 oh="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",bc=class extends g_{load(t,e,r,o=console.error){let i=new h_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(oh+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(oh),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 Om(t,rh),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&&If(s)&&Object.assign(s,{makeDefault:!0})}return o=eh(o),o=Zm(o),o=Qm(o),o=Jm(o),o=th(o),o}};export{bc as default};
1332
+ }`,[ot.simplex,e,o,s])}}();import{Matrix3 as Rw}from"three";function om(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var la=class extends pn{constructor(e,r){super(new Rw);this.repeat=e;this.offset=r;om(this.value,e,r)}updateMatrix(){om(this.value,this.repeat,this.offset)}};var ur=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)tc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return pr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new Ai(i,r.texture.wrapping),a=new aa(i),c=new la(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),l=new ge(r.projection??0),u=new ge(["x","y","z"].indexOf(r.axis)??0),d=new ge(r.side??0),f=new Ye(r.size?new mo(r.size[0],r.size[1]):new mo(100,100)),m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new gi(s,a,p,l,u,d,f,c,m,h),x=new ve(g.calpha,"f");return new We(t,e,r,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:f,mat:c,alpha:m,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new Ai(i,r.texture.wrapping),a=new Y(r.alpha??1),c=new ge(r.mode??0),p=new Ti(s,a,c),l=new ve(p.calpha,"f");return new We(t,e,r,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Qe(new cr(...r.offset)),s=new Y(r.scale??10),a=new Y(r.intensity??8),c=new Y(r.movement??1),p=new ge(r.noiseType??0),l=new mi(a,c,i,s,p);return new Ci(t,e,r,{offset:i,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else return Fw(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:rm(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?ec(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 ur{constructor(e,r,o,i,s,a,c){super(e,r,o,i);this.color=s;this.mode=a;this.alpha=c}},Ci=class extends ur{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},pr=class extends ur{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,a=new Y(o.alpha),c=new ge(o.mode),p;if(o.category==="lambert"){s=new vi;let l=new we(i.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new ia;let l=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new Si;let l=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new bi;let l=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new po,p={};return s.alpha=new Y(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new pr(e,r,o,s,p)}};function nm(n){let t=n instanceof ur?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Vw(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 a=new ge(r.mode??0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}case"fresnel":{let o=new we(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),a=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),l=new ge(r.mode??0),u=new li(o,i,s,a,c,p,l),d=new ve(u.calpha,"f");return new We(t,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,alpha:p,mode:l},u,l,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new Qe(r.wavelengths??new cr(0,0,0)),a=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new Qe(r.offset??new cr(0,0,0)),l=new Y(r.alpha??1),u=new ci(o,i,s,a,c,p,l),d=new ve(u.calpha,"f"),f=new ge(r.mode??0);return new We(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,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),a=Je.transmissionSize,c=Je.transmissionRenderTarget,p=Je.transmissionRenderTargetDepth,l=window.innerWidth,u=window.innerHeight,d=l>=u?new Ye(u/l,1):new Ye(1,l/u),f=new Y(r.alpha??1),m=new pi(o,i,s,a,c,p,d,f),h=new ve(m.calpha,"f"),g=new ge(r.mode??0);return new We(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,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 hn(0,0,0,1)),i.value[1]=new hn(1,1,1,1));let s;r.steps?s=new Rt(r.steps.length,r.steps):(s=new Rt(10,1),s.value[0]=0);let a=new Qe(r.source??new cr(0,0,0)),c=new qr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),l=new Y(r.noiseScale??1),u=new Lt(r.shadowColor),d=new Qe(r.offset??new cr(0,0,0)),f=new Y(r.alpha??1),m=new Ni(o,i,s,a,c,p,l,u,d,f),h=new ve(m.calpha,"f"),g=new ge(r.mode??0);return new We(t,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new we(r.outlineColor??16777215),i=new we(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),a=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),l=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new Qe(r.contourDirections??new cr(0,1,0)),f=new qr(r.positionalLines??!1),m=new qr(r.compensation??!0),h=Je.normalRenderTarget,g=Je.normalRenderTargetDepth,x=Je.pixelRatioNode,v=Je.resolution,A=new Y(r.alpha??1),S=new ui(o,i,s,a,c,p,l,u,d,f,m,v,h,g,x,A),b=new ve(S.calpha,"f"),D=new ge(r.mode??0);return new We(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new ge(r.gradientType??0),i=new qr(r.smooth??!1),s=new Y(r.near??50),a=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),l=new Qe(r.origin??new cr),u=new Qe(r.direction??new cr),d;r.colors?d=new Vt(r.colors.length,r.colors):(d=new Vt(2,new hn(0,0,0,1)),d.value[1]=new hn(1,1,1,1));let f;r.steps?f=new Rt(r.steps.length,r.steps):(f=new Rt(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new di(o,i,s,a,c,p,l,u,d,f,m),x=new ve(g.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:d,steps:f,alpha:m,mode:h},g,h,x)}case"noise":{let o=new Y(r.scale??1),i=new Qe(r.size??new cr(100,100,100)),s=new Y(r.move??1),a=new Ye(r.fA??new mo(1.7,9.2)),c=new Ye(r.fB??new mo(8.3,2.8)),p=new Ye(r.distortion??new mo(1,1)),l=new Lt(r.colorA),u=new Lt(r.colorB),d=new Lt(r.colorC),f=new Lt(r.colorD),m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new ge(r.noiseType??0),x=new ai(o,i,s,a,c,p,l,u,d,f,m,g),v=new ve(x.calpha,"f");return new We(t,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new Qe(r.cnormal??new cr(1,1,1)),i=new Y(r.alpha??1),s=new ge(r.mode??0),a=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},a,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 hn(0,0,0,1)),s.value[1]=new hn(1,1,1,1));let a;r.steps?a=new Rt(r.steps.length,r.steps):(a=new Rt(10,1),a.value[0]=0);let c=new Ye(r.offset??new mo(0,0)),p=new Ye(r.morph??new mo(0,0)),l=new Y(r.angle??0),u=new Y(r.alpha??1),d=new ge(r.mode??0),f=new hi(o,i,s,a,c,p,l,u),m=new ve(f.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:p,angle:l,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 a=new ge(0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}}}function Fw(n,t,e,r){let o=Jf(e,r);return Vw(e,n,t,o)}function tc(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 wt=class extends Uw{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??Dt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>ur.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 pr),this.lightLayer===void 0&&(this.lightLayer=new pr(0,"",zr.defaultData("light","basic"),new po,{})),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=ur.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===i);if(s){let a=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let p=ur.create(this.layerIdGen++,i,a,o);this.layers.splice(this.layers.findIndex(l=>l.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof pr);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 fi(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 pr);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 fi(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 Ci);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new ht(r,e[o].position,ht.ADD),r=new ht(r,new Y(.5).setReadonly(!0),ht.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,a)=>Math.min(Math.max(i,s),a);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.toUpperCase()}",`;else{let o=(Ql[r.type]??[]).map(a=>r[a]),i=(Jl[r.type]??[]).map(a=>r[a]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.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 na;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>zw,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(wt.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 nc,BufferAttribute as jw,Vector3 as ic,Float32BufferAttribute as im}from"three";function kw(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]}`,a=new ic(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new ic})}t.forEach((i,s)=>{for(let a of i.normals)i.result.add(a);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]}`,a=t.get(s)?.result;a&&(o[i]=a.x,o[i+1]=a.y,o[i+2]=a.z)}n.geometry.setAttribute("extrudeNormal",new im(o,3))}function Hw(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 ic;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 im(e,3))}function Yr(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 wt)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Hw(n):kw(n)}}function Kr(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=[nc.seededRandom(r),nc.seededRandom(r+1e4),nc.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new jw(e,3))}var Ze=class extends It(Ww){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new qw;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=sc[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),Yr(this),r.getAttribute("randomColor")&&Kr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=Pi(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 lo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new lo(this)),this.cloner.fromClonerState(e))}fromState(e,r){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&&(Ft.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),tr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)er(e)&&(e.freeBooleanPointer(),tr(e)&&e.invalidateUpstreamBooleanData())}};var Yw=new ac(0,0,1),sm=new ac,am=new ac,lm=new Xw,gn=class extends Ze{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new $w;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),lm.getNormalMatrix(this.matrixWorld),sm.copy(Yw).applyMatrix3(lm).normalize(),am.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(sm,am)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),a=new gn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){Ze.prototype.raycast.call(this,e,r)}};function ca(n,t){return Zw(n)}function Zw(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 Kw().parse(n));let e;try{e=Pi(t)}catch(r){console.error(r)}if(!e){let r=Se.createFromState($o.defaultData(),100,100);t.shape=r,e=Pi(t)}return e}var pe;Qs.then(n=>{pe=n});var pm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),dm=new Uint32Array([0,1,2,3]),fm=new Uint8Array([4]),Ot=class{static build(n,t,e,r,o){let i,s,a,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:pm,indexWASM:dm,verticesPerFaceWASM:fm},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?a=Ot.buildLevel(i,!1,c):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:ca(n),r,o,i,s;({positions:r,triIndices:s}=fc(e.getAttribute("position"),e.getIndex()));let a;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;a=[c,p]}return{indices:o,verticesPerFace:i}=mc(r,s,e,a),{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=pm,r=dm,o=fm);let a=e.length,c=r.length,p=o.length,l=e.length+i.length+s.length,u=r.length+o.length,d=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=l*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),g=new Float32Array(pe.HEAPF32.buffer,h,l),x=new Uint32Array(pe.HEAPU32.buffer,h+f,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(S=>S!==1)&&(v=new Qw().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,a,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,a,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,a=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(4,4+4),p=0,l=pe.HEAPU32[a[p]>>2],u=pe.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=pe.HEAPU32[a[p]>>2],f=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=pe.HEAPU32[a[p]>>2],h=pe.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let g=pe.HEAPU32[a[p]>>2],x=pe.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new cm;if(v.setIndex(new lc(x,1)),v.setAttribute("position",new cc(u,3)),v.setAttribute("normal",new cc(f,3)),t){v.setAttribute("faceMap",new lc(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new um(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),a=0,c=pe.HEAPU32[i[a]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=pe.HEAPU32[i[a]>>2],u=pe.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new cm;d.setAttribute("position",new cc(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 um(f,3)),d.setIndex(new lc(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),a=s.subarray(3,3+3),c=0,p=pe.HEAPU32[s[c]>>2],l=new Float32Array(pe.HEAPF32.subarray(p>>2,(p>>2)+a[c]));c++;let u=pe.HEAPU32[s[c]>>2],d=new Uint32Array(pe.HEAPU32.subarray(u>>2,(u>>2)+a[c]));c++;let f=pe.HEAPU32[s[c]>>2],m=new Uint8Array(pe.HEAPU32.subarray(f>>2,(f>>2)+a[c]));return pe.free_topological_data(o),{positions:l,indices:d,verticesPerFace:m}}};var mm=["getX","getY","getZ"];function fc(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let p=0;p<r;p++){let l=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[mm[d]](l)*a)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[mm[d]](l));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 ua=new pa,uc=new pa,pc=new pa,dc=new pa;function mc(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([]),a=0;for(let p=0;p<s.length;p+=2)a+=(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(a<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,a=e.capStartIndex??t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){ua.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),uc.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),pc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),dc.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),uc.sub(ua).normalize(),pc.sub(ua).normalize(),dc.sub(ua).normalize();let c=uc.cross(pc).dot(dc);Math.abs(c)>.005||r&&r.some((p,l)=>l%2===1?!1:s>=r[l]&&s<r[l+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=[],a=[],c=0,p=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,u=0;l<n.length;l+=3,u++)n[l+2]===0&&(s.push(u),c++),n[l+2]===p&&a.push(u);if(e.userData.parameters.extrudeBevelSize===0){let l=a[0];a[0]=a[1],a[1]=l}s.reverse(),o.push(...s,...a),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Ft={};Sh(Ft,{calcBoolean:()=>o1,calcBooleanTopological:()=>r1,freeMeshSet:()=>s1,getMeshSet:()=>n1,transformMeshSet:()=>i1});var Jw,hm=new Promise(n=>{Jw=n});import{Float32BufferAttribute as gm,Sphere as e1}from"three";var he,yn;hm.then(n=>he=n);function t1(n,t,e){let r,{positions:o,triIndices:i}=fc(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:a,verticesPerFace:c}=mc(o,i,n);s=c.length,r=[];for(let p=0,l=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(a[l++])}}else{let a=i.length;r=Array(a+a/3),s=0;for(let c=0,p=0;p<r.length;)r[p++]=3,s++,r[p++]=i[c++],r[p++]=i[c++],r[p++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function ym(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 xm(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 r1(n,t){yn===void 0&&(yn=he.init_csg());let e=ym(n),r=he.csg_calc_topological(yn,e,n.length,xm(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,c=he.HEAPU32[i[a]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=he.HEAPU32[i[a]>>2],u=new Uint32Array(he.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=he.HEAPU32[i[a]>>2],f=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function o1(n,t,e,r){yn===void 0&&(yn=he.init_csg());let o=ym(n),i=he.csg_calc(yn,o,n.length,r,xm(t));he._free(o);let s=5,a=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),p=0,l=he.HEAPU32[a[p]>>2],u=he.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=he.HEAPU32[a[p]>>2],f=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new gm(u,3)),e.setAttribute("normal",new gm(f,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new e1),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),m}function n1(n,t,e){if(he===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((x,v)=>x+v,0)+i);for(let x=0,v=0,A=0;x<g.verticesPerFace.length;x++){o[A++]=g.verticesPerFace[x];for(let S=0;S<g.verticesPerFace[x];S++)o[A++]=g.indices[v++]}}else({positions:r,faceIndices:o,nFaces:i}=t1(n,t,e));let s=r.length,a=o.length,c=r.length,p=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=he._malloc(l),m=new Float32Array(he.HEAPF32.buffer,f,c),h=new Uint32Array(he.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),he.get_csg_mesh(f,s,f+u,a,i)}function i1(n,t){he.transform_csg_mesh(n,t.elements)}function s1(n){he.free_csg_mesh(n)}var sc={ConeGeometry:Md,CubeGeometry:Dd,CylinderGeometry:Od,DodecahedronGeometry:Bd,EllipseGeometry:lf,HelixGeometry:ff,IcosahedronGeometry:mf,LatheGeometry:hf,NonParametricGeometry:_f,PolygonGeometry:Tf,PyramidGeometry:Af,RectangleGeometry:Nf,SphereGeometry:Cf,PlaneGeometry:Pf,BackdropGeometry:If,StarGeometry:Lf,TextFrameGeometry:Zs,TorusGeometry:Of,TorusKnotGeometry:Mf,TriangleGeometry:Df,VectorGeometry:st},Pi=n=>sc[n.type].create(n);import{BufferGeometry as vm,Matrix4 as a1}from"three";var bm=new a1;var da=class extends Ze{constructor(e=new vm,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,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];tr(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(jf(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.geometry.index&&s.geometry.index.count/3<15e5&&(s.booleanMeshSetAddress=Ft.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;Ft.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else tr(s)&&s.needsTransformForDownstream===!0?(Ft.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(bm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Ft.transformMeshSet(s.booleanMeshSetAddress,bm),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Ft.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new vm,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Ft.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Yr(this),Kr(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 _1,OrthographicCamera as T1,PerspectiveCamera as A1,Vector3 as Ut,Object3D as _m,Quaternion as N1}from"three";import{BoxBufferGeometry as l1}from"three";var dr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new l1(30,30,30),t};import{Camera as f1,LineSegments as m1,BufferGeometry as h1,LineBasicMaterial as g1,Color as gc,Vector3 as y1,Float32BufferAttribute as wm}from"three";import{Ray as c1,Sphere as u1,Matrix4 as p1,Vector3 as Nr}from"three";var fa=new c1,hc=new u1,Sm=new p1,fr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),hc.copy(i.boundingSphere),hc.applyMatrix4(s),e.ray.intersectsSphere(hc)===!1||(Sm.copy(s).invert(),fa.copy(e.ray).applyMatrix4(Sm),i.boundingBox!==null&&fa.intersectsBox(i.boundingBox)===!1))return;let a,c,p,l,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),l=u.getX(m+2),a=g(n,e,fa,d,c,p,l),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let v=i.attributes.position,A=new Nr,S=new Nr,b=new Nr,D=new Nr,w=2,L=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=L*L,I=Math.max(0,f.start),N=Math.min(v.count,f.start+f.count);for(let C=I,k=N-1;C<k;C+=w){if(A.fromBufferAttribute(v,C),S.fromBufferAttribute(v,C+1),fa.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 g(x,v,A,S,b,D,w){let y=new Nr,L=new Nr,T=new Nr,I=new Nr,N=new Nr;if(y.fromBufferAttribute(S,b),L.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(y,L,T,!1,I)===null)return null;N.copy(I),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 ma=new y1,Mt=new f1,yc=class extends m1{constructor(e){let r=new h1,o=new g1({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new gc(15711266),p=new gc(15711266),l=new gc(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l);function u(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),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}r.setAttribute("position",new wm(i,3)),r.setAttribute("color",new wm(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;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,a=o?.8:1e-4;zt("n1",r,e,Mt,-i,-s,a),zt("n2",r,e,Mt,i,-s,a),zt("n3",r,e,Mt,-i,s,a),zt("n4",r,e,Mt,i,s,a);let c=a;zt("f1",r,e,Mt,-i,-s,c),zt("f2",r,e,Mt,i,-s,c),zt("f3",r,e,Mt,-i,s,c),zt("f4",r,e,Mt,i,s,c);let p=c,l=.5;zt("u1",r,e,Mt,i*.7*l,s*1.1,p),zt("u2",r,e,Mt,-i*.7*l,s*1.1,p),zt("u3",r,e,Mt,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function zt(n,t,e,r,o,i,s){ma.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let c=e.getAttribute("position");for(let p=0,l=a.length;p<l;p++)c.setXYZ(a[p],ma.x,ma.y,ma.z)}}var ha=class extends dr(yc){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){fr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as x1}from"three";var xn=class extends dr(x1){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,xn.geometryHelper,e,r)}};import{AxesHelper as v1}from"three";var vn=class extends dr(v1){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){fr(this.object,vn.geometryHelper,e,r)}update(){}};import{PointLightHelper as b1}from"three";var bn=class extends dr(b1){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,bn.geometryHelper,e,r)}};import{SpotLightHelper as S1,Vector3 as w1}from"three";var ga=class extends dr(S1){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,ga.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=ga._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Ii=ga;Ii._vector=new w1;var mr=(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 Sn=new Ut,xc=new Ut,Cr=class extends mr(It(_1),ha){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=to.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new T1(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new A1(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 Cr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Sn),this.targetOffset=Sn.distanceTo(e)}getTarget(e=new Ut){return this.getWorldDirection(xc),this.getWorldPosition(Sn),xc.multiplyScalar(this.targetOffset),e.copy(Sn).add(xc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Sn),Sn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new N1),r=new Ut(0,0,1).applyQuaternion(e),o=new Ut().copy(_m.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Ut().copy(_m.DefaultUp).projectOnPlane(r),s=new Ut().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ut),i=e.getWorldDirection(new Ut).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ut),i=this.getWorldDirection(new Ut).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,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){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 Uo(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.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.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 C1}from"three";var ho=class extends mr(It(C1),vn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new ho().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as P1,CameraHelper as ya}from"three";var wn=class extends mr(It(P1),xn){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 ya(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new wn().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),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&&Rf(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 I1,Vector3 as xa,Box3 as L1,Box3Helper as va,Color as O1}from"three";var _n=class extends mr(It(I1),bn){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 xa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new xa(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new L1(i,s),c=new va(a,new O1(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new _n().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 va&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof va&&(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 va){let o=this.shadow.camera,i=new xa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new xa(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 M1,CameraHelper as ba,MathUtils as D1,Vector3 as Cm,Quaternion as B1}from"three";var Tm=new Cm,Am=new Cm,Nm=new B1,Tn=class extends mr(It(M1),Ii){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=D1.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ba(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Tn().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 ba&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ba&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ba&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Am.setFromMatrixPosition(this.matrixWorld),Nm.setFromRotationMatrix(this.matrixWorld),Tm.copy(this.up).applyQuaternion(Nm).negate().multiplyScalar(this.distance),this.target.position.copy(Am).add(Tm),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 Pm=n=>n.tagName==="VIDEO",An=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Pm(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];nm(s)&&An.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;Pm(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Sa=class extends Ze{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 Nn=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var wa=class extends Nn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as E1,Mesh as G1,MeshBasicMaterial as R1,ShapeBufferGeometry as V1,Vector2 as F1,Vector3 as z1}from"three";import{FontLoader as U1}from"three/examples/jsm/loaders/FontLoader.js";var Ee=class extends G1{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},c=new R1({color:0,opacity:1,visible:!0,transparent:!0,side:E1})){let p=Ee.loadChar(e,o,a);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new F1,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 z1(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 U1().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 V1(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ee.charCache[e][o]}},jt=Ee;jt.charCache={},jt.fontCache={},jt._fontPath="/_assets/_fonts/";import{DoubleSide as Lm,MeshBasicMaterial as Om,Vector3 as j1,Object3D as k1}from"three";import{Vector2 as Im}from"three";var _a=new Im,go=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new Im(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 a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),_a.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(_a),e)}clone(){let t=new go(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 vc=class extends Ze{constructor(e){super(e,new Om({transparent:!0,opacity:1,visible:!1,side:Lm}));this.objectType="TextFrame";this.charContainer=new k1,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 j1(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Zs.create({parameters:{width:r.width,height:r.height}}),s=new vc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await jt.loadFont(o),r.text=e;let i=r.textOrigin,s=new Om({visible:r.visible,transparent:!0,side:Lm}),a=e.split(`
1333
+ `),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new go(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 jt(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,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof jt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=a,p.textOrigin.set(-.5*a,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<a.length;p+=1)for(let l=0;l<a[p].length;l+=1)i[s+1].addChar3D(a[p][l],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 a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let c,p=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=p){s[a].containSpace()?c=s[a].getWord(0,1):c=s[a].popChar(0);for(let l=0;l<c.length;l+=1)c[l]&&s[a-1].addChar3D(c[l],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new go(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.visible=e}}}async updateFontFamily(e){await jt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)a[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 a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await jt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}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}},yo=vc;yo.VerticalAlign=tl,yo.HorizontalAlign=el,yo.TextTransform=rl;var xo=class extends wt{};var Em=Nc(Mm());var Dm=new Map;function Bm(n){if(typeof n=="string")return n;let t=Dm.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Dm.set(n,t)),t.url}var Cn=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:Bm(t),format:"wav"},this.sound=new Em.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,e={}){this.deletedMaterial=new xo(Dt.defaultTwoLayerData("basic"),this);this.deletedImage=new fo(Gs.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);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 xo(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 wt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new fo(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 mn(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 Cn)return e;{let r=new Cn({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 Cn&&e.dispose()}),this.audios={}}},SH=new Oi(Es.emptyData());import{DRACOLoader as H1}from"three/examples/jsm/loaders/DRACOLoader.js";var Zr;function W1(){return Zr||(Zr=new H1,Zr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Zr.decoderPending}async function q1(n){if(Zr){let t={attributeIDs:Zr.defaultAttributeIDs,attributeTypes:Zr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Zr.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 Gm(n,t){let[e,r]=Va(Ns.deserialize(new Uint8Array(n)));Id(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 W1();for(let i of o){let s=await q1($t(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:p,itemSize:l})=>{a[c]={array:p,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as d_,Scene as f_,Vector3 as m_,Fog as h_,Box3 as g_}from"three";import{Box3 as $1,Matrix4 as vo,Sphere as Fm,Vector3 as X1}from"three";var Um=Nc(Vm());var bc;Qs.then(n=>{bc=n});var jm=new vo,Y1=new vo,K1=new vo,kt=new $1,Qr=new X1,Z1=new vo,Q1=new vo,Pn=class extends Ze{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new vo;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new vo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Ot.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Pn(i,s,a||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry: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,Yr(this),Kr(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,Ze.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,Um.SVD)(r),a=jm.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=Y1.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=K1.copy(c).transpose();this.shearScale=Z1.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=Q1.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,p),s.every(l=>Math.abs(s[0]-l)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Fm);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(Qr);let i={width:Qr.x,height:Qr.y,depth:Qr.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 Fm);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(Qr);let i={width:Qr.x,height:Qr.y,depth:Qr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(bc.free_bvh(this.subdivPointer),bc.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,zm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(zm(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 zm(n,t,e,r){let o=n.position.array,i=n.normal.array,s=jm.makeScale(t,e,r).invert().elements,a,c,p;for(var l=0,u=o.length;l<u;l+=3)o[l]*=t,o[l+1]*=e,o[l+2]*=r,a=i[l],c=i[l+1],p=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*p,i[l+1]=s[1]*a+s[5]*c+s[9]*p,i[l+2]=s[2]*a+s[6]*c+s[10]*p}import{BackSide as J1,BufferGeometry as e_,DoubleSide as t_,FrontSide as r_}from"three";function km(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=r_:t.side===1?n.side=J1:n.side=t_)}function o_(n,t){if(Array.isArray(n.material))for(let e of n.material)km(e,t);else{let e=n.material;km(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Hm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Pn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new e_:ca(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Os.is2DParametricMesh(o.userData.type)?r=new Sa(o,i):o?.userData.type==="VectorGeometry"?r=new gn(o,i):t.geometry.type==="NonParametricGeometry"?r=new wa(o,i):t.geometry.type==="BooleanGeometry"?(r=new da(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Nn(o,i),r.uuid=n,r.fromState(t,e)}return o_(r,t),r}function Wm(n,t,e){return t.type==="Mesh"?Hm(n,t,e):t.type==="TextFrame"?yo.createFromState(n,t,e):t.type==="Empty"?ho.createFromState(n,t):t.type==="PointLight"?_n.createFromState(n,t,e):t.type==="SpotLight"?Tn.createFromState(n,t,e):t.type==="DirectionalLight"?wn.createFromState(n,t,e):jo.is(t.type)?Cr.createFromState(n,t):(console.error(t),new ho)}import{Mesh as Xm,Ray as i_,Matrix4 as s_,Raycaster as a_}from"three";function qm(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,Kr(n),Yr(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function $m(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 Ym(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Xm&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)qm(e,e.material[r])&&(t=!0);else qm(e,e.material)&&(t=!0)}),t}function Km(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Xm)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)$m(e,e.material[r])&&(t=!0);else $m(e,e.material)&&(t=!0)}),t}function Zm(n){"material"in n&&l_(n.material),"geometry"in n&&n.geometry.dispose()}function l_(n){Cc(n).forEach(t=>{t instanceof xo||t.dispose()})}var c_=new a_,u_=new s_,p_=new i_;function Qm(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=u_.copy(o.matrixWorld).invert(),s=p_.copy(t.ray).applyMatrix4(i),a=n.matrixWorld;s.applyMatrix4(a);let c=c_;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 Jm=new m_,Sc=class extends ea(f_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new h_(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 d_(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=Km(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Ym(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 Cr&&this.switchActiveCamera(o)}this.traverse(o=>{tr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Zm(e)});for(let e of this.children)nr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Cr.createFromState(Sc.PERSONAL_CAMERA_ID,{...Ds.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)nr(s)&&!s.raycastLock&&s.visible&&((er(s)||Js(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),Qm(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)nr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)nr(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){Gf(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 a=Wm(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),tr(i)&&er(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],p=this.find(a),l=c?p.recursiveBBox:p.singleBBox;r.push(...l.vertices)}let o=new g_;return o.setFromPoints(r),o.getCenter(Jm),Jm}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 Ze)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof wt&&e(r.material[o]);else r.material instanceof wt&&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})})}},Mi=Sc;Mi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as k5}from"three";import{mergeBufferGeometries as q5}from"three/examples/jsm/utils/BufferGeometryUtils.js";function eh(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 th,ShaderLib as y_}from"three";function rh(n){let t=new Set;return n.traverse(e=>{if(er(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);if(x_(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new th,specularColor:new th});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign(y_.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else v_(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function x_(n){return n.getLayersOfType("transmission").length>0}function v_(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 oh(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function nh(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as b_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function ih(n){let t=[];return n.traverse(e=>{e instanceof lo&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(a=>{a.updateMatrix();let c=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&eh(c),c}),s=b_(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function sh(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function ah(n){Object.values(n.shared.materials).forEach(t=>{wc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?wc(e.material):"materials"in e&&e.materials.forEach(r=>{wc(r)})})}function wc(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 lh="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",_c=class extends w_{load(t,e,r,o=console.error){let i=new S_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(lh+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(lh),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await Gm(t,ah),r=new Oi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Mi(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&&Ef(s)&&Object.assign(s,{makeDefault:!0})}return o=ih(o),o=rh(o),o=oh(o),o=nh(o),o=sh(o),o}};export{_c as default};